Merge remote-tracking branch 'origin/master'
# Conflicts: # src/app/_modules/pages/page/page.component.ts # src/app/_services/pages.service.tsmaster
commit
36948d401a
|
|
@ -3,6 +3,7 @@ import {PagesService} from "@app/_services/pages.service";
|
|||
import {AuthenticationService, ListsService} from "@app/_services";
|
||||
import {Router} from "@angular/router";
|
||||
import {Subscription} from "rxjs";
|
||||
import { MenuService } from '@app/_services/menu.service';
|
||||
|
||||
@Component({
|
||||
selector: 'header',
|
||||
|
|
@ -24,7 +25,8 @@ export class HeaderComponent {
|
|||
private router: Router,
|
||||
private pagesService: PagesService,
|
||||
public authenticationService: AuthenticationService,
|
||||
private listsService: ListsService
|
||||
private listsService: ListsService,
|
||||
private menuService: MenuService
|
||||
) {
|
||||
|
||||
}
|
||||
|
|
@ -36,13 +38,11 @@ export class HeaderComponent {
|
|||
this.listsService.result('showSettingSite').next(false);
|
||||
}
|
||||
this.controlsSubscriptionMenu = this.listsService.controls('headerMenu').subscribe(controls => {
|
||||
|
||||
this.fetchMenu();
|
||||
});
|
||||
this.resultSubscriptionMenu = this.listsService.result('headerMenu').subscribe(res => {
|
||||
this.menuItems = res?.data || [];
|
||||
});
|
||||
this.listsService.changed.subscribe(event=>this.fetchMenu())
|
||||
this.menuService.setPagesTree()
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
|
|
@ -51,14 +51,6 @@ export class HeaderComponent {
|
|||
this.resultSubscriptionMenu?.unsubscribe();
|
||||
}
|
||||
|
||||
|
||||
fetchMenu() {
|
||||
let include = ['children.children.children.children','parents','children.parents'];
|
||||
this.pagesService.root({include: include.join(',')}).subscribe(res => {
|
||||
this.menuItems = res.data;
|
||||
});
|
||||
}
|
||||
|
||||
settingsSite() {
|
||||
let showSettingSite = localStorage.getItem('showSettingSite');
|
||||
showSettingSite = showSettingSite === 'yes' ? 'no' : 'yes';
|
||||
|
|
|
|||
|
|
@ -29,48 +29,30 @@ export class LeftContentComponent {
|
|||
}
|
||||
|
||||
ngOnInit(){
|
||||
this.routeSubscription = this.router.events.subscribe(event => {
|
||||
if (event instanceof NavigationEnd) this.onNavigationEnd(event);
|
||||
});
|
||||
this.pagesService.editMode.subscribe(
|
||||
mode => {
|
||||
this.editMode = mode;
|
||||
}
|
||||
);
|
||||
this.pagesService.currentPage.subscribe(
|
||||
page => this.fetch(page)
|
||||
)
|
||||
}
|
||||
|
||||
onNavigationEnd(event: NavigationEnd) {
|
||||
let url = event.url.split('(')[0];
|
||||
url = url.split('?')[0];
|
||||
if (url !== this.url) {
|
||||
this.url = url;
|
||||
this.fetch()
|
||||
fetch(page:any){
|
||||
if (page){
|
||||
this.background = page.image?.data?.links?.full;
|
||||
if (this.background) this.background = `url(${this.background})`;
|
||||
this.pageName = (page.parents?.data[2]||page).name;
|
||||
this.editable = page.permissions?.edit || page.permissions?.anything;
|
||||
this.pageID = page.id
|
||||
}else{
|
||||
this.pageName = null;
|
||||
this.editable = null;
|
||||
this.pagesService.editMode.next(false)
|
||||
}
|
||||
}
|
||||
|
||||
fetch(){
|
||||
let include = [
|
||||
'permissions',
|
||||
'parents'
|
||||
];
|
||||
this.pagesService.find(this.url, {include: include.join(',')}).subscribe(
|
||||
resp => {
|
||||
let page = resp?.data;
|
||||
if (page){
|
||||
this.background = page.image?.data?.links?.full;
|
||||
if (this.background) this.background = `url(${this.background})`;
|
||||
this.pageName = (page.parents.data[2]||page).name;
|
||||
this.editable = page.permissions.edit || page.permissions.anything;
|
||||
this.pageID = page.id
|
||||
}else{
|
||||
this.pageName = null;
|
||||
this.editable = null;
|
||||
this.pagesService.editMode.next(false)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
toggleEditMode(){
|
||||
this.pagesService.editMode.next(!this.editMode)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@ import {Component} from '@angular/core';
|
|||
import {ActivatedRoute, Router} from "@angular/router";
|
||||
import {FormControl, FormGroup} from "@angular/forms";
|
||||
import {FormsService, ListsService} from "@app/_services";
|
||||
import {WindowScrollingService} from "@app/_services/window-scrolling.service";
|
||||
import { MenuService } from '@app/_services/menu.service';
|
||||
|
||||
import { PagesService } from '@app/_services/pages.service';
|
||||
|
||||
|
||||
|
|
@ -32,7 +33,7 @@ export class SliderFormComponent {
|
|||
private formsService: FormsService,
|
||||
private listsService: ListsService,
|
||||
private pagesService: PagesService,
|
||||
private windowScrollingService: WindowScrollingService
|
||||
private menuService: MenuService
|
||||
) {
|
||||
}
|
||||
|
||||
|
|
@ -57,7 +58,6 @@ export class SliderFormComponent {
|
|||
this.initFormGroup(JSON.parse(this.route.snapshot.queryParamMap.get('extraProps')));
|
||||
this.formParams = JSON.parse(this.route.snapshot.queryParamMap.get('formParams')) || {};
|
||||
this.fetch();
|
||||
this.windowScrollingService.disable();
|
||||
}
|
||||
|
||||
fetch() {
|
||||
|
|
@ -132,7 +132,7 @@ export class SliderFormComponent {
|
|||
window.open(res.asset.data.links[res.action || 'download'], "_blank");
|
||||
} else {
|
||||
this.listsService.refresh(this.list);
|
||||
if(this.type=='page')this.pagesService.changedPages();
|
||||
if(this.type=='page')this.menuService.setPagesTree();
|
||||
this.close();
|
||||
}
|
||||
}, error => {
|
||||
|
|
@ -146,7 +146,6 @@ export class SliderFormComponent {
|
|||
}
|
||||
|
||||
close() {
|
||||
this.windowScrollingService.enable();
|
||||
this.router.navigate([{outlets: {slider: null}}]).then();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import {Component, EventEmitter, Input, Output, OnInit} from '@angular/core';
|
||||
import { Router } from '@angular/router';
|
||||
import { PagesService } from '@app/_services/pages.service';
|
||||
import { MenuService } from '@app/_services/menu.service';
|
||||
|
||||
@Component({
|
||||
selector: 'pages-menu',
|
||||
|
|
@ -16,7 +16,7 @@ export class PagesMenuComponent implements OnInit {
|
|||
private root = false;
|
||||
|
||||
constructor(
|
||||
private pagesService: PagesService,
|
||||
private menuService: MenuService,
|
||||
private router: Router,
|
||||
|
||||
){
|
||||
|
|
@ -38,7 +38,7 @@ export class PagesMenuComponent implements OnInit {
|
|||
|
||||
if (!this.items){
|
||||
this.root = true;
|
||||
this.pagesService.pagesTree.subscribe(res=>{
|
||||
this.menuService.pagesTree.subscribe(res=>{
|
||||
this.items = res.data
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,14 +2,14 @@
|
|||
<!-- <div class="limiter">
|
||||
<page-breadcrumbs [page]="page"></page-breadcrumbs>
|
||||
</div> -->
|
||||
<div class="pages" [ngSwitch]="page?.type?.name || page?.type">
|
||||
<content-page *ngSwitchCase="'content'" [page]="page" [editMode]="editMode"></content-page>
|
||||
<publications-page *ngSwitchCase="'publications'" [page]="page" [editMode]="editMode"></publications-page>
|
||||
<registry-page *ngSwitchCase="'registry'" [page]="page" [editMode]="editMode"></registry-page>
|
||||
<publication-page *ngSwitchCase="'publication'" [page]="page" [editMode]="editMode"></publication-page>
|
||||
<tk-structure-page *ngSwitchCase="'tk-structure'" [page]="page" [editMode]="editMode"></tk-structure-page>
|
||||
<p *ngSwitchDefault>Page type {{page?.type?.name}} is undefined</p>
|
||||
</div>
|
||||
<div class="pages" [ngSwitch]="page?.type?.name || page?.type">
|
||||
<content-page *ngSwitchCase="'content'" [page]="page" [editMode]="editMode"></content-page>
|
||||
<publications-page *ngSwitchCase="'publications'" [page]="page" [editMode]="editMode"></publications-page>
|
||||
<registry-page *ngSwitchCase="'registry'" [page]="page" [editMode]="editMode"></registry-page>
|
||||
<publication-page *ngSwitchCase="'publication'" [page]="page" [editMode]="editMode"></publication-page>
|
||||
<tk-structure-page *ngSwitchCase="'tk-structure'" [page]="page" [editMode]="editMode"></tk-structure-page>
|
||||
<p *ngSwitchDefault>Page type {{page?.type?.name}} is undefined</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content" *ngIf="!loading && !page">
|
||||
<page-not-found></page-not-found>
|
||||
|
|
|
|||
|
|
@ -12,11 +12,8 @@ export class PageComponent {
|
|||
public page: any;
|
||||
public editMode: boolean;
|
||||
public loading = false;
|
||||
public menuItems:any[]
|
||||
private url: string;
|
||||
private inited = false;
|
||||
public subMenu:any;
|
||||
public pageTopName:string;
|
||||
routeSubscription?: Subscription;
|
||||
subscription: Subscription;
|
||||
|
||||
|
|
@ -77,32 +74,13 @@ export class PageComponent {
|
|||
];
|
||||
this.pagesService.find(this.url, {include: include.join(',')}).subscribe(res => {
|
||||
this.page = res?.data;
|
||||
this.loading = false;
|
||||
this.fetchMenu();
|
||||
console.log('NextPage', this.page)
|
||||
this.pagesService.currentPage.next(this.page);
|
||||
this.page = res?.data;
|
||||
this.pagesService.setMetaFromPage(this.page);
|
||||
this.loading = false;
|
||||
}, error => {
|
||||
this.loading = false;
|
||||
});
|
||||
}
|
||||
|
||||
fetchMenu() {
|
||||
let include = ['children.children.children.children'];
|
||||
this.pagesService.root({include: include.join(',')}).subscribe(res => {
|
||||
this.menuItems = res.data;
|
||||
let topItem:any = null;
|
||||
this.subMenu = [];
|
||||
this.pageTopName = this.page.name;
|
||||
|
||||
topItem = this.menuItems.find(item=>this.page.link.startsWith(item.link));
|
||||
this.subMenu = topItem?.children.data;
|
||||
this.pageTopName = topItem?.name || this.pageTopName;
|
||||
|
||||
topItem = this.subMenu?.find(item=>this.page.link.startsWith(item.link));
|
||||
this.pageTopName = topItem?.name || this.pageTopName;
|
||||
this.subMenu = topItem?.children.data
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import { AfterViewInit, Component, Input, OnInit } from '@angular/core';
|
||||
import { Router } from '@angular/router';
|
||||
import {WindowScrollingService} from "@app/_services/window-scrolling.service";
|
||||
|
||||
@Component({
|
||||
selector: 'slider',
|
||||
|
|
@ -13,7 +14,8 @@ export class SliderComponent implements OnInit {
|
|||
css:any;
|
||||
|
||||
constructor(
|
||||
private router:Router
|
||||
private router:Router,
|
||||
private windowScrollingService: WindowScrollingService
|
||||
){}
|
||||
|
||||
ngOnInit(){
|
||||
|
|
@ -21,6 +23,10 @@ export class SliderComponent implements OnInit {
|
|||
'left-side': this.side=='left',
|
||||
'right-side': this.side=='right'
|
||||
}
|
||||
this.windowScrollingService.disable();
|
||||
}
|
||||
ngOnDestroy(){
|
||||
this.windowScrollingService.enable();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
import {Injectable} from '@angular/core';
|
||||
import {HttpClient} from '@angular/common/http';
|
||||
import {environment} from '@environments/environment';
|
||||
import {Observable, BehaviorSubject} from "rxjs";
|
||||
|
||||
|
||||
@Injectable({providedIn: 'root'})
|
||||
export class MenuService {
|
||||
constructor(
|
||||
private http: HttpClient
|
||||
){}
|
||||
|
||||
public pagesTree = new BehaviorSubject({data:[]});
|
||||
|
||||
|
||||
setPagesTree(){
|
||||
let include = ['children.children.children.children.children.children.children'];
|
||||
this.root({include: include.join(',')}).subscribe(res => {
|
||||
this.pagesTree.next(res)
|
||||
});
|
||||
}
|
||||
|
||||
root(params?: {}): Observable<any> {
|
||||
return this.http.get(`${environment.apiUrl}/api/pages/root`, {params: params});
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -12,6 +12,7 @@ export class PagesService {
|
|||
this.changedPages()
|
||||
}
|
||||
|
||||
public currentPage = new BehaviorSubject<any>({data:[]});
|
||||
public pagesTree: BehaviorSubject<any>;
|
||||
public editMode = new BehaviorSubject<boolean>(false);
|
||||
public pageMeta: BehaviorSubject<any>;
|
||||
|
|
@ -24,6 +25,7 @@ export class PagesService {
|
|||
}
|
||||
|
||||
|
||||
|
||||
root(params?: {}): Observable<any> {
|
||||
return this.http.get(`${environment.apiUrl}/api/pages/root`, {params: params});
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue