From 5cdbba8da0e16ec80fe646ad2bc32adcfa16d6be Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Wed, 22 Nov 2023 04:07:57 +0100 Subject: [PATCH] Support \noinferiors to disallow creating subfolders --- dev/Common/Folders.js | 12 ++++-------- dev/Model/FolderCollection.js | 2 ++ dev/View/Popup/FolderCreate.js | 6 ++---- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/dev/Common/Folders.js b/dev/Common/Folders.js index 6d53c6332..97bef2249 100644 --- a/dev/Common/Folders.js +++ b/dev/Common/Folders.js @@ -50,15 +50,14 @@ folderListOptionsBuilder = ( aDisabled, aHeaderLines, fRenameCallback, - fDisableCallback, - bNoSelectSelectable, - aList = FolderUserStore.folderList() + fDisableCallback ) => { const aResult = [], sDeepPrefix = '\u00A0\u00A0\u00A0', // FolderSystemPopupView should always be true showUnsubscribed = fRenameCallback ? !SettingsUserStore.hideUnsubscribed() : true, + isDisabled = fDisableCallback || (item => !item.selectable() || aDisabled.includes(item.fullName)), foldersWalk = folders => { folders.forEach(oItem => { @@ -69,10 +68,7 @@ folderListOptionsBuilder = ( sDeepPrefix.repeat(oItem.deep) + fRenameCallback(oItem), system: false, - disabled: !bNoSelectSelectable && ( - !oItem.selectable() || - aDisabled.includes(oItem.fullName) || - fDisableCallback(oItem)) + disabled: isDisabled(oItem) }); } foldersWalk(oItem.subFolders()); @@ -93,7 +89,7 @@ folderListOptionsBuilder = ( }) ); - foldersWalk(aList); + foldersWalk(FolderUserStore.folderList()); return aResult; }, diff --git a/dev/Model/FolderCollection.js b/dev/Model/FolderCollection.js index 4403caa25..c62217b91 100644 --- a/dev/Model/FolderCollection.js +++ b/dev/Model/FolderCollection.js @@ -548,6 +548,8 @@ export class FolderModel extends AbstractModel { folder.isSubscribed(attr('\\subscribed')); folder.exists = !attr('\\nonexistent'); + folder.subFolders.allow = !attr('\\noinferiors'); +// folder.subFolders.exist = attr('\\haschildren') || !attr('\\hasnochildren'); folder.selectable(folder.exists && !attr('\\noselect')); type && 'mail' != type && folder.kolabType(type); diff --git a/dev/View/Popup/FolderCreate.js b/dev/View/Popup/FolderCreate.js index 6b33d5a44..a1cb4e370 100644 --- a/dev/View/Popup/FolderCreate.js +++ b/dev/View/Popup/FolderCreate.js @@ -29,10 +29,8 @@ export class FolderCreatePopupView extends AbstractViewPopup { [], [['', '']], oItem => oItem ? oItem.detailedName() : '', - FolderUserStore.namespace - ? item => !item.fullName.startsWith(FolderUserStore.namespace) - : null, - true + item => !item.subFolders.allow + || (FolderUserStore.namespace && !item.fullName.startsWith(FolderUserStore.namespace)) ) );