Improved tags #419

This commit is contained in:
the-djmaze 2022-06-03 14:46:05 +02:00
parent c0994b38e8
commit 9e4edd8843
5 changed files with 42 additions and 6 deletions

View file

@ -263,11 +263,17 @@ export class FolderModel extends AbstractModel {
kolabType: null, kolabType: null,
collapsed: true collapsed: true,
tagsAllowed: false
}); });
this.flags = ko.observableArray();
this.permanentFlags = ko.observableArray();
this.addSubscribables({ this.addSubscribables({
kolabType: sValue => this.metadata[FolderMetadataKeys.KolabFolderType] = sValue kolabType: sValue => this.metadata[FolderMetadataKeys.KolabFolderType] = sValue,
permanentFlags: aValue => this.tagsAllowed(aValue.includes('\\*'))
}); });
this.subFolders = ko.observableArray(new FolderCollectionModel); this.subFolders = ko.observableArray(new FolderCollectionModel);
@ -296,9 +302,20 @@ export class FolderModel extends AbstractModel {
} }
}) })
.extend({ notify: 'always' }); .extend({ notify: 'always' });
/*
this.flags = ko.observableArray(); https://www.rfc-editor.org/rfc/rfc8621.html#section-2
this.permanentFlags = ko.observableArray(); "myRights": {
"mayAddItems": true,
"mayRename": false,
"maySubmit": true,
"mayDelete": false,
"maySetKeywords": true,
"mayRemoveItems": true,
"mayCreateChild": true,
"maySetSeen": true,
"mayReadItems": true
},
*/
} }
/** /**

View file

@ -113,11 +113,21 @@ export class MessageModel extends AbstractModel {
this.flags = ko.observableArray(); this.flags = ko.observableArray();
const ignoredTags = [ const ignoredTags = [
'$forwarded',
// Mailo
'sent',
// KMail
'$sent', '$sent',
'$signed', '$signed',
'$error', '$error',
'$queued', '$queued',
'$forwarded' // GMail
'$replied',
'$attachment',
'$notphishing',
'$phishing',
'junk',
'nonjunk'
]; ];
this.addComputables({ this.addComputables({

View file

@ -206,6 +206,11 @@ MessagelistUserStore.reload = (bDropPagePosition = false, bDropCurrenFolderCache
} }
folder.flags(folderInfo.Flags); folder.flags(folderInfo.Flags);
folderInfo.PermanentFlags.sort((a, b) => {
a = a.toUpperCase();
b = b.toUpperCase();
return (a < b) ? -1 : ((a > b) ? 1 : 0);
});
folder.permanentFlags(folderInfo.PermanentFlags); folder.permanentFlags(folderInfo.PermanentFlags);
MessagelistUserStore.initUidNextAndNewMessages(folder.fullName, folderInfo.UidNext, collection.NewMessages); MessagelistUserStore.initUidNextAndNewMessages(folder.fullName, folderInfo.UidNext, collection.NewMessages);

View file

@ -147,6 +147,8 @@ export class MailMessageView extends AbstractViewRight {
) )
}, },
tagsAllowed: () => FolderUserStore.currentFolder() ? FolderUserStore.currentFolder().tagsAllowed() : false,
messageVisibility: () => !MessageUserStore.loading() && !!currentMessage(), messageVisibility: () => !MessageUserStore.loading() && !!currentMessage(),
canBeRepliedOrForwarded: () => !this.isDraftFolder() && this.messageVisibility(), canBeRepliedOrForwarded: () => !this.isDraftFolder() && this.messageVisibility(),

View file

@ -195,6 +195,7 @@
</table> </table>
</div> </div>
<div class="hasVirus" data-bind="visible: message().hasVirus()" data-i18n="MESSAGE/HAS_VIRUS_WARNING"></div> <div class="hasVirus" data-bind="visible: message().hasVirus()" data-i18n="MESSAGE/HAS_VIRUS_WARNING"></div>
<!-- ko if: tagsAllowed -->
<div class="messageTags"> <div class="messageTags">
<span data-i18n="MESSAGE/TAGS"></span>: <span data-i18n="MESSAGE/TAGS"></span>:
<span data-bind="html: message().tagsToHTML()"></span> <span data-bind="html: message().tagsToHTML()"></span>
@ -207,6 +208,7 @@
</ul> </ul>
</div> </div>
</div> </div>
<!-- /ko -->
</div> </div>
<div id="messageItem" data-bind="css: message().lineAsCss()"> <div id="messageItem" data-bind="css: message().lineAsCss()">
<div tabindex="0" data-bind="hasfocus: messageDomFocused"> <div tabindex="0" data-bind="hasfocus: messageDomFocused">