diff --git a/.travis.yml b/.travis.yml index 395247eacb..ec27e730e1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,6 +8,9 @@ node_js: # Use the explicit NodeJS LTS version 8.9.4 to avoid any automatic upgrade of the version. - '8.9.4' +install: + echo "no install" + branches: only: - master diff --git a/demo-shell/src/app.config.json b/demo-shell/src/app.config.json index cc9818acec..d406cc8fc8 100644 --- a/demo-shell/src/app.config.json +++ b/demo-shell/src/app.config.json @@ -8,6 +8,7 @@ "providers": "ALL", "contextRootBpm": "activiti-app", "authType" : "BASIC", + "locale" : "en", "oauth2": { "host": "{protocol}//{hostname}{:port}/auth/realms/alfresco", "clientId": "alfresco", diff --git a/e2e/content-services/document-list/document-list-component.e2e.ts b/e2e/content-services/document-list/document-list-component.e2e.ts index 2265fe87b3..d003773072 100644 --- a/e2e/content-services/document-list/document-list-component.e2e.ts +++ b/e2e/content-services/document-list/document-list-component.e2e.ts @@ -112,7 +112,7 @@ describe('Document List Component', () => { it('[C279925] Should display translated message when accessing a file without permissions if language is changed', () => { loginPage.loginToContentServicesUsingUserModel(acsUser); navBar.openLanguageMenu(); - navBar.chooseLanguage('Italian'); + navBar.chooseLanguage('Italiano'); browser.sleep(2000); browser.get(TestConfig.adf.url + '/files/' + privateSite.entry.guid); expect(errorPage.getErrorDescription()).toBe('Accesso alla risorsa sul server non consentito.'); diff --git a/e2e/core/viewer/viewer-component.e2e.ts b/e2e/core/viewer/viewer-component.e2e.ts index 550949b099..750bd3fc26 100644 --- a/e2e/core/viewer/viewer-component.e2e.ts +++ b/e2e/core/viewer/viewer-component.e2e.ts @@ -24,9 +24,9 @@ import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import { ContentListPage } from '../../pages/adf/dialog/contentListPage'; import { ShareDialog } from '../../pages/adf/dialog/shareDialog'; +import CONSTANTS = require('../../util/constants'); import resources = require('../../util/resources'); import { Util } from '../../util/util'; -import CONSTANTS = require('../../util/constants'); import { FileModel } from '../../models/ACS/fileModel'; import { FolderModel } from '../../models/ACS/folderModel'; @@ -89,6 +89,11 @@ describe('Viewer', () => { 'location': resources.Files.ADF_DOCUMENTS.IMG_FOLDER.folder_location }); + let imgRenditionFolderInfo = new FolderModel({ + 'name': resources.Files.ADF_DOCUMENTS.IMG_RENDITION_FOLDER.folder_name, + 'location': resources.Files.ADF_DOCUMENTS.IMG_RENDITION_FOLDER.folder_location + }); + beforeAll(async (done) => { this.alfrescoJsApi = new AlfrescoApi({ @@ -340,14 +345,18 @@ describe('Viewer', () => { describe('Image Folder Uploaded', () => { - let uploadedImages; - let imgFolderUploaded; + let uploadedImages, uploadedImgRenditionFolderInfo; + let imgFolderUploaded, imgFolderRenditionUploaded; beforeAll(async (done) => { imgFolderUploaded = await uploadActions.createFolder(this.alfrescoJsApi, imgFolderInfo.name, '-my-'); uploadedImages = await uploadActions.uploadFolder(this.alfrescoJsApi, imgFolderInfo.location, imgFolderUploaded.entry.id); + imgFolderRenditionUploaded = await uploadActions.createFolder(this.alfrescoJsApi, imgRenditionFolderInfo.name, imgFolderUploaded.entry.id); + + uploadedImgRenditionFolderInfo = await uploadActions.uploadFolder(this.alfrescoJsApi, imgRenditionFolderInfo.location, imgFolderRenditionUploaded.entry.id); + loginPage.loginToContentServicesUsingUserModel(acsUser); contentServicesPage.goToDocumentList(); @@ -363,6 +372,16 @@ describe('Viewer', () => { contentServicesPage.navigateToFolder('images'); uploadedImages.forEach((currentFile) => { + if (currentFile.entry.name !== '.DS_Store') { + contentServicesPage.doubleClickRow(currentFile.entry.name); + viewerPage.checkImgViewerIsDisplayed(); + viewerPage.clickCloseButton(); + } + }); + + contentServicesPage.navigateToFolder('images-rendition'); + + uploadedImgRenditionFolderInfo.forEach((currentFile) => { if (currentFile.entry.name !== '.DS_Store') { contentServicesPage.doubleClickRow(currentFile.entry.name); viewerPage.checkFileIsLoaded(); @@ -387,7 +406,7 @@ describe('Viewer', () => { wordFileUploaded = await uploadActions.uploadFile(this.alfrescoJsApi, wordFileInfo.location, wordFileInfo.name, '-my-'); - pngFileShared = await this.alfrescoJsApi.core.sharedlinksApi.addSharedLink({'nodeId': pngFileUploaded.entry.id}); + pngFileShared = await this.alfrescoJsApi.core.sharedlinksApi.addSharedLink({ 'nodeId': pngFileUploaded.entry.id }); done(); }); diff --git a/e2e/pages/adf/contentServicesPage.ts b/e2e/pages/adf/contentServicesPage.ts index 7bc3e26657..4ab538dd99 100644 --- a/e2e/pages/adf/contentServicesPage.ts +++ b/e2e/pages/adf/contentServicesPage.ts @@ -352,8 +352,8 @@ export class ContentServicesPage { return this; } - doubleClickRow(folder) { - this.contentList.doubleClickRow(folder); + doubleClickRow(nodeName) { + this.contentList.doubleClickRow(nodeName); return this; } diff --git a/e2e/resources/adf/allFileTypes/images/a_tiff_file.tif b/e2e/resources/adf/allFileTypes/images-rendition/a_tiff_file.tif similarity index 100% rename from e2e/resources/adf/allFileTypes/images/a_tiff_file.tif rename to e2e/resources/adf/allFileTypes/images-rendition/a_tiff_file.tif diff --git a/e2e/resources/adf/allFileTypes/images/a_xbm_file.XBM b/e2e/resources/adf/allFileTypes/images-rendition/a_xbm_file.XBM similarity index 100% rename from e2e/resources/adf/allFileTypes/images/a_xbm_file.XBM rename to e2e/resources/adf/allFileTypes/images-rendition/a_xbm_file.XBM diff --git a/e2e/resources/adf/allFileTypes/images/a_psd_file.PSD b/e2e/resources/adf/allFileTypes/images/a_psd_file.PSD deleted file mode 100755 index dd607d8a91..0000000000 Binary files a/e2e/resources/adf/allFileTypes/images/a_psd_file.PSD and /dev/null differ diff --git a/e2e/util/resources.js b/e2e/util/resources.js index 0b573ed2d7..d3ab8c873a 100644 --- a/e2e/util/resources.js +++ b/e2e/util/resources.js @@ -489,6 +489,10 @@ exports.Files = { IMG_FOLDER: { folder_location: "/resources/adf/allFileTypes/images", folder_name: "images" + }, + IMG_RENDITION_FOLDER: { + folder_location: "/resources/adf/allFileTypes/images-rendition", + folder_name: "images-rendition" } }, diff --git a/lib/core/app-config/app-config.service.spec.ts b/lib/core/app-config/app-config.service.spec.ts index d2cf35bdec..d511184b5a 100644 --- a/lib/core/app-config/app-config.service.spec.ts +++ b/lib/core/app-config/app-config.service.spec.ts @@ -34,7 +34,9 @@ describe('AppConfigService', () => { }, files: { 'excluded': ['excluded'] - } + }, + logLevel: 'silent', + alfrescoRepositoryName: 'alfresco-1' }; beforeEach(() => { @@ -127,6 +129,7 @@ describe('AppConfigService', () => { it('should load external settings', () => { appConfigService.load().then((config) => { + expect(config).toEqual(mockResponse); }); }); diff --git a/lib/core/app-config/app-config.service.ts b/lib/core/app-config/app-config.service.ts index 4559f2ad45..c19dbc2840 100644 --- a/lib/core/app-config/app-config.service.ts +++ b/lib/core/app-config/app-config.service.ts @@ -38,6 +38,13 @@ export enum AppConfigValues { LOGIN_ROUTE = 'loginRoute', DISABLECSRF = 'disableCSRF' } + +export enum Status { + INIT = 'init', + LOADING = 'loading', + LOADED = 'loaded' +} + /* spellchecker: enable */ @Injectable({ @@ -55,7 +62,8 @@ export class AppConfigService { alfrescoRepositoryName: 'alfresco-1' }; - private onLoadSubject: Subject; + status: Status = Status.INIT; + protected onLoadSubject: Subject; onLoad: Observable; constructor(private http: HttpClient) { @@ -128,19 +136,29 @@ export class AppConfigService { * @returns Notification when loading is complete */ load(): Promise { - return new Promise((resolve) => { + return new Promise(async (resolve) => { const configUrl = `app.config.json?v=${Date.now()}`; - this.http.get(configUrl).subscribe( - (data: any) => { - this.config = Object.assign({}, this.config, data || {}); - this.onLoadSubject.next(this.config); + if (this.status === Status.INIT) { + this.status = Status.LOADING; + await this.http.get(configUrl).subscribe( + (data: any) => { + this.status = Status.LOADED; + this.config = Object.assign({}, this.config, data || {}); + this.onLoadSubject.next(this.config); + resolve(this.config); + }, + () => { + resolve(this.config); + } + ); + } else if (this.status === Status.LOADED) { + resolve(this.config); + } else if (this.status === Status.LOADING) { + this.onLoad.subscribe(() => { resolve(this.config); - }, - () => { - resolve(this.config); - } - ); + }); + } }); } diff --git a/lib/core/datatable/data/data-table.schema.ts b/lib/core/datatable/data/data-table.schema.ts index 0e46de654c..59a099e7bc 100644 --- a/lib/core/datatable/data/data-table.schema.ts +++ b/lib/core/datatable/data/data-table.schema.ts @@ -54,8 +54,7 @@ export abstract class DataTableSchema { } public mergeJsonAndHtmlSchema(): any { - let customSchemaColumns = []; - customSchemaColumns = this.getSchemaFromConfig(this.presetColumn).concat(this.getSchemaFromHtml(this.columnList)); + let customSchemaColumns = this.getSchemaFromConfig(this.presetColumn).concat(this.getSchemaFromHtml(this.columnList)); if (customSchemaColumns.length === 0) { customSchemaColumns = this.getDefaultLayoutPreset(); } diff --git a/lib/core/mock/app-config.service.mock.ts b/lib/core/mock/app-config.service.mock.ts index ecff93460f..835f0b4f5d 100644 --- a/lib/core/mock/app-config.service.mock.ts +++ b/lib/core/mock/app-config.service.mock.ts @@ -36,6 +36,7 @@ export class AppConfigServiceMock extends AppConfigService { load(): Promise { return new Promise((resolve) => { + this.onLoadSubject.next(this.config); resolve(this.config); }); } diff --git a/lib/core/pagination/infinite-pagination.component.html b/lib/core/pagination/infinite-pagination.component.html index c210aa5fa1..26d4069c92 100644 --- a/lib/core/pagination/infinite-pagination.component.html +++ b/lib/core/pagination/infinite-pagination.component.html @@ -1,5 +1,4 @@
- isLoading : {{isLoading}}