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) {