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,
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;
},

View file

@ -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);

View file

@ -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))
)
);