Ability to use the appname as placeholder in the destinationFolder relative path (#6076)

This commit is contained in:
Maurizio Vitale
2020-09-14 12:06:10 +01:00
committed by GitHub
parent c5e23102f9
commit bfe6836021
2 changed files with 39 additions and 3 deletions

View File

@@ -27,7 +27,8 @@ import {
FormFieldTypes,
FormFieldMetadata,
FormService,
DownloadService
DownloadService,
AppConfigService
} from '@alfresco/adf-core';
import { ProcessServiceCloudTestingModule } from '../../../../testing/process-service-cloud.testing.module';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
@@ -43,6 +44,7 @@ describe('AttachFileCloudWidgetComponent', () => {
let fixture: ComponentFixture<AttachFileCloudWidgetComponent>;
let element: HTMLInputElement;
let contentCloudNodeSelectorService: ContentCloudNodeSelectorService;
let appConfigService: AppConfigService;
let processCloudContentService: ProcessCloudContentService;
let formService: FormService;
let downloadService: DownloadService;
@@ -173,6 +175,9 @@ describe('AttachFileCloudWidgetComponent', () => {
contentCloudNodeSelectorService = TestBed.inject(
ContentCloudNodeSelectorService
);
appConfigService = TestBed.inject(
AppConfigService
);
formService = TestBed.inject(FormService);
}));
@@ -389,6 +394,21 @@ describe('AttachFileCloudWidgetComponent', () => {
expect(openUploadFileDialogSpy).toHaveBeenCalledWith('-root-', 'multiple', true);
});
it('should return the application name in case -appname- placeholder is present', async() => {
appConfigService.config = Object.assign(appConfigService.config, {
'alfresco-deployed-apps': [
{
'name': 'fakeapp'
}
]
});
expect(widget.replaceAppNameAliasWithValue('/myfiles/-appname-/folder')).toBe('/myfiles/fakeapp/folder');
});
it('should return the same value in case -appname- placeholder is NOT present', async() => {
expect(widget.replaceAppNameAliasWithValue('/myfiles/fakepath/folder')).toBe('/myfiles/fakepath/folder');
});
describe('FilesSource', () => {
it('should be able to set myFiles folderId as rootNodeId if fileSource set only to content', async () => {

View File

@@ -24,7 +24,8 @@ import {
ThumbnailService,
NotificationService,
FormValues,
ContentLinkModel
ContentLinkModel,
AppConfigService
} from '@alfresco/adf-core';
import { Node, RelatedContentRepresentation } from '@alfresco/js-api';
import { ContentCloudNodeSelectorService } from '../../../services/content-cloud-node-selector.service';
@@ -53,6 +54,7 @@ export class AttachFileCloudWidgetComponent extends UploadCloudWidgetComponent i
static MY_FILES_FOLDER_ID = '-my-';
static ROOT_FOLDER_ID = '-root-';
static APP_NAME = '-appname-';
static VALID_ALIAS = [AttachFileCloudWidgetComponent.ROOT_FOLDER_ID, AttachFileCloudWidgetComponent.MY_FILES_FOLDER_ID, '-shared-'];
typeId = 'AttachFileCloudWidgetComponent';
@@ -64,7 +66,8 @@ export class AttachFileCloudWidgetComponent extends UploadCloudWidgetComponent i
thumbnails: ThumbnailService,
processCloudContentService: ProcessCloudContentService,
notificationService: NotificationService,
private contentNodeSelectorService: ContentCloudNodeSelectorService
private contentNodeSelectorService: ContentCloudNodeSelectorService,
private appConfigService: AppConfigService
) {
super(formService, thumbnails, processCloudContentService, notificationService, logger);
}
@@ -85,6 +88,18 @@ export class AttachFileCloudWidgetComponent extends UploadCloudWidgetComponent i
this.removeFile(file);
}
fetchAppNameFromAppConfig(): string {
return this.appConfigService.get('alfresco-deployed-apps')[0]?.name;
}
replaceAppNameAliasWithValue(path: string): string {
if (path?.match(AttachFileCloudWidgetComponent.APP_NAME)) {
const appName = this.fetchAppNameFromAppConfig();
return path.replace(AttachFileCloudWidgetComponent.APP_NAME, appName);
}
return path;
}
async openSelectDialog() {
const selectedMode = this.field.params.multiple ? 'multiple' : 'single';
@@ -92,6 +107,7 @@ export class AttachFileCloudWidgetComponent extends UploadCloudWidgetComponent i
const destinationFolderPath = this.getAliasAndRelativePathFromDestinationFolderPath(this.field.params.fileSource.destinationFolderPath);
const opts = { relativePath: destinationFolderPath.path };
destinationFolderPath.path = this.replaceAppNameAliasWithValue(destinationFolderPath.path);
const nodeId = await this.contentNodeSelectorService.fetchNodeIdFromRelativePath(destinationFolderPath.alias, opts);
this.rootNodeId = nodeId ? nodeId : destinationFolderPath.alias;
}