diff --git a/demo-shell/resources/i18n/en.json b/demo-shell/resources/i18n/en.json index ffccf90748..bc35a39536 100644 --- a/demo-shell/resources/i18n/en.json +++ b/demo-shell/resources/i18n/en.json @@ -9,7 +9,8 @@ "ADF_VERSION_MANAGER": { "ALLOW_DELETE": "Allow delete", "SHOW_COMMENTS" : "Show comments on versions", - "ALLOW_DOWNLOAD" :"Enable version download" + "ALLOW_DOWNLOAD" :"Enable version download", + "READ_ONLY" : "Read only" } }, "title": "Welcome", diff --git a/demo-shell/src/app/components/files/version-manager-dialog-adapter.component.html b/demo-shell/src/app/components/files/version-manager-dialog-adapter.component.html index ffb418667d..910205d1c6 100644 --- a/demo-shell/src/app/components/files/version-manager-dialog-adapter.component.html +++ b/demo-shell/src/app/components/files/version-manager-dialog-adapter.component.html @@ -1,7 +1,18 @@
{{'VERSION.DIALOG.TITLE' | translate}}
-
+ +
+ + {{'APP.ADF_VERSION_MANAGER.READ_ONLY' | translate}} + +
+ +
+
+ +
+ diff --git a/demo-shell/src/app/components/files/version-manager-dialog-adapter.component.ts b/demo-shell/src/app/components/files/version-manager-dialog-adapter.component.ts index 87d5112399..551ff358d8 100644 --- a/demo-shell/src/app/components/files/version-manager-dialog-adapter.component.ts +++ b/demo-shell/src/app/components/files/version-manager-dialog-adapter.component.ts @@ -30,6 +30,7 @@ export class VersionManagerDialogAdapterComponent { showComments = true; allowDownload = true; + readOnly = false; constructor(@Inject(MAT_DIALOG_DATA) data: any, private snackBar: MatSnackBar, diff --git a/docs/content-services/version-list.component.md b/docs/content-services/version-list.component.md index a50036ffe4..60da0da8cc 100644 --- a/docs/content-services/version-list.component.md +++ b/docs/content-services/version-list.component.md @@ -31,6 +31,13 @@ Displays the version history of a node in a Version Manager component. This component is used by the Version Manager component to load and displays the version history of a node. +If you want show readonly version list you set this component with showActions false: + +```html + +``` + + ## See also - [Version manager component](version-manager.component.md) diff --git a/lib/content-services/upload/components/base-upload/upload-base.spec.ts b/lib/content-services/upload/components/base-upload/upload-base.spec.ts index aa95444cbb..e04c60c2e3 100644 --- a/lib/content-services/upload/components/base-upload/upload-base.spec.ts +++ b/lib/content-services/upload/components/base-upload/upload-base.spec.ts @@ -59,8 +59,6 @@ describe('UploadBase', () => { fixture = TestBed.createComponent(UploadTestComponent); uploadService = TestBed.get(UploadService); - spyOn(FileModel.prototype, 'generateId').and.returnValue('test'); - component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/lib/content-services/upload/components/base-upload/upload-base.ts b/lib/content-services/upload/components/base-upload/upload-base.ts index 6426bb233c..a82a6d5876 100644 --- a/lib/content-services/upload/components/base-upload/upload-base.ts +++ b/lib/content-services/upload/components/base-upload/upload-base.ts @@ -137,7 +137,7 @@ export abstract class UploadBase { * * @param file */ - protected createFileModel(file: File, parentId: string, path: string): FileModel { + protected createFileModel(file: File, parentId: string, path: string, id?: string): FileModel { return new FileModel(file, { comment: this.comment, majorVersion: this.majorVersion, @@ -145,7 +145,7 @@ export abstract class UploadBase { parentId: parentId, path: path, nodeType: this.nodeType - }); + }, id); } protected isFileSizeAllowed(file: FileModel) { diff --git a/lib/content-services/upload/components/upload-version-button.component.ts b/lib/content-services/upload/components/upload-version-button.component.ts index 84e4e4a5c3..c3f2e04b69 100644 --- a/lib/content-services/upload/components/upload-version-button.component.ts +++ b/lib/content-services/upload/components/upload-version-button.component.ts @@ -16,7 +16,7 @@ */ import { PermissionsEnum } from '@alfresco/adf-core'; -import { Component, forwardRef, Input, OnChanges, SimpleChanges, ViewEncapsulation, OnInit } from '@angular/core'; +import { Component, forwardRef, Input, OnChanges, ViewEncapsulation, OnInit } from '@angular/core'; import { MinimalNodeEntryEntity } from 'alfresco-js-api'; import { UploadButtonComponent } from './upload-button.component'; import { FileModel, EXTENDIBLE_COMPONENT } from '@alfresco/adf-core'; @@ -36,20 +36,8 @@ export class UploadVersionButtonComponent extends UploadButtonComponent implemen @Input() node: MinimalNodeEntryEntity; - ngOnChanges(changes: SimpleChanges) { - super.ngOnChanges(changes); - - if (changes['acceptedFilesType']) { - const message = this.translationService.instant('FILE_UPLOAD.VERSION.MESSAGES.NO_ACCEPTED_FILE_TYPES'); - this.logService.error(message); - } - this.acceptedFilesType = '.' + this.node.name.split('.').pop(); - } - protected createFileModel(file: File): FileModel { - const fileModel = super.createFileModel(file, this.rootFolderId, (file.webkitRelativePath || '').replace(/\/[^\/]*$/, '')); - - fileModel.options.newVersionBaseName = this.node.name; + const fileModel = super.createFileModel(file, this.rootFolderId, (file.webkitRelativePath || '').replace(/\/[^\/]*$/, ''), this.node.id); if (!this.isFileAcceptable(fileModel)) { const message = this.translationService.instant('FILE_UPLOAD.VERSION.MESSAGES.INCOMPATIBLE_VERSION'); diff --git a/lib/content-services/version-manager/version-upload.component.html b/lib/content-services/version-manager/version-upload.component.html index 70fc310506..b73a94b010 100644 --- a/lib/content-services/version-manager/version-upload.component.html +++ b/lib/content-services/version-manager/version-upload.component.html @@ -10,8 +10,8 @@ - + diff --git a/lib/content-services/version-manager/version-upload.component.scss b/lib/content-services/version-manager/version-upload.component.scss index 11175eac3d..8756b46674 100644 --- a/lib/content-services/version-manager/version-upload.component.scss +++ b/lib/content-services/version-manager/version-upload.component.scss @@ -20,3 +20,8 @@ width: 100%; float: right; } + +.adf-new-version-text-area { + resize: none !important; +} + diff --git a/lib/core/models/file.model.ts b/lib/core/models/file.model.ts index 7bf6e96ebe..2f114e1b99 100644 --- a/lib/core/models/file.model.ts +++ b/lib/core/models/file.model.ts @@ -25,7 +25,6 @@ export interface FileUploadOptions { comment?: string; newVersion?: boolean; majorVersion?: boolean; - newVersionBaseName?: string; parentId?: string; path?: string; nodeType?: string; @@ -43,20 +42,19 @@ export enum FileUploadStatus { } export class FileModel { - readonly id: string; readonly name: string; readonly size: number; readonly file: File; + id: string; status: FileUploadStatus = FileUploadStatus.Pending; progress: FileUploadProgress; options: FileUploadOptions; data: any; - constructor(file: File, options?: FileUploadOptions) { + constructor(file: File, options?: FileUploadOptions, id?: string) { this.file = file; - - this.id = this.generateId(); + this.id = id; this.name = file.name; this.size = file.size; this.data = null; @@ -72,13 +70,6 @@ export class FileModel { }, options); } - generateId(): string { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - let r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8); - return v.toString(16); - }); - } - get extension(): string { return this.name.slice((Math.max(0, this.name.lastIndexOf('.')) || Infinity) + 1); } diff --git a/lib/core/services/upload.service.spec.ts b/lib/core/services/upload.service.spec.ts index d586b33527..2502aac034 100644 --- a/lib/core/services/upload.service.spec.ts +++ b/lib/core/services/upload.service.spec.ts @@ -161,18 +161,16 @@ describe('UploadService', () => { expect(jasmine.Ajax.requests.mostRecent().params.has('majorVersion')).toBe(false); }); - it('If newVersionBaseName is set, name should be a param', () => { + it('If newVersion is set, name should be a param', () => { let emitter = new EventEmitter(); const filesFake = new FileModel( { name: 'fake-name', size: 10 }, { - newVersion: true, - newVersionBaseName: 'name-under-test' + newVersion: true }); service.addToQueue(filesFake); service.uploadFilesInTheQueue(emitter); expect(jasmine.Ajax.requests.mostRecent().params.has('name')).toBe(true); - expect(jasmine.Ajax.requests.mostRecent().params.get('name')).toBe('name-under-test'); }); it('should use custom root folder ID given to the service', (done) => { diff --git a/lib/core/services/upload.service.ts b/lib/core/services/upload.service.ts index a9159a070f..c891a324a7 100644 --- a/lib/core/services/upload.service.ts +++ b/lib/core/services/upload.service.ts @@ -52,9 +52,8 @@ export class UploadService { fileUploadDeleted: Subject = new Subject(); fileDeleted: Subject = new Subject(); - constructor( - protected apiService: AlfrescoApiService, - appConfigService: AppConfigService) { + constructor(protected apiService: AlfrescoApiService, + appConfigService: AppConfigService) { this.excludedFileList = appConfigService.get('files.excluded'); } @@ -164,25 +163,32 @@ export class UploadService { opts.overwrite = true; opts.majorVersion = file.options.majorVersion; opts.comment = file.options.comment; + opts.name = file.name; } else { opts.autoRename = true; } - if (file.options.newVersionBaseName) { - opts.name = file.options.newVersionBaseName; - } - if (file.options.nodeType) { opts.nodeType = file.options.nodeType; } - return this.apiService.getInstance().upload.uploadFile( - file.file, - file.options.path, - file.options.parentId, - null, - opts - ); + if (file.id) { + return this.apiService.getInstance().upload.updateFile( + file.file, + file.options.path, + file.id, + file.file, + opts + ); + } else { + return this.apiService.getInstance().upload.uploadFile( + file.file, + file.options.path, + file.options.parentId, + null, + opts + ); + } } private beginUpload(file: FileModel, /* @deprecated */emitter: EventEmitter): any {