diff --git a/extension.schema.json b/extension.schema.json index c8357a764..d9fe567aa 100644 --- a/extension.schema.json +++ b/extension.schema.json @@ -371,6 +371,14 @@ "id": { "type": "string", "description": "Unique identifier" + }, + "includeAll": { + "type": "boolean", + "description": "Enable to automatically show all properties" + }, + "disabled": { + "description": "Toggles disabled state", + "type": "boolean" } }, "patternProperties": { @@ -748,6 +756,10 @@ "id": { "type": "string", "description": "Unique identifier" + }, + "disabled": { + "type": "boolean", + "description": "Toggle disabled state" } }, "patternProperties": { diff --git a/src/app.config.json b/src/app.config.json index 97cc2c1fa..f78b110a2 100644 --- a/src/app.config.json +++ b/src/app.config.json @@ -114,25 +114,25 @@ "content-metadata": { "presets": { "custom": [ + { + "includeAll": true, + "exclude": [ + "rn:renditioned", + "cm:versionable", + "cm:auditable", + "cm:thumbnailModification", + "cm:content", + "qshare:shared", + + "exif:exif" + ] + }, { "title": "APP.CONTENT_METADATA.EXIF_GROUP_TITLE", "items": [ { "aspect": "exif:exif", - "properties": [ - "exif:pixelXDimension", - "exif:pixelYDimension", - "exif:dateTimeOriginal", - "exif:exposureTime", - "exif:fNumber", - "exif:flash", - "exif:focalLength", - "exif:isoSpeedRatings", - "exif:orientation", - "exif:manufacturer", - "exif:model", - "exif:software" - ] + "properties": "*" } ] } @@ -141,13 +141,7 @@ }, "search": { "filterWithContains": true, - "aca:fields": [ - "cm:name", - "cm:title", - "cm:description", - "TEXT", - "TAG" - ], + "aca:fields": ["cm:name", "cm:title", "cm:description", "TEXT", "TAG"], "include": ["path", "allowableOperations", "properties"], "sorting": { "options": [ @@ -260,7 +254,10 @@ "label": "SEARCH.CATEGORIES.MODIFIED_DATE", "expanded": true, "queries": [ - { "label": "SEARCH.FACET_QUERIES.TODAY", "query": "cm:modified:[TODAY to TODAY]" }, + { + "label": "SEARCH.FACET_QUERIES.TODAY", + "query": "cm:modified:[TODAY to TODAY]" + }, { "label": "SEARCH.FACET_QUERIES.THIS_WEEK", "query": "cm:modified:[NOW/DAY-7DAYS TO NOW/DAY+1DAY]" @@ -288,7 +285,10 @@ "selector": "check-list", "settings": { "options": [ - { "name": "SEARCH.CATEGORIES.SIZE_OPTIONS.SMALL", "value": "content.size:[0 TO 1048576>" }, + { + "name": "SEARCH.CATEGORIES.SIZE_OPTIONS.SMALL", + "value": "content.size:[0 TO 1048576>" + }, { "name": "SEARCH.CATEGORIES.SIZE_OPTIONS.MEDIUM", "value": "content.size:[1048576 TO 52428800]" @@ -297,7 +297,10 @@ "name": "SEARCH.CATEGORIES.SIZE_OPTIONS.LARGE", "value": "content.size:<52428800 TO 524288000]" }, - { "name": "SEARCH.CATEGORIES.SIZE_OPTIONS.HUGE", "value": "content.size:<524288000 TO MAX]" } + { + "name": "SEARCH.CATEGORIES.SIZE_OPTIONS.HUGE", + "value": "content.size:<524288000 TO MAX]" + } ] } } diff --git a/src/app/components/info-drawer/metadata-tab/metadata-tab.component.spec.ts b/src/app/components/info-drawer/metadata-tab/metadata-tab.component.spec.ts index e77ebc585..66fb62873 100644 --- a/src/app/components/info-drawer/metadata-tab/metadata-tab.component.spec.ts +++ b/src/app/components/info-drawer/metadata-tab/metadata-tab.component.spec.ts @@ -27,7 +27,7 @@ import { MetadataTabComponent } from './metadata-tab.component'; import { Node } from '@alfresco/js-api'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { AppTestingModule } from '../../../testing/app-testing.module'; -import { setupTestBed } from '@alfresco/adf-core'; +import { AppConfigService, setupTestBed } from '@alfresco/adf-core'; import { ContentMetadataModule } from '@alfresco/adf-content-services'; import { Store } from '@ngrx/store'; import { @@ -35,28 +35,60 @@ import { AppState } from '@alfresco/aca-shared/store'; import { By } from '@angular/platform-browser'; +import { AppExtensionService } from '../../../extensions/extension.service'; describe('MetadataTabComponent', () => { let fixture: ComponentFixture; let component: MetadataTabComponent; let store: Store; + let appConfig: AppConfigService; + let extensions: AppExtensionService; setupTestBed({ imports: [AppTestingModule, ContentMetadataModule], declarations: [MetadataTabComponent] }); - beforeEach(() => { - fixture = TestBed.createComponent(MetadataTabComponent); - store = TestBed.get(Store); - component = fixture.componentInstance; - }); - afterEach(() => { fixture.destroy(); }); + describe('content-metadata configuration', () => { + beforeEach(() => { + appConfig = TestBed.get(AppConfigService); + extensions = TestBed.get(AppExtensionService); + }); + + it('should remain unchanged when metadata extension is missing', () => { + appConfig.config['content-metadata'] = 'initial config'; + extensions.contentMetadata = null; + + fixture = TestBed.createComponent(MetadataTabComponent); + + expect(appConfig.config['content-metadata']).toEqual('initial config'); + }); + + it('should be overwritten by the one from extension', () => { + appConfig.config['content-metadata'] = 'initial config'; + extensions.contentMetadata = [{ 'new config': true }]; + + fixture = TestBed.createComponent(MetadataTabComponent); + + expect(appConfig.config['content-metadata']).not.toEqual( + 'initial config' + ); + expect(appConfig.config['content-metadata']).toEqual( + extensions.contentMetadata + ); + }); + }); + describe('canUpdateNode()', () => { + beforeEach(() => { + fixture = TestBed.createComponent(MetadataTabComponent); + component = fixture.componentInstance; + }); + it('should return true if node is not locked and has update permission', () => { const node = { isLocked: false, @@ -102,6 +134,12 @@ describe('MetadataTabComponent', () => { }); describe('displayAspect', () => { + beforeEach(() => { + fixture = TestBed.createComponent(MetadataTabComponent); + store = TestBed.get(Store); + component = fixture.componentInstance; + }); + it('show pass empty when store is in initial state', () => { const initialState = fixture.debugElement.query( By.css('adf-content-metadata-card') diff --git a/src/app/components/info-drawer/metadata-tab/metadata-tab.component.ts b/src/app/components/info-drawer/metadata-tab/metadata-tab.component.ts index f394d25a4..37457e238 100644 --- a/src/app/components/info-drawer/metadata-tab/metadata-tab.component.ts +++ b/src/app/components/info-drawer/metadata-tab/metadata-tab.component.ts @@ -59,15 +59,10 @@ export class MetadataTabComponent { private appConfig: AppConfigService, private store: Store ) { - try { + if (this.extensions.contentMetadata) { this.appConfig.config[ 'content-metadata' ] = this.extensions.contentMetadata; - } catch (error) { - console.error( - error, - '- could not change content-metadata from app.config' - ); } this.displayAspect$ = this.store.select(infoDrawerMetadataAspect); } diff --git a/src/app/extensions/extension.service.ts b/src/app/extensions/extension.service.ts index 060f39c52..6ff144fe7 100644 --- a/src/app/extensions/extension.service.ts +++ b/src/app/extensions/extension.service.ts @@ -307,6 +307,10 @@ export class AppExtensionService implements RuleContext { config, 'features.content-metadata-presets' ); + if (!elements.length) { + return null; + } + let presets = {}; presets = this.filterDisabled(mergeObjects(presets, ...elements)); diff --git a/src/assets/app.extensions.json b/src/assets/app.extensions.json index b6b0f7109..719f095c1 100644 --- a/src/assets/app.extensions.json +++ b/src/assets/app.extensions.json @@ -1029,6 +1029,20 @@ { "id": "app.content.metadata.custom", "custom": [ + { + "id": "app.content.metadata.customSetting", + "includeAll": true, + "exclude": [ + "rn:renditioned", + "cm:versionable", + "cm:auditable", + "cm:thumbnailModification", + "cm:content", + "qshare:shared", + + "exif:exif" + ] + }, { "id": "app.content.metadata.customGroup", "title": "APP.CONTENT_METADATA.EXIF_GROUP_TITLE", @@ -1036,20 +1050,7 @@ { "id": "app.content.metadata.exifAspect", "aspect": "exif:exif", - "properties": [ - "exif:pixelXDimension", - "exif:pixelYDimension", - "exif:dateTimeOriginal", - "exif:exposureTime", - "exif:fNumber", - "exif:flash", - "exif:focalLength", - "exif:isoSpeedRatings", - "exif:orientation", - "exif:manufacturer", - "exif:model", - "exif:software" - ] + "properties": "*" } ] }