Capability improvements

Additional branding options
This commit is contained in:
RainLoop Team
2015-05-20 02:05:54 +04:00
parent 7fce424758
commit 763fae345b
46 changed files with 880 additions and 556 deletions

View File

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

View File

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

View File

@@ -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()]);
}