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 {