From 9e8f6444318ca7d127b0e363db0b0f8d030f42a4 Mon Sep 17 00:00:00 2001 From: Will Abson Date: Tue, 12 Jul 2016 14:39:43 +0100 Subject: [PATCH] Add alt text for file and folder icons in documentlist Refs #378 --- .../src/components/datatable.component.html | 2 +- .../src/components/datatable.component.spec.ts | 6 ++++++ .../src/components/datatable.component.ts | 12 ++++++++++-- .../ng2-alfresco-documentlist/i18n/en.json | 16 ++++++++++++++++ .../src/components/content-action-list.spec.ts | 2 +- .../src/components/content-action.spec.ts | 2 +- .../src/components/content-column-list.spec.ts | 2 +- .../src/components/content-column.spec.ts | 2 +- .../document-list-breadcrumb.component.spec.ts | 2 +- .../src/components/document-list.spec.ts | 2 +- .../src/components/document-list.ts | 12 ++++++++++-- 11 files changed, 49 insertions(+), 11 deletions(-) create mode 100644 ng2-components/ng2-alfresco-documentlist/i18n/en.json diff --git a/ng2-components/ng2-alfresco-datatable/src/components/datatable.component.html b/ng2-components/ng2-alfresco-datatable/src/components/datatable.component.html index d7e3dd9bbb..c1a95d40d3 100644 --- a/ng2-components/ng2-alfresco-datatable/src/components/datatable.component.html +++ b/ng2-components/ng2-alfresco-datatable/src/components/datatable.component.html @@ -47,7 +47,7 @@ [context-menu]="getContextMenuActions(row, col)">
{{asIconValue(row, col)}} - + {{iconAltTextKey(data.getValue(row, col))|translate}}
{{data.getValue(row, col)}} diff --git a/ng2-components/ng2-alfresco-datatable/src/components/datatable.component.spec.ts b/ng2-components/ng2-alfresco-datatable/src/components/datatable.component.spec.ts index 81f4bc0c58..19be5990c6 100644 --- a/ng2-components/ng2-alfresco-datatable/src/components/datatable.component.spec.ts +++ b/ng2-components/ng2-alfresco-datatable/src/components/datatable.component.spec.ts @@ -298,6 +298,12 @@ describe('DataTable', () => { expect(dataTable.asIconValue( row, column)).toBe(null); }); + it('should parse icon values to a valid i18n key', () => { + expect(dataTable.iconAltTextKey('custom')).toBe('ICONS.custom'); + expect(dataTable.iconAltTextKey('/path/to/custom')).toBe('ICONS.custom'); + expect(dataTable.iconAltTextKey('/path/to/custom.svg')).toBe('ICONS.custom'); + }); + it('should require column and direction to evaluate sorting state', () => { expect(dataTable.isColumnSorted(null, null)).toBeFalsy(); expect(dataTable.isColumnSorted( {}, null)).toBeFalsy(); diff --git a/ng2-components/ng2-alfresco-datatable/src/components/datatable.component.ts b/ng2-components/ng2-alfresco-datatable/src/components/datatable.component.ts index 4d9b47b242..8c6533544c 100644 --- a/ng2-components/ng2-alfresco-datatable/src/components/datatable.component.ts +++ b/ng2-components/ng2-alfresco-datatable/src/components/datatable.component.ts @@ -26,7 +26,10 @@ import { TemplateRef } from '@angular/core'; -import { CONTEXT_MENU_DIRECTIVES } from 'ng2-alfresco-core'; +import { + CONTEXT_MENU_DIRECTIVES, + AlfrescoPipeTranslate +} from 'ng2-alfresco-core'; import { DataTableAdapter, @@ -45,7 +48,8 @@ declare let __moduleName: string; selector: 'alfresco-datatable', styleUrls: ['./datatable.component.css'], templateUrl: './datatable.component.html', - directives: [CONTEXT_MENU_DIRECTIVES] + directives: [CONTEXT_MENU_DIRECTIVES], + pipes: [AlfrescoPipeTranslate] }) export class DataTableComponent implements OnInit, AfterViewChecked { @@ -166,6 +170,10 @@ export class DataTableComponent implements OnInit, AfterViewChecked { return null; } + iconAltTextKey(value: string) { + return 'ICONS.' + value.substring(value.lastIndexOf('/') + 1).replace(/\.[a-z]+/, ''); + } + isColumnSorted(col: DataColumn, direction: string) { if (col && direction) { let sorting = this.data.getSorting(); diff --git a/ng2-components/ng2-alfresco-documentlist/i18n/en.json b/ng2-components/ng2-alfresco-documentlist/i18n/en.json new file mode 100644 index 0000000000..438f30d237 --- /dev/null +++ b/ng2-components/ng2-alfresco-documentlist/i18n/en.json @@ -0,0 +1,16 @@ +{ + "ICONS": { + "ft_ic_folder": "Folder", + "ft_ic_raster_image": "Image file", + "ft_ic_pdf": "PDF document", + "ft_ic_ms_excel": "Microsoft Excel file", + "ft_ic_ms_word": "Microsoft Word document", + "ft_ic_ms_powerpoint": "Microsoft PowerPoint file", + "ft_ic_video": "Video file", + "ft_ic_document": "Document file", + "ft_ic_website": "Web resource", + "ft_ic_archive": "Archive file", + "ft_ic_presentation": "Presentation file", + "ft_ic_spreadsheet": "Spreadsheet file" + } +} diff --git a/ng2-components/ng2-alfresco-documentlist/src/components/content-action-list.spec.ts b/ng2-components/ng2-alfresco-documentlist/src/components/content-action-list.spec.ts index b7572ee969..3820af672c 100644 --- a/ng2-components/ng2-alfresco-documentlist/src/components/content-action-list.spec.ts +++ b/ng2-components/ng2-alfresco-documentlist/src/components/content-action-list.spec.ts @@ -34,7 +34,7 @@ describe('ContentColumnList', () => { beforeEach(() => { let documentListService = new DocumentListServiceMock(); - documentList = new DocumentList(documentListService, null); + documentList = new DocumentList(documentListService, null, null); actionList = new ContentActionList(documentList); }); diff --git a/ng2-components/ng2-alfresco-documentlist/src/components/content-action.spec.ts b/ng2-components/ng2-alfresco-documentlist/src/components/content-action.spec.ts index 59b473841f..1216d78b01 100644 --- a/ng2-components/ng2-alfresco-documentlist/src/components/content-action.spec.ts +++ b/ng2-components/ng2-alfresco-documentlist/src/components/content-action.spec.ts @@ -44,7 +44,7 @@ describe('ContentAction', () => { documentActions = new DocumentActionsService(null, null); folderActions = new FolderActionsService(null); - documentList = new DocumentList(documentServiceMock, null); + documentList = new DocumentList(documentServiceMock, null, null); actionList = new ContentActionList(documentList); }); diff --git a/ng2-components/ng2-alfresco-documentlist/src/components/content-column-list.spec.ts b/ng2-components/ng2-alfresco-documentlist/src/components/content-column-list.spec.ts index 084f7c0ca3..76c4952e85 100644 --- a/ng2-components/ng2-alfresco-documentlist/src/components/content-column-list.spec.ts +++ b/ng2-components/ng2-alfresco-documentlist/src/components/content-column-list.spec.ts @@ -35,7 +35,7 @@ describe('ContentColumnList', () => { beforeEach(() => { let service = new DocumentListServiceMock(); - documentList = new DocumentList(service, null); + documentList = new DocumentList(service, null, null); columnList = new ContentColumnList(documentList); }); diff --git a/ng2-components/ng2-alfresco-documentlist/src/components/content-column.spec.ts b/ng2-components/ng2-alfresco-documentlist/src/components/content-column.spec.ts index ab9d4dab78..4f07ad7815 100644 --- a/ng2-components/ng2-alfresco-documentlist/src/components/content-column.spec.ts +++ b/ng2-components/ng2-alfresco-documentlist/src/components/content-column.spec.ts @@ -34,7 +34,7 @@ describe('ContentColumn', () => { beforeEach(() => { let service = new DocumentListServiceMock(); - documentList = new DocumentList(service, null); + documentList = new DocumentList(service, null, null); columnList = new ContentColumnList(documentList); }); diff --git a/ng2-components/ng2-alfresco-documentlist/src/components/document-list-breadcrumb.component.spec.ts b/ng2-components/ng2-alfresco-documentlist/src/components/document-list-breadcrumb.component.spec.ts index 47a688a106..2a18f6bb8e 100644 --- a/ng2-components/ng2-alfresco-documentlist/src/components/document-list-breadcrumb.component.spec.ts +++ b/ng2-components/ng2-alfresco-documentlist/src/components/document-list-breadcrumb.component.spec.ts @@ -96,7 +96,7 @@ describe('DocumentListBreadcrumb', () => { }); it('should update document list on click', () => { - let documentList = new DocumentList(null, null); + let documentList = new DocumentList(null, null, null); spyOn(documentList, 'displayFolderContent').and.stub(); let node = { name: 'name', path: '/path' }; diff --git a/ng2-components/ng2-alfresco-documentlist/src/components/document-list.spec.ts b/ng2-components/ng2-alfresco-documentlist/src/components/document-list.spec.ts index 2454bb327d..d0ea193190 100644 --- a/ng2-components/ng2-alfresco-documentlist/src/components/document-list.spec.ts +++ b/ng2-components/ng2-alfresco-documentlist/src/components/document-list.spec.ts @@ -34,7 +34,7 @@ describe('DocumentList', () => { beforeEach(() => { documentListService = new DocumentListServiceMock(); let zone = new NgZone(false); - documentList = new DocumentList(documentListService, zone); + documentList = new DocumentList(documentListService, zone, null); eventMock = { preventDefault: function () { diff --git a/ng2-components/ng2-alfresco-documentlist/src/components/document-list.ts b/ng2-components/ng2-alfresco-documentlist/src/components/document-list.ts index 26bb14d6b9..ec1559467c 100644 --- a/ng2-components/ng2-alfresco-documentlist/src/components/document-list.ts +++ b/ng2-components/ng2-alfresco-documentlist/src/components/document-list.ts @@ -30,7 +30,10 @@ import { ViewChild } from '@angular/core'; import { Subject } from 'rxjs/Rx'; -import { CONTEXT_MENU_DIRECTIVES } from 'ng2-alfresco-core'; +import { + CONTEXT_MENU_DIRECTIVES, + AlfrescoTranslationService +} from 'ng2-alfresco-core'; import { ALFRESCO_DATATABLE_DIRECTIVES, @@ -125,9 +128,14 @@ export class DocumentList implements OnInit, AfterViewInit, AfterViewChecked, Af constructor( private documentListService: DocumentListService, - private ngZone: NgZone) { + private ngZone: NgZone, + private translate: AlfrescoTranslationService) { this.data = new ShareDataTableAdapter(this.documentListService, this.baseComponentPath, []); + + if (translate) { + translate.addTranslationFolder('node_modules/ng2-alfresco-documentlist'); + } } getContextActions(node: MinimalNodeEntity) {