mirror of
https://github.com/Alfresco/alfresco-content-app.git
synced 2026-09-09 18:02:54 +00:00
Merge branch 'development' of https://github.com/Alfresco/alfresco-content-app into dev-pionnegru-ACA-2623
This commit is contained in:
@@ -73,6 +73,10 @@ import { AppSearchResultsModule } from './components/search/search-results.modul
|
||||
import { AppLoginModule } from './components/login/login.module';
|
||||
import { AppHeaderModule } from './components/header/header.module';
|
||||
import { AppNodeVersionModule } from './components/node-version/node-version.module';
|
||||
import { FavoritesComponent } from './components/favorites/favorites.component';
|
||||
import { RecentFilesComponent } from './components/recent-files/recent-files.component';
|
||||
import { SharedFilesComponent } from './components/shared-files/shared-files.component';
|
||||
|
||||
import { environment } from '../environments/environment';
|
||||
|
||||
import { registerLocaleData } from '@angular/common';
|
||||
@@ -151,7 +155,10 @@ registerLocaleData(localeSv);
|
||||
LibrariesComponent,
|
||||
FavoriteLibrariesComponent,
|
||||
NodeVersionUploadDialogComponent,
|
||||
NodeVersionsDialogComponent
|
||||
NodeVersionsDialogComponent,
|
||||
FavoritesComponent,
|
||||
RecentFilesComponent,
|
||||
SharedFilesComponent
|
||||
],
|
||||
providers: [
|
||||
{ provide: RouteReuseStrategy, useClass: AppRouteReuseStrategy },
|
||||
|
||||
+87
-6
@@ -36,6 +36,9 @@ import {
|
||||
GenericErrorComponent
|
||||
} from '@alfresco/aca-shared';
|
||||
import { AuthGuardEcm, AuthGuard } from '@alfresco/adf-core';
|
||||
import { FavoritesComponent } from './components/favorites/favorites.component';
|
||||
import { RecentFilesComponent } from './components/recent-files/recent-files.component';
|
||||
import { SharedFilesComponent } from './components/shared-files/shared-files.component';
|
||||
|
||||
export const APP_ROUTES: Routes = [
|
||||
{
|
||||
@@ -92,6 +95,14 @@ export const APP_ROUTES: Routes = [
|
||||
defaultNodeId: '-my-'
|
||||
}
|
||||
},
|
||||
// deprecated, backwards compatibility with ACA 1.8
|
||||
{
|
||||
path: 'preview/:nodeId',
|
||||
loadChildren: './components/preview/preview.module#PreviewModule',
|
||||
data: {
|
||||
navigateSource: 'personal-files'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'view/:nodeId',
|
||||
outlet: 'viewer',
|
||||
@@ -119,6 +130,22 @@ export const APP_ROUTES: Routes = [
|
||||
sortingPreferenceKey: 'personal-files'
|
||||
}
|
||||
},
|
||||
// deprecated, backwards compatibility with ACA 1.8
|
||||
{
|
||||
path: 'preview/:nodeId',
|
||||
loadChildren: './components/preview/preview.module#PreviewModule',
|
||||
data: {
|
||||
navigateSource: 'personal-files'
|
||||
}
|
||||
},
|
||||
// deprecated, backwards compatibility with ACA 1.8
|
||||
{
|
||||
path: ':folderId/preview/:nodeId',
|
||||
loadChildren: './components/preview/preview.module#PreviewModule',
|
||||
data: {
|
||||
navigateSource: 'personal-files'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'view/:nodeId',
|
||||
outlet: 'viewer',
|
||||
@@ -159,6 +186,14 @@ export const APP_ROUTES: Routes = [
|
||||
sortingPreferenceKey: 'libraries-files'
|
||||
}
|
||||
},
|
||||
// deprecated, backwards compatibility with ACA 1.8
|
||||
{
|
||||
path: 'preview/:nodeId',
|
||||
loadChildren: './components/preview/preview.module#PreviewModule',
|
||||
data: {
|
||||
navigateSource: 'libraries'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'view/:nodeId',
|
||||
outlet: 'viewer',
|
||||
@@ -196,8 +231,21 @@ export const APP_ROUTES: Routes = [
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
loadChildren:
|
||||
'./components/favorites/favorites.module#AppFavoritesModule'
|
||||
component: FavoritesComponent,
|
||||
data: {
|
||||
title: 'APP.BROWSE.FAVORITES.TITLE',
|
||||
sortingPreferenceKey: 'favorites'
|
||||
}
|
||||
// loadChildren:
|
||||
// './components/favorites/favorites.module#AppFavoritesModule'
|
||||
},
|
||||
// deprecated, backwards compatibility with ACA 1.8
|
||||
{
|
||||
path: 'preview/:nodeId',
|
||||
loadChildren: './components/preview/preview.module#PreviewModule',
|
||||
data: {
|
||||
navigateSource: 'favorites'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'view/:nodeId',
|
||||
@@ -223,8 +271,20 @@ export const APP_ROUTES: Routes = [
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
loadChildren:
|
||||
'./components/recent-files/recent-files.module#AppRecentFilesModule'
|
||||
component: RecentFilesComponent,
|
||||
data: {
|
||||
title: 'APP.BROWSE.RECENT.TITLE'
|
||||
}
|
||||
// loadChildren:
|
||||
// './components/recent-files/recent-files.module#AppRecentFilesModule'
|
||||
},
|
||||
// deprecated, backwards compatibility with ACA 1.8
|
||||
{
|
||||
path: 'preview/:nodeId',
|
||||
loadChildren: './components/preview/preview.module#PreviewModule',
|
||||
data: {
|
||||
navigateSource: 'recent-files'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'view/:nodeId',
|
||||
@@ -247,8 +307,21 @@ export const APP_ROUTES: Routes = [
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
loadChildren:
|
||||
'./components/shared-files/shared-files.module#AppSharedFilesModule'
|
||||
data: {
|
||||
title: 'APP.BROWSE.SHARED.TITLE',
|
||||
sortingPreferenceKey: 'shared-files'
|
||||
},
|
||||
component: SharedFilesComponent
|
||||
// loadChildren:
|
||||
// './components/shared-files/shared-files.module#AppSharedFilesModule'
|
||||
},
|
||||
// deprecated, backwards compatibility with ACA 1.8
|
||||
{
|
||||
path: 'preview/:nodeId',
|
||||
loadChildren: './components/preview/preview.module#PreviewModule',
|
||||
data: {
|
||||
navigateSource: 'shared'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'view/:nodeId',
|
||||
@@ -286,6 +359,14 @@ export const APP_ROUTES: Routes = [
|
||||
title: 'APP.BROWSE.SEARCH.TITLE'
|
||||
}
|
||||
},
|
||||
// deprecated, backwards compatibility with ACA 1.8
|
||||
{
|
||||
path: 'preview/:nodeId',
|
||||
loadChildren: './components/preview/preview.module#PreviewModule',
|
||||
data: {
|
||||
navigateSource: 'search'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'view/:nodeId',
|
||||
outlet: 'viewer',
|
||||
|
||||
@@ -1,14 +1,30 @@
|
||||
<ng-container *ngIf="selection$ | async as selection">
|
||||
<button
|
||||
mat-menu-item
|
||||
data-automation-id="share-action-button"
|
||||
(click)="editSharedNode(selection)"
|
||||
>
|
||||
<mat-icon>link</mat-icon>
|
||||
<ng-container *ngIf="isShared(selection); else not_shared">
|
||||
<span>{{ 'APP.ACTIONS.SHARE_EDIT' | translate }}</span>
|
||||
</ng-container>
|
||||
</button>
|
||||
<ng-container *ngIf="!data.iconButton">
|
||||
<button
|
||||
mat-menu-item
|
||||
data-automation-id="share-action-button"
|
||||
(click)="editSharedNode(selection)"
|
||||
>
|
||||
<mat-icon>link</mat-icon>
|
||||
<ng-container *ngIf="isShared(selection); else not_shared">
|
||||
<span>{{ 'APP.ACTIONS.SHARE_EDIT' | translate }}</span>
|
||||
</ng-container>
|
||||
</button>
|
||||
</ng-container>
|
||||
|
||||
<ng-container *ngIf="data.iconButton">
|
||||
<button
|
||||
mat-icon-button
|
||||
data-automation-id="share-action-button"
|
||||
(click)="editSharedNode(selection)"
|
||||
[attr.title]="
|
||||
(isShared(selection) ? 'APP.ACTIONS.SHARE_EDIT' : 'APP.ACTIONS.SHARE')
|
||||
| translate
|
||||
"
|
||||
>
|
||||
<mat-icon>link</mat-icon>
|
||||
</button>
|
||||
</ng-container>
|
||||
</ng-container>
|
||||
|
||||
<ng-template #not_shared>
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { Component, OnInit, Input } from '@angular/core';
|
||||
import { Observable } from 'rxjs';
|
||||
import { Store } from '@ngrx/store';
|
||||
import { SelectionState } from '@alfresco/adf-extensions';
|
||||
@@ -38,6 +38,8 @@ import {
|
||||
templateUrl: './toggle-shared.component.html'
|
||||
})
|
||||
export class ToggleSharedComponent implements OnInit {
|
||||
@Input() data: any;
|
||||
|
||||
selection$: Observable<SelectionState>;
|
||||
|
||||
constructor(private store: Store<AppStore>) {}
|
||||
|
||||
@@ -28,10 +28,9 @@ import { Overlay } from '@angular/cdk/overlay';
|
||||
import { Injector } from '@angular/core';
|
||||
import { Store } from '@ngrx/store';
|
||||
import { of } from 'rxjs';
|
||||
import { CoreModule } from '@alfresco/adf-core';
|
||||
import { CoreModule, UserPreferencesService } from '@alfresco/adf-core';
|
||||
import { ContextMenuService } from './context-menu.service';
|
||||
import { ContextMenuModule } from './context-menu.module';
|
||||
import { UserPreferencesService } from '@alfresco/adf-core';
|
||||
|
||||
describe('ContextMenuService', () => {
|
||||
let contextMenuService;
|
||||
|
||||
@@ -25,13 +25,13 @@
|
||||
|
||||
import { TestBed, ComponentFixture } from '@angular/core/testing';
|
||||
import { NO_ERRORS_SCHEMA } from '@angular/core';
|
||||
import { UserPreferencesService } from '@alfresco/adf-core';
|
||||
import { Router } from '@angular/router';
|
||||
import {
|
||||
AlfrescoApiService,
|
||||
NodeFavoriteDirective,
|
||||
DataTableComponent,
|
||||
AppConfigPipe
|
||||
AppConfigPipe,
|
||||
UserPreferencesService
|
||||
} from '@alfresco/adf-core';
|
||||
import { DocumentListComponent } from '@alfresco/adf-content-services';
|
||||
import { FavoriteLibrariesComponent } from './favorite-libraries.component';
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { NgModule } from '@angular/core';
|
||||
import { FavoritesComponent } from './favorites.component';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { CoreModule } from '@alfresco/adf-core';
|
||||
import { RouterModule, Routes } from '@angular/router';
|
||||
import { ContentModule } from '@alfresco/adf-content-services';
|
||||
import { DirectivesModule } from '../../directives/directives.module';
|
||||
import { AppCommonModule } from '../common/common.module';
|
||||
import { AppToolbarModule } from '../toolbar/toolbar.module';
|
||||
import { ContextMenuModule } from '../context-menu/context-menu.module';
|
||||
import { AppInfoDrawerModule } from '../info-drawer/info.drawer.module';
|
||||
import { AppLayoutModule } from '../layout/layout.module';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
component: FavoritesComponent,
|
||||
data: {
|
||||
title: 'APP.BROWSE.FAVORITES.TITLE',
|
||||
sortingPreferenceKey: 'favorites'
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
CoreModule.forChild(),
|
||||
RouterModule.forChild(routes),
|
||||
ContentModule.forChild(),
|
||||
DirectivesModule,
|
||||
AppCommonModule,
|
||||
AppToolbarModule,
|
||||
ContextMenuModule,
|
||||
AppInfoDrawerModule,
|
||||
AppLayoutModule
|
||||
],
|
||||
declarations: [FavoritesComponent],
|
||||
exports: [FavoritesComponent]
|
||||
})
|
||||
export class AppFavoritesModule {}
|
||||
@@ -35,11 +35,14 @@ import {
|
||||
} from '@alfresco/js-api';
|
||||
import { ContentManagementService } from '../../services/content-management.service';
|
||||
import { NodeActionsService } from '../../services/node-actions.service';
|
||||
import { AppStore } from '@alfresco/aca-shared/store';
|
||||
import { PageComponent } from '../page.component';
|
||||
import { ContentApiService } from '@alfresco/aca-shared';
|
||||
import { AppExtensionService } from '../../extensions/extension.service';
|
||||
import { SetCurrentFolderAction, isAdmin } from '@alfresco/aca-shared/store';
|
||||
import {
|
||||
SetCurrentFolderAction,
|
||||
isAdmin,
|
||||
AppStore
|
||||
} from '@alfresco/aca-shared/store';
|
||||
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
|
||||
import { debounceTime, takeUntil } from 'rxjs/operators';
|
||||
import { ShareDataRow } from '@alfresco/adf-content-services';
|
||||
@@ -51,6 +54,7 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy {
|
||||
isValidPath = true;
|
||||
isSmallScreen = false;
|
||||
isAdmin = false;
|
||||
selectedNode: MinimalNodeEntity;
|
||||
|
||||
private nodePath: PathElement[];
|
||||
|
||||
@@ -144,6 +148,7 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy {
|
||||
|
||||
navigateTo(node: MinimalNodeEntity) {
|
||||
if (node && node.entry) {
|
||||
this.selectedNode = node;
|
||||
const { id, isFolder } = node.entry;
|
||||
|
||||
if (isFolder) {
|
||||
@@ -173,7 +178,7 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy {
|
||||
|
||||
// check root and child nodes
|
||||
if (node && node.entry && node.entry.parentId === this.getParentNodeId()) {
|
||||
this.reload();
|
||||
this.reload(this.selectedNode);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -211,7 +216,7 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy {
|
||||
if (alreadyDisplayedParentFolder) {
|
||||
return;
|
||||
}
|
||||
this.reload();
|
||||
this.reload(this.selectedNode);
|
||||
}
|
||||
|
||||
onContentCopied(nodes: MinimalNodeEntity[]) {
|
||||
@@ -221,7 +226,7 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy {
|
||||
);
|
||||
});
|
||||
if (newNode) {
|
||||
this.reload();
|
||||
this.reload(this.selectedNode);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -88,18 +88,6 @@ describe('InfoDrawerComponent', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('should set displayNode when node is from personal list', () => {
|
||||
spyOn(contentApiService, 'getNodeInfo');
|
||||
const nodeMock = <any>{ entry: { id: 'nodeId', aspectNames: [] } };
|
||||
component.node = nodeMock;
|
||||
|
||||
fixture.detectChanges();
|
||||
component.ngOnChanges();
|
||||
|
||||
expect(component.displayNode).toBe(nodeMock.entry);
|
||||
expect(contentApiService.getNodeInfo).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should set displayNode when node is library', async(() => {
|
||||
spyOn(contentApiService, 'getNodeInfo');
|
||||
const nodeMock = <any>{
|
||||
|
||||
@@ -88,12 +88,8 @@ export class InfoDrawerComponent implements OnChanges, OnInit, OnDestroy {
|
||||
|
||||
const entry: any = this.node.entry;
|
||||
|
||||
if (!entry.aspectNames) {
|
||||
const id = entry.nodeId || entry.id;
|
||||
return this.loadNodeInfo(id);
|
||||
}
|
||||
|
||||
this.setDisplayNode(entry);
|
||||
const id = entry.nodeId || entry.id;
|
||||
return this.loadNodeInfo(id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -29,10 +29,13 @@ import { AppConfigService, UserPreferencesService } from '@alfresco/adf-core';
|
||||
import { AppLayoutComponent } from './app-layout.component';
|
||||
import { AppTestingModule } from '../../../testing/app-testing.module';
|
||||
import { Store } from '@ngrx/store';
|
||||
import { AppStore, SetSelectedNodesAction } from '@alfresco/aca-shared/store';
|
||||
import {
|
||||
AppStore,
|
||||
SetSelectedNodesAction,
|
||||
ResetSelectionAction
|
||||
} from '@alfresco/aca-shared/store';
|
||||
import { Router, NavigationStart } from '@angular/router';
|
||||
import { Subject } from 'rxjs';
|
||||
import { ResetSelectionAction } from '@alfresco/aca-shared/store';
|
||||
|
||||
class MockRouter {
|
||||
private url = 'some-url';
|
||||
|
||||
@@ -44,7 +44,8 @@ import {
|
||||
isInfoDrawerOpened,
|
||||
getSharedUrl,
|
||||
ViewNodeAction,
|
||||
ViewNodeExtras
|
||||
ViewNodeExtras,
|
||||
SetSelectedNodesAction
|
||||
} from '@alfresco/aca-shared/store';
|
||||
import { isLocked, isLibrary } from '../utils/node.utils';
|
||||
|
||||
@@ -131,8 +132,11 @@ export abstract class PageComponent implements OnInit, OnDestroy {
|
||||
return null;
|
||||
}
|
||||
|
||||
reload(): void {
|
||||
reload(selectedNode?: MinimalNodeEntity): void {
|
||||
this.store.dispatch(new ReloadDocumentListAction());
|
||||
if (selectedNode) {
|
||||
this.store.dispatch(new SetSelectedNodesAction([selectedNode]));
|
||||
}
|
||||
}
|
||||
|
||||
trackByActionId(_: number, action: ContentActionRef) {
|
||||
|
||||
@@ -49,9 +49,9 @@ import { Store } from '@ngrx/store';
|
||||
import {
|
||||
AppStore,
|
||||
ClosePreviewAction,
|
||||
ViewerActionTypes
|
||||
ViewerActionTypes,
|
||||
SetSelectedNodesAction
|
||||
} from '@alfresco/aca-shared/store';
|
||||
import { SetSelectedNodesAction } from '@alfresco/aca-shared/store';
|
||||
import { PageComponent } from '../page.component';
|
||||
import { ContentApiService } from '@alfresco/aca-shared';
|
||||
import { AppExtensionService } from '../../extensions/extension.service';
|
||||
|
||||
@@ -1,65 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { CoreModule } from '@alfresco/adf-core';
|
||||
import { RouterModule, Routes } from '@angular/router';
|
||||
import { ContentModule } from '@alfresco/adf-content-services';
|
||||
import { DirectivesModule } from '../../directives/directives.module';
|
||||
import { AppCommonModule } from '../common/common.module';
|
||||
import { AppToolbarModule } from '../toolbar/toolbar.module';
|
||||
import { ContextMenuModule } from '../context-menu/context-menu.module';
|
||||
import { RecentFilesComponent } from './recent-files.component';
|
||||
import { AppInfoDrawerModule } from '../info-drawer/info.drawer.module';
|
||||
import { AppLayoutModule } from '../layout/layout.module';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
component: RecentFilesComponent,
|
||||
data: {
|
||||
title: 'APP.BROWSE.RECENT.TITLE'
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
CoreModule.forChild(),
|
||||
RouterModule.forChild(routes),
|
||||
ContentModule.forChild(),
|
||||
DirectivesModule,
|
||||
AppCommonModule,
|
||||
AppToolbarModule,
|
||||
ContextMenuModule,
|
||||
AppInfoDrawerModule,
|
||||
AppLayoutModule
|
||||
],
|
||||
declarations: [RecentFilesComponent],
|
||||
exports: [RecentFilesComponent]
|
||||
})
|
||||
export class AppRecentFilesModule {}
|
||||
+1
-2
@@ -23,7 +23,7 @@
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { NavigateLibraryAction } from '@alfresco/aca-shared/store';
|
||||
import { NavigateLibraryAction, AppStore } from '@alfresco/aca-shared/store';
|
||||
import { NodePaging, Pagination, SiteEntry } from '@alfresco/js-api';
|
||||
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
@@ -31,7 +31,6 @@ import { ActivatedRoute, Params } from '@angular/router';
|
||||
import { Store } from '@ngrx/store';
|
||||
import { AppExtensionService } from '../../../extensions/extension.service';
|
||||
import { ContentManagementService } from '../../../services/content-management.service';
|
||||
import { AppStore } from '@alfresco/aca-shared/store';
|
||||
import { PageComponent } from '../../page.component';
|
||||
import { SearchLibrariesQueryBuilderService } from './search-libraries-query-builder.service';
|
||||
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { NgModule } from '@angular/core';
|
||||
import { SharedFilesComponent } from './shared-files.component';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { CoreModule } from '@alfresco/adf-core';
|
||||
import { RouterModule, Routes } from '@angular/router';
|
||||
import { ContentModule } from '@alfresco/adf-content-services';
|
||||
import { DirectivesModule } from '../../directives/directives.module';
|
||||
import { AppCommonModule } from '../common/common.module';
|
||||
import { AppToolbarModule } from '../toolbar/toolbar.module';
|
||||
import { ContextMenuModule } from '../context-menu/context-menu.module';
|
||||
import { AppInfoDrawerModule } from '../info-drawer/info.drawer.module';
|
||||
import { AppLayoutModule } from '../layout/layout.module';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
component: SharedFilesComponent,
|
||||
data: {
|
||||
title: 'APP.BROWSE.SHARED.TITLE',
|
||||
sortingPreferenceKey: 'shared-files'
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
CoreModule.forChild(),
|
||||
RouterModule.forChild(routes),
|
||||
ContentModule.forChild(),
|
||||
DirectivesModule,
|
||||
AppCommonModule,
|
||||
AppToolbarModule,
|
||||
ContextMenuModule,
|
||||
AppInfoDrawerModule,
|
||||
AppLayoutModule
|
||||
],
|
||||
declarations: [SharedFilesComponent],
|
||||
exports: [SharedFilesComponent]
|
||||
})
|
||||
export class AppSharedFilesModule {}
|
||||
@@ -4,6 +4,7 @@
|
||||
'right_side--hide': !showRightSide
|
||||
}"
|
||||
[displayName]="fileName"
|
||||
[maxRetries]="'viewer.maxRetries' | adfAppConfig"
|
||||
[nodeId]="nodeId"
|
||||
[allowNavigate]="navigateMultiple"
|
||||
[allowRightSidebar]="true"
|
||||
|
||||
@@ -31,10 +31,11 @@ import {
|
||||
SetSelectedNodesAction,
|
||||
ClosePreviewAction,
|
||||
ViewerActionTypes,
|
||||
ViewNodeAction
|
||||
ViewNodeAction,
|
||||
ReloadDocumentListAction
|
||||
} from '@alfresco/aca-shared/store';
|
||||
import { ContentActionRef, SelectionState } from '@alfresco/adf-extensions';
|
||||
import { MinimalNodeEntryEntity } from '@alfresco/js-api';
|
||||
import { MinimalNodeEntryEntity, SearchRequest } from '@alfresco/js-api';
|
||||
import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';
|
||||
import { ActivatedRoute, Router, PRIMARY_OUTLET } from '@angular/router';
|
||||
import {
|
||||
@@ -49,8 +50,6 @@ import { from, Observable, Subject } from 'rxjs';
|
||||
import { takeUntil, debounceTime } from 'rxjs/operators';
|
||||
import { AppExtensionService } from '../../extensions/extension.service';
|
||||
import { Actions, ofType } from '@ngrx/effects';
|
||||
import { SearchRequest } from '@alfresco/js-api';
|
||||
import { ReloadDocumentListAction } from '@alfresco/aca-shared/store';
|
||||
@Component({
|
||||
selector: 'app-viewer',
|
||||
templateUrl: './viewer.component.html',
|
||||
|
||||
@@ -32,12 +32,14 @@ import { Store } from '@ngrx/store';
|
||||
import { SetSelectedNodesAction } from '@alfresco/aca-shared/store';
|
||||
import { takeUntil, filter } from 'rxjs/operators';
|
||||
import { ContentManagementService } from '../services/content-management.service';
|
||||
import { MinimalNodeEntity } from '@alfresco/js-api';
|
||||
|
||||
@Directive({
|
||||
selector: '[acaDocumentList]'
|
||||
})
|
||||
export class DocumentListDirective implements OnInit, OnDestroy {
|
||||
private isLibrary = false;
|
||||
selectedNode: MinimalNodeEntity;
|
||||
|
||||
onDestroy$ = new Subject<boolean>();
|
||||
|
||||
@@ -88,7 +90,7 @@ export class DocumentListDirective implements OnInit, OnDestroy {
|
||||
.subscribe(() => this.onReady());
|
||||
|
||||
this.content.reload.pipe(takeUntil(this.onDestroy$)).subscribe(() => {
|
||||
this.reload();
|
||||
this.reload(this.selectedNode);
|
||||
});
|
||||
|
||||
this.content.reset.pipe(takeUntil(this.onDestroy$)).subscribe(() => {
|
||||
@@ -119,6 +121,7 @@ export class DocumentListDirective implements OnInit, OnDestroy {
|
||||
onNodeSelect(event: CustomEvent) {
|
||||
if (!!event.detail && !!event.detail.node) {
|
||||
this.updateSelection();
|
||||
this.selectedNode = event.detail.node;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,9 +143,13 @@ export class DocumentListDirective implements OnInit, OnDestroy {
|
||||
this.store.dispatch(new SetSelectedNodesAction(selection));
|
||||
}
|
||||
|
||||
private reload() {
|
||||
private reload(selectedNode?: MinimalNodeEntity) {
|
||||
this.documentList.resetSelection();
|
||||
this.store.dispatch(new SetSelectedNodesAction([]));
|
||||
if (selectedNode) {
|
||||
this.store.dispatch(new SetSelectedNodesAction([selectedNode]));
|
||||
} else {
|
||||
this.store.dispatch(new SetSelectedNodesAction([]));
|
||||
}
|
||||
this.documentList.reload();
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { ContentApiService } from '@alfresco/aca-shared';
|
||||
import { ContentApiService, NodePermissionService } from '@alfresco/aca-shared';
|
||||
import {
|
||||
AppStore,
|
||||
DeletedNodeInfo,
|
||||
@@ -69,7 +69,6 @@ import { NodePermissionsDialogComponent } from '../components/permissions/permis
|
||||
import { NodeVersionUploadDialogComponent } from '../dialogs/node-version-upload/node-version-upload.dialog';
|
||||
import { NodeVersionsDialogComponent } from '../dialogs/node-versions/node-versions.dialog';
|
||||
import { NodeActionsService } from './node-actions.service';
|
||||
import { NodePermissionService } from '@alfresco/aca-shared';
|
||||
|
||||
interface RestoredNode {
|
||||
status: number;
|
||||
@@ -215,9 +214,7 @@ export class ContentManagementService {
|
||||
})
|
||||
.afterClosed()
|
||||
.subscribe(deletedSharedLink => {
|
||||
this.store.dispatch(
|
||||
new SetSelectedNodesAction([deletedSharedLink || node])
|
||||
);
|
||||
this.store.dispatch(new SetSelectedNodesAction([node]));
|
||||
if (deletedSharedLink) {
|
||||
this.linksUnshared.next(deletedSharedLink);
|
||||
}
|
||||
|
||||
@@ -58,8 +58,6 @@ $foreground: map-get($custom-theme, foreground);
|
||||
$warn: map-get($custom-theme, warn);
|
||||
|
||||
@mixin custom-theme($theme) {
|
||||
@include adf-style-fixes($theme);
|
||||
|
||||
@include layout-theme($theme);
|
||||
@include aca-search-input-theme($theme);
|
||||
@include app-permission-manager-theme($theme);
|
||||
@@ -70,6 +68,7 @@ $warn: map-get($custom-theme, warn);
|
||||
@include aca-current-user-theme($theme);
|
||||
@include aca-context-menu-theme($theme);
|
||||
@include app-create-menu-theme($theme);
|
||||
@include adf-style-fixes($theme);
|
||||
|
||||
.mat-toolbar {
|
||||
color: var(--theme-text-color, rgba(0, 0, 0, 0.54));
|
||||
|
||||
@@ -3,4 +3,14 @@
|
||||
@mixin adf-style-fixes($theme) {
|
||||
// add here all ADF style overrides
|
||||
// and create a task to move them to ADF
|
||||
|
||||
.adf-content-node-selector-content-list {
|
||||
.adf-content-selector-modified-cell {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.adf-content-selector-modifier-cell {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user