Support \noinferiors to disallow creating subfolders

This commit is contained in:
the-djmaze 2023-11-22 04:07:57 +01:00
parent d74407f36b
commit 5cdbba8da0
3 changed files with 8 additions and 12 deletions

View file

@ -50,15 +50,14 @@ folderListOptionsBuilder = (
aDisabled, aDisabled,
aHeaderLines, aHeaderLines,
fRenameCallback, fRenameCallback,
fDisableCallback, fDisableCallback
bNoSelectSelectable,
aList = FolderUserStore.folderList()
) => { ) => {
const const
aResult = [], aResult = [],
sDeepPrefix = '\u00A0\u00A0\u00A0', sDeepPrefix = '\u00A0\u00A0\u00A0',
// FolderSystemPopupView should always be true // FolderSystemPopupView should always be true
showUnsubscribed = fRenameCallback ? !SettingsUserStore.hideUnsubscribed() : true, showUnsubscribed = fRenameCallback ? !SettingsUserStore.hideUnsubscribed() : true,
isDisabled = fDisableCallback || (item => !item.selectable() || aDisabled.includes(item.fullName)),
foldersWalk = folders => { foldersWalk = folders => {
folders.forEach(oItem => { folders.forEach(oItem => {
@ -69,10 +68,7 @@ folderListOptionsBuilder = (
sDeepPrefix.repeat(oItem.deep) + sDeepPrefix.repeat(oItem.deep) +
fRenameCallback(oItem), fRenameCallback(oItem),
system: false, system: false,
disabled: !bNoSelectSelectable && ( disabled: isDisabled(oItem)
!oItem.selectable() ||
aDisabled.includes(oItem.fullName) ||
fDisableCallback(oItem))
}); });
} }
foldersWalk(oItem.subFolders()); foldersWalk(oItem.subFolders());
@ -93,7 +89,7 @@ folderListOptionsBuilder = (
}) })
); );
foldersWalk(aList); foldersWalk(FolderUserStore.folderList());
return aResult; return aResult;
}, },

View file

@ -548,6 +548,8 @@ export class FolderModel extends AbstractModel {
folder.isSubscribed(attr('\\subscribed')); folder.isSubscribed(attr('\\subscribed'));
folder.exists = !attr('\\nonexistent'); folder.exists = !attr('\\nonexistent');
folder.subFolders.allow = !attr('\\noinferiors');
// folder.subFolders.exist = attr('\\haschildren') || !attr('\\hasnochildren');
folder.selectable(folder.exists && !attr('\\noselect')); folder.selectable(folder.exists && !attr('\\noselect'));
type && 'mail' != type && folder.kolabType(type); type && 'mail' != type && folder.kolabType(type);

View file

@ -29,10 +29,8 @@ export class FolderCreatePopupView extends AbstractViewPopup {
[], [],
[['', '']], [['', '']],
oItem => oItem ? oItem.detailedName() : '', oItem => oItem ? oItem.detailedName() : '',
FolderUserStore.namespace item => !item.subFolders.allow
? item => !item.fullName.startsWith(FolderUserStore.namespace) || (FolderUserStore.namespace && !item.fullName.startsWith(FolderUserStore.namespace))
: null,
true
) )
); );