diff --git a/app/src/app.config.json b/app/src/app.config.json index 008b252875..84af6795fa 100644 --- a/app/src/app.config.json +++ b/app/src/app.config.json @@ -64,811 +64,6 @@ "preserveState": true, "expandedSidenav": true }, - "mimeTypes": [ - { - "value": "video/3gpp", - "label": "3G Video" - }, - { - "value": "video/3gpp2", - "label": "3G2 Video" - }, - { - "value": "application/vnd.alfresco.ai.features.v1+json", - "label": "AI-Features" - }, - { - "value": "application/vnd.alfresco.ai.labels.v1+json", - "label": "AI-Labels" - }, - { - "value": "application/vnd.alfresco.ai.pii.entities.v1+json", - "label": "AI-PII-Entities" - }, - { - "value": "application/vnd.alfresco.ai.speech-to-text.v1+json", - "label": "AI-SpeechToText" - }, - { - "value": "application/vnd.alfresco.ai.textract.v1+json", - "label": "AI-Textract" - }, - { - "value": "audio/x-aiff", - "label": "AIFF Audio" - }, - { - "value": "application/vnd.adobe.air-application-installer-package+zip", - "label": "Adobe AIR" - }, - { - "value": "application/vnd.adobe.xdp+xml", - "label": "Adobe Acrobat XML Data Package" - }, - { - "value": "application/vnd.adobe.aftereffects.project", - "label": "Adobe AfterEffects Project" - }, - { - "value": "application/vnd.adobe.aftereffects.template", - "label": "Adobe AfterEffects Template" - }, - - { - "value": "image/x-raw-adobe", - "label": "Adobe Digital Negative Image" - }, - - { - "value": "application/x-zip", - "label": "Adobe Flex Project File" - }, - - { - "value": "application/framemaker", - "label": "Adobe FrameMaker" - }, - - { - "value": "application/illustrator", - "label": "Adobe Illustrator File" - }, - - { - "value": "application/x-indesign", - "label": "Adobe InDesign Document" - }, - - { - "value": "application/pdf", - "label": "Adobe PDF Document" - }, - - { - "value": "application/pagemaker", - "label": "Adobe PageMaker" - }, - - { - "value": "image/vnd.adobe.photoshop", - "label": "Adobe Photoshop" - }, - - { - "value": "image/vnd.adobe.premiere", - "label": "Adobe Premiere" - }, - - { - "value": "audio/vnd.adobe.soundbooth", - "label": "Adobe SoundBooth" - }, - - { - "value": "application/acp", - "label": "Alfresco Content Package" - }, - - { - "value": "application/vnd.android.package-archive", - "label": "Android Package" - }, - - { - "value": "image/x-portable-anymap", - "label": "Anymap Image" - }, - - { - "value": "image/icns", - "label": "Apple Icon" - }, - - { - "value": "application/vnd.apple.keynote", - "label": "Apple iWork Keynote" - }, - - { - "value": "application/vnd.apple.numbers", - "label": "Apple iWork Numbers" - }, - - { - "value": "application/vnd.apple.pages", - "label": "Apple iWork Pages" - }, - - { - "value": "image/vnd.dwg", - "label": "AutoCAD Drawing" - }, - - { - "value": "image/x-dwt", - "label": "AutoCAD Template" - }, - - { - "value": "audio/basic", - "label": "Basic Audio" - }, - - { - "value": "application/x-dosexec", - "label": "Binary File" - }, - - { - "value": "application/octet-stream", - "label": "Binary File (Octet Stream)" - }, - - { - "value": "image/bmp", - "label": "Bitmap Image" - }, - - { - "value": "image/cgm", - "label": "CGM Image" - }, - - { - "value": "image/x-raw-canon", - "label": "Canon RAW Image" - }, - - { - "value": "text/csv", - "label": "Comma Separated Values (CSV)" - }, - - { - "value": "application/dita+xml", - "label": "DITA" - }, - - { - "value": "message/rfc822", - "label": "EMail" - }, - - { - "value": "application/eps", - "label": "EPS Type PostScript" - }, - - { - "value": "audio/x-flac", - "label": "FLAC Audio" - }, - - { - "value": "application/x-fla", - "label": "Flash Source" - }, - - { - "value": "video/x-flv", - "label": "Flash Video" - }, - - { - "value": "image/x-raw-fuji", - "label": "Fuji RAW Image" - }, - - { - "value": "image/gif", - "label": "GIF Image" - }, - - { - "value": "application/x-gzip", - "label": "GZIP" - }, - - { - "value": "application/x-gtar", - "label": "GZIP Tarball" - }, - - { - "value": "image/x-portable-graymap", - "label": "Greymap Image" - }, - - { - "value": "text/html", - "label": "HTML" - }, - - { - "value": "application/vnd.oasis.opendocument.text-web", - "label": "HTML Document Template" - }, - - { - "value": "image/x-raw-hasselblad", - "label": "Hasselblad RAW Image" - }, - - { - "value": "image/ief", - "label": "IEF Image" - }, - - { - "value": "image/jp2", - "label": "JPEG 2000 Image" - }, - - { - "value": "image/jpeg", - "label": "JPEG Image" - }, - - { - "value": "application/json", - "label": "JSON" - }, - - { - "value": "application/java-archive", - "label": "Java Archive" - }, - - { - "value": "application/java", - "label": "Java Class" - }, - - { - "value": "text/x-jsp", - "label": "Java Server Page" - }, - - { - "value": "text/x-java-source", - "label": "Java Source File" - }, - - { - "value": "application/x-javascript", - "label": "JavaScript" - }, - - { - "value": "image/x-raw-kodak", - "label": "Kodak RAW Image" - }, - - { - "value": "application/x-latex", - "label": "LaTeX" - }, - - { - "value": "image/x-raw-leica", - "label": "Leica RAW Image" - }, - - { - "value": "audio/mpeg", - "label": "MPEG Audio" - }, - - { - "value": "video/mp2t", - "label": "MPEG Transport Stream" - }, - - { - "value": "video/mpeg", - "label": "MPEG Video" - }, - { - "value": "video/mpeg2", - "label": "MPEG2 Video" - }, - { - "value": "audio/mp4", - "label": "MPEG4 Audio" - }, - { - "value": "video/mp4", - "label": "MPEG4 Video" - }, - { - "value": "video/x-m4v", - "label": "MPEG4 Video (m4v)" - }, - { - "value": "video/x-ms-asf", - "label": "MS ASF Streaming Video" - }, - { - "value": "video/x-msvideo", - "label": "MS Video" - }, - { - "value": "audio/x-ms-wma", - "label": "MS WMA Streaming Audio" - }, - { - "value": "video/x-ms-wmv", - "label": "MS WMV Streaming Video" - }, - { - "value": "application/x-troff-man", - "label": "Man Page" - }, - { - "value": "text/x-markdown", - "label": "Markdown" - }, - { - "value": "text/mediawiki", - "label": "MediaWiki Markup" - }, - { - "value": "application/vnd.ms-excel", - "label": "Microsoft Excel" - }, - { - "value": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", - "label": "Microsoft Excel 2007" - }, - { - "value": "application/vnd.ms-excel.addin.macroenabled.12", - "label": "Microsoft Excel 2007 add-in" - }, - { - "value": "application/vnd.ms-excel.sheet.binary.macroenabled.12", - "label": "Microsoft Excel 2007 binary workbook" - }, - { - "value": "application/vnd.ms-excel.sheet.macroenabled.12", - "label": "Microsoft Excel 2007 macro-enabled workbook" - }, - { - "value": "application/vnd.ms-excel.template.macroenabled.12", - "label": "Microsoft Excel 2007 macro-enabled workbook template" - }, - { - "value": "application/vnd.openxmlformats-officedocument.spreadsheetml.template", - "label": "Microsoft Excel template 2007" - }, - { - "value": "application/vnd.ms-outlook", - "label": "Microsoft Outlook Message" - }, - { - "value": "application/vnd.ms-powerpoint", - "label": "Microsoft PowerPoint" - }, - { - "value": "application/vnd.openxmlformats-officedocument.presentationml.presentation", - "label": "Microsoft PowerPoint 2007" - }, - { - "value": "application/vnd.ms-powerpoint.addin.macroenabled.12", - "label": "Microsoft PowerPoint 2007 add-in" - }, - { - "value": "application/vnd.ms-powerpoint.presentation.macroenabled.12", - "label": "Microsoft PowerPoint 2007 macro-enabled presentation" - }, - { - "value": "application/vnd.ms-powerpoint.template.macroenabled.12", - "label": "Microsoft PowerPoint 2007 macro-enabled presentation template" - }, - { - "value": "application/vnd.ms-powerpoint.slide.macroenabled.12", - "label": "Microsoft PowerPoint 2007 macro-enabled slide" - }, - { - "value": "application/vnd.ms-powerpoint.slideshow.macroenabled.12", - "label": "Microsoft PowerPoint 2007 macro-enabled slide show" - }, - { - "value": "application/vnd.openxmlformats-officedocument.presentationml.slide", - "label": "Microsoft PowerPoint 2007 slide" - }, - { - "value": "application/vnd.openxmlformats-officedocument.presentationml.slideshow", - "label": "Microsoft PowerPoint 2007 slide show" - }, - { - "value": "application/vnd.openxmlformats-officedocument.presentationml.template", - "label": "Microsoft PowerPoint 2007 template" - }, - { - "value": "application/vnd.ms-project", - "label": "Microsoft Project" - }, - { - "value": "application/vnd.visio", - "label": "Microsoft Visio" - }, - { - "value": "application/vnd.visio2013", - "label": "Microsoft Visio 2013" - }, - { - "value": "application/vnd.ms-visio.drawing.macroenabled.main+xml", - "label": "Microsoft Visio macro-enabled drawing" - }, - { - "value": "application/vnd.ms-visio.stencil.macroenabled.main+xml", - "label": "Microsoft Visio macro-enabled stencil" - }, - { - "value": "application/vnd.ms-visio.template.macroenabled.main+xml", - "label": "Microsoft Visio macro-enabled template" - }, - { - "value": "application/vnd.ms-visio.stencil.main+xml", - "label": "Microsoft Visio stencil" - }, - { - "value": "application/vnd.ms-visio.template.main+xml", - "label": "Microsoft Visio template" - }, - { - "value": "application/msword", - "label": "Microsoft Word" - }, - { - "value": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", - "label": "Microsoft Word 2007" - }, - { - "value": "application/vnd.ms-word.document.macroenabled.12", - "label": "Microsoft Word 2007 macro-enabled document" - }, - { - "value": "application/vnd.ms-word.template.macroenabled.12", - "label": "Microsoft Word 2007 macro-enabled document template" - }, - { - "value": "application/vnd.openxmlformats-officedocument.wordprocessingml.template", - "label": "Microsoft Word 2007 template" - }, - { - "value": "image/x-raw-minolta", - "label": "Minolta RAW Image" - }, - { - "value": "image/x-raw-nikon", - "label": "Nikon RAW Image" - }, - { - "value": "audio/ogg", - "label": "Ogg Audio" - }, - { - "value": "application/ogg", - "label": "Ogg Multiplex" - }, - { - "value": "video/ogg", - "label": "Ogg Video" - }, - { - "value": "audio/vorbis", - "label": "Ogg Vorbis Audio" - }, - { - "value": "image/x-raw-olympus", - "label": "Olympus RAW Image" - }, - { - "value": "application/vnd.oasis.opendocument.chart", - "label": "OpenDocument Chart" - }, - { - "value": "application/vnd.oasis.opendocument.database", - "label": "OpenDocument Database" - }, - { - "value": "application/vnd.oasis.opendocument.graphics", - "label": "OpenDocument Drawing" - }, - { - "value": "application/vnd.oasis.opendocument.graphics-template", - "label": "OpenDocument Drawing Template" - }, - { - "value": "application/vnd.oasis.opendocument.formula", - "label": "OpenDocument Formula" - }, - { - "value": "application/vnd.oasis.opendocument.image", - "label": "OpenDocument Image" - }, - { - "value": "application/vnd.oasis.opendocument.text-master", - "label": "OpenDocument Master Document" - }, - { - "value": "application/vnd.oasis.opendocument.presentation", - "label": "OpenDocument Presentation" - }, - { - "value": "application/vnd.oasis.opendocument.presentation-template", - "label": "OpenDocument Presentation Template" - }, - { - "value": "application/vnd.oasis.opendocument.spreadsheet", - "label": "OpenDocument Spreadsheet" - }, - { - "value": "application/vnd.oasis.opendocument.spreadsheet-template", - "label": "OpenDocument Spreadsheet Template" - }, - { - "value": "application/vnd.oasis.opendocument.text", - "label": "OpenDocument Text (OpenOffice 2.0)" - }, - { - "value": "application/vnd.oasis.opendocument.text-template", - "label": "OpenDocument Text Template" - }, - { - "value": "application/vnd.sun.xml.calc", - "label": "OpenOffice 1.0/StarOffice6.0 Calc 6.0" - }, - { - "value": "application/vnd.sun.xml.calc.template", - "label": "OpenOffice 1.0/StarOffice6.0 Calc 6.0 Template" - }, - { - "value": "application/vnd.sun.xml.draw", - "label": "OpenOffice 1.0/StarOffice6.0 Draw 6.0" - }, - { - "value": "application/vnd.sun.xml.impress", - "label": "OpenOffice 1.0/StarOffice6.0 Impress 6.0" - }, - { - "value": "application/vnd.sun.xml.impress.template", - "label": "OpenOffice 1.0/StarOffice6.0 Impress 6.0 Template" - }, - { - "value": "application/vnd.sun.xml.writer", - "label": "OpenOffice 1.0/StarOffice6.0 Writer 6.0" - }, - { - "value": "application/vnd.sun.xml.writer.template", - "label": "OpenOffice 1.0/StarOffice6.0 Writer 6.0 Template" - }, - { - "value": "image/png", - "label": "PNG Image" - }, - { - "value": "image/x-raw-panasonic", - "label": "Panasonic RAW Image" - }, - { - "value": "image/x-raw-pentax", - "label": "Pentax RAW Image" - }, - { - "value": "image/x-portable-pixmap", - "label": "Pixmap Image" - }, - { - "value": "text/plain", - "label": "Plain Text" - }, - { - "value": "image/x-portable-bitmap", - "label": "Portable Bitmap" - }, - { - "value": "application/postscript", - "label": "PostScript" - }, - { - "value": "application/remote-printing", - "label": "Printer Text File" - }, - { - "value": "video/quicktime", - "label": "Quicktime Video" - }, - { - "value": "video/x-rad-screenplay", - "label": "RAD Screen Display" - }, - { - "value": "application/x-rar-compressed", - "label": "RAR Archive" - }, - { - "value": "image/x-raw-red", - "label": "RED RAW Image" - }, - { - "value": "image/x-rgb", - "label": "RGB Image" - }, - { - "value": "application/rss+xml", - "label": "RSS" - }, - { - "value": "image/x-cmu-raster", - "label": "Raster Image" - }, - { - "value": "text/richtext", - "label": "Rich Text" - }, - { - "value": "application/rtf", - "label": "Rich Text Format" - }, - { - "value": "video/x-sgi-movie", - "label": "SGI Video" - }, - { - "value": "text/sgml", - "label": "SGML (Human Readable)" - }, - { - "value": "application/sgml", - "label": "SGML (Machine Readable)" - }, - { - "value": "image/svg+xml", - "label": "Scalable Vector Graphics Image" - }, - { - "value": "application/x-sh", - "label": "Shell Script" - }, - { - "value": "application/x-shockwave-flash", - "label": "Shockwave Flash" - }, - { - "value": "image/x-raw-sigma", - "label": "Sigma RAW Image" - }, - { - "value": "image/x-raw-sony", - "label": "Sony RAW Image" - }, - { - "value": "application/vnd.stardivision.chart", - "label": "StarChart 5.x" - }, - { - "value": "application/vnd.stardivision.calc", - "label": "StarCalc 5.x" - }, - { - "value": "application/vnd.stardivision.draw", - "label": "StarDraw 5.x" - }, - { - "value": "application/vnd.stardivision.impress", - "label": "StarImpress 5.x" - }, - { - "value": "application/vnd.stardivision.impress-packed", - "label": "StarImpress Packed 5.x" - }, - { - "value": "application/vnd.stardivision.math", - "label": "StarMath 5.x" - }, - { - "value": "application/vnd.stardivision.writer", - "label": "StarWriter 5.x" - }, - { - "value": "application/vnd.stardivision.writer-global", - "label": "StarWriter 5.x global" - }, - { - "value": "text/css", - "label": "Style Sheet" - }, - { - "value": "image/tiff", - "label": "TIFF Image" - }, - { - "value": "text/tab-separated-values", - "label": "Tab Separated Values" - }, - { - "value": "application/x-tar", - "label": "Tarball" - }, - { - "value": "application/x-tex", - "label": "Tex" - }, - { - "value": "application/x-texinfo", - "label": "Tex Info" - }, - { - "value": "x-world/x-vrml", - "label": "VRML" - }, - { - "value": "audio/x-wav", - "label": "WAV Audio" - }, - { - "value": "video/webm", - "label": "WebM Video" - }, - { - "value": "application/wordperfect", - "label": "WordPerfect" - }, - { - "value": "image/x-xbitmap", - "label": "XBitmap Image" - }, - { - "value": "application/xhtml+xml", - "label": "XHTML" - }, - { - "value": "text/xml", - "label": "XML" - }, - { - "value": "image/x-xpixmap", - "label": "XPixmap Image" - }, - { - "value": "image/x-xwindowdump", - "label": "XWindow Dump" - }, - { - "value": "application/x-compress", - "label": "Z Compress" - }, - { - "value": "application/zip", - "label": "ZIP" - }, - { - "value": "text/calendar", - "label": "iCalendar File" - } - ], "content-metadata": { "presets": { "custom": [ diff --git a/karma.conf.js b/karma.conf.js index e2c5b9582a..ee90a2d143 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -18,25 +18,21 @@ module.exports = () => { ], files: [ { - pattern: - './node_modules/@alfresco/adf-core/bundles/assets/adf-core/i18n/en.json', + pattern: './node_modules/@alfresco/adf-core/bundles/assets/adf-core/i18n/en.json', watched: false, served: true, included: false }, { - pattern: - './node_modules/@alfresco/adf-content-services/bundles/assets/adf-content-services/i18n/en.json', + pattern: './node_modules/@alfresco/adf-content-services/bundles/assets/adf-content-services/i18n/en.json', watched: false, served: true, included: false } ], proxies: { - '/assets/adf-core/i18n/en-GB.json': - '/base/node_modules/@alfresco/adf-core/bundles/assets/adf-core/i18n/en.json', - '/assets/adf-core/i18n/en.json': - '/base/node_modules/@alfresco/adf-core/bundles/assets/adf-core/i18n/en.json', + '/assets/adf-core/i18n/en-GB.json': '/base/node_modules/@alfresco/adf-core/bundles/assets/adf-core/i18n/en.json', + '/assets/adf-core/i18n/en.json': '/base/node_modules/@alfresco/adf-core/bundles/assets/adf-core/i18n/en.json', '/assets/adf-content-services/i18n/en.json': '/base/node_modules/@alfresco/adf-content-services/bundles/assets/adf-content-services/i18n/en.json', '/assets/adf-content-services/i18n/en-GB.json': @@ -49,10 +45,10 @@ module.exports = () => { // for example, you can disable the random execution with `random: false` // or set a specific seed with `seed: 4321` }, - clearContext: false, // leave Jasmine Spec Runner output visible in browser + clearContext: false // leave Jasmine Spec Runner output visible in browser }, jasmineHtmlReporter: { - suppressAll: true, // removes the duplicated traces + suppressAll: true // removes the duplicated traces }, coverageReporter: { @@ -63,7 +59,7 @@ module.exports = () => { global: { statements: 75, branches: 67, - functions: 73, + functions: 72, lines: 74 } } @@ -78,12 +74,7 @@ module.exports = () => { customLaunchers: { ChromeHeadless: { base: 'Chrome', - flags: [ - '--no-sandbox', - '--headless', - '--disable-gpu', - '--remote-debugging-port=9222' - ] + flags: ['--no-sandbox', '--headless', '--disable-gpu', '--remote-debugging-port=9222'] } }, singleRun: true, diff --git a/projects/aca-content/about/src/about.component.ts b/projects/aca-content/about/src/about.component.ts index 7ae344ecc2..9dfe665a9c 100644 --- a/projects/aca-content/about/src/about.component.ts +++ b/projects/aca-content/about/src/about.component.ts @@ -24,11 +24,11 @@ import { Component, inject, OnInit, ViewEncapsulation } from '@angular/core'; import { DEV_MODE_TOKEN } from './dev-mode.tokens'; -import { AboutModule, AppConfigService, AuthenticationService, RepositoryInfo } from '@alfresco/adf-core'; +import { AboutModule, AuthenticationService, RepositoryInfo } from '@alfresco/adf-core'; import { DiscoveryApiService } from '@alfresco/adf-content-services'; import { PACKAGE_JSON } from './package-json.token'; import { TranslateModule } from '@ngx-translate/core'; -import { AppExtensionService, PageLayoutComponent } from '@alfresco/aca-shared'; +import { AppExtensionService, AppSettingsService, PageLayoutComponent } from '@alfresco/aca-shared'; import { RouterModule } from '@angular/router'; import { MatIconModule } from '@angular/material/icon'; import { CommonModule } from '@angular/common'; @@ -45,14 +45,14 @@ import { MatButtonModule } from '@angular/material/button'; export class AboutComponent implements OnInit { private authService = inject(AuthenticationService); private appExtensions = inject(AppExtensionService); + private appSettings = inject(AppSettingsService); private discovery = inject(DiscoveryApiService); - private appConfigService = inject(AppConfigService); public packageJson? = inject(PACKAGE_JSON, { optional: true }); public dev = inject(DEV_MODE_TOKEN); extensions$ = this.appExtensions.references$; repository: RepositoryInfo = null; - landingPage = this.appConfigService.get('landingPage', '/personal-files'); + landingPage = this.appSettings.landingPage; ngOnInit(): void { if (this.authService.isEcmLoggedIn()) { diff --git a/projects/aca-content/folder-rules/src/rule-details/conditions/rule-simple-condition.ui-component.spec.ts b/projects/aca-content/folder-rules/src/rule-details/conditions/rule-simple-condition.ui-component.spec.ts index 6e82b6cae1..bccce97e4d 100644 --- a/projects/aca-content/folder-rules/src/rule-details/conditions/rule-simple-condition.ui-component.spec.ts +++ b/projects/aca-content/folder-rules/src/rule-details/conditions/rule-simple-condition.ui-component.spec.ts @@ -28,7 +28,6 @@ import { CoreTestingModule } from '@alfresco/adf-core'; import { By } from '@angular/platform-browser'; import { DebugElement } from '@angular/core'; import { tagMock, mimeTypeMock, simpleConditionUnknownFieldMock, categoriesListMock } from '../../mock/conditions.mock'; -import { MimeType } from './rule-mime-types'; import { CategoryService, TagService } from '@alfresco/adf-content-services'; import { of } from 'rxjs'; import { RuleSimpleCondition } from '../../model/rule-simple-condition.model'; @@ -38,6 +37,7 @@ import { HarnessLoader } from '@angular/cdk/testing'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { MatSelectHarness } from '@angular/material/select/testing'; import { MatAutocompleteHarness } from '@angular/material/autocomplete/testing'; +import { AlfrescoMimeType } from '@alfresco/aca-shared'; describe('RuleSimpleConditionUiComponent', () => { let fixture: ComponentFixture; @@ -100,7 +100,7 @@ describe('RuleSimpleConditionUiComponent', () => { }); it('should hide the comparator select box if the type of the field is mimeType', async () => { - fixture.componentInstance.mimeTypes = [{ value: '', label: '' } as MimeType]; + fixture.componentInstance.mimeTypes = [{ value: '', label: '' } as AlfrescoMimeType]; fixture.detectChanges(); const comparatorFormField = getByDataAutomationId('comparator-form-field').nativeElement; @@ -152,7 +152,7 @@ describe('RuleSimpleConditionUiComponent', () => { }); it('should provide select option when mimeType is selected and value filled', () => { - const mockMimeTypes: MimeType[] = [ + const mockMimeTypes: AlfrescoMimeType[] = [ { value: 'video/3gpp', label: '3G Video' diff --git a/projects/aca-content/folder-rules/src/rule-details/conditions/rule-simple-condition.ui-component.ts b/projects/aca-content/folder-rules/src/rule-details/conditions/rule-simple-condition.ui-component.ts index 77736b86ba..c72c391cae 100644 --- a/projects/aca-content/folder-rules/src/rule-details/conditions/rule-simple-condition.ui-component.ts +++ b/projects/aca-content/folder-rules/src/rule-details/conditions/rule-simple-condition.ui-component.ts @@ -22,13 +22,11 @@ * from Hyland Software. If not, see . */ -import { Component, forwardRef, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core'; +import { Component, forwardRef, inject, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core'; import { AbstractControl, ControlValueAccessor, FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms'; import { RuleSimpleCondition } from '../../model/rule-simple-condition.model'; import { comparatorHiddenForConditionFieldType, RuleConditionField, ruleConditionFields } from './rule-condition-fields'; import { RuleConditionComparator, ruleConditionComparators } from './rule-condition-comparators'; -import { AppConfigService } from '@alfresco/adf-core'; -import { MimeType } from './rule-mime-types'; import { AsyncPipe, CommonModule } from '@angular/common'; import { TranslateModule } from '@ngx-translate/core'; import { MatFormFieldModule } from '@angular/material/form-field'; @@ -41,6 +39,7 @@ import { Subject, Subscription } from 'rxjs'; import { MatOptionModule } from '@angular/material/core'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { CategoryEntry } from '@alfresco/js-api'; +import { AlfrescoMimeType, AppSettingsService } from '@alfresco/aca-shared'; interface AutoCompleteOption { displayLabel: string; @@ -77,21 +76,24 @@ const AUTOCOMPLETE_OPTIONS_DEBOUNCE_TIME = 500; ] }) export class RuleSimpleConditionUiComponent implements OnInit, ControlValueAccessor, OnDestroy { + private appSettings = inject(AppSettingsService); + private categoryService = inject(CategoryService); + private tagService = inject(TagService); + form = new FormGroup({ field: new FormControl('cm:name'), comparator: new FormControl('equals'), parameter: new FormControl() }); - mimeTypes: MimeType[] = []; - + mimeTypes: AlfrescoMimeType[] = []; autoCompleteOptions: AutoCompleteOption[] = []; - showLoadingSpinner: boolean; private onDestroy$ = new Subject(); private autoCompleteOptionsSubscription: Subscription; private _readOnly = false; + @Input() get readOnly(): boolean { return this._readOnly; @@ -107,9 +109,10 @@ export class RuleSimpleConditionUiComponent implements OnInit, ControlValueAcces (condition) => !((this.disabledTags && condition.name === 'tag') || (this.disabledCategories && condition.name === 'category')) ); - constructor(config: AppConfigService, private categoryService: CategoryService, private tagService: TagService) { - this.mimeTypes = config.get>('mimeTypes'); + constructor() { + this.mimeTypes = this.appSettings.mimeTypes; } + get isSelectedFieldKnown(): boolean { const selectedFieldName = this.form.get('field').value; return this.fields.findIndex((field: RuleConditionField) => selectedFieldName === field.name) > -1; diff --git a/projects/aca-content/ms-office/src/aos-extension.service.spec.ts b/projects/aca-content/ms-office/src/aos-extension.service.spec.ts index f6a2d63083..2fff3af322 100644 --- a/projects/aca-content/ms-office/src/aos-extension.service.spec.ts +++ b/projects/aca-content/ms-office/src/aos-extension.service.spec.ts @@ -24,7 +24,7 @@ import { TestBed } from '@angular/core/testing'; import { AosEditOnlineService } from './aos-extension.service'; -import { AppConfigService, AuthenticationService, AuthModule, LogService, NotificationService } from '@alfresco/adf-core'; +import { AppConfigService, AuthenticationService, AuthModule, NotificationService } from '@alfresco/adf-core'; import { LibTestingModule } from '@alfresco/aca-shared'; import { MatSnackBarModule } from '@angular/material/snack-bar'; @@ -37,8 +37,7 @@ describe('AosEditOnlineService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [LibTestingModule, MatSnackBarModule, AuthModule.forRoot()], - providers: [{ provide: LogService, useValue: { error() {} } }] + imports: [LibTestingModule, MatSnackBarModule, AuthModule.forRoot()] }); aosEditOnlineService = TestBed.inject(AosEditOnlineService); diff --git a/projects/aca-content/ms-office/src/aos-extension.service.ts b/projects/aca-content/ms-office/src/aos-extension.service.ts index 6ea8632503..fd296e67ae 100644 --- a/projects/aca-content/ms-office/src/aos-extension.service.ts +++ b/projects/aca-content/ms-office/src/aos-extension.service.ts @@ -23,10 +23,11 @@ */ /* cspell:disable */ -import { AppConfigService, AuthenticationService, LogService, NotificationService } from '@alfresco/adf-core'; +import { AuthenticationService, NotificationService } from '@alfresco/adf-core'; import { Injectable } from '@angular/core'; import { Node } from '@alfresco/js-api'; import { getFileExtension, supportedExtensions } from '@alfresco/aca-shared/rules'; +import { AppSettingsService } from '@alfresco/aca-shared'; export interface IAosEditOnlineService { onActionEditOnlineAos(node: Node): void; @@ -38,9 +39,8 @@ export interface IAosEditOnlineService { export class AosEditOnlineService implements IAosEditOnlineService { constructor( private authenticationService: AuthenticationService, - private appConfigService: AppConfigService, - private notificationService: NotificationService, - private logService: LogService + private appSettings: AppSettingsService, + private notificationService: NotificationService ) {} onActionEditOnlineAos(node: Node): void { @@ -77,7 +77,6 @@ export class AosEditOnlineService implements IAosEditOnlineService { } private onAlreadyLockedNotification(nodeId: string, lockOwner: string) { - this.logService.error('Document already locked by another user'); this.notificationService.showError(`AOS.ERRORS.ALREADY_LOCKED`, null, { nodeId, lockOwner @@ -89,7 +88,7 @@ export class AosEditOnlineService implements IAosEditOnlineService { } private triggerEditOnlineAos(node: Node): void { - const aosHost = this.appConfigService.get('aosHost'); + const aosHost = this.appSettings.aosHost; let url: string; const pathElements = (node.path?.elements || []).map((segment) => segment.name); @@ -110,13 +109,11 @@ export class AosEditOnlineService implements IAosEditOnlineService { const protocolHandler = this.getProtocolForFileExtension(fileExtension); if (protocolHandler === undefined) { - this.logService.error('Protocol handler missing'); this.notificationService.showError(`AOS.ERRORS.MISSING_PROTOCOL_HANDLER`, null, { nodeName: node.name }); return; } if (!this.isWindows() && !this.isMacOs()) { - this.logService.error('Unsupported platform'); this.notificationService.showError('AOS.ERRORS.UNSUPPORTED_PLATFORM'); } else { this.openByUrl(protocolHandler, url); diff --git a/projects/aca-content/src/lib/components/home/home.component.spec.ts b/projects/aca-content/src/lib/components/home/home.component.spec.ts index 7468063db5..ef8544ae69 100644 --- a/projects/aca-content/src/lib/components/home/home.component.spec.ts +++ b/projects/aca-content/src/lib/components/home/home.component.spec.ts @@ -23,28 +23,26 @@ */ import { HomeComponent } from './home.component'; -import { AppConfigService, AppConfigServiceMock } from '@alfresco/adf-core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { Router } from '@angular/router'; import { HttpClientModule } from '@angular/common/http'; import { RouterTestingModule } from '@angular/router/testing'; +import { AppSettingsService } from '@alfresco/aca-shared'; describe('HomeComponent', () => { - let appConfig: AppConfigService; + let appSettings: AppSettingsService; let fixture: ComponentFixture; let router: Router; beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientModule, RouterTestingModule, HomeComponent], - providers: [{ provide: AppConfigService, useClass: AppConfigServiceMock }] + imports: [HttpClientModule, RouterTestingModule, HomeComponent] }); + appSettings = TestBed.inject(AppSettingsService); + spyOnProperty(appSettings, 'landingPage', 'get').and.returnValue('/my-mock-landing-page'); + fixture = TestBed.createComponent(HomeComponent); router = TestBed.inject(Router); - appConfig = TestBed.inject(AppConfigService); - appConfig.config = Object.assign(appConfig.config, { - landingPage: '/my-mock-landing-page' - }); }); it('should navigate to the landing page from the app config', () => { @@ -53,12 +51,4 @@ describe('HomeComponent', () => { expect(navigateSpy).toHaveBeenCalledWith('/my-mock-landing-page'); }); - - it('should navigate to personal files by default when there is no landingPage defined', () => { - appConfig.config = {}; - const navigateSpy = spyOn(router, 'navigateByUrl'); - fixture.detectChanges(); - - expect(navigateSpy).toHaveBeenCalledWith('/personal-files'); - }); }); diff --git a/projects/aca-content/src/lib/components/home/home.component.ts b/projects/aca-content/src/lib/components/home/home.component.ts index e4bd0c0d06..32f186ae8c 100644 --- a/projects/aca-content/src/lib/components/home/home.component.ts +++ b/projects/aca-content/src/lib/components/home/home.component.ts @@ -22,9 +22,9 @@ * from Hyland Software. If not, see . */ -import { Component, OnInit, ViewEncapsulation } from '@angular/core'; +import { Component, inject, OnInit, ViewEncapsulation } from '@angular/core'; import { Router } from '@angular/router'; -import { AppConfigService } from '@alfresco/adf-core'; +import { AppSettingsService } from '@alfresco/aca-shared'; @Component({ standalone: true, @@ -32,12 +32,10 @@ import { AppConfigService } from '@alfresco/adf-core'; encapsulation: ViewEncapsulation.None }) export class HomeComponent implements OnInit { - readonly DEFAULT_LANDING_PAGE = '/personal-files'; - - constructor(private appConfig: AppConfigService, private router: Router) {} + private appSettings = inject(AppSettingsService); + private router = inject(Router); ngOnInit() { - const landingPage = this.appConfig.get('landingPage', this.DEFAULT_LANDING_PAGE); - this.router.navigateByUrl(landingPage); + this.router.navigateByUrl(this.appSettings.landingPage); } } diff --git a/projects/aca-content/src/lib/components/sidenav/components/sidenav-header.component.ts b/projects/aca-content/src/lib/components/sidenav/components/sidenav-header.component.ts index 13527b351e..bf180a6042 100644 --- a/projects/aca-content/src/lib/components/sidenav/components/sidenav-header.component.ts +++ b/projects/aca-content/src/lib/components/sidenav/components/sidenav-header.component.ts @@ -26,9 +26,8 @@ import { Component, EventEmitter, inject, OnDestroy, OnInit, Output, ViewEncapsu import { Store } from '@ngrx/store'; import { Subject } from 'rxjs'; import { AppStore, getAppName, getLogoPath } from '@alfresco/aca-shared/store'; -import { AppConfigService } from '@alfresco/adf-core'; import { ContentActionRef } from '@alfresco/adf-extensions'; -import { AppExtensionService, ToolbarComponent } from '@alfresco/aca-shared'; +import { AppExtensionService, AppSettingsService, ToolbarComponent } from '@alfresco/aca-shared'; import { takeUntil } from 'rxjs/operators'; import { CommonModule } from '@angular/common'; import { TranslateModule } from '@ngx-translate/core'; @@ -45,12 +44,12 @@ import { RouterModule } from '@angular/router'; export class SidenavHeaderComponent implements OnInit, OnDestroy { private onDestroy$ = new Subject(); private store = inject>(Store); - private appConfigService = inject(AppConfigService); + private appSettings = inject(AppSettingsService); private appExtensions = inject(AppExtensionService); appName$ = this.store.select(getAppName); logo$ = this.store.select(getLogoPath); - landingPage = this.appConfigService.get('landingPage', '/personal-files'); + landingPage = this.appSettings.landingPage; actions: Array = []; @Output() diff --git a/projects/aca-content/folder-rules/src/rule-details/conditions/rule-mime-types.ts b/projects/aca-shared/src/lib/constants/index.ts similarity index 94% rename from projects/aca-content/folder-rules/src/rule-details/conditions/rule-mime-types.ts rename to projects/aca-shared/src/lib/constants/index.ts index 2d3f6721b8..9e1e478aeb 100644 --- a/projects/aca-content/folder-rules/src/rule-details/conditions/rule-mime-types.ts +++ b/projects/aca-shared/src/lib/constants/index.ts @@ -22,7 +22,4 @@ * from Hyland Software. If not, see . */ -export interface MimeType { - label: string; - value: string; -} +export * from './mime-types'; diff --git a/projects/aca-shared/src/lib/constants/mime-types.ts b/projects/aca-shared/src/lib/constants/mime-types.ts new file mode 100644 index 0000000000..5ad34e3672 --- /dev/null +++ b/projects/aca-shared/src/lib/constants/mime-types.ts @@ -0,0 +1,220 @@ +/*! + * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Alfresco Example Content Application + * + * This file is part of the Alfresco Example Content Application. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * The Alfresco Example Content Application is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Alfresco Example Content Application is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * from Hyland Software. If not, see . + */ + +/* eslint-disable @cspell/spellchecker */ + +export interface AlfrescoMimeType { + label: string; + value: string; +} + +export const DefaultMimeTypes: AlfrescoMimeType[] = [ + { value: 'video/3gpp', label: '3G Video' }, + { value: 'video/3gpp2', label: '3G2 Video' }, + { value: 'application/vnd.alfresco.ai.features.v1+json', label: 'AI-Features' }, + { value: 'application/vnd.alfresco.ai.labels.v1+json', label: 'AI-Labels' }, + { value: 'application/vnd.alfresco.ai.pii.entities.v1+json', label: 'AI-PII-Entities' }, + { value: 'application/vnd.alfresco.ai.speech-to-text.v1+json', label: 'AI-SpeechToText' }, + { value: 'application/vnd.alfresco.ai.textract.v1+json', label: 'AI-Textract' }, + { value: 'audio/x-aiff', label: 'AIFF Audio' }, + { value: 'application/vnd.adobe.air-application-installer-package+zip', label: 'Adobe AIR' }, + { value: 'application/vnd.adobe.xdp+xml', label: 'Adobe Acrobat XML Data Package' }, + { value: 'application/vnd.adobe.aftereffects.project', label: 'Adobe AfterEffects Project' }, + { value: 'application/vnd.adobe.aftereffects.template', label: 'Adobe AfterEffects Template' }, + { value: 'image/x-raw-adobe', label: 'Adobe Digital Negative Image' }, + { value: 'application/x-zip', label: 'Adobe Flex Project File' }, + { value: 'application/framemaker', label: 'Adobe FrameMaker' }, + { value: 'application/illustrator', label: 'Adobe Illustrator File' }, + { value: 'application/x-indesign', label: 'Adobe InDesign Document' }, + { value: 'application/pdf', label: 'Adobe PDF Document' }, + { value: 'application/pagemaker', label: 'Adobe PageMaker' }, + { value: 'image/vnd.adobe.photoshop', label: 'Adobe Photoshop' }, + { value: 'image/vnd.adobe.premiere', label: 'Adobe Premiere' }, + { value: 'audio/vnd.adobe.soundbooth', label: 'Adobe SoundBooth' }, + { value: 'application/acp', label: 'Alfresco Content Package' }, + { value: 'application/vnd.android.package-archive', label: 'Android Package' }, + { value: 'image/x-portable-anymap', label: 'Anymap Image' }, + { value: 'image/icns', label: 'Apple Icon' }, + { value: 'application/vnd.apple.keynote', label: 'Apple iWork Keynote' }, + { value: 'application/vnd.apple.numbers', label: 'Apple iWork Numbers' }, + { value: 'application/vnd.apple.pages', label: 'Apple iWork Pages' }, + { value: 'image/vnd.dwg', label: 'AutoCAD Drawing' }, + { value: 'image/x-dwt', label: 'AutoCAD Template' }, + { value: 'audio/basic', label: 'Basic Audio' }, + { value: 'application/x-dosexec', label: 'Binary File' }, + { value: 'application/octet-stream', label: 'Binary File (Octet Stream)' }, + { value: 'image/bmp', label: 'Bitmap Image' }, + { value: 'image/cgm', label: 'CGM Image' }, + { value: 'image/x-raw-canon', label: 'Canon RAW Image' }, + { value: 'text/csv', label: 'Comma Separated Values (CSV)' }, + { value: 'application/dita+xml', label: 'DITA' }, + { value: 'message/rfc822', label: 'EMail' }, + { value: 'application/eps', label: 'EPS Type PostScript' }, + { value: 'audio/x-flac', label: 'FLAC Audio' }, + { value: 'application/x-fla', label: 'Flash Source' }, + { value: 'video/x-flv', label: 'Flash Video' }, + { value: 'image/x-raw-fuji', label: 'Fuji RAW Image' }, + { value: 'image/gif', label: 'GIF Image' }, + { value: 'application/x-gzip', label: 'GZIP' }, + { value: 'application/x-gtar', label: 'GZIP Tarball' }, + { value: 'image/x-portable-graymap', label: 'Greymap Image' }, + { value: 'text/html', label: 'HTML' }, + { value: 'application/vnd.oasis.opendocument.text-web', label: 'HTML Document Template' }, + { value: 'image/x-raw-hasselblad', label: 'Hasselblad RAW Image' }, + { value: 'image/ief', label: 'IEF Image' }, + { value: 'image/jp2', label: 'JPEG 2000 Image' }, + { value: 'image/jpeg', label: 'JPEG Image' }, + { value: 'application/json', label: 'JSON' }, + { value: 'application/java-archive', label: 'Java Archive' }, + { value: 'application/java', label: 'Java Class' }, + { value: 'text/x-jsp', label: 'Java Server Page' }, + { value: 'text/x-java-source', label: 'Java Source File' }, + { value: 'application/x-javascript', label: 'JavaScript' }, + { value: 'image/x-raw-kodak', label: 'Kodak RAW Image' }, + { value: 'application/x-latex', label: 'LaTeX' }, + { value: 'image/x-raw-leica', label: 'Leica RAW Image' }, + { value: 'audio/mpeg', label: 'MPEG Audio' }, + { value: 'video/mp2t', label: 'MPEG Transport Stream' }, + { value: 'video/mpeg', label: 'MPEG Video' }, + { value: 'video/mpeg2', label: 'MPEG2 Video' }, + { value: 'audio/mp4', label: 'MPEG4 Audio' }, + { value: 'video/mp4', label: 'MPEG4 Video' }, + { value: 'video/x-m4v', label: 'MPEG4 Video (m4v)' }, + { value: 'video/x-ms-asf', label: 'MS ASF Streaming Video' }, + { value: 'video/x-msvideo', label: 'MS Video' }, + { value: 'audio/x-ms-wma', label: 'MS WMA Streaming Audio' }, + { value: 'video/x-ms-wmv', label: 'MS WMV Streaming Video' }, + { value: 'application/x-troff-man', label: 'Man Page' }, + { value: 'text/x-markdown', label: 'Markdown' }, + { value: 'text/mediawiki', label: 'MediaWiki Markup' }, + { value: 'application/vnd.ms-excel', label: 'Microsoft Excel' }, + { value: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', label: 'Microsoft Excel 2007' }, + { value: 'application/vnd.ms-excel.addin.macroenabled.12', label: 'Microsoft Excel 2007 add-in' }, + { value: 'application/vnd.ms-excel.sheet.binary.macroenabled.12', label: 'Microsoft Excel 2007 binary workbook' }, + { value: 'application/vnd.ms-excel.sheet.macroenabled.12', label: 'Microsoft Excel 2007 macro-enabled workbook' }, + { value: 'application/vnd.ms-excel.template.macroenabled.12', label: 'Microsoft Excel 2007 macro-enabled workbook template' }, + { value: 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', label: 'Microsoft Excel template 2007' }, + { value: 'application/vnd.ms-outlook', label: 'Microsoft Outlook Message' }, + { value: 'application/vnd.ms-powerpoint', label: 'Microsoft PowerPoint' }, + { value: 'application/vnd.openxmlformats-officedocument.presentationml.presentation', label: 'Microsoft PowerPoint 2007' }, + { value: 'application/vnd.ms-powerpoint.addin.macroenabled.12', label: 'Microsoft PowerPoint 2007 add-in' }, + { value: 'application/vnd.ms-powerpoint.presentation.macroenabled.12', label: 'Microsoft PowerPoint 2007 macro-enabled presentation' }, + { value: 'application/vnd.ms-powerpoint.template.macroenabled.12', label: 'Microsoft PowerPoint 2007 macro-enabled presentation template' }, + { value: 'application/vnd.ms-powerpoint.slide.macroenabled.12', label: 'Microsoft PowerPoint 2007 macro-enabled slide' }, + { value: 'application/vnd.ms-powerpoint.slideshow.macroenabled.12', label: 'Microsoft PowerPoint 2007 macro-enabled slide show' }, + { value: 'application/vnd.openxmlformats-officedocument.presentationml.slide', label: 'Microsoft PowerPoint 2007 slide' }, + { value: 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', label: 'Microsoft PowerPoint 2007 slide show' }, + { value: 'application/vnd.openxmlformats-officedocument.presentationml.template', label: 'Microsoft PowerPoint 2007 template' }, + { value: 'application/vnd.ms-project', label: 'Microsoft Project' }, + { value: 'application/vnd.visio', label: 'Microsoft Visio' }, + { value: 'application/vnd.visio2013', label: 'Microsoft Visio 2013' }, + { value: 'application/vnd.ms-visio.drawing.macroenabled.main+xml', label: 'Microsoft Visio macro-enabled drawing' }, + { value: 'application/vnd.ms-visio.stencil.macroenabled.main+xml', label: 'Microsoft Visio macro-enabled stencil' }, + { value: 'application/vnd.ms-visio.template.macroenabled.main+xml', label: 'Microsoft Visio macro-enabled template' }, + { value: 'application/vnd.ms-visio.stencil.main+xml', label: 'Microsoft Visio stencil' }, + { value: 'application/vnd.ms-visio.template.main+xml', label: 'Microsoft Visio template' }, + { value: 'application/msword', label: 'Microsoft Word' }, + { value: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', label: 'Microsoft Word 2007' }, + { value: 'application/vnd.ms-word.document.macroenabled.12', label: 'Microsoft Word 2007 macro-enabled document' }, + { value: 'application/vnd.ms-word.template.macroenabled.12', label: 'Microsoft Word 2007 macro-enabled document template' }, + { value: 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', label: 'Microsoft Word 2007 template' }, + { value: 'image/x-raw-minolta', label: 'Minolta RAW Image' }, + { value: 'image/x-raw-nikon', label: 'Nikon RAW Image' }, + { value: 'audio/ogg', label: 'Ogg Audio' }, + { value: 'application/ogg', label: 'Ogg Multiplex' }, + { value: 'video/ogg', label: 'Ogg Video' }, + { value: 'audio/vorbis', label: 'Ogg Vorbis Audio' }, + { value: 'image/x-raw-olympus', label: 'Olympus RAW Image' }, + { value: 'application/vnd.oasis.opendocument.chart', label: 'OpenDocument Chart' }, + { value: 'application/vnd.oasis.opendocument.database', label: 'OpenDocument Database' }, + { value: 'application/vnd.oasis.opendocument.graphics', label: 'OpenDocument Drawing' }, + { value: 'application/vnd.oasis.opendocument.graphics-template', label: 'OpenDocument Drawing Template' }, + { value: 'application/vnd.oasis.opendocument.formula', label: 'OpenDocument Formula' }, + { value: 'application/vnd.oasis.opendocument.image', label: 'OpenDocument Image' }, + { value: 'application/vnd.oasis.opendocument.text-master', label: 'OpenDocument Master Document' }, + { value: 'application/vnd.oasis.opendocument.presentation', label: 'OpenDocument Presentation' }, + { value: 'application/vnd.oasis.opendocument.presentation-template', label: 'OpenDocument Presentation Template' }, + { value: 'application/vnd.oasis.opendocument.spreadsheet', label: 'OpenDocument Spreadsheet' }, + { value: 'application/vnd.oasis.opendocument.spreadsheet-template', label: 'OpenDocument Spreadsheet Template' }, + { value: 'application/vnd.oasis.opendocument.text', label: 'OpenDocument Text (OpenOffice 2.0)' }, + { value: 'application/vnd.oasis.opendocument.text-template', label: 'OpenDocument Text Template' }, + { value: 'application/vnd.sun.xml.calc', label: 'OpenOffice 1.0/StarOffice6.0 Calc 6.0' }, + { value: 'application/vnd.sun.xml.calc.template', label: 'OpenOffice 1.0/StarOffice6.0 Calc 6.0 Template' }, + { value: 'application/vnd.sun.xml.draw', label: 'OpenOffice 1.0/StarOffice6.0 Draw 6.0' }, + { value: 'application/vnd.sun.xml.impress', label: 'OpenOffice 1.0/StarOffice6.0 Impress 6.0' }, + { value: 'application/vnd.sun.xml.impress.template', label: 'OpenOffice 1.0/StarOffice6.0 Impress 6.0 Template' }, + { value: 'application/vnd.sun.xml.writer', label: 'OpenOffice 1.0/StarOffice6.0 Writer 6.0' }, + { value: 'application/vnd.sun.xml.writer.template', label: 'OpenOffice 1.0/StarOffice6.0 Writer 6.0 Template' }, + { value: 'image/png', label: 'PNG Image' }, + { value: 'image/x-raw-panasonic', label: 'Panasonic RAW Image' }, + { value: 'image/x-raw-pentax', label: 'Pentax RAW Image' }, + { value: 'image/x-portable-pixmap', label: 'Pixmap Image' }, + { value: 'text/plain', label: 'Plain Text' }, + { value: 'image/x-portable-bitmap', label: 'Portable Bitmap' }, + { value: 'application/postscript', label: 'PostScript' }, + { value: 'application/remote-printing', label: 'Printer Text File' }, + { value: 'video/quicktime', label: 'Quicktime Video' }, + { value: 'video/x-rad-screenplay', label: 'RAD Screen Display' }, + { value: 'application/x-rar-compressed', label: 'RAR Archive' }, + { value: 'image/x-raw-red', label: 'RED RAW Image' }, + { value: 'image/x-rgb', label: 'RGB Image' }, + { value: 'application/rss+xml', label: 'RSS' }, + { value: 'image/x-cmu-raster', label: 'Raster Image' }, + { value: 'text/richtext', label: 'Rich Text' }, + { value: 'application/rtf', label: 'Rich Text Format' }, + { value: 'video/x-sgi-movie', label: 'SGI Video' }, + { value: 'text/sgml', label: 'SGML (Human Readable)' }, + { value: 'application/sgml', label: 'SGML (Machine Readable)' }, + { value: 'image/svg+xml', label: 'Scalable Vector Graphics Image' }, + { value: 'application/x-sh', label: 'Shell Script' }, + { value: 'application/x-shockwave-flash', label: 'Shockwave Flash' }, + { value: 'image/x-raw-sigma', label: 'Sigma RAW Image' }, + { value: 'image/x-raw-sony', label: 'Sony RAW Image' }, + { value: 'application/vnd.stardivision.chart', label: 'StarChart 5.x' }, + { value: 'application/vnd.stardivision.calc', label: 'StarCalc 5.x' }, + { value: 'application/vnd.stardivision.draw', label: 'StarDraw 5.x' }, + { value: 'application/vnd.stardivision.impress', label: 'StarImpress 5.x' }, + { value: 'application/vnd.stardivision.impress-packed', label: 'StarImpress Packed 5.x' }, + { value: 'application/vnd.stardivision.math', label: 'StarMath 5.x' }, + { value: 'application/vnd.stardivision.writer', label: 'StarWriter 5.x' }, + { value: 'application/vnd.stardivision.writer-global', label: 'StarWriter 5.x global' }, + { value: 'text/css', label: 'Style Sheet' }, + { value: 'image/tiff', label: 'TIFF Image' }, + { value: 'text/tab-separated-values', label: 'Tab Separated Values' }, + { value: 'application/x-tar', label: 'Tarball' }, + { value: 'application/x-tex', label: 'Tex' }, + { value: 'application/x-texinfo', label: 'Tex Info' }, + { value: 'x-world/x-vrml', label: 'VRML' }, + { value: 'audio/x-wav', label: 'WAV Audio' }, + { value: 'video/webm', label: 'WebM Video' }, + { value: 'application/wordperfect', label: 'WordPerfect' }, + { value: 'image/x-xbitmap', label: 'XBitmap Image' }, + { value: 'application/xhtml+xml', label: 'XHTML' }, + { value: 'text/xml', label: 'XML' }, + { value: 'image/x-xpixmap', label: 'XPixmap Image' }, + { value: 'image/x-xwindowdump', label: 'XWindow Dump' }, + { value: 'application/x-compress', label: 'Z Compress' }, + { value: 'application/zip', label: 'ZIP' }, + { value: 'text/calendar', label: 'iCalendar File' } +]; diff --git a/projects/aca-shared/src/lib/services/app-settings.service.ts b/projects/aca-shared/src/lib/services/app-settings.service.ts new file mode 100644 index 0000000000..281751826f --- /dev/null +++ b/projects/aca-shared/src/lib/services/app-settings.service.ts @@ -0,0 +1,54 @@ +/*! + * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Alfresco Example Content Application + * + * This file is part of the Alfresco Example Content Application. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * The Alfresco Example Content Application is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Alfresco Example Content Application is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * from Hyland Software. If not, see . + */ + +import { inject, Injectable } from '@angular/core'; +import { AppConfigService } from '@alfresco/adf-core'; +import { AlfrescoMimeType, DefaultMimeTypes } from '../constants/mime-types'; + +@Injectable({ providedIn: 'root' }) +export class AppSettingsService { + private appConfig = inject(AppConfigService); + + /** + * Get the AOS (Alfresco Office Services) host URL from the app settings. + */ + get aosHost(): string { + return this.appConfig.get('aosHost'); + } + + /** + * Get the default landing page from the app settings. + * Default value: `/personal-files`. + */ + get landingPage(): string { + return this.appConfig.get('landingPage', '/personal-files'); + } + + /** + * Get the list of mime types from the app settings. + */ + get mimeTypes(): AlfrescoMimeType[] { + return this.appConfig.get('mimeTypes', DefaultMimeTypes); + } +} diff --git a/projects/aca-shared/src/public-api.ts b/projects/aca-shared/src/public-api.ts index 7a92faac79..ac8ee8dbf0 100644 --- a/projects/aca-shared/src/public-api.ts +++ b/projects/aca-shared/src/public-api.ts @@ -39,7 +39,7 @@ export * from './lib/components/info-drawer/info-drawer.component'; export * from './lib/components/document-base-page/document-base-page.component'; export * from './lib/components/document-base-page/document-base-page.service'; export * from './lib/components/open-in-app/open-in-app.component'; - +export * from './lib/constants'; export * from './lib/directives/contextmenu/contextmenu.directive'; export * from './lib/directives/pagination.directive'; @@ -56,6 +56,7 @@ export * from './lib/services/app.extension.service'; export * from './lib/services/router.extension.service'; export * from './lib/services/app-hook.service'; export * from './lib/services/aca-file-auto-download.service'; +export * from './lib/services/app-settings.service'; export * from './lib/utils/node.utils'; export * from './lib/testing/lib-testing-module';