Merge pull request #134 from Alfresco/development

Sync with latest development
This commit is contained in:
Cilibiu Bogdan
2017-12-12 14:34:41 +02:00
committed by GitHub
20 changed files with 236 additions and 702 deletions
+134
View File
@@ -0,0 +1,134 @@
### (3) Document List Layout
The main area of the application is composed from a number of individual ADF components:
- [Breadcrumb](https://alfresco.github.io/adf-component-catalog/components/BreadcrumbComponent.html)
- [Toolbar](https://alfresco.github.io/adf-component-catalog/components/ToolbarComponent.html)
- [Document List](https://alfresco.github.io/adf-component-catalog/components/DocumentListComponent.html)
- [Pagination](https://alfresco.github.io/adf-component-catalog/components/PaginationComponent.html)
The application has six different Document List views which share commonalities between each view and also subtle differences depending on the content being loaded which are explained below.
#### Personal Files
Personal Files retrieves all content from the logged in users home area (`/User Homes/<username>/` in the repository);
if the user is admin who does not have a home folder then the repository root folder is shown.
Personal Files is the [Files component](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/files),
using the [Nodes API](https://api-explorer.alfresco.com/api-explorer/#/nodes).
#### File Libraries
File Libraries retrieves all the sites that the user is a member including what type of site it is; public, moderated or private.
File Libraries is the [Libraries component](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/libraries),
using the [Sites API](https://api-explorer.alfresco.com/api-explorer/#/sites).
When a user opens one of their sites then the content for that sites document library is shown.
To display the files and folders from a site (`/Sites/<siteid>/Document Library/`) the [Files component](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/files),
using the [Nodes API](https://api-explorer.alfresco.com/api-explorer/#/nodes) is used.
#### Shared Files
The Shared Files view aggregates all files that have been shared using the QuickShare feature in the content repository.
The [Shared Files component](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/shared-files)
uses the [shared-links API](https://api-explorer.alfresco.com/api-explorer/#/shared-links)
and includes extra columns to display where the file is
[located](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/location-link)
in the content repository and who created the shared link.
A feature for creating and removing Shared Links will be added in the future.
#### Recent Files
The Recent Files view shows all the files that have been modified within the last 30 days by the current user.
The [Recent Files](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/current-user)
component uses the Search API to query SOLR for changes made by the user and includes an extra column to display where the file is
[located](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/location-link)
in the content repository.
#### Favorites
The Favorites view shows all files and folders from the content repository that have been marked as a favorite by the current user.
The [Favorites](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/favorites) component uses the
[favorites](https://api-explorer.alfresco.com/api-explorer/#/favorites) API to retrieve all the favorite nodes for the user
and includes an extra column to display where the file is
[located](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/location-link)
in the content repository.
#### Trash
The Trash view shows all the items that a user has deleted, admin will see items deleted by all users.
The actions available in this view are Restore and Permanently Delete.
The [Trashcan](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/trashcan) component uses the
[trashcan](https://api-explorer.alfresco.com/api-explorer/#/trashcan) API to retrieve the deleted items
and perform the actions requested by the user and includes an extra column to display where the file is
[located](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/location-link)
in the content repository.
#### Actions and the Actions Toolbar
All the views incorporate the [toolbar](https://alfresco.github.io/adf-component-catalog/components/ToolbarComponent.html)
component from the Alfresco Application Development Framework;
apart from the Trash view they all display the following actions when the current user has the necessary permissions,
actions are automatically hidden when the user does not have permission.
<table>
<thead>
<th>Action</th>
<th>File</th>
<th>Folder</th>
</thead>
<tbody>
<tr>
<td>View</td>
<td>
Opens the selected file using the [Preview](https://github.com/Alfresco/alfresco-content-app/tree/development/src/app/components/preview) component,
where the file cannot be displayed natively in a browser a PDF rendition is obtained from the repository.
</td>
<td>Not applicable</td>
</tr>
<tr>
<td>Download</td>
<td>Downloads single files to the users computer, when multiple files are selected they are compressed into a ZIP and then downloaded.</td>
<td>Folders are automatically compressed into a ZIP and then downloaded to the users computer.</td>
</tr>
<tr>
<td>Edit</td>
<td>Not applicable</td>
<td>The folder name and description can be edited in a dialog.</td>
</tr>
<tr>
<td>Favorite</td>
<td colspan="2">
Toggle the favorite mark on or off for files and folders, when multiple items are selected
and one or more are not favorites then the mark will be toggled on.
</td>
</tr>
<tr>
<td>Copy</td>
<td colspan="2">
Files and folders can be copied into other locations in the content repository using the
[content-node-selector](https://alfresco.github.io/adf-component-catalog/components/ContentNodeSelectorComponent.html) component;
once the copy action has completed the user is notified and can undo the action (which permanently deletes the copies created).
</td>
</tr>
<tr>
<td>Move</td>
<td colspan="2">
Files and folders can be moved into other locations in the content repository using the
[content-node-selector](https://alfresco.github.io/adf-component-catalog/components/ContentNodeSelectorComponent.html) component;
once the move action has completed the user is notified and can undo the action (which moves the items back to the original location).
</td>
</tr>
<tr>
<td>Delete</td>
<td colspan="2">
Files and folders can be deleted from their location in the content repository;
once the delete action has completed the user is notified and undo the action (which restores the items from the trash).
</td>
</tr>
</tbody>
</table>
As well as the actions available in the toolbar users can single click an item to select it,
or double click on a file to view it, and a folder to open it.
+4 -176
View File
@@ -11,181 +11,9 @@ This application demonstrates how the complexity of Content Management can be si
using the Alfresco Application Development Framework to easily and quickly create custom solutions for specific user cases. using the Alfresco Application Development Framework to easily and quickly create custom solutions for specific user cases.
## User Interface - layout ## User Interface - layout
There are three main areas of the application controlled by the [Layout component](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/layout):
- [(1) Application Header](/header)
- [(2) Side Navigation](/side-nav)
- [(3) Document List](/doc-list)
![](images/features-01.png) ![](images/features-01.png)
### Header (1)
The application [header](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/header) has three main elements.
Logo & app primary color - logo and color are configurable by updating the
[app.config.json](https://github.com/Alfresco/alfresco-content-app/blob/master/src/app.config.json) file in the root folder of the project,
see [How to change the logo and color](/) and [Application Configuration](/configuration) for more information
[Search](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/search) -
utilizing the [ADF Search Component](https://github.com/Alfresco/alfresco-ng2-components/tree/master/lib/content-services/search)
the app provides a 'live' search feature, where users can open files and folders directly from the Search API results.
[Current User](https://github.com/Alfresco/alfresco-content-app/tree/development/src/app/components/current-user) -
displays the user's name, and a menu where users can logout.
Optionally through updating the [app.config.json](https://github.com/Alfresco/alfresco-content-app/blob/master/src/app.config.json)
a language switching menu can be displayed.
### Side Nav (2)
The application [side navigation](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/sidenav) has two features;
a button menu and navigation links.
#### New button
The New button displays a menu which provides three actions:
- Create a new folder - provides a dialog which allows the creation of a new folder, the folder name is mandatory and the description is optional.
- Upload a file - invokes the operating system file browser and allows a user to select file(s) to upload into their current location in the content repository.
- Upload a folder - invokes the operating system folder browser and allows a user to select folder(s) to upload to their current location in the content repository.
When an upload starts the [upload component](https://github.com/Alfresco/alfresco-ng2-components/tree/master/lib/content-services/upload)
is displayed which shows the user the progress of the uploads they have started.
The upload dialog persists on the screen and can be minimised; users are able to continue using the application whilst uploads are in progress
and uploads can be canceled which will stop uploads in progress or permanently delete already completed uploads.
#### Navigation
The navigation links are configurable via the [app.config.json](https://github.com/Alfresco/alfresco-content-app/blob/master/src/app.config.json).
Default configuration creates two sections.
See [How to work with the side navigation](/) for more information about configuring the side navigation.
### Document List Layout (3)
The main area of the application is composed from a number of individual ADF components:
- [Breadcrumb](https://alfresco.github.io/adf-component-catalog/components/BreadcrumbComponent.html)
- [Toolbar](https://alfresco.github.io/adf-component-catalog/components/ToolbarComponent.html)
- [Document List](https://alfresco.github.io/adf-component-catalog/components/DocumentListComponent.html)
- [Pagination](https://alfresco.github.io/adf-component-catalog/components/PaginationComponent.html)
The application has six different Document List views which contain subtle differences depending on the content being loaded.
#### Personal Files
Personal Files retrieves all content from the logged in users home area (`/User Homes/<username>/` in the repository);
if the user is admin who does not have a home folder then the repository root folder is shown.
Personal Files is the [Files component](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/files),
using the [Nodes API](https://api-explorer.alfresco.com/api-explorer/#/nodes).
#### File Libraries
File Libraries retrieves all the sites that the user is a member including what type of site it is; public, moderated or private.
File Libraries is the [Libraries component](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/libraries),
using the [Sites API](https://api-explorer.alfresco.com/api-explorer/#/sites).
When a user opens one of their sites then the content for that sites document library is shown.
To display the files and folders from a site (`/Sites/<siteid>/Document Library/`) the [Files component](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/files),
using the [Nodes API](https://api-explorer.alfresco.com/api-explorer/#/nodes) is used.
#### Shared Files
The Shared Files view aggregates all files that have been shared using the QuickShare feature in the content repository.
The [Shared Files component](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/shared-files)
uses the [shared-links API](https://api-explorer.alfresco.com/api-explorer/#/shared-links)
and includes extra columns to display where the file is
[located](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/location-link)
in the content repository and who created the shared link.
A feature for creating and removing Shared Links will be added in the future.
#### Recent Files
The Recent Files view shows all the files that have been modified within the last 30 days by the current user.
The [Recent Files](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/current-user)
component uses the Search API to query SOLR for changes made by the user and includes an extra column to display where the file is
[located](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/location-link)
in the content repository.
#### Favorites
The Favorites view shows all files and folders from the content repository that have been marked as a favorite by the current user.
The [Favorites](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/favorites) component uses the
[favorites](https://api-explorer.alfresco.com/api-explorer/#/favorites) API to retrieve all the favorite nodes for the user
and includes an extra column to display where the file is
[located](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/location-link)
in the content repository.
#### Trash
The Trash view shows all the items that a user has deleted, admin will see items deleted by all users.
The actions available in this view are Restore and Permanently Delete.
The [Trashcan](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/trashcan) component uses the
[trashcan](https://api-explorer.alfresco.com/api-explorer/#/trashcan) API to retrieve the deleted items
and perform the actions requested by the user and includes an extra column to display where the file is
[located](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/location-link)
in the content repository.
#### Actions and the Actions Toolbar
All the views incorporate the [toolbar](https://alfresco.github.io/adf-component-catalog/components/ToolbarComponent.html)
component from the Alfresco Application Development Framework;
apart from the Trash view they all display the following actions when the current user has the necessary permissions,
actions are automatically hidden when the user does not have permission.
<table>
<thead>
<th>Action</th>
<th>File</th>
<th>Folder</th>
</thead>
<tbody>
<tr>
<td>View</td>
<td>
Opens the selected file using the [Preview](https://github.com/Alfresco/alfresco-content-app/tree/development/src/app/components/preview) component,
where the file cannot be displayed natively in a browser a PDF rendition is obtained from the repository.
</td>
<td>Not applicable</td>
</tr>
<tr>
<td>Download</td>
<td>Downloads single files to the users computer, when multiple files are selected they are compressed into a ZIP and then downloaded.</td>
<td>Folders are automatically compressed into a ZIP and then downloaded to the users computer.</td>
</tr>
<tr>
<td>Edit</td>
<td>Not applicable</td>
<td>The folder name and description can be edited in a dialog.</td>
</tr>
<tr>
<td>Favorite</td>
<td colspan="2">
Toggle the favorite mark on or off for files and folders, when multiple items are selected
and one or more are not favorites then the mark will be toggled on.
</td>
</tr>
<tr>
<td>Copy</td>
<td colspan="2">
Files and folders can be copied into other locations in the content repository using the
[content-node-selector](https://alfresco.github.io/adf-component-catalog/components/ContentNodeSelectorComponent.html) component;
once the copy action has completed the user is notified and can undo the action (which permanently deletes the copies created).
</td>
</tr>
<tr>
<td>Move</td>
<td colspan="2">
Files and folders can be moved into other locations in the content repository using the
[content-node-selector](https://alfresco.github.io/adf-component-catalog/components/ContentNodeSelectorComponent.html) component;
once the move action has completed the user is notified and can undo the action (which moves the items back to the original location).
</td>
</tr>
<tr>
<td>Delete</td>
<td colspan="2">
Files and folders can be deleted from their location in the content repository;
once the delete action has completed the user is notified and undo the action (which restores the items from the trash).
</td>
</tr>
</tbody>
</table>
As well as the actions available in the toolbar users can single click an item to select it,
or double click on a file to view it, and a folder to open it.
+16
View File
@@ -0,0 +1,16 @@
### (1) Header
The application [header](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/header) has three main elements.
Logo & app primary color - logo and color are configurable by updating the
[app.config.json](https://github.com/Alfresco/alfresco-content-app/blob/master/src/app.config.json) file in the root folder of the project,
see [How to change the logo and color](/) and [Application Configuration](/configuration) for more information
[Search](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/search) -
utilizing the [ADF Search Component](https://github.com/Alfresco/alfresco-ng2-components/tree/master/lib/content-services/search)
the app provides a 'live' search feature, where users can open files and folders directly from the Search API results.
[Current User](https://github.com/Alfresco/alfresco-content-app/tree/development/src/app/components/current-user) -
displays the user's name, and a menu where users can logout.
Optionally through updating the [app.config.json](https://github.com/Alfresco/alfresco-content-app/blob/master/src/app.config.json)
a language switching menu can be displayed.
+19 -1
View File
@@ -20,7 +20,25 @@
}, },
{ {
title: 'Features', title: 'Features',
path: 'features' type: 'dropdown',
items: [
{
title: 'Features Introduction',
path: 'features',
},
{
title: 'Application Header',
path: 'header'
},
{
title: 'Side Navigation',
path: 'side-nav'
},
{
title: 'Document List',
path: 'doc-list'
}
]
}, },
{ {
title: 'Building', title: 'Building',
+23
View File
@@ -0,0 +1,23 @@
### (2) Side Nav
The application [side navigation](https://github.com/Alfresco/alfresco-content-app/tree/master/src/app/components/sidenav) has two features;
a button menu and navigation links.
#### New button
The New button displays a menu which provides three actions:
- Create a new folder - provides a dialog which allows the creation of a new folder, the folder name is mandatory and the description is optional.
- Upload a file - invokes the operating system file browser and allows a user to select file(s) to upload into their current location in the content repository.
- Upload a folder - invokes the operating system folder browser and allows a user to select folder(s) to upload to their current location in the content repository.
When an upload starts the [upload component](https://github.com/Alfresco/alfresco-ng2-components/tree/master/lib/content-services/upload)
is displayed which shows the user the progress of the uploads they have started.
The upload dialog persists on the screen and can be minimised; users are able to continue using the application whilst uploads are in progress
and uploads can be canceled which will stop uploads in progress or permanently delete already completed uploads.
#### Navigation
The navigation links are configurable via the [app.config.json](https://github.com/Alfresco/alfresco-content-app/blob/master/src/app.config.json).
Default configuration creates two sections.
See [How to work with the side navigation](/) for more information about configuring the side navigation.
@@ -263,7 +263,7 @@ describe('NodeActionsService', () => {
const dialog = TestBed.get(MatDialog); const dialog = TestBed.get(MatDialog);
spyOn(dialog, 'open').and.callFake((contentNodeSelectorComponent: any, data: any) => { spyOn(dialog, 'open').and.callFake((contentNodeSelectorComponent: any, data: any) => {
testContentNodeSelectorComponentData = data; testContentNodeSelectorComponentData = data;
return {}; return {componentInstance: {}};
}); });
service.copyNodes([fileToCopy, folderToCopy]); service.copyNodes([fileToCopy, folderToCopy]);
@@ -316,7 +316,7 @@ describe('NodeActionsService', () => {
const dialog = TestBed.get(MatDialog); const dialog = TestBed.get(MatDialog);
const spyOnDialog = spyOn(dialog, 'open').and.callFake((contentNodeSelectorComponent: any, data: any) => { const spyOnDialog = spyOn(dialog, 'open').and.callFake((contentNodeSelectorComponent: any, data: any) => {
testContentNodeSelectorComponentData = data; testContentNodeSelectorComponentData = data;
return {}; return {componentInstance: {}};
}); });
service.copyNodes([fileToCopy, folderToCopy]); service.copyNodes([fileToCopy, folderToCopy]);
@@ -343,7 +343,7 @@ describe('NodeActionsService', () => {
const dialog = TestBed.get(MatDialog); const dialog = TestBed.get(MatDialog);
spyOn(dialog, 'open').and.callFake((contentNodeSelectorComponent: any, data: any) => { spyOn(dialog, 'open').and.callFake((contentNodeSelectorComponent: any, data: any) => {
testContentNodeSelectorComponentData = data; testContentNodeSelectorComponentData = data;
return {}; return {componentInstance: {}};
}); });
service.copyNodes([{entry: {id: 'entry-id', name: 'entry-name'}}]); service.copyNodes([{entry: {id: 'entry-id', name: 'entry-name'}}]);
@@ -362,7 +362,7 @@ describe('NodeActionsService', () => {
const dialog = TestBed.get(MatDialog); const dialog = TestBed.get(MatDialog);
spyOn(dialog, 'open').and.callFake((contentNodeSelectorComponent: any, data: any) => { spyOn(dialog, 'open').and.callFake((contentNodeSelectorComponent: any, data: any) => {
testContentNodeSelectorComponentData = data; testContentNodeSelectorComponentData = data;
return {}; return {componentInstance: {}};
}); });
service.copyNodes([{entry: {id: 'entry-id'}}]); service.copyNodes([{entry: {id: 'entry-id'}}]);
@@ -27,7 +27,7 @@ import { EventEmitter, Injectable } from '@angular/core';
import { MatDialog } from '@angular/material'; import { MatDialog } from '@angular/material';
import { Observable, Subject } from 'rxjs/Rx'; import { Observable, Subject } from 'rxjs/Rx';
import { AlfrescoApiService, ContentService, NodesApiService, DataColumn } from '@alfresco/adf-core'; import { AlfrescoApiService, ContentService, NodesApiService, DataColumn, DataSorting } from '@alfresco/adf-core';
import { DocumentListService, ContentNodeSelectorComponent, ContentNodeSelectorComponentData } from '@alfresco/adf-content-services'; import { DocumentListService, ContentNodeSelectorComponent, ContentNodeSelectorComponentData } from '@alfresco/adf-content-services';
import { MinimalNodeEntity, MinimalNodeEntryEntity } from 'alfresco-js-api'; import { MinimalNodeEntity, MinimalNodeEntryEntity } from 'alfresco-js-api';
@@ -194,11 +194,23 @@ export class NodeActionsService {
select: new EventEmitter<MinimalNodeEntryEntity[]>() select: new EventEmitter<MinimalNodeEntryEntity[]>()
}; };
this.dialog.open(ContentNodeSelectorComponent, <any>{ const matDialogRef = this.dialog.open(ContentNodeSelectorComponent, <any>{
data, data,
panelClass: 'adf-content-node-selector-dialog', panelClass: 'adf-content-node-selector-dialog',
width: '630px' width: '630px'
}); });
const destinationPicker = matDialogRef.componentInstance;
const initialSiteChanged = destinationPicker.siteChanged;
destinationPicker.siteChanged = (chosenSite) => {
initialSiteChanged.call(destinationPicker, chosenSite);
if (chosenSite.guid === '-mysites-') {
destinationPicker.documentList.data.setSorting(new DataSorting('title', 'asc'));
} else {
destinationPicker.documentList.data.setSorting(new DataSorting('name', 'asc'));
}
};
return data.select; return data.select;
} }
@@ -25,6 +25,7 @@
import { RouterTestingModule } from '@angular/router/testing'; import { RouterTestingModule } from '@angular/router/testing';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { Location } from '@angular/common';
import { TestBed, async } from '@angular/core/testing'; import { TestBed, async } from '@angular/core/testing';
import { CoreModule, AuthenticationService, UserPreferencesService } from '@alfresco/adf-core'; import { CoreModule, AuthenticationService, UserPreferencesService } from '@alfresco/adf-core';
@@ -36,6 +37,7 @@ describe('LoginComponent', () => {
let router; let router;
let userPreference; let userPreference;
let auth; let auth;
let location;
beforeEach(async(() => { beforeEach(async(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
@@ -45,6 +47,9 @@ describe('LoginComponent', () => {
], ],
declarations: [ declarations: [
LoginComponent LoginComponent
],
providers: [
Location
] ]
}); });
@@ -52,6 +57,7 @@ describe('LoginComponent', () => {
component = fixture.componentInstance; component = fixture.componentInstance;
router = TestBed.get(Router); router = TestBed.get(Router);
location = TestBed.get(Location);
auth = TestBed.get(AuthenticationService); auth = TestBed.get(AuthenticationService);
userPreference = TestBed.get(UserPreferencesService); userPreference = TestBed.get(UserPreferencesService);
})); }));
@@ -60,6 +66,7 @@ describe('LoginComponent', () => {
spyOn(userPreference, 'setStoragePrefix'); spyOn(userPreference, 'setStoragePrefix');
spyOn(router, 'navigateByUrl'); spyOn(router, 'navigateByUrl');
spyOn(auth, 'getRedirectUrl').and.returnValue('/some-url'); spyOn(auth, 'getRedirectUrl').and.returnValue('/some-url');
spyOn(location, 'forward');
}); });
describe('OnInit()', () => { describe('OnInit()', () => {
@@ -67,14 +74,14 @@ describe('LoginComponent', () => {
spyOn(auth, 'isEcmLoggedIn').and.returnValue(false); spyOn(auth, 'isEcmLoggedIn').and.returnValue(false);
fixture.detectChanges(); fixture.detectChanges();
expect(router.navigateByUrl).not.toHaveBeenCalled(); expect(location.forward).not.toHaveBeenCalled();
}); });
it('should redirect when user is logged in', () => { it('should redirect when user is logged in', () => {
spyOn(auth, 'isEcmLoggedIn').and.returnValue(true); spyOn(auth, 'isEcmLoggedIn').and.returnValue(true);
fixture.detectChanges(); fixture.detectChanges();
expect(router.navigateByUrl).toHaveBeenCalledWith('/some-url'); expect(location.forward).toHaveBeenCalled();
}); });
}); });
+3 -1
View File
@@ -24,6 +24,7 @@
*/ */
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { Location } from '@angular/common';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { AuthenticationService, UserPreferencesService } from '@alfresco/adf-core'; import { AuthenticationService, UserPreferencesService } from '@alfresco/adf-core';
@@ -33,13 +34,14 @@ import { AuthenticationService, UserPreferencesService } from '@alfresco/adf-cor
export class LoginComponent implements OnInit { export class LoginComponent implements OnInit {
constructor( constructor(
private router: Router, private router: Router,
private location: Location,
private auth: AuthenticationService, private auth: AuthenticationService,
private userPreferences: UserPreferencesService private userPreferences: UserPreferencesService
) {} ) {}
ngOnInit() { ngOnInit() {
if (this.auth.isEcmLoggedIn()) { if (this.auth.isEcmLoggedIn()) {
this.router.navigateByUrl(this.auth.getRedirectUrl() || ''); this.location.forward();
} }
} }
-46
View File
@@ -117,52 +117,6 @@
"DELETED_BY": "Gelöscht von" "DELETED_BY": "Gelöscht von"
} }
}, },
"DIALOG": {
"MINIMIZE": "Minimieren",
"MAXIMIZE": "Maximieren",
"CLOSE": "Schließen",
"UPLOAD": {
"IN_PROGRESS": "Hochladen: {{ completed }} / {{ length }}",
"COMPLETE": "Hochgeladen: {{ completed }} / {{ length }}",
"CANCELED": "Hochladen abgebrochen",
"CANCEL_UPLOAD": "Upload abbrechen",
"CANCEL_ALL": "Hochladen abbrechen",
"REMOVE_UPLOADED": "Hochgeladene Datei entfernen",
"CANCELED_STATUS": "Abgebrochen",
"ERRORS": "Fehler"
}
},
"FOLDER_DIALOG": {
"CREATE_FOLDER_TITLE": "Neuen Ordner erstellen",
"EDIT_FOLDER_TITLE": "Ordner bearbeiten",
"FOLDER_NAME": {
"LABEL": "Name",
"ERRORS": {
"REQUIRED": "Ordnername ist erforderlich",
"SPECIAL_CHARACTERS": "Ordnername darf die folgenden Zeichen nicht enthalten: * \" < > \\ / ? : |",
"ENDING_DOT": "Ordnername darf nicht mit einem Punkt enden.",
"ONLY_SPACES": "Ordnername darf nicht nur aus Leerzeichen bestehen."
}
},
"FOLDER_DESCRIPTION": {
"LABEL": "Beschreibung"
},
"CREATE_BUTTON": {
"LABEL": "Erstellen"
},
"UPDATE_BUTTON": {
"LABEL": "Aktualisieren"
},
"CANCEL_BUTTON": {
"LABEL": "Abbrechen"
}
},
"PAGINATION": {
"ITEMS_PER_PAGE": "Elemente pro Seite",
"CURRENT_PAGE": "Seite",
"OF": "von",
"SHOW_RANGE": "{{ range }} von {{ total }} Elementen werden angezeigt"
},
"SITES_VISIBILITY": { "SITES_VISIBILITY": {
"PUBLIC": "Öffentlich", "PUBLIC": "Öffentlich",
"MODERATED": "Moderiert", "MODERATED": "Moderiert",
-46
View File
@@ -117,52 +117,6 @@
"DELETED_BY": "Deleted by" "DELETED_BY": "Deleted by"
} }
}, },
"DIALOG": {
"MINIMIZE": "Minimize",
"MAXIMIZE": "Maximize",
"CLOSE": "Close",
"UPLOAD": {
"IN_PROGRESS": "Uploading {{ completed }} / {{ length }}",
"COMPLETE": "Uploaded {{ completed }} / {{ length }}",
"CANCELED": "Upload canceled",
"CANCEL_UPLOAD": "Cancel upload",
"CANCEL_ALL": "Cancel uploads",
"REMOVE_UPLOADED": "Remove uploaded file",
"CANCELED_STATUS": "Canceled",
"ERRORS": "error(s)"
}
},
"FOLDER_DIALOG": {
"CREATE_FOLDER_TITLE": "Create new folder",
"EDIT_FOLDER_TITLE": "Edit folder",
"FOLDER_NAME": {
"LABEL": "Name",
"ERRORS": {
"REQUIRED": "Folder name is required",
"SPECIAL_CHARACTERS": "Folder name can't contain these characters * \" < > \\ / ? : |",
"ENDING_DOT": "Folder name can't end with a period .",
"ONLY_SPACES": "Folder name can't contain only spaces"
}
},
"FOLDER_DESCRIPTION": {
"LABEL": "Description"
},
"CREATE_BUTTON": {
"LABEL": "Create"
},
"UPDATE_BUTTON": {
"LABEL": "Update"
},
"CANCEL_BUTTON": {
"LABEL": "Cancel"
}
},
"PAGINATION": {
"ITEMS_PER_PAGE": "Items per page",
"CURRENT_PAGE": "Page",
"OF": "of",
"SHOW_RANGE": "Showing {{ range }} of {{ total }} items"
},
"SITES_VISIBILITY": { "SITES_VISIBILITY": {
"PUBLIC": "Public", "PUBLIC": "Public",
"MODERATED": "Moderated", "MODERATED": "Moderated",
-46
View File
@@ -117,52 +117,6 @@
"DELETED_BY": "Eliminado por" "DELETED_BY": "Eliminado por"
} }
}, },
"DIALOG": {
"MINIMIZE": "Minimizar",
"MAXIMIZE": "Maximizar",
"CLOSE": "Cerrar",
"UPLOAD": {
"IN_PROGRESS": "Cargando {{ completed }} / {{ lenght }}",
"COMPLETE": "Cargados {{ completed }} / {{ length }}",
"CANCELED": "Carga cancelada",
"CANCEL_UPLOAD": "Cancelar carga",
"CANCEL_ALL": "Cancelar cargas",
"REMOVE_UPLOADED": "Eliminar fichero cargado",
"CANCELED_STATUS": "Cancelado",
"ERRORS": "error(es)"
}
},
"FOLDER_DIALOG": {
"CREATE_FOLDER_TITLE": "Crear nueva carpeta",
"EDIT_FOLDER_TITLE": "Editar carpeta",
"FOLDER_NAME": {
"LABEL": "Nombre",
"ERRORS": {
"REQUIRED": "Se necesita un nombre de carpeta",
"SPECIAL_CHARACTERS": "El nombre de la carpeta no puede tener los caracteres * \" < > \\ / ? : |",
"ENDING_DOT": "El nombre de la carpeta no puede terminar en punto .",
"ONLY_SPACES": "El nombre de la carpeta no puede tener solo espacios"
}
},
"FOLDER_DESCRIPTION": {
"LABEL": "Descripción"
},
"CREATE_BUTTON": {
"LABEL": "Crear"
},
"UPDATE_BUTTON": {
"LABEL": "Actualizar"
},
"CANCEL_BUTTON": {
"LABEL": "Cancelar"
}
},
"PAGINATION": {
"ITEMS_PER_PAGE": "Elementos por página",
"CURRENT_PAGE": "Página",
"OF": "de",
"SHOW_RANGE": "Mostrando {{ range }} de {{ total }} elementos"
},
"SITES_VISIBILITY": { "SITES_VISIBILITY": {
"PUBLIC": "Público", "PUBLIC": "Público",
"MODERATED": "Moderado", "MODERATED": "Moderado",
-46
View File
@@ -117,52 +117,6 @@
"DELETED_BY": "Supprimé(s) par" "DELETED_BY": "Supprimé(s) par"
} }
}, },
"DIALOG": {
"MINIMIZE": "Réduire",
"MAXIMIZE": "Maximiser",
"CLOSE": "Fermer",
"UPLOAD": {
"IN_PROGRESS": "Importation de {{ completed }} / {{ length }}",
"COMPLETE": "{{ completed }} / {{ length }} importé(s)",
"CANCELED": "Importation annulée",
"CANCEL_UPLOAD": "Annuler l'importation",
"CANCEL_ALL": "Annuler l'importation",
"REMOVE_UPLOADED": "Supprimer le fichier importé",
"CANCELED_STATUS": "Annulé",
"ERRORS": "erreur(s)"
}
},
"FOLDER_DIALOG": {
"CREATE_FOLDER_TITLE": "Créer un nouveau filtre",
"EDIT_FOLDER_TITLE": "Modifier le dossier",
"FOLDER_NAME": {
"LABEL": "Nom",
"ERRORS": {
"REQUIRED": "Nom de dossier requis",
"SPECIAL_CHARACTERS": "Un nom de dossier ne peut pas contenir les caractères * \" < > \\ / ? : |",
"ENDING_DOT": "Un nom de dossier ne peut pas se terminer par un point .",
"ONLY_SPACES": "Un nom de dossier ne peut pas contenir uniquement des espaces"
}
},
"FOLDER_DESCRIPTION": {
"LABEL": "Description"
},
"CREATE_BUTTON": {
"LABEL": "Créer"
},
"UPDATE_BUTTON": {
"LABEL": "Mis à jour"
},
"CANCEL_BUTTON": {
"LABEL": "Annuler"
}
},
"PAGINATION": {
"ITEMS_PER_PAGE": "Eléments par page",
"CURRENT_PAGE": "Page",
"OF": "sur",
"SHOW_RANGE": "Affichage de {{ range }} sur {{ total }} éléments"
},
"SITES_VISIBILITY": { "SITES_VISIBILITY": {
"PUBLIC": "Public", "PUBLIC": "Public",
"MODERATED": "Modéré", "MODERATED": "Modéré",
-46
View File
@@ -117,52 +117,6 @@
"DELETED_BY": "Eliminato da" "DELETED_BY": "Eliminato da"
} }
}, },
"DIALOG": {
"MINIMIZE": "Minimizzare",
"MAXIMIZE": "Massimizzare",
"CLOSE": "Chiudi",
"UPLOAD": {
"IN_PROGRESS": "Caricamento {{ completed }} / {{ length }}",
"COMPLETE": "Caricato {{ completed }} / {{ length }}",
"CANCELED": "Caricamento annullato",
"CANCEL_UPLOAD": "Annulla caricamento",
"CANCEL_ALL": "Annulla i caricamenti",
"REMOVE_UPLOADED": "Rimuovere file caricato",
"CANCELED_STATUS": "Annullato",
"ERRORS": "errore/i"
}
},
"FOLDER_DIALOG": {
"CREATE_FOLDER_TITLE": "Crea nuova cartella",
"EDIT_FOLDER_TITLE": "Modifica cartella",
"FOLDER_NAME": {
"LABEL": "Nome",
"ERRORS": {
"REQUIRED": "Nome cartella obbligatorio",
"SPECIAL_CHARACTERS": "Il nome della cartella non può contenere questi caratteri * \" < > \\ / ? : |",
"ENDING_DOT": "Il nome della cartella non può terminare con un punto.",
"ONLY_SPACES": "Il nome della cartella non può contenere solo spazi"
}
},
"FOLDER_DESCRIPTION": {
"LABEL": "Descrizione"
},
"CREATE_BUTTON": {
"LABEL": "Crea"
},
"UPDATE_BUTTON": {
"LABEL": "Aggiorna"
},
"CANCEL_BUTTON": {
"LABEL": "Annulla"
}
},
"PAGINATION": {
"ITEMS_PER_PAGE": "Elementi per pagina",
"CURRENT_PAGE": "Pagina",
"OF": "di",
"SHOW_RANGE": "{{ range }} elementi su {{ total }} visualizzati"
},
"SITES_VISIBILITY": { "SITES_VISIBILITY": {
"PUBLIC": "Pubblico", "PUBLIC": "Pubblico",
"MODERATED": "Moderato", "MODERATED": "Moderato",
-46
View File
@@ -117,52 +117,6 @@
"DELETED_BY": "削除者" "DELETED_BY": "削除者"
} }
}, },
"DIALOG": {
"MINIMIZE": "最小化",
"MAXIMIZE": "最大化",
"CLOSE": "閉じる",
"UPLOAD": {
"IN_PROGRESS": "{{ completed }} / {{ length }} 件をアップロードしています",
"COMPLETE": "{{ completed }} / {{ length }} 個をアップロードしました",
"CANCELED": "アップロードがキャンセルされました",
"CANCEL_UPLOAD": "アップロードのキャンセル",
"CANCEL_ALL": "アップロードのキャンセル",
"REMOVE_UPLOADED": "アップロードしたファイルを削除",
"CANCELED_STATUS": "キャンセル",
"ERRORS": "エラー"
}
},
"FOLDER_DIALOG": {
"CREATE_FOLDER_TITLE": "新しいフォルダの作成",
"EDIT_FOLDER_TITLE": "フォルダの編集",
"FOLDER_NAME": {
"LABEL": "名前",
"ERRORS": {
"REQUIRED": "フォルダ名を指定してください",
"SPECIAL_CHARACTERS": "名前に次の文字を含めることはできません。 * \" < > \\ / ? : |",
"ENDING_DOT": "フォルダ名の最後にピリオド (.) を付けることはできません。",
"ONLY_SPACES": "フォルダ名にスペースだけを含めることはできません"
}
},
"FOLDER_DESCRIPTION": {
"LABEL": "説明"
},
"CREATE_BUTTON": {
"LABEL": "作成"
},
"UPDATE_BUTTON": {
"LABEL": "更新"
},
"CANCEL_BUTTON": {
"LABEL": "キャンセル"
}
},
"PAGINATION": {
"ITEMS_PER_PAGE": "ページ当たりのアイテム数",
"CURRENT_PAGE": "ページ:",
"OF": "/",
"SHOW_RANGE": "表示アイテム数: {{ range }} / {{ total }} 件"
},
"SITES_VISIBILITY": { "SITES_VISIBILITY": {
"PUBLIC": "公開", "PUBLIC": "公開",
"MODERATED": "条件付き公開", "MODERATED": "条件付き公開",
-46
View File
@@ -117,52 +117,6 @@
"DELETED_BY": "Slettet av" "DELETED_BY": "Slettet av"
} }
}, },
"DIALOG": {
"MINIMIZE": "Minimer",
"MAXIMIZE": "Maksimer",
"CLOSE": "Lukk",
"UPLOAD": {
"IN_PROGRESS": "Opplasting {{ completed }} / {{ length }}",
"COMPLETE": "Opplastet {{ completed }} / {{ length }}",
"CANCELED": "Opplasting avbrutt",
"CANCEL_UPLOAD": "Avbryt opplasting",
"CANCEL_ALL": "Avbryt opplastinger",
"REMOVE_UPLOADED": "Fjern opplastet fil",
"CANCELED_STATUS": "Avbrutt",
"ERRORS": "feil"
}
},
"FOLDER_DIALOG": {
"CREATE_FOLDER_TITLE": "Opprett ny mappe",
"EDIT_FOLDER_TITLE": "Rediger mappe",
"FOLDER_NAME": {
"LABEL": "Navn",
"ERRORS": {
"REQUIRED": "Mappenavn påkrevd",
"SPECIAL_CHARACTERS": "Mappenavn kan ikke inneholde disse tegnene * \" < > \\ / ? : |",
"ENDING_DOT": "Mappenavn kan ikke slutte med punktum .",
"ONLY_SPACES": "Mappenavn kan ikke inneholde bare mellomrom"
}
},
"FOLDER_DESCRIPTION": {
"LABEL": "Beskrivelse"
},
"CREATE_BUTTON": {
"LABEL": "Opprett"
},
"UPDATE_BUTTON": {
"LABEL": "Oppdater"
},
"CANCEL_BUTTON": {
"LABEL": "Avbryt"
}
},
"PAGINATION": {
"ITEMS_PER_PAGE": "Elementer per side",
"CURRENT_PAGE": "Side",
"OF": "av",
"SHOW_RANGE": "Viser {{ range }} av {{ total }} elementer"
},
"SITES_VISIBILITY": { "SITES_VISIBILITY": {
"PUBLIC": "Offentlig", "PUBLIC": "Offentlig",
"MODERATED": "Moderert", "MODERATED": "Moderert",
-46
View File
@@ -117,52 +117,6 @@
"DELETED_BY": "Verwijderd door" "DELETED_BY": "Verwijderd door"
} }
}, },
"DIALOG": {
"MINIMIZE": "Minimaliseren",
"MAXIMIZE": "Maximaliseren",
"CLOSE": "Sluiten",
"UPLOAD": {
"IN_PROGRESS": "{{ completed }} / {{ length }} uploaden",
"COMPLETE": "{{ completed }} / {{ length }} geüpload",
"CANCELED": "Uploaden geannuleerd",
"CANCEL_UPLOAD": "Uploaden annuleren",
"CANCEL_ALL": "Uploads annuleren",
"REMOVE_UPLOADED": "Geüpload bestand verwijderen",
"CANCELED_STATUS": "Geannuleerd",
"ERRORS": "fout(en)"
}
},
"FOLDER_DIALOG": {
"CREATE_FOLDER_TITLE": "Nieuwe map maken",
"EDIT_FOLDER_TITLE": "Map bewerken",
"FOLDER_NAME": {
"LABEL": "Naam",
"ERRORS": {
"REQUIRED": "Mapnaam is vereist",
"SPECIAL_CHARACTERS": "Mapnaam mag de volgende tekens niet bevatten: * \" < > \\ / ? : |",
"ENDING_DOT": "Mapnaam mag niet eindigen met een punt .",
"ONLY_SPACES": "Mapnaam mag niet alleen uit spaties bestaan"
}
},
"FOLDER_DESCRIPTION": {
"LABEL": "Beschrijving"
},
"CREATE_BUTTON": {
"LABEL": "Maken"
},
"UPDATE_BUTTON": {
"LABEL": "Bijwerken"
},
"CANCEL_BUTTON": {
"LABEL": "Annuleren"
}
},
"PAGINATION": {
"ITEMS_PER_PAGE": "Items per pagina",
"CURRENT_PAGE": "Pagina",
"OF": "van",
"SHOW_RANGE": "{{ range }} van {{ total }} items wordt weergegeven"
},
"SITES_VISIBILITY": { "SITES_VISIBILITY": {
"PUBLIC": "Openbaar", "PUBLIC": "Openbaar",
"MODERATED": "Onder toezicht", "MODERATED": "Onder toezicht",
-46
View File
@@ -117,52 +117,6 @@
"DELETED_BY": "Excluído por" "DELETED_BY": "Excluído por"
} }
}, },
"DIALOG": {
"MINIMIZE": "Minimizar",
"MAXIMIZE": "Maximizar",
"CLOSE": "Fechar",
"UPLOAD": {
"IN_PROGRESS": "Carregando {{ completed }} / {{ length }}",
"COMPLETE": "Carregado {{ completed }} / {{ length }}",
"CANCELED": "Upload cancelado",
"CANCEL_UPLOAD": "Cancelar upload",
"CANCEL_ALL": "Cancelar uploads",
"REMOVE_UPLOADED": "Remover arquivo carregado",
"CANCELED_STATUS": "Cancelado",
"ERRORS": "erro(s)"
}
},
"FOLDER_DIALOG": {
"CREATE_FOLDER_TITLE": "Criar nova pasta",
"EDIT_FOLDER_TITLE": "Editar pasta",
"FOLDER_NAME": {
"LABEL": "Nome",
"ERRORS": {
"REQUIRED": "O nome da pasta é obrigatório",
"SPECIAL_CHARACTERS": "O nome da pasta não pode conter estes caracteres * \" < > \\ / ? : |",
"ENDING_DOT": "O nome da pasta não pode terminar com ponto final .",
"ONLY_SPACES": "O nome da pasta não pode conter somente espaços"
}
},
"FOLDER_DESCRIPTION": {
"LABEL": "Descrição"
},
"CREATE_BUTTON": {
"LABEL": "Criar"
},
"UPDATE_BUTTON": {
"LABEL": "Atualizar"
},
"CANCEL_BUTTON": {
"LABEL": "Cancelar"
}
},
"PAGINATION": {
"ITEMS_PER_PAGE": "Itens por página",
"CURRENT_PAGE": "Página",
"OF": "de",
"SHOW_RANGE": "Exibindo {{ range }} de {{ total }} itens"
},
"SITES_VISIBILITY": { "SITES_VISIBILITY": {
"PUBLIC": "Público", "PUBLIC": "Público",
"MODERATED": "Moderado", "MODERATED": "Moderado",
-46
View File
@@ -117,52 +117,6 @@
"DELETED_BY": "Удалено пользователем" "DELETED_BY": "Удалено пользователем"
} }
}, },
"DIALOG": {
"MINIMIZE": "Свернуть",
"MAXIMIZE": "Развернуть",
"CLOSE": "Закрыть",
"UPLOAD": {
"IN_PROGRESS": "Загрузка {{ completed }} / {{ length }}",
"COMPLETE": "Загружено {{ completed }} / {{ length }}",
"CANCELED": "Загрузка отменена",
"CANCEL_UPLOAD": "Отменить загрузку",
"CANCEL_ALL": "Отменить загрузки",
"REMOVE_UPLOADED": "Удалить загруженный файл",
"CANCELED_STATUS": "Oтменено",
"ERRORS": "ошибка (ошибки)"
}
},
"FOLDER_DIALOG": {
"CREATE_FOLDER_TITLE": "Создать новую папку",
"EDIT_FOLDER_TITLE": "Редактировать папку",
"FOLDER_NAME": {
"LABEL": "Имя",
"ERRORS": {
"REQUIRED": "Имя папки является обязательным",
"SPECIAL_CHARACTERS": "Имя папки не может содержать следующие символы * \" < > \\ / ? : |",
"ENDING_DOT": "Имя папки не может заканчиваться точкой .",
"ONLY_SPACES": "Имя папки не может состоять только из пробелов"
}
},
"FOLDER_DESCRIPTION": {
"LABEL": "Описание"
},
"CREATE_BUTTON": {
"LABEL": "Создать"
},
"UPDATE_BUTTON": {
"LABEL": "Обновить"
},
"CANCEL_BUTTON": {
"LABEL": "Отмена"
}
},
"PAGINATION": {
"ITEMS_PER_PAGE": "Элементов на странице",
"CURRENT_PAGE": "Страница",
"OF": "из",
"SHOW_RANGE": "Отображается элементов: {{ range }} из {{ total }}"
},
"SITES_VISIBILITY": { "SITES_VISIBILITY": {
"PUBLIC": "Общедоступный", "PUBLIC": "Общедоступный",
"MODERATED": "Модерируемый", "MODERATED": "Модерируемый",
-46
View File
@@ -117,52 +117,6 @@
"DELETED_BY": "删除人" "DELETED_BY": "删除人"
} }
}, },
"DIALOG": {
"MINIMIZE": "最小化(&M)",
"MAXIMIZE": "最大化",
"CLOSE": "关闭",
"UPLOAD": {
"IN_PROGRESS": "正在上传 {{ completed }} / {{ length }}",
"COMPLETE": "已上传 {{ completed }} / {{ length }}",
"CANCELED": "取消上传",
"CANCEL_UPLOAD": "取消上传",
"CANCEL_ALL": "取消上传",
"REMOVE_UPLOADED": "移除已上传文件",
"CANCELED_STATUS": "已取消",
"ERRORS": "错误"
}
},
"FOLDER_DIALOG": {
"CREATE_FOLDER_TITLE": "新建文件夹",
"EDIT_FOLDER_TITLE": "编辑文件夹",
"FOLDER_NAME": {
"LABEL": "名称",
"ERRORS": {
"REQUIRED": "需要文件夹名称",
"SPECIAL_CHARACTERS": "文件夹名称不能包含 * \" < > \\ / ? : | 字符",
"ENDING_DOT": "文件夹名称不能以句点结尾。",
"ONLY_SPACES": "文件夹名称不能只包含空格"
}
},
"FOLDER_DESCRIPTION": {
"LABEL": "说明"
},
"CREATE_BUTTON": {
"LABEL": "创建"
},
"UPDATE_BUTTON": {
"LABEL": "更新"
},
"CANCEL_BUTTON": {
"LABEL": "取消"
}
},
"PAGINATION": {
"ITEMS_PER_PAGE": "每页的项目",
"CURRENT_PAGE": "页数",
"OF": "/",
"SHOW_RANGE": "正在显示 {{ range }} / {{ range }} 项目"
},
"SITES_VISIBILITY": { "SITES_VISIBILITY": {
"PUBLIC": "公共", "PUBLIC": "公共",
"MODERATED": "适中", "MODERATED": "适中",