Приведение к прошлой версии
19
README.md
|
@ -1,17 +1,18 @@
|
||||||
Moodle App
|
ВМедА Онлайн
|
||||||
=================
|
=================
|
||||||
|
|
||||||
This is the primary repository of source code for the official mobile app for Moodle.
|
Для запуска приложения необходимы следующие шаги:
|
||||||
|
-------------------------------------------------
|
||||||
|
1. ```npm install```
|
||||||
|
|
||||||
* [User documentation](https://docs.moodle.org/en/Moodle_app)
|
|
||||||
* [Developer documentation](https://moodledev.io/general/app)
|
|
||||||
* [Development environment setup](https://moodledev.io/general/app/development/setup)
|
|
||||||
* [Bug Tracker](https://tracker.moodle.org/browse/MOBILE)
|
|
||||||
* [Release Notes](https://moodledev.io/general/app_releases)
|
|
||||||
|
|
||||||
This project is tested with BrowserStack.
|
2. ```npm start```
|
||||||
|
|
||||||
|
|
||||||
|
3. ```chromium-browser --allow-file-access-from-files --disable-web-security --disable-site-isolation-trials --allow-running-insecure-content --no-referrers --unlimited-storage --auto-open-devtools-for-tabs --ignore-certificate-errors --disable-infobars --user-data-dir=~/.chromium-dev-data```
|
||||||
|
|
||||||
|
(Перед этим необходимо установить браузер Chromium)
|
||||||
|
|
||||||
License
|
License
|
||||||
-------
|
-------
|
||||||
|
|
||||||
[Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0)
|
[Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0)
|
||||||
|
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 20 KiB |
|
@ -0,0 +1,59 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="210mm"
|
||||||
|
height="297mm"
|
||||||
|
viewBox="0 0 210 297"
|
||||||
|
version="1.1"
|
||||||
|
id="svg1836"
|
||||||
|
inkscape:export-filename="book-medical.svg"
|
||||||
|
inkscape:export-xdpi="3.8699999"
|
||||||
|
inkscape:export-ydpi="3.8699999"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview1838"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#111111"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="1"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false" />
|
||||||
|
<defs
|
||||||
|
id="defs1833" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Слой 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<g
|
||||||
|
id="g232"
|
||||||
|
transform="matrix(1.8296707,0,0,-1.8296707,192.88724,65.061799)">
|
||||||
|
<path
|
||||||
|
d="m 0,0 c -0.012,-0.256 -0.029,-0.468 -0.02,-0.622 l 0.003,-92.31 h -4.534 v 92.181 c -0.012,0.138 0,0.513 0.021,0.969 0.07,1.452 0.176,3.647 -1.211,5.101 -1.198,1.258 -3.402,1.896 -6.55,1.896 H -76.355 V 1.807 h 61.04 c 1.652,0 3.699,0 3.961,-2.99 v -103.645 c -0.262,-2.99 -2.309,-2.99 -3.961,-2.99 h -75.537 c -1.689,0 -3.791,0 -3.974,3.194 L -94.827,-1.32 c 0,0 0,0 0,0 v 9.962 c 0.193,3.127 2.281,3.127 3.961,3.127 h 10.551 c 0.277,0 0.565,-0.006 0.854,-0.02 h 67.17 c 4.437,0 7.745,-1.11 9.833,-3.301 C 0.269,5.587 0.087,1.814 0,0 M -5.351,20.85 H -90.829 C -103.86,20.85 -103.86,8.802 -103.86,8.802 V 0.974 c -0.033,-0.391 -0.037,-0.633 -0.037,-0.633 V -104.84 c 0,0 0,-0.105 0.015,-0.302 0.106,-1.844 1.21,-11.745 13.031,-11.745 h 75.536 c 8.477,0 11.432,5.082 12.47,8.643 9.458,1.301 10.427,9.86 10.525,11.564 V 9.104 C 7.574,10.949 6.47,20.85 -5.351,20.85"
|
||||||
|
style="fill:#00ab97;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path234" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g236"
|
||||||
|
transform="matrix(1.8296707,0,0,-1.8296707,170.39784,43.564822)">
|
||||||
|
<path
|
||||||
|
d="m 0,0 h -67.169 c -0.289,0.014 -0.578,0.02 -0.855,0.02 h -10.551 c -1.68,0 -3.768,0 -3.961,-3.127 v -9.962 c 0,0 0,0 0,0 l 0.001,-103.304 c 0.183,-3.194 2.285,-3.194 3.975,-3.194 h 75.537 c 1.652,0 3.699,0 3.961,2.99 v 103.644 c -0.262,2.991 -2.309,2.991 -3.961,2.991 h -61.04 v 5.408 H 0 c 3.148,0 5.352,-0.638 6.551,-1.896 1.386,-1.455 1.281,-3.649 1.211,-5.101 C 7.74,-11.987 7.728,-12.362 7.74,-12.5 v -92.181 h 4.534 l -0.003,92.31 c -0.008,0.153 0.008,0.366 0.02,0.622 0.087,1.813 0.269,5.587 -2.457,8.448 C 7.745,-1.11 4.437,0 0,0"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path238" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
d="M 101.01124,168.81238 H 85.056524 v -51.85467 h 15.954716 z"
|
||||||
|
style="fill:#727270;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.82967"
|
||||||
|
id="path240" />
|
||||||
|
<path
|
||||||
|
d="M 118.96213,150.86331 H 67.107454 v -15.95472 h 51.854676 z"
|
||||||
|
style="fill:#727270;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.82967"
|
||||||
|
id="path242" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.2 KiB |
|
@ -0,0 +1,59 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="210mm"
|
||||||
|
height="297mm"
|
||||||
|
viewBox="0 0 210 297"
|
||||||
|
version="1.1"
|
||||||
|
id="svg2719"
|
||||||
|
inkscape:export-filename="download.svg"
|
||||||
|
inkscape:export-xdpi="3.870476"
|
||||||
|
inkscape:export-ydpi="3.870476"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview2721"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#111111"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="1"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false" />
|
||||||
|
<defs
|
||||||
|
id="defs2716" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Слой 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<g
|
||||||
|
id="g92"
|
||||||
|
transform="matrix(1.7498577,0,0,-1.7498577,163.44533,113.88214)">
|
||||||
|
<path
|
||||||
|
d="M 0,0 C -3.559,15.35 -17.164,26.27 -33.154,26.27 -49.152,26.27 -62.762,15.349 -66.32,0 c -16.759,-3.905 -25.25,-12.998 -25.25,-27.052 0,-17.378 13.044,-28.173 34.042,-28.173 h 9.543 v 6.469 h -9.543 c -6.468,0 -27.573,1.566 -27.573,21.704 0,11.428 7.045,18.153 22.171,21.166 l 2.195,0.437 0.365,2.208 c 2.203,13.351 13.648,23.042 27.216,23.042 13.56,0 25,-9.691 27.204,-23.042 l 0.365,-2.209 2.196,-0.436 c 15.124,-3.011 22.169,-9.736 22.169,-21.166 0,-20.138 -21.114,-21.704 -27.584,-21.704 h -9.186 v -6.469 h 9.186 c 21.005,0 34.054,10.795 34.054,28.173 C 25.25,-12.995 16.759,-3.902 0,0"
|
||||||
|
style="fill:#238ef8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path94" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g96"
|
||||||
|
transform="matrix(1.7498577,0,0,-1.7498577,117.71645,176.38215)">
|
||||||
|
<path
|
||||||
|
d="m 0,0 c 0,3.812 -3.119,6.931 -6.933,6.931 -3.813,0 -6.931,-3.118 -6.931,-6.931 v -27.929 h -7.988 -1.399 c -4.117,0 -4.822,-3.252 -2.109,-5.944 l 3.508,-3.482 7.611,-7.553 2.358,-2.34 c 3.283,-3.256 6.476,-3.357 9.93,0.062 l 1.745,1.727 8.351,8.267 3.353,3.319 c 2.341,2.317 2.049,5.944 -2.77,5.944 H 8.143 0 Z"
|
||||||
|
style="fill:#727270;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path98" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g100"
|
||||||
|
transform="matrix(1.7498577,0,0,-1.7498577,105.42388,104.30762)">
|
||||||
|
<path
|
||||||
|
d="m 0,0 c 5.128,0 9.456,-3.664 10.29,-8.713 l 6.383,1.054 C 15.321,0.528 8.309,6.469 0,6.469 c -8.312,0 -15.326,-5.941 -16.678,-14.128 l 6.383,-1.054 C -9.461,-3.664 -5.132,0 0,0"
|
||||||
|
style="fill:#238ef8;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path102" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.7 KiB |
|
@ -1,9 +1,9 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<svg
|
<svg
|
||||||
version="1.1"
|
version="1.1"
|
||||||
width="1024"
|
width="42"
|
||||||
height="1024"
|
height="42"
|
||||||
viewBox="-11 -15 512 512"
|
viewBox="0 0 42 42"
|
||||||
style="clip-rule:evenodd;fill-rule:evenodd;image-rendering:optimizeQuality;shape-rendering:geometricPrecision;text-rendering:geometricPrecision"
|
style="clip-rule:evenodd;fill-rule:evenodd;image-rendering:optimizeQuality;shape-rendering:geometricPrecision;text-rendering:geometricPrecision"
|
||||||
id="svg12594"
|
id="svg12594"
|
||||||
sodipodi:docname="logo.svg"
|
sodipodi:docname="logo.svg"
|
||||||
|
|
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 119 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 335 KiB |
After Width: | Height: | Size: 120 KiB |
|
@ -26,7 +26,7 @@
|
||||||
<core-loading [hideUntil]="categoriesLoaded">
|
<core-loading [hideUntil]="categoriesLoaded">
|
||||||
<ion-list class="list-item-limited-width">
|
<ion-list class="list-item-limited-width">
|
||||||
<ion-item *ngIf="currentCategory" class="ion-text-wrap">
|
<ion-item *ngIf="currentCategory" class="ion-text-wrap">
|
||||||
<ion-icon name="fas-folder" slot="start" [attr.aria-label]="'core.category' | translate" />
|
<ion-icon name="fas-logo" slot="start" [attr.aria-label]="'core.category' | translate" />
|
||||||
<ion-label>
|
<ion-label>
|
||||||
<p class="item-heading">
|
<p class="item-heading">
|
||||||
<core-format-text [text]="currentCategory.name" contextLevel="coursecat" [contextInstanceId]="currentCategory.id" />
|
<core-format-text [text]="currentCategory.name" contextLevel="coursecat" [contextInstanceId]="currentCategory.id" />
|
||||||
|
@ -47,7 +47,7 @@
|
||||||
<ion-card *ngFor="let category of categories" [attr.data-category-id]="category.id">
|
<ion-card *ngFor="let category of categories" [attr.data-category-id]="category.id">
|
||||||
<ion-item button class="ion-text-wrap" (click)="openCategory(category.id)" [attr.aria-label]="category.name"
|
<ion-item button class="ion-text-wrap" (click)="openCategory(category.id)" [attr.aria-label]="category.name"
|
||||||
[detail]="true">
|
[detail]="true">
|
||||||
<ion-icon name="fas-logo-color" slot="start" [attr.aria-label]="'core.category' | translate" />
|
<ion-icon name="fas-logo" slot="start" [attr.aria-label]="'core.category' | translate" />
|
||||||
<ion-label>
|
<ion-label>
|
||||||
<p class="item-heading">
|
<p class="item-heading">
|
||||||
<core-format-text [text]="category.name" contextLevel="coursecat" [contextInstanceId]="category.id" />
|
<core-format-text [text]="category.name" contextLevel="coursecat" [contextInstanceId]="category.id" />
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
ion-icon{
|
||||||
|
--webkit-margin-end: 16px !important;
|
||||||
|
margin-inline-end: 16px !important;
|
||||||
|
margin-block: 0 !important;
|
||||||
|
font-size: 2em;
|
||||||
|
}
|
||||||
|
|
|
@ -34,6 +34,7 @@ import { CoreAlerts } from '@services/overlays/alerts';
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'page-core-courses-categories',
|
selector: 'page-core-courses-categories',
|
||||||
templateUrl: 'categories.html',
|
templateUrl: 'categories.html',
|
||||||
|
styleUrl:'categories.scss',
|
||||||
})
|
})
|
||||||
export class CoreCoursesCategoriesPage implements OnInit, OnDestroy {
|
export class CoreCoursesCategoriesPage implements OnInit, OnDestroy {
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ import { CoreMainMenuPage } from './pages/menu/menu';
|
||||||
import { CoreMainMenuHomeHandlerService } from './services/handlers/mainmenu';
|
import { CoreMainMenuHomeHandlerService } from './services/handlers/mainmenu';
|
||||||
import { CoreMainMenuComponentsModule } from './components/components.module';
|
import { CoreMainMenuComponentsModule } from './components/components.module';
|
||||||
import { MAIN_MENU_MORE_PAGE_NAME } from './constants';
|
import { MAIN_MENU_MORE_PAGE_NAME } from './constants';
|
||||||
|
import { CoreSiteHomeMaterialPage } from '@features/mainmenu/pages/materials/materials';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build module routes.
|
* Build module routes.
|
||||||
|
@ -47,6 +48,10 @@ function buildRoutes(injector: Injector): Routes {
|
||||||
...mainMenuRoutes.children,
|
...mainMenuRoutes.children,
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: 'home/materials',
|
||||||
|
component: CoreSiteHomeMaterialPage,
|
||||||
|
},
|
||||||
...mainMenuRoutes.siblings,
|
...mainMenuRoutes.siblings,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -58,6 +63,7 @@ function buildRoutes(injector: Injector): Routes {
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
CoreMainMenuPage,
|
CoreMainMenuPage,
|
||||||
|
CoreSiteHomeMaterialPage,
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
{ provide: ROUTES, multi: true, useFactory: buildRoutes, deps: [Injector] },
|
{ provide: ROUTES, multi: true, useFactory: buildRoutes, deps: [Injector] },
|
||||||
|
|
|
@ -0,0 +1,111 @@
|
||||||
|
<ion-header>
|
||||||
|
<ion-toolbar>
|
||||||
|
<ion-buttons slot="start">
|
||||||
|
<ion-back-button [text]="'core.back' | translate" />
|
||||||
|
</ion-buttons>
|
||||||
|
<ion-title>
|
||||||
|
<h1>
|
||||||
|
<core-format-text [text]="title" />
|
||||||
|
</h1>
|
||||||
|
</ion-title>
|
||||||
|
</ion-toolbar>
|
||||||
|
</ion-header>
|
||||||
|
<ion-content>
|
||||||
|
<ion-card class="book-cell" style="background-color: rgb(111, 131, 243);">
|
||||||
|
<ion-item style="background: none" class="book-img">
|
||||||
|
<img src="assets/img/download/fdsf.jpg" alt="" class="book-photo">
|
||||||
|
</ion-item>
|
||||||
|
<ion-list class="book-content" style="background: none">
|
||||||
|
<ion-item class="book-title">Первая помощь</ion-item>
|
||||||
|
<ion-button class="book-see"
|
||||||
|
href="https://www.vmeda.org/wp-content/uploads/2022/10/first-aid-memo-basic-course-2022.pdf">
|
||||||
|
Скачать
|
||||||
|
</ion-button>
|
||||||
|
<!--
|
||||||
|
style="--swiper-theme-color: #007aff; --swiper-navigation-size: 22px;
|
||||||
|
font-family: 'Open Sans',sans-serif; line-height: 1.642; -webkit-font-smoothing: antialiased;
|
||||||
|
-webkit-tap-highlight-color: transparent; user-select: none; cursor: grab; box-sizing: border-box;
|
||||||
|
margin-top: 12px; text-align: center; background-color: #fff; font-weight: 600; padding: 4px;
|
||||||
|
font-size: 14px; width: 160px; border-radius: 20px; color: #a4e0eb;">
|
||||||
|
<a href="https://www.vmeda.org/wp-content/uploads/2022/10/first-aid-memo-basic-course-2022.pdf"
|
||||||
|
target="_blank">Скачать</a>
|
||||||
|
</ion-button>-->
|
||||||
|
</ion-list>
|
||||||
|
</ion-card>
|
||||||
|
|
||||||
|
<ion-card class="book-cell" style="background-color: rgb(84, 179, 96);">
|
||||||
|
<ion-item class="book-img">
|
||||||
|
<img src="assets/img/download/dew.jpg" alt="" class="book-photo">
|
||||||
|
</ion-item>
|
||||||
|
<ion-list class="book-content">
|
||||||
|
<ion-item class="book-title">Справочник тактической медицины</ion-item>
|
||||||
|
<ion-button class="book-see"
|
||||||
|
href="https://www.vmeda.org/wp-content/uploads/2022/10/handbook-tactical-medicine-2022.pdf">
|
||||||
|
Скачать
|
||||||
|
</ion-button>
|
||||||
|
</ion-list>
|
||||||
|
</ion-card>
|
||||||
|
|
||||||
|
<ion-card class="book-cell" style="background-color: rgb(66, 146, 193);">
|
||||||
|
<ion-item class="book-img">
|
||||||
|
<img src="assets/img/download/bdtt.jpg" alt="" class="book-photo">
|
||||||
|
</ion-item>
|
||||||
|
<ion-list class="book-content">
|
||||||
|
<ion-item class="book-title">
|
||||||
|
Методические рекомендации по этапному лечению пораженных с боевой терапевтической патологией
|
||||||
|
</ion-item>
|
||||||
|
<ion-button class="book-see"
|
||||||
|
href="https://www.vmeda.org/wp-content/uploads/2023/04/bttbook.pdf">
|
||||||
|
Скачать
|
||||||
|
</ion-button>
|
||||||
|
</ion-list>
|
||||||
|
</ion-card>
|
||||||
|
|
||||||
|
<ion-card class="book-cell" style="background-color: rgb(102, 179, 165);">
|
||||||
|
<ion-item class="book-img">
|
||||||
|
<img src="assets/img/download/polevter.jpg" alt="" class="book-photo">
|
||||||
|
</ion-item>
|
||||||
|
<ion-list class="book-content">
|
||||||
|
<ion-item class="book-title">Указания по военно-полевой терапии</ion-item>
|
||||||
|
<ion-button class="book-see book-blue"
|
||||||
|
href="https://www.vmeda.org/wp-content/uploads/2023/04/vptbook.pdf">
|
||||||
|
Скачать
|
||||||
|
</ion-button>
|
||||||
|
</ion-list>
|
||||||
|
</ion-card>
|
||||||
|
|
||||||
|
<ion-card class="book-cell" style="background-color: rgb(66, 146, 193);">
|
||||||
|
<ion-item class="book-img">
|
||||||
|
<img src="assets/img/download/metodugaz_travma-1.jpg" alt="" class="book-photo">
|
||||||
|
</ion-item>
|
||||||
|
<ion-list class="book-content">
|
||||||
|
<ion-item class="book-title">Методические рекомендации по лечению боевой хирургической травмы</ion-item>
|
||||||
|
<ion-button class="book-see" href="https://www.vmeda.org/wp-content/uploads/2023/04/metodugaz_travma.pdf">
|
||||||
|
Скачать
|
||||||
|
</ion-button>
|
||||||
|
</ion-list>
|
||||||
|
</ion-card>
|
||||||
|
<!--
|
||||||
|
<ion-modal>
|
||||||
|
<ng-template>
|
||||||
|
<ion-header>
|
||||||
|
<ion-toolbar>
|
||||||
|
<ion-buttons slot="start">
|
||||||
|
<ion-button style="--background: #0000" (click)="cancel()">
|
||||||
|
<ion-icon name="fas-arrow-left"/>
|
||||||
|
</ion-button>
|
||||||
|
</ion-buttons>
|
||||||
|
<ion-title>{{name}}</ion-title>
|
||||||
|
</ion-toolbar>
|
||||||
|
</ion-header>
|
||||||
|
<ion-content>
|
||||||
|
<embed id="file" width=100% height=100% />
|
||||||
|
</ion-content>
|
||||||
|
</ng-template>
|
||||||
|
</ion-modal>
|
||||||
|
|
||||||
|
|
||||||
|
<script src="runtime.4cb0b06cb476cfb61ea2.js" defer></script><script src="polyfills.1efaf77c2721c4983f5b.js" defer></script>
|
||||||
|
<script src="cordova.32a3a29a8b6123a48c19.js" defer></script><script src="main.e2799415ee4149e46723.js" defer></script>
|
||||||
|
-->
|
||||||
|
</ion-content>
|
|
@ -0,0 +1,40 @@
|
||||||
|
.book-cell{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
padding: 0.5em;
|
||||||
|
}
|
||||||
|
.book-img img{
|
||||||
|
max-height: 12vh;
|
||||||
|
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.book-img{
|
||||||
|
display: flex;
|
||||||
|
min-width: fit-content;
|
||||||
|
}
|
||||||
|
|
||||||
|
.book-title{
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.book-see{
|
||||||
|
--background: white;
|
||||||
|
--color: #0031f3;
|
||||||
|
--border-radius: 50px !important;
|
||||||
|
margin: 0;
|
||||||
|
width: 100%;
|
||||||
|
min-height: 0;
|
||||||
|
padding: 5px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.book-content{
|
||||||
|
width: -webkit-fill-available;
|
||||||
|
max-width: 400px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ion-list, ion-item{
|
||||||
|
background: none;
|
||||||
|
--background: none;
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
import { Component, OnInit} from '@angular/core';
|
||||||
|
import {CoreViewer} from "@features/viewer/services/viewer";
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-materials',
|
||||||
|
templateUrl: './materials.html',
|
||||||
|
styleUrls: ['./materials.scss'],
|
||||||
|
})
|
||||||
|
export class CoreSiteHomeMaterialPage implements OnInit {
|
||||||
|
title: string | undefined;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
this.title = "Материалы для скачивания";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -17,14 +17,15 @@
|
||||||
</span>
|
</span>
|
||||||
</ion-tab-button>
|
</ion-tab-button>
|
||||||
|
|
||||||
<ion-tab-button (keydown)="tabAction.keyDown(morePageName, $event)" (keyup)="tabAction.keyUp(morePageName, $event)"
|
<ion-tab-button (keydown)="tabAction.keyDown('more/settings', $event)" (keyup)="tabAction.keyUp('more/settings', $event)"
|
||||||
[hidden]="!loaded" [tab]="morePageName" layout="label-hide" [tabindex]="selectedTab === morePageName ? 0 : -1"
|
[hidden]="!loaded" [tab]="'more/settings'" layout="label-hide" [tabindex]="selectedTab === 'more/settings' ? 0 : -1"
|
||||||
[attr.aria-controls]="morePageName">
|
[attr.aria-controls]="'more/settings'">
|
||||||
<ion-icon class="core-tab-icon" name="ellipsis-horizontal" aria-hidden="true" />
|
<ion-icon class="core-tab-icon" name="fas-gears" aria-hidden="true" />
|
||||||
<ion-label aria-hidden="true">{{ 'core.more' | translate }}</ion-label>
|
<ion-label aria-hidden="true">{{ 'core.settings' | translate }}</ion-label>
|
||||||
<span class="sr-only">{{ 'core.more' | translate }}</span>
|
<span class="sr-only">{{ 'core.settings' | translate }}</span>
|
||||||
<ion-icon *ngIf="moreBadge" class="core-tab-badge" name="fas-circle" aria-hidden="true" />
|
<ion-icon *ngIf="moreBadge" class="core-tab-badge" name="fas-gear" aria-hidden="true" />
|
||||||
</ion-tab-button>
|
</ion-tab-button>
|
||||||
|
|
||||||
</ion-tab-bar>
|
</ion-tab-bar>
|
||||||
</ion-tabs>
|
</ion-tabs>
|
||||||
<div class="core-network-message" [hidden]="!showTabs">
|
<div class="core-network-message" [hidden]="!showTabs">
|
||||||
|
|
|
@ -385,6 +385,7 @@ class CoreMainMenuRoleTab extends CoreAriaRoleTab<CoreMainMenuPage> {
|
||||||
id: tab.id || tab.page,
|
id: tab.id || tab.page,
|
||||||
findIndex: tab.page,
|
findIndex: tab.page,
|
||||||
}));
|
}));
|
||||||
|
console.log(allTabs);
|
||||||
|
|
||||||
allTabs.push({
|
allTabs.push({
|
||||||
id: this.componentInstance.morePageName,
|
id: this.componentInstance.morePageName,
|
||||||
|
|
|
@ -42,7 +42,7 @@ export class CoreMainMenuHomeHandlerService implements CoreMainMenuHandler {
|
||||||
*/
|
*/
|
||||||
getDisplayData(): CoreMainMenuHandlerData {
|
getDisplayData(): CoreMainMenuHandlerData {
|
||||||
return {
|
return {
|
||||||
icon: 'fas-gauge-high',
|
icon: 'fas-home',
|
||||||
title: 'core.mainmenu.home',
|
title: 'core.mainmenu.home',
|
||||||
page: CoreMainMenuHomeHandlerService.PAGE_NAME,
|
page: CoreMainMenuHomeHandlerService.PAGE_NAME,
|
||||||
class: 'core-home-handler',
|
class: 'core-home-handler',
|
||||||
|
|
|
@ -54,11 +54,11 @@ export class CoreSettingsSectionsSource extends CoreRoutedItemsManagerSource<Cor
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
sections.push({
|
// sections.push({
|
||||||
name: 'core.settings.about',
|
// name: 'core.settings.about',
|
||||||
path: 'about',
|
// path: 'about',
|
||||||
icon: 'fas-id-card',
|
// icon: 'fas-id-card',
|
||||||
});
|
// });
|
||||||
|
|
||||||
return { items: sections };
|
return { items: sections };
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
</ion-segment-button>
|
</ion-segment-button>
|
||||||
</ion-segment>
|
</ion-segment>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
<ion-item class="ion-text-wrap core-settings-general-color-scheme" *ngIf="colorSchemes.length > 0">
|
<!--<ion-item class="ion-text-wrap core-settings-general-color-scheme" *ngIf="colorSchemes.length > 0">
|
||||||
<ion-select [(ngModel)]="selectedScheme" (ionChange)="colorSchemeChanged($event)" interface="action-sheet"
|
<ion-select [(ngModel)]="selectedScheme" (ionChange)="colorSchemeChanged($event)" interface="action-sheet"
|
||||||
[cancelText]="'core.cancel' | translate" [disabled]="colorSchemeDisabled"
|
[cancelText]="'core.cancel' | translate" [disabled]="colorSchemeDisabled"
|
||||||
[interfaceOptions]="{header: 'core.settings.colorscheme' | translate}">
|
[interfaceOptions]="{header: 'core.settings.colorscheme' | translate}">
|
||||||
|
@ -49,7 +49,7 @@
|
||||||
<ion-label class="ion-text-wrap">
|
<ion-label class="ion-text-wrap">
|
||||||
<p class="ion-text-wrap">{{ 'core.settings.colorscheme-system-notice' | translate }}</p>
|
<p class="ion-text-wrap">{{ 'core.settings.colorscheme-system-notice' | translate }}</p>
|
||||||
</ion-label>
|
</ion-label>
|
||||||
</ion-item>
|
</ion-item>-->
|
||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-toggle [(ngModel)]="richTextEditor" (ionChange)="richTextEditorChanged($event)">
|
<ion-toggle [(ngModel)]="richTextEditor" (ionChange)="richTextEditorChanged($event)">
|
||||||
<p class="item-heading ion-text-wrap">{{ 'core.settings.enablerichtexteditor' | translate }}</p>
|
<p class="item-heading ion-text-wrap">{{ 'core.settings.enablerichtexteditor' | translate }}</p>
|
||||||
|
@ -65,12 +65,12 @@
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-label>
|
</ion-label>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
<ion-item>
|
<!--<ion-item>
|
||||||
<ion-toggle [(ngModel)]="debugDisplay" (ionChange)="debugDisplayChanged($event)">
|
<ion-toggle [(ngModel)]="debugDisplay" (ionChange)="debugDisplayChanged($event)">
|
||||||
<p class="item-heading ion-text-wrap">{{ 'core.settings.debugdisplay' | translate }}</p>
|
<p class="item-heading ion-text-wrap">{{ 'core.settings.debugdisplay' | translate }}</p>
|
||||||
<p class="ion-text-wrap">{{ 'core.settings.debugdisplaydescription' | translate }}</p>
|
<p class="ion-text-wrap">{{ 'core.settings.debugdisplaydescription' | translate }}</p>
|
||||||
</ion-toggle>
|
</ion-toggle>
|
||||||
</ion-item>
|
</ion-item> -->
|
||||||
<ion-item *ngIf="analyticsAvailable">
|
<ion-item *ngIf="analyticsAvailable">
|
||||||
<ion-label>
|
<ion-label>
|
||||||
<p class="item-heading ion-text-wrap">{{ 'core.settings.enableanalytics' | translate }}</p>
|
<p class="item-heading ion-text-wrap">{{ 'core.settings.enableanalytics' | translate }}</p>
|
||||||
|
|
|
@ -50,7 +50,43 @@
|
||||||
</ng-container>
|
</ng-container>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Site home items: news, categories, courses, etc. -->
|
<ion-card>
|
||||||
|
<ion-item button (click)="openItem('Подача заявки на обучение по программам ДПО онлайн',
|
||||||
|
'https://lms.vmeda.org/auth_abitur_dpo/register')"
|
||||||
|
[attr.aria-label]="'Подача заявки на обучение по программам ДПО онлайн'"
|
||||||
|
class="core-application-dpo">
|
||||||
|
<img src="assets/img/application_dpo.jpg" alt="Заявка ДПО"/>
|
||||||
|
<ion-label>
|
||||||
|
<p class="item-heading">Подача заявки на обучение по программам ДПО онлайн</p>
|
||||||
|
</ion-label>
|
||||||
|
</ion-item>
|
||||||
|
</ion-card>
|
||||||
|
|
||||||
|
<ion-card>
|
||||||
|
<ion-item button (click)="openItem('Перечень программ и прейскурант стоимости обучения ДПО',
|
||||||
|
'https://www.vmeda.org/s-02-01/fakultet-gr/dopolnitelnoe-professionalnoe-obrazovanie/')"
|
||||||
|
[attr.aria-label]="'Перечень программ и прейскурант стоимости обучения ДПО'"
|
||||||
|
class="core-application-dpo">
|
||||||
|
<img src="assets/img/dpo_cost.jpg" alt="Прейскурант ДПО"/>
|
||||||
|
<ion-label>
|
||||||
|
<p class="item-heading">Перечень программ и прейскурант стоимости обучения ДПО</p>
|
||||||
|
</ion-label>
|
||||||
|
</ion-item>
|
||||||
|
</ion-card>
|
||||||
|
|
||||||
|
<ion-card>
|
||||||
|
<ion-item button (click)="openItem('Обратная связь',
|
||||||
|
'https://lms.vmeda.org/contacts_mess/vmeda_online')"
|
||||||
|
[attr.aria-label]="'Обратная связь'"
|
||||||
|
class="core-application-dpo">
|
||||||
|
<img src="assets/img/feedback.jpg" alt="Обратная связь"/>
|
||||||
|
<ion-label>
|
||||||
|
<p class="item-heading">Обратная связь</p>
|
||||||
|
</ion-label>
|
||||||
|
</ion-item>
|
||||||
|
</ion-card>
|
||||||
|
|
||||||
|
<!-- Site home items: news, categories, courses, etc.
|
||||||
<ng-container *ngIf="items.length > 0">
|
<ng-container *ngIf="items.length > 0">
|
||||||
<ng-container *ngFor="let item of items">
|
<ng-container *ngFor="let item of items">
|
||||||
<ng-container [ngSwitch]="item">
|
<ng-container [ngSwitch]="item">
|
||||||
|
@ -69,10 +105,26 @@
|
||||||
<ng-container *ngSwitchCase="'NEWS_ITEMS'">
|
<ng-container *ngSwitchCase="'NEWS_ITEMS'">
|
||||||
<ng-template *ngTemplateOutlet="news" />
|
<ng-template *ngTemplateOutlet="news" />
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
<ng-container>
|
||||||
|
<ng-template *ngTemplateOutlet="setting"/>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
</ng-container>-->
|
||||||
</ion-list>
|
</ion-list>
|
||||||
|
|
||||||
|
<ion-card>
|
||||||
|
<ion-item button class="ion-text-wrap" (click)="openMaterialsDownload()">
|
||||||
|
<ion-icon name="far-download" slot="start" aria-hidden="true" />
|
||||||
|
<ion-label>
|
||||||
|
<p class="item-heading">Скачать материалы</p>
|
||||||
|
</ion-label>
|
||||||
|
</ion-item>
|
||||||
|
</ion-card>
|
||||||
|
|
||||||
|
|
||||||
|
<ng-template *ngTemplateOutlet="categories" />
|
||||||
|
|
||||||
<core-block-side-blocks-button slot="fixed" *ngIf="hasBlocks" contextLevel="course" [instanceId]="siteHomeId" />
|
<core-block-side-blocks-button slot="fixed" *ngIf="hasBlocks" contextLevel="course" [instanceId]="siteHomeId" />
|
||||||
|
|
||||||
<core-empty-box *ngIf="!hasContent" icon="fas-box-open" [message]="'core.course.nocontentavailable' | translate" />
|
<core-empty-box *ngIf="!hasContent" icon="fas-box-open" [message]="'core.course.nocontentavailable' | translate" />
|
||||||
|
@ -94,10 +146,12 @@
|
||||||
<core-course-module class="core-sitehome-news" *ngIf="newsForumModule" [module]="newsForumModule" />
|
<core-course-module class="core-sitehome-news" *ngIf="newsForumModule" [module]="newsForumModule" />
|
||||||
</ng-template>
|
</ng-template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<ng-template #categories>
|
<ng-template #categories>
|
||||||
<ion-card>
|
<ion-card>
|
||||||
<ion-item button class="ion-text-wrap" (click)="openCourseCategories()">
|
<ion-item button class="ion-text-wrap" (click)="openCourseCategories()">
|
||||||
<ion-icon name="far-folder" slot="start" aria-hidden="true" />
|
<ion-icon name="far-book-medical" slot="start" aria-hidden="true" />
|
||||||
<ion-label>
|
<ion-label>
|
||||||
<p class="item-heading">{{ 'core.courses.categories' | translate}}</p>
|
<p class="item-heading">{{ 'core.courses.categories' | translate}}</p>
|
||||||
</ion-label>
|
</ion-label>
|
||||||
|
|
|
@ -1,12 +1,36 @@
|
||||||
@use "theme/globals" as *;
|
@use "theme/globals" as *;
|
||||||
|
|
||||||
|
ion-item img{
|
||||||
|
max-width: 5em;
|
||||||
|
display: inline-block;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-block: 0.8em;
|
||||||
|
color: var(--text-color);
|
||||||
|
line-height: var(--size);
|
||||||
|
--margin-end: 8px;
|
||||||
|
@include margin-horizontal(null, var(--margin-end));
|
||||||
|
}
|
||||||
|
|
||||||
|
core-loading{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-around;
|
||||||
|
justify-items: self-end;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-item-limited-width{
|
||||||
|
margin: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
ion-item ion-icon {
|
ion-item ion-icon {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
font-size: 3em;
|
||||||
border-radius: var(--mdl-shape-borderRadius-xs);
|
border-radius: var(--mdl-shape-borderRadius-xs);
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
color: var(--text-color);
|
color: var(--text-color);
|
||||||
line-height: var(--size);
|
line-height: var(--size);
|
||||||
--margin-end: 8px;
|
--margin-inline: 0.32em;
|
||||||
@include margin-horizontal(null, var(--margin-end));
|
@include margin-horizontal(null, var(--margin-end));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,8 @@ import { ContextLevel } from '@/core/constants';
|
||||||
import { CoreModals } from '@services/overlays/modals';
|
import { CoreModals } from '@services/overlays/modals';
|
||||||
import { CoreAlerts } from '@services/overlays/alerts';
|
import { CoreAlerts } from '@services/overlays/alerts';
|
||||||
import { Translate } from '@singletons';
|
import { Translate } from '@singletons';
|
||||||
|
import {CoreMainMenuCustomItem} from "@features/mainmenu/services/mainmenu";
|
||||||
|
import {CoreViewer} from "@features/viewer/services/viewer";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Page that displays site home index.
|
* Page that displays site home index.
|
||||||
|
@ -222,6 +224,14 @@ export class CoreSiteHomeIndexPage implements OnInit, OnDestroy {
|
||||||
CoreNavigator.navigateToSitePath('courses/categories');
|
CoreNavigator.navigateToSitePath('courses/categories');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
openMaterialsDownload(): void {
|
||||||
|
CoreNavigator.navigateToSitePath('materials');
|
||||||
|
}
|
||||||
|
|
||||||
|
openItem(label: string, url: string): void {
|
||||||
|
CoreViewer.openIframeViewer(label, url);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -33,9 +33,9 @@ body:not(.core-iframe-fullscreen) .collapsible-header-page {
|
||||||
|
|
||||||
&:not(.collapsible-header-page-is-collapsed) .collapsible-header-collapsed {
|
&:not(.collapsible-header-page-is-collapsed) .collapsible-header-collapsed {
|
||||||
--core-header-toolbar-border-width: 0;
|
--core-header-toolbar-border-width: 0;
|
||||||
--core-header-buttons-color: var(--text-color);
|
--core-header-buttons-color: var(--core-header-toolbar-color);
|
||||||
ion-toolbar {
|
ion-toolbar {
|
||||||
--background: transparent;
|
--background: -webkit-linear-gradient(135deg,#039615 0%,#3452ff 100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
|
|
|
@ -125,7 +125,7 @@ ion-header.header-md {
|
||||||
--core-header-toolbar-border-width: 0;
|
--core-header-toolbar-border-width: 0;
|
||||||
--core-header-toolbar-background: transparent;
|
--core-header-toolbar-background: transparent;
|
||||||
--core-header-shadow: none !important;
|
--core-header-shadow: none !important;
|
||||||
--core-header-buttons-color: var(--text-color);
|
--core-header-buttons-color: var(--core-header-toolbar-color);
|
||||||
--core-header-buttons-background: var(--background);
|
--core-header-buttons-background: var(--background);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
"downlevelIteration": true,
|
"downlevelIteration": true,
|
||||||
"experimentalDecorators": true,
|
"experimentalDecorators": true,
|
||||||
"strictNullChecks": true,
|
"strictNullChecks": true,
|
||||||
"strictPropertyInitialization": true,
|
"strictPropertyInitialization": false,
|
||||||
"forceConsistentCasingInFileNames": true,
|
"forceConsistentCasingInFileNames": true,
|
||||||
"useDefineForClassFields": false,
|
"useDefineForClassFields": false,
|
||||||
"module": "esnext",
|
"module": "esnext",
|
||||||
|
|