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.
## 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)
### 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',
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',
+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);
spyOn(dialog, 'open').and.callFake((contentNodeSelectorComponent: any, data: any) => {
testContentNodeSelectorComponentData = data;
return {};
return {componentInstance: {}};
});
service.copyNodes([fileToCopy, folderToCopy]);
@@ -316,7 +316,7 @@ describe('NodeActionsService', () => {
const dialog = TestBed.get(MatDialog);
const spyOnDialog = spyOn(dialog, 'open').and.callFake((contentNodeSelectorComponent: any, data: any) => {
testContentNodeSelectorComponentData = data;
return {};
return {componentInstance: {}};
});
service.copyNodes([fileToCopy, folderToCopy]);
@@ -343,7 +343,7 @@ describe('NodeActionsService', () => {
const dialog = TestBed.get(MatDialog);
spyOn(dialog, 'open').and.callFake((contentNodeSelectorComponent: any, data: any) => {
testContentNodeSelectorComponentData = data;
return {};
return {componentInstance: {}};
});
service.copyNodes([{entry: {id: 'entry-id', name: 'entry-name'}}]);
@@ -362,7 +362,7 @@ describe('NodeActionsService', () => {
const dialog = TestBed.get(MatDialog);
spyOn(dialog, 'open').and.callFake((contentNodeSelectorComponent: any, data: any) => {
testContentNodeSelectorComponentData = data;
return {};
return {componentInstance: {}};
});
service.copyNodes([{entry: {id: 'entry-id'}}]);
@@ -27,7 +27,7 @@ import { EventEmitter, Injectable } from '@angular/core';
import { MatDialog } from '@angular/material';
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 { MinimalNodeEntity, MinimalNodeEntryEntity } from 'alfresco-js-api';
@@ -194,11 +194,23 @@ export class NodeActionsService {
select: new EventEmitter<MinimalNodeEntryEntity[]>()
};
this.dialog.open(ContentNodeSelectorComponent, <any>{
const matDialogRef = this.dialog.open(ContentNodeSelectorComponent, <any>{
data,
panelClass: 'adf-content-node-selector-dialog',
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;
}
@@ -25,6 +25,7 @@
import { RouterTestingModule } from '@angular/router/testing';
import { Router } from '@angular/router';
import { Location } from '@angular/common';
import { TestBed, async } from '@angular/core/testing';
import { CoreModule, AuthenticationService, UserPreferencesService } from '@alfresco/adf-core';
@@ -36,6 +37,7 @@ describe('LoginComponent', () => {
let router;
let userPreference;
let auth;
let location;
beforeEach(async(() => {
TestBed.configureTestingModule({
@@ -45,6 +47,9 @@ describe('LoginComponent', () => {
],
declarations: [
LoginComponent
],
providers: [
Location
]
});
@@ -52,6 +57,7 @@ describe('LoginComponent', () => {
component = fixture.componentInstance;
router = TestBed.get(Router);
location = TestBed.get(Location);
auth = TestBed.get(AuthenticationService);
userPreference = TestBed.get(UserPreferencesService);
}));
@@ -60,6 +66,7 @@ describe('LoginComponent', () => {
spyOn(userPreference, 'setStoragePrefix');
spyOn(router, 'navigateByUrl');
spyOn(auth, 'getRedirectUrl').and.returnValue('/some-url');
spyOn(location, 'forward');
});
describe('OnInit()', () => {
@@ -67,14 +74,14 @@ describe('LoginComponent', () => {
spyOn(auth, 'isEcmLoggedIn').and.returnValue(false);
fixture.detectChanges();
expect(router.navigateByUrl).not.toHaveBeenCalled();
expect(location.forward).not.toHaveBeenCalled();
});
it('should redirect when user is logged in', () => {
spyOn(auth, 'isEcmLoggedIn').and.returnValue(true);
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 { Location } from '@angular/common';
import { Router } from '@angular/router';
import { AuthenticationService, UserPreferencesService } from '@alfresco/adf-core';
@@ -33,13 +34,14 @@ import { AuthenticationService, UserPreferencesService } from '@alfresco/adf-cor
export class LoginComponent implements OnInit {
constructor(
private router: Router,
private location: Location,
private auth: AuthenticationService,
private userPreferences: UserPreferencesService
) {}
ngOnInit() {
if (this.auth.isEcmLoggedIn()) {
this.router.navigateByUrl(this.auth.getRedirectUrl() || '');
this.location.forward();
}
}
+1 -47
View File
@@ -117,52 +117,6 @@
"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": {
"PUBLIC": "Öffentlich",
"MODERATED": "Moderiert",
@@ -231,4 +185,4 @@
}
}
}
}
}
-46
View File
@@ -117,52 +117,6 @@
"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": {
"PUBLIC": "Public",
"MODERATED": "Moderated",
+1 -47
View File
@@ -117,52 +117,6 @@
"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": {
"PUBLIC": "Público",
"MODERATED": "Moderado",
@@ -231,4 +185,4 @@
}
}
}
}
}
+1 -47
View File
@@ -117,52 +117,6 @@
"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": {
"PUBLIC": "Public",
"MODERATED": "Modéré",
@@ -231,4 +185,4 @@
}
}
}
}
}
+1 -47
View File
@@ -117,52 +117,6 @@
"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": {
"PUBLIC": "Pubblico",
"MODERATED": "Moderato",
@@ -231,4 +185,4 @@
}
}
}
}
}
+1 -47
View File
@@ -117,52 +117,6 @@
"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": {
"PUBLIC": "公開",
"MODERATED": "条件付き公開",
@@ -231,4 +185,4 @@
}
}
}
}
}
+1 -47
View File
@@ -117,52 +117,6 @@
"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": {
"PUBLIC": "Offentlig",
"MODERATED": "Moderert",
@@ -231,4 +185,4 @@
}
}
}
}
}
+1 -47
View File
@@ -117,52 +117,6 @@
"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": {
"PUBLIC": "Openbaar",
"MODERATED": "Onder toezicht",
@@ -231,4 +185,4 @@
}
}
}
}
}
+1 -47
View File
@@ -117,52 +117,6 @@
"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": {
"PUBLIC": "Público",
"MODERATED": "Moderado",
@@ -231,4 +185,4 @@
}
}
}
}
}
+1 -47
View File
@@ -117,52 +117,6 @@
"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": {
"PUBLIC": "Общедоступный",
"MODERATED": "Модерируемый",
@@ -231,4 +185,4 @@
}
}
}
}
}
+1 -47
View File
@@ -117,52 +117,6 @@
"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": {
"PUBLIC": "公共",
"MODERATED": "适中",
@@ -231,4 +185,4 @@
}
}
}
}
}