diff --git a/src/app/components/files/files.component.ts b/src/app/components/files/files.component.ts index f4f8fba0f..45c2557f6 100644 --- a/src/app/components/files/files.component.ts +++ b/src/app/components/files/files.component.ts @@ -19,7 +19,7 @@ import { Observable, Subscription } from 'rxjs/Rx'; import { Component, ViewChild, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core'; import { Router, ActivatedRoute, Params } from '@angular/router'; import { MinimalNodeEntity, MinimalNodeEntryEntity, PathElementEntity, NodePaging, PathElement } from 'alfresco-js-api'; -import { UploadService, FileUploadEvent, NodesApiService, AlfrescoContentService } from 'ng2-alfresco-core'; +import { UploadService, FileUploadEvent, NodesApiService, AlfrescoContentService, AlfrescoApiService } from 'ng2-alfresco-core'; import { BrowsingFilesService } from '../../common/services/browsing-files.service'; import { ContentManagementService } from '../../common/services/content-management.service'; @@ -54,7 +54,8 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy { private uploadService: UploadService, private contentManagementService: ContentManagementService, private browsingFilesService: BrowsingFilesService, - private contentService: AlfrescoContentService) { + private contentService: AlfrescoContentService, + private apiService: AlfrescoApiService) { super(); } @@ -190,7 +191,7 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy { } // todo: review this approach once 5.2.3 is out - private updateCurrentNode(node: MinimalNodeEntryEntity) { + private async updateCurrentNode(node: MinimalNodeEntryEntity) { this.nodePath = null; if (node && node.path && node.path.elements) { @@ -204,7 +205,7 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy { if (elements[1].name === 'User Homes') { elements.splice(0, 2); } else if (elements[1].name === 'Sites') { - this.normalizeSitePath(node); + await this.normalizeSitePath(node); } } } @@ -214,24 +215,42 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy { } // todo: review this approach once 5.2.3 is out - private normalizeSitePath(node: MinimalNodeEntryEntity): void { + private async normalizeSitePath(node: MinimalNodeEntryEntity) { const elements = node.path.elements; // remove 'Sites' elements.splice(1, 1); - if (node.name === 'documentLibrary') { - node.name = elements[1].name; + if (this.isSiteContainer(node)) { + // rename 'documentLibrary' entry to the target site display name + // clicking on the breadcrumb entry loads the site content + const parentNode = await this.apiService.nodesApi.getNodeInfo(node.parentId); + node.name = parentNode.properties['cm:title'] || parentNode.name; + + // remove the site entry elements.splice(1, 1); } else { + // remove 'documentLibrary' in the middle of the path const docLib = elements.findIndex(el => el.name === 'documentLibrary'); if (docLib > -1) { + const siteFragment = elements[docLib - 1]; + const siteNode = await this.apiService.nodesApi.getNodeInfo(siteFragment.id); + + // apply Site Name to the parent fragment + siteFragment.name = siteNode.properties['cm:title'] || siteNode.name; elements.splice(docLib, 1); } } } - private isRootNode(nodeId: string): boolean { + isSiteContainer(node: MinimalNodeEntryEntity): boolean { + if (node && node.aspectNames && node.aspectNames.length > 0) { + return node.aspectNames.indexOf('st:siteContainer') >= 0; + } + return false; + } + + isRootNode(nodeId: string): boolean { if (this.node && this.node.path && this.node.path.elements && this.node.path.elements.length > 0) { return this.node.path.elements[0].id === nodeId; }