mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-06-29 15:26:09 +00:00
Capability improvements
Additional branding options
This commit is contained in:
@@ -22,6 +22,8 @@
|
||||
FolderStore = require('Stores/User/Folder'),
|
||||
MessageStore = require('Stores/User/Message'),
|
||||
|
||||
Settings = require('Storage/Settings'),
|
||||
|
||||
kn = require('Knoin/Knoin'),
|
||||
AbstractView = require('Knoin/AbstractView')
|
||||
;
|
||||
@@ -50,7 +52,9 @@
|
||||
|
||||
this.iDropOverTimer = 0;
|
||||
|
||||
this.allowComposer = !!Settings.capa(Enums.Capa.Composer);
|
||||
this.allowContacts = !!AppStore.contactsIsAllowed();
|
||||
this.allowFolders = !!Settings.capa(Enums.Capa.Folders);
|
||||
|
||||
this.folderListFocused = ko.computed(function () {
|
||||
return Enums.Focused.FolderList === AppStore.focusedState();
|
||||
@@ -259,7 +263,10 @@
|
||||
|
||||
FolderListMailBoxUserView.prototype.composeClick = function ()
|
||||
{
|
||||
kn.showScreenPopup(require('View/Popup/Compose'));
|
||||
if (Settings.capa(Enums.Capa.Composer))
|
||||
{
|
||||
kn.showScreenPopup(require('View/Popup/Compose'));
|
||||
}
|
||||
};
|
||||
|
||||
FolderListMailBoxUserView.prototype.createFolder = function ()
|
||||
|
||||
@@ -48,7 +48,12 @@
|
||||
this.bPrefetch = false;
|
||||
this.emptySubjectValue = '';
|
||||
|
||||
this.hideDangerousActions = !!Settings.settingsGet('HideDangerousActions');
|
||||
this.allowReload = !!Settings.capa(Enums.Capa.Reload);
|
||||
this.allowSearch = !!Settings.capa(Enums.Capa.Search);
|
||||
this.allowSearchAdv = !!Settings.capa(Enums.Capa.SearchAdv);
|
||||
this.allowComposer = !!Settings.capa(Enums.Capa.Composer);
|
||||
this.allowMessageListActions = !!Settings.capa(Enums.Capa.MessageListActions);
|
||||
this.allowDangerousActions = !!Settings.capa(Enums.Capa.DangerousActions);
|
||||
|
||||
this.popupVisibility = Globals.popupVisibility;
|
||||
|
||||
@@ -200,18 +205,27 @@
|
||||
this.canBeMoved = this.hasCheckedOrSelectedLines;
|
||||
|
||||
this.clearCommand = Utils.createCommand(this, function () {
|
||||
kn.showScreenPopup(require('View/Popup/FolderClear'), [FolderStore.currentFolder()]);
|
||||
if (Settings.capa(Enums.Capa.DangerousActions))
|
||||
{
|
||||
kn.showScreenPopup(require('View/Popup/FolderClear'), [FolderStore.currentFolder()]);
|
||||
}
|
||||
});
|
||||
|
||||
this.multyForwardCommand = Utils.createCommand(this, function () {
|
||||
kn.showScreenPopup(require('View/Popup/Compose'), [
|
||||
Enums.ComposeType.ForwardAsAttachment, MessageStore.messageListCheckedOrSelected()]);
|
||||
if (Settings.capa(Enums.Capa.Composer))
|
||||
{
|
||||
kn.showScreenPopup(require('View/Popup/Compose'), [
|
||||
Enums.ComposeType.ForwardAsAttachment, MessageStore.messageListCheckedOrSelected()]);
|
||||
}
|
||||
}, this.canBeMoved);
|
||||
|
||||
this.deleteWithoutMoveCommand = Utils.createCommand(this, function () {
|
||||
require('App/User').deleteMessagesFromFolder(Enums.FolderType.Trash,
|
||||
FolderStore.currentFolderFullNameRaw(),
|
||||
MessageStore.messageListCheckedOrSelectedUidsWithSubMails(), false);
|
||||
if (Settings.capa(Enums.Capa.DangerousActions))
|
||||
{
|
||||
require('App/User').deleteMessagesFromFolder(Enums.FolderType.Trash,
|
||||
FolderStore.currentFolderFullNameRaw(),
|
||||
MessageStore.messageListCheckedOrSelectedUidsWithSubMails(), false);
|
||||
}
|
||||
}, this.canBeMoved);
|
||||
|
||||
this.deleteCommand = Utils.createCommand(this, function () {
|
||||
@@ -241,7 +255,7 @@
|
||||
this.moveCommand = Utils.createCommand(this, Utils.emptyFunction, this.canBeMoved);
|
||||
|
||||
this.reloadCommand = Utils.createCommand(this, function () {
|
||||
if (!MessageStore.messageListCompleteLoadingThrottleForAnimation())
|
||||
if (!MessageStore.messageListCompleteLoadingThrottleForAnimation() && this.allowReload)
|
||||
{
|
||||
require('App/User').reloadMessageList(false, true);
|
||||
}
|
||||
@@ -718,37 +732,43 @@
|
||||
}
|
||||
});
|
||||
|
||||
// archive (zip)
|
||||
key('z', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||
self.archiveCommand();
|
||||
return false;
|
||||
});
|
||||
|
||||
// delete
|
||||
key('delete, shift+delete, shift+3', Enums.KeyState.MessageList, function (event, handler) {
|
||||
if (event)
|
||||
{
|
||||
if (0 < MessageStore.messageListCheckedOrSelected().length)
|
||||
{
|
||||
if (handler && 'shift+delete' === handler.shortcut)
|
||||
{
|
||||
self.deleteWithoutMoveCommand();
|
||||
}
|
||||
else
|
||||
{
|
||||
self.deleteCommand();
|
||||
}
|
||||
}
|
||||
|
||||
if (Settings.capa(Enums.Capa.MessageListActions))
|
||||
{
|
||||
// archive (zip)
|
||||
key('z', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||
self.archiveCommand();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// check mail
|
||||
key('ctrl+r, command+r', [Enums.KeyState.FolderList, Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||
self.reloadCommand();
|
||||
return false;
|
||||
});
|
||||
// delete
|
||||
key('delete, shift+delete, shift+3', Enums.KeyState.MessageList, function (event, handler) {
|
||||
if (event)
|
||||
{
|
||||
if (0 < MessageStore.messageListCheckedOrSelected().length)
|
||||
{
|
||||
if (handler && 'shift+delete' === handler.shortcut)
|
||||
{
|
||||
self.deleteWithoutMoveCommand();
|
||||
}
|
||||
else
|
||||
{
|
||||
self.deleteCommand();
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (Settings.capa(Enums.Capa.Reload))
|
||||
{
|
||||
// check mail
|
||||
key('ctrl+r, command+r', [Enums.KeyState.FolderList, Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||
self.reloadCommand();
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
// check all
|
||||
key('ctrl+a, command+a', Enums.KeyState.MessageList, function () {
|
||||
@@ -756,17 +776,23 @@
|
||||
return false;
|
||||
});
|
||||
|
||||
// write/compose (open compose popup)
|
||||
key('w,c', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||
kn.showScreenPopup(require('View/Popup/Compose'));
|
||||
return false;
|
||||
});
|
||||
if (Settings.capa(Enums.Capa.Composer))
|
||||
{
|
||||
// write/compose (open compose popup)
|
||||
key('w,c', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||
kn.showScreenPopup(require('View/Popup/Compose'));
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
// important - star/flag messages
|
||||
key('i', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||
self.flagMessagesFast();
|
||||
return false;
|
||||
});
|
||||
if (Settings.capa(Enums.Capa.MessageListActions))
|
||||
{
|
||||
// important - star/flag messages
|
||||
key('i', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||
self.flagMessagesFast();
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
key('t', [Enums.KeyState.MessageList], function () {
|
||||
|
||||
@@ -784,34 +810,46 @@
|
||||
return false;
|
||||
});
|
||||
|
||||
// move
|
||||
key('m', Enums.KeyState.MessageList, function () {
|
||||
self.moveDropdownTrigger(true);
|
||||
return false;
|
||||
});
|
||||
if (Settings.capa(Enums.Capa.MessageListActions))
|
||||
{
|
||||
// move
|
||||
key('m', Enums.KeyState.MessageList, function () {
|
||||
self.moveDropdownTrigger(true);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
// read
|
||||
key('q', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||
self.seenMessagesFast(true);
|
||||
return false;
|
||||
});
|
||||
if (Settings.capa(Enums.Capa.MessageListActions))
|
||||
{
|
||||
// read
|
||||
key('q', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||
self.seenMessagesFast(true);
|
||||
return false;
|
||||
});
|
||||
|
||||
// unread
|
||||
key('u', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||
self.seenMessagesFast(false);
|
||||
return false;
|
||||
});
|
||||
// unread
|
||||
key('u', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||
self.seenMessagesFast(false);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
key('shift+f', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||
self.multyForwardCommand();
|
||||
return false;
|
||||
});
|
||||
if (Settings.capa(Enums.Capa.Composer))
|
||||
{
|
||||
key('shift+f', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||
self.multyForwardCommand();
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
// search input focus
|
||||
key('/', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||
self.inputMessageListSearchFocus(true);
|
||||
return false;
|
||||
});
|
||||
if (Settings.capa(Enums.Capa.Search))
|
||||
{
|
||||
// search input focus
|
||||
key('/', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||
self.inputMessageListSearchFocus(true);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
// cancel search
|
||||
key('esc', Enums.KeyState.MessageList, function () {
|
||||
@@ -887,12 +925,18 @@
|
||||
|
||||
MessageListMailBoxUserView.prototype.composeClick = function ()
|
||||
{
|
||||
kn.showScreenPopup(require('View/Popup/Compose'));
|
||||
if (Settings.capa(Enums.Capa.Composer))
|
||||
{
|
||||
kn.showScreenPopup(require('View/Popup/Compose'));
|
||||
}
|
||||
};
|
||||
|
||||
MessageListMailBoxUserView.prototype.advancedSearchClick = function ()
|
||||
{
|
||||
kn.showScreenPopup(require('View/Popup/AdvancedSearch'));
|
||||
if (Settings.capa(Enums.Capa.SearchAdv))
|
||||
{
|
||||
kn.showScreenPopup(require('View/Popup/AdvancedSearch'));
|
||||
}
|
||||
};
|
||||
|
||||
MessageListMailBoxUserView.prototype.quotaTooltip = function ()
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
MessageStore = require('Stores/User/Message'),
|
||||
|
||||
Local = require('Storage/Client'),
|
||||
Settings = require('Storage/Settings'),
|
||||
Remote = require('Remote/User/Ajax'),
|
||||
|
||||
Promises = require('Promises/User/Ajax'),
|
||||
@@ -67,6 +68,12 @@
|
||||
|
||||
this.pswp = null;
|
||||
|
||||
this.allowComposer = !!Settings.capa(Enums.Capa.Composer);
|
||||
this.allowMessageActions = !!Settings.capa(Enums.Capa.MessageActions);
|
||||
this.allowMessageListActions = !!Settings.capa(Enums.Capa.MessageListActions);
|
||||
|
||||
this.logoImg = Utils.trim(Settings.settingsGet('UserLogoMessage'));
|
||||
|
||||
this.attachmentsActions = AppStore.attachmentsActions;
|
||||
|
||||
this.message = MessageStore.message;
|
||||
@@ -92,18 +99,21 @@
|
||||
this.showAttachmnetControls = ko.observable(false);
|
||||
|
||||
this.allowAttachmnetControls = ko.computed(function () {
|
||||
return 0 < this.attachmentsActions().length;
|
||||
return 0 < this.attachmentsActions().length &&
|
||||
Settings.capa(Enums.Capa.AttachmentsActions);
|
||||
}, this);
|
||||
|
||||
this.downloadAsZipAllowed = ko.computed(function () {
|
||||
return -1 < Utils.inArray('zip', this.attachmentsActions());
|
||||
return -1 < Utils.inArray('zip', this.attachmentsActions()) &&
|
||||
this.allowAttachmnetControls();
|
||||
}, this);
|
||||
|
||||
this.downloadAsZipLoading = ko.observable(false);
|
||||
this.downloadAsZipError = ko.observable(false).extend({'falseTimeout': 7000});
|
||||
|
||||
this.saveToOwnCloudAllowed = ko.computed(function () {
|
||||
return -1 < Utils.inArray('owncloud', this.attachmentsActions());
|
||||
return -1 < Utils.inArray('owncloud', this.attachmentsActions()) &&
|
||||
this.allowAttachmnetControls();
|
||||
}, this);
|
||||
|
||||
this.saveToOwnCloudLoading = ko.observable(false);
|
||||
@@ -125,7 +135,8 @@
|
||||
}, this);
|
||||
|
||||
this.saveToDropboxAllowed = ko.computed(function () {
|
||||
return -1 < Utils.inArray('dropbox', this.attachmentsActions());
|
||||
return -1 < Utils.inArray('dropbox', this.attachmentsActions()) &&
|
||||
this.allowAttachmnetControls();
|
||||
}, this);
|
||||
|
||||
this.saveToDropboxLoading = ko.observable(false);
|
||||
@@ -214,7 +225,7 @@
|
||||
|
||||
this.deleteCommand = Utils.createCommand(this, function () {
|
||||
var oMessage = this.message();
|
||||
if (oMessage)
|
||||
if (oMessage && this.allowMessageListActions)
|
||||
{
|
||||
this.message(null);
|
||||
require('App/User').deleteMessagesFromFolder(Enums.FolderType.Trash,
|
||||
@@ -224,7 +235,7 @@
|
||||
|
||||
this.deleteWithoutMoveCommand = Utils.createCommand(this, function () {
|
||||
var oMessage = this.message();
|
||||
if (oMessage)
|
||||
if (oMessage && this.allowMessageListActions)
|
||||
{
|
||||
this.message(null);
|
||||
require('App/User').deleteMessagesFromFolder(Enums.FolderType.Trash,
|
||||
@@ -234,7 +245,7 @@
|
||||
|
||||
this.archiveCommand = Utils.createCommand(this, function () {
|
||||
var oMessage = this.message();
|
||||
if (oMessage)
|
||||
if (oMessage && this.allowMessageListActions)
|
||||
{
|
||||
this.message(null);
|
||||
require('App/User').deleteMessagesFromFolder(Enums.FolderType.Archive,
|
||||
@@ -244,7 +255,7 @@
|
||||
|
||||
this.spamCommand = Utils.createCommand(this, function () {
|
||||
var oMessage = this.message();
|
||||
if (oMessage)
|
||||
if (oMessage && this.allowMessageListActions)
|
||||
{
|
||||
this.message(null);
|
||||
require('App/User').deleteMessagesFromFolder(Enums.FolderType.Spam,
|
||||
@@ -254,7 +265,7 @@
|
||||
|
||||
this.notSpamCommand = Utils.createCommand(this, function () {
|
||||
var oMessage = this.message();
|
||||
if (oMessage)
|
||||
if (oMessage && this.allowMessageListActions)
|
||||
{
|
||||
this.message(null);
|
||||
require('App/User').deleteMessagesFromFolder(Enums.FolderType.NotSpam,
|
||||
@@ -521,7 +532,10 @@
|
||||
*/
|
||||
MessageViewMailBoxUserView.prototype.replyOrforward = function (sType)
|
||||
{
|
||||
kn.showScreenPopup(require('View/Popup/Compose'), [sType, MessageStore.message()]);
|
||||
if (Settings.capa(Enums.Capa.Composer))
|
||||
{
|
||||
kn.showScreenPopup(require('View/Popup/Compose'), [sType, MessageStore.message()]);
|
||||
}
|
||||
};
|
||||
|
||||
MessageViewMailBoxUserView.prototype.checkHeaderHeight = function ()
|
||||
@@ -692,7 +706,8 @@
|
||||
oDom
|
||||
.on('click', 'a', function (oEvent) {
|
||||
// setup maito protocol
|
||||
return !(!!oEvent && 3 !== oEvent['which'] && Utils.mailToHelper($(this).attr('href'), require('View/Popup/Compose')));
|
||||
return !(!!oEvent && 3 !== oEvent['which'] && Utils.mailToHelper($(this).attr('href'),
|
||||
Settings.capa(Enums.Capa.Composer) ? require('View/Popup/Compose') : null));
|
||||
})
|
||||
// .on('mouseover', 'a', _.debounce(function (oEvent) {
|
||||
//
|
||||
@@ -1013,12 +1028,15 @@
|
||||
|
||||
MessageViewMailBoxUserView.prototype.composeClick = function ()
|
||||
{
|
||||
kn.showScreenPopup(require('View/Popup/Compose'));
|
||||
if (Settings.capa(Enums.Capa.Composer))
|
||||
{
|
||||
kn.showScreenPopup(require('View/Popup/Compose'));
|
||||
}
|
||||
};
|
||||
|
||||
MessageViewMailBoxUserView.prototype.editMessage = function ()
|
||||
{
|
||||
if (MessageStore.message())
|
||||
if (Settings.capa(Enums.Capa.Composer) && MessageStore.message())
|
||||
{
|
||||
kn.showScreenPopup(require('View/Popup/Compose'), [Enums.ComposeType.Draft, MessageStore.message()]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user