-
-
-
- {{item.name}}
-
+
-
\ No newline at end of file
+
diff --git a/src/app/_modules/pages/menu/item/pages-menu-item.component.scss b/src/app/_modules/pages/menu/item/pages-menu-item.component.scss
index 39cd8ec..2ad8e90 100644
--- a/src/app/_modules/pages/menu/item/pages-menu-item.component.scss
+++ b/src/app/_modules/pages/menu/item/pages-menu-item.component.scss
@@ -12,6 +12,9 @@
}
min-height: 24px;
>a{
- margin-top: 4px;
+ margin-top: 4px;
+ &.active {
+ color: #000000;
+ }
}
-}
\ No newline at end of file
+}
diff --git a/src/app/_modules/pages/menu/item/pages-menu-item.component.ts b/src/app/_modules/pages/menu/item/pages-menu-item.component.ts
index 59e26d3..2e83bb2 100644
--- a/src/app/_modules/pages/menu/item/pages-menu-item.component.ts
+++ b/src/app/_modules/pages/menu/item/pages-menu-item.component.ts
@@ -1,7 +1,4 @@
-import {Component, EventEmitter, Input, Output,OnInit} from '@angular/core';
-import { Router} from '@angular/router';
-import { MenuService } from '@app/_services/menu.service';
-import { PagesService } from '@app/_services/pages.service';
+import {Component, Input} from '@angular/core';
@Component({
selector: 'pages-menu-item',
@@ -11,83 +8,15 @@ import { PagesService } from '@app/_services/pages.service';
export class PagesMenuItemComponent {
@Input() item: any;
@Input() level: number;
- public toggle=false;
- public selected=false;
- currentURL:string;
- constructor(
- private router: Router,
- private menuService: MenuService,
- private pagesService: PagesService
- ) {
-
+ constructor() {
}
-
get children() {
- return this.item?.children?.data;
+ return this.item.children?.data;
}
ngOnInit(){
- this.toggle = this.current||this.parent;
- if (this.toggle) this.menuService.findChildren(this.item)
}
- rout(link:string){
- this.menuService.navURL = link;
- if (this.item.type.name=='nav-page'){
- this.selected = !this.selected;
- this.toggle=this.selected;
- this.menuService.findChildren(link)
- }else{
- this.router.navigate([{outlets: {slider: null}}]).then(
- ()=>this.router.navigate([link])
- )
- }
- }
-
- switching(event:boolean){
- this.menuService.navURL = this.item.link;
- this.toggle=event;
- this.menuService.findChildren(this.item)
- }
-
- get parent(){
- let parents:any;
- let resp = false;
- parents = this.pagesService.currentPage.value.parents?.data;
- if (parents) {
- resp = parents.map((item:any)=>item.link).includes(this.item.link)
- }
- return resp
- }
-
- get current(){
- return this.pagesService.currentPage.value.link == this.item.link;
- }
-
- get active(){
- let resp = this.menuService.navURL == this.item.link;
- if (!resp) this.selected = false
- return resp;
- }
-
- get menuClass(){
- let menuClass = {}
- menuClass['level-'+(this.level+1)] = true;
- return menuClass
- }
-
- get itemClass(){
- let itemClass = {
- unlock: this.toggle,
- parent: this.parent&&!this.current,
- current: this.current,
- nav: this.item.type.name == "nav-page",
- active: this.active,
- selected: this.selected
- }
- itemClass['level-'+(this.level+1)] = true;
- return itemClass
- }
}
diff --git a/src/app/_modules/pages/menu/pages-menu.component.html b/src/app/_modules/pages/menu/pages-menu.component.html
index b0f13e2..f9b326a 100644
--- a/src/app/_modules/pages/menu/pages-menu.component.html
+++ b/src/app/_modules/pages/menu/pages-menu.component.html
@@ -1,3 +1 @@
-
-
+
diff --git a/src/app/_modules/pages/menu/pages-menu.component.ts b/src/app/_modules/pages/menu/pages-menu.component.ts
index 8a1ab76..2fcdebc 100644
--- a/src/app/_modules/pages/menu/pages-menu.component.ts
+++ b/src/app/_modules/pages/menu/pages-menu.component.ts
@@ -1,6 +1,5 @@
-import {Component, EventEmitter, Input, Output, OnInit} from '@angular/core';
-import { Router } from '@angular/router';
-import { MenuService } from '@app/_services/menu.service';
+import {Component, Input, OnInit} from '@angular/core';
+import {PagesService} from "@app/_services/pages.service";
@Component({
selector: 'pages-menu',
@@ -8,39 +7,26 @@ import { MenuService } from '@app/_services/menu.service';
styleUrls: ['pages-menu.component.scss']
})
export class PagesMenuComponent implements OnInit {
- @Input() items: any[];
+ @Input() root: any;
@Input() level = 0;
-
- private currentURL:string;
- private root = false;
-
- constructor(
- private menuService: MenuService,
- private router: Router,
-
- ){
- router.events.subscribe((event:any)=>{
- if(event.url)this.currentURL = event.url
- })
- this.currentURL = router.url
+ constructor(private pagesService: PagesService) {
}
-
- private hiddenPages = ['/o-tsentre/protivodeistvie-korruptsii', '/o-tsentre/zashchita-personalnykh-dannykh', '/o-tsentre/okhrana-truda'];
- get visibleItems() {
- return this.items?.filter(item => {
- return this.hiddenPages.indexOf(item.link) === -1;
+ get children() {
+ return this.root?.children?.data;
+ }
+
+
+ ngOnInit() {
+ if (this.root && this.root?.hasChildren && !this.children) this.fetch();
+ }
+
+ fetch() {
+ let include = ['children'];
+ this.pagesService.show(this.root.id, {include: include.join(',')}).subscribe(res => {
+ this.root = res.data;
});
}
- ngOnInit() {
-
- if (!this.items){
- this.root = true;
- this.menuService.pagesTree.subscribe(res=>{
- this.items = res.data
- });
- }
- }
}
diff --git a/src/app/_modules/pages/page/page.component.ts b/src/app/_modules/pages/page/page.component.ts
index 770f252..29ee498 100644
--- a/src/app/_modules/pages/page/page.component.ts
+++ b/src/app/_modules/pages/page/page.component.ts
@@ -63,20 +63,18 @@ export class PageComponent {
fetch() {
this.loading = true;
let include = [
- 'parents',
+ 'parents.children',
+ 'children',
'sections.type',
'sections.groups.fields.value',
'sections.objectables.groups.fields.value',
'sidebars.groups.fields.value',
'sidebars.type',
- 'permissions',
- 'children.children'
+ 'permissions'
];
this.pagesService.find(this.url, {include: include.join(',')}).subscribe(res => {
this.page = res?.data;
- this.pagesService.currentPage.next(this.page);
- this.page = res?.data;
- this.pagesService.setMetaFromPage(this.page);
+ if (this.page) this.pagesService.currentPage = this.page;
this.loading = false;
}, error => {
this.loading = false;
diff --git a/src/app/_services/pages.service.ts b/src/app/_services/pages.service.ts
index c20af59..077c960 100644
--- a/src/app/_services/pages.service.ts
+++ b/src/app/_services/pages.service.ts
@@ -6,13 +6,30 @@ import {Observable, BehaviorSubject} from "rxjs";
@Injectable({providedIn: 'root'})
export class PagesService {
+ public currentPageSubject = new BehaviorSubject
(null);
+ public rootPageSubject = new BehaviorSubject(null);
+ public metaSubject = new BehaviorSubject({title: '', description: '', keywords: ''});
+ public editMode = new BehaviorSubject(false);
+
constructor(private http: HttpClient) {
- this.pageMeta = new BehaviorSubject({title: '', description: '', keywords: ''});
+ //this.find('/').subscribe(res => {this.rootPage = res.data});
+ }
+
+ get currentPage() {
+ return this.currentPageSubject.value;
+ }
+ set currentPage(val: any) {
+ this.currentPageSubject.next(val);
+ this.rootPage = val?.parents?.data[0] || val;
+ this.setMetaFromPage(val);
+ }
+ get rootPage() {
+ return this.rootPageSubject.value;
+ }
+ set rootPage(val: any) {
+ this.rootPageSubject.next(val);
}
- public currentPage = new BehaviorSubject({data:[]});
- public editMode = new BehaviorSubject(false);
- public pageMeta: BehaviorSubject;
root(params?: {}): Observable {
@@ -50,6 +67,6 @@ export class PagesService {
this.setMeta({title: page?.title || page?.name, description: page?.description || '', keywords: page?.keywords || ''});
}
setMeta(meta: any) {
- this.pageMeta.next(meta);
+ this.metaSubject.next(meta);
}
}
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index 1e7e08f..7908d3d 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -1,12 +1,36 @@
import {Component} from '@angular/core';
import {AuthenticationService} from "@app/_services";
+import {PagesService} from "@app/_services/pages.service";
+import {Meta, Title} from "@angular/platform-browser";
+import {Subscription} from "rxjs";
@Component({
selector: 'app',
templateUrl: 'app.component.html',
styleUrls: ['app.component.scss']})
export class AppComponent {
- constructor(private authService: AuthenticationService) {
+ public subscription: Subscription;
+
+ constructor(private authService: AuthenticationService, private pagesService: PagesService, private titleService: Title, private metaService: Meta) {
authService.checkUser();
+ this.subscription = this.pagesService.metaSubject.subscribe(data => {
+ this.applyMetaData(data);
+ });
+ }
+
+ ngOnDestroy() {
+ this.subscription?.unsubscribe();
+ }
+
+ applyMetaData(data: any) {
+ if (data?.title) {
+ this.titleService.setTitle(data.title);
+ this.metaService.updateTag({property: 'og:title', content: data.title}, "property='og:title'");
+ }
+ if (data?.description) {
+ this.metaService.updateTag({name: 'description', content: data?.description}, "name='description'");
+ this.metaService.updateTag({property: 'og:description', content: data.description}, "property='og:description'");
+ }
+ if (data?.keywords) this.metaService.updateTag({name: 'keywords', content: data?.keywords}, "name='keywords'");
}
}