From 57ac20a8c546b3ddc5c53451075c2f31c7fd5b40 Mon Sep 17 00:00:00 2001 From: DominikIwanek <141320833+DominikIwanek@users.noreply.github.com> Date: Tue, 14 Nov 2023 12:08:07 +0100 Subject: [PATCH] [ACS-6278] - disable manage rules for smart folders (#3518) --- .../folder-rules/src/folder-rules.rules.spec.ts | 10 +++++++++- .../aca-content/folder-rules/src/folder-rules.rules.ts | 4 ++-- projects/aca-shared/rules/src/app.rules.spec.ts | 8 +------- projects/aca-shared/rules/src/app.rules.ts | 5 ++--- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/projects/aca-content/folder-rules/src/folder-rules.rules.spec.ts b/projects/aca-content/folder-rules/src/folder-rules.rules.spec.ts index b7024e210..e5a6b4c5b 100644 --- a/projects/aca-content/folder-rules/src/folder-rules.rules.spec.ts +++ b/projects/aca-content/folder-rules/src/folder-rules.rules.spec.ts @@ -23,7 +23,8 @@ */ import { AcaRuleContext } from '@alfresco/aca-shared/rules'; -import { isFolderRulesEnabled, canManageFolderRules } from './folder-rules.rules'; +import { canManageFolderRules, isFolderRulesEnabled } from './folder-rules.rules'; +import { NodeEntry } from '@alfresco/js-api'; describe('Folder Rules Visibility Rules', () => { describe('isFolderRulesEnabled', () => { @@ -81,5 +82,12 @@ describe('Folder Rules Visibility Rules', () => { const result = canManageFolderRules(context); expect(result).toEqual(false); }); + + it('should not allow creating a rule if the selected node is a smart folder', () => { + context.selection.first = { entry: { aspectNames: ['smf:customConfigSmartFolder'], isFolder: true } } as NodeEntry; + const result = canManageFolderRules(context); + + expect(result).toBe(false); + }); }); }); diff --git a/projects/aca-content/folder-rules/src/folder-rules.rules.ts b/projects/aca-content/folder-rules/src/folder-rules.rules.ts index 95b0beea3..d4cb05929 100644 --- a/projects/aca-content/folder-rules/src/folder-rules.rules.ts +++ b/projects/aca-content/folder-rules/src/folder-rules.rules.ts @@ -22,10 +22,10 @@ * from Hyland Software. If not, see . */ -import { AcaRuleContext, hasFolderSelected, canEditFolder, isNotFavorites } from '@alfresco/aca-shared/rules'; +import { AcaRuleContext, canEditFolder, hasFolderSelected, isNotFavorites, isSmartFolder } from '@alfresco/aca-shared/rules'; export const isFolderRulesEnabled = (context: AcaRuleContext) => context.appConfig.get('plugins.folderRules', false); export const isFolderRulesAllowed = (context: AcaRuleContext) => - isFolderRulesEnabled(context) && canEditFolder(context) && hasFolderSelected(context) && isNotFavorites(context); + isFolderRulesEnabled(context) && canEditFolder(context) && hasFolderSelected(context) && isNotFavorites(context) && !isSmartFolder(context); export const canManageFolderRules = (context: AcaRuleContext): boolean => isFolderRulesAllowed(context); diff --git a/projects/aca-shared/rules/src/app.rules.spec.ts b/projects/aca-shared/rules/src/app.rules.spec.ts index 0b80eb57c..8b9584710 100644 --- a/projects/aca-shared/rules/src/app.rules.spec.ts +++ b/projects/aca-shared/rules/src/app.rules.spec.ts @@ -23,9 +23,9 @@ */ import * as app from './app.rules'; +import { getFileExtension } from './app.rules'; import { TestRuleContext } from './test-rule-context'; import { NodeEntry, RepositoryInfo } from '@alfresco/js-api'; -import { getFileExtension } from './app.rules'; describe('app.evaluators', () => { describe('getFileExtension', () => { @@ -825,12 +825,6 @@ describe('app.evaluators', () => { expect(app.canEditAspects(context)).toBe(false); }); - it('should return false if the selected node is a smart folder', () => { - context.selection.first = { entry: { aspectNames: ['smf:customConfigSmartFolder'], isFolder: true } } as NodeEntry; - - expect(app.canEditAspects(context)).toBe(false); - }); - it('should return true if all conditions are met', () => { expect(app.canEditAspects(context)).toBe(true); }); diff --git a/projects/aca-shared/rules/src/app.rules.ts b/projects/aca-shared/rules/src/app.rules.ts index 4b69368b6..1c741b146 100644 --- a/projects/aca-shared/rules/src/app.rules.ts +++ b/projects/aca-shared/rules/src/app.rules.ts @@ -495,8 +495,7 @@ export const canEditAspects = (context: RuleContext): boolean => canUpdateSelectedNode(context), !isWriteLocked(context), navigation.isNotTrashcan(context), - repository.isMajorVersionAvailable(context, '7'), - !isSmartFolder(context) + repository.isMajorVersionAvailable(context, '7') ].every(Boolean); /** @@ -626,7 +625,7 @@ export function canOpenWithOffice(context: AcaRuleContext): boolean { return context.permissions.check(file, ['update']); } -function isSmartFolder(context: RuleContext): boolean { +export function isSmartFolder(context: RuleContext): boolean { if (!context.selection?.isEmpty) { const node = context.selection.first; if (!node?.entry.isFolder) {