mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Dropdown menu keyboard navigation
Keyboard shortcuts help popup (Shift + / )
This commit is contained in:
parent
f52be6fb66
commit
d961fa480a
47 changed files with 5598 additions and 583 deletions
|
|
@ -54,7 +54,7 @@ function AdminContacts()
|
||||||
return {
|
return {
|
||||||
'id': sValue,
|
'id': sValue,
|
||||||
'name': getTypeName(sValue) + (bDisabled ? ' (not supported)' : ''),
|
'name': getTypeName(sValue) + (bDisabled ? ' (not supported)' : ''),
|
||||||
'disable': bDisabled
|
'disabled': bDisabled
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ AdminPlugins.prototype.onBuild = function (oDom)
|
||||||
self.configurePlugin(oPlugin);
|
self.configurePlugin(oPlugin);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.on('click', '.e-item .disable-plugin', function () {
|
.on('click', '.e-item .disabled-plugin', function () {
|
||||||
var oPlugin = ko.dataFor(this);
|
var oPlugin = ko.dataFor(this);
|
||||||
if (oPlugin)
|
if (oPlugin)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -820,7 +820,7 @@ RainLoopApp.prototype.folderListOptionsBuilder = function (aSystem, aList, aDisa
|
||||||
aResult.push({
|
aResult.push({
|
||||||
'id': aHeaderLines[iIndex][0],
|
'id': aHeaderLines[iIndex][0],
|
||||||
'name': aHeaderLines[iIndex][1],
|
'name': aHeaderLines[iIndex][1],
|
||||||
'disable': false
|
'disabled': false
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -833,7 +833,7 @@ RainLoopApp.prototype.folderListOptionsBuilder = function (aSystem, aList, aDisa
|
||||||
'id': oItem.fullNameRaw,
|
'id': oItem.fullNameRaw,
|
||||||
'system': true,
|
'system': true,
|
||||||
'name': fRenameCallback ? fRenameCallback.call(null, oItem) : oItem.name(),
|
'name': fRenameCallback ? fRenameCallback.call(null, oItem) : oItem.name(),
|
||||||
'disable': !oItem.selectable || -1 < Utils.inArray(oItem.fullNameRaw, aDisabled) ||
|
'disabled': !oItem.selectable || -1 < Utils.inArray(oItem.fullNameRaw, aDisabled) ||
|
||||||
(fDisableCallback ? fDisableCallback.call(null, oItem) : false)
|
(fDisableCallback ? fDisableCallback.call(null, oItem) : false)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -853,7 +853,7 @@ RainLoopApp.prototype.folderListOptionsBuilder = function (aSystem, aList, aDisa
|
||||||
'system': false,
|
'system': false,
|
||||||
'name': (new window.Array(oItem.deep + 1 - iUnDeep)).join(sDeepPrefix) +
|
'name': (new window.Array(oItem.deep + 1 - iUnDeep)).join(sDeepPrefix) +
|
||||||
(fRenameCallback ? fRenameCallback.call(null, oItem) : oItem.name()),
|
(fRenameCallback ? fRenameCallback.call(null, oItem) : oItem.name()),
|
||||||
'disable': !oItem.selectable || -1 < Utils.inArray(oItem.fullNameRaw, aDisabled) ||
|
'disabled': !oItem.selectable || -1 < Utils.inArray(oItem.fullNameRaw, aDisabled) ||
|
||||||
(Enums.FolderType.User !== oItem.type()) ||
|
(Enums.FolderType.User !== oItem.type()) ||
|
||||||
(fDisableCallback ? fDisableCallback.call(null, oItem) : false)
|
(fDisableCallback ? fDisableCallback.call(null, oItem) : false)
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ Enums.KeyState = {
|
||||||
'MessageList': 'message-list',
|
'MessageList': 'message-list',
|
||||||
'MessageView': 'message-view',
|
'MessageView': 'message-view',
|
||||||
'Compose': 'compose',
|
'Compose': 'compose',
|
||||||
|
'Settings': 'settings',
|
||||||
'Menu': 'menu',
|
'Menu': 'menu',
|
||||||
'PopupComposeOpenPGP': 'compose-open-pgp',
|
'PopupComposeOpenPGP': 'compose-open-pgp',
|
||||||
'PopupAsk': 'popup-ask'
|
'PopupAsk': 'popup-ask'
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,11 @@ Globals.now = (new Date()).getTime();
|
||||||
*/
|
*/
|
||||||
Globals.momentTrigger = ko.observable(true);
|
Globals.momentTrigger = ko.observable(true);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {?}
|
||||||
|
*/
|
||||||
|
Globals.dropdownVisibility = ko.observable(false);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {?}
|
* @type {?}
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,54 @@ ko.bindingHandlers.tooltip2 = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
ko.bindingHandlers.dropdown = {
|
ko.__detectDropdownVisibility = _.debounce(function ($el) {
|
||||||
|
Globals.dropdownVisibility(!!$el.hasClass('open'));
|
||||||
|
}, 50);
|
||||||
|
|
||||||
|
ko.bindingHandlers.dropdownOpenStatus = {
|
||||||
|
'init': function (oElement) {
|
||||||
|
var $el = $(oElement);
|
||||||
|
|
||||||
|
$el.find('.dropdown-toggle').click(function () {
|
||||||
|
ko.__detectDropdownVisibility($el);
|
||||||
|
});
|
||||||
|
|
||||||
|
// $el.on('.dropdown-menu .menuitem', 'click', function () {
|
||||||
|
// $el.removeClass('open');
|
||||||
|
// ko.__detectDropdownVisibility($el);
|
||||||
|
// });
|
||||||
|
|
||||||
|
// $el.on('.dropdown-menu .menuitem', 'keydown', function (oEvent) {
|
||||||
|
// if (oEvent && Enums.EventKeyCode.Esc === oEvent.keyCode)
|
||||||
|
// {
|
||||||
|
// $el.removeClass('open');
|
||||||
|
// ko.__detectDropdownVisibility($el);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
|
||||||
|
$html.on('click.dropdown.data-api', function () {
|
||||||
|
ko.__detectDropdownVisibility($el);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
ko.bindingHandlers.openDropdownTrigger = {
|
||||||
|
'update': function (oElement, fValueAccessor) {
|
||||||
|
if (ko.utils.unwrapObservable(fValueAccessor()))
|
||||||
|
{
|
||||||
|
var $el = $(oElement);
|
||||||
|
if (!$el.hasClass('open'))
|
||||||
|
{
|
||||||
|
$el.find('.dropdown-toggle').dropdown('toggle');
|
||||||
|
ko.__detectDropdownVisibility($el);
|
||||||
|
}
|
||||||
|
|
||||||
|
fValueAccessor()(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
ko.bindingHandlers.dropdownCloser = {
|
||||||
'init': function (oElement) {
|
'init': function (oElement) {
|
||||||
$(oElement).closest('.dropdown').on('click', '.e-item', function () {
|
$(oElement).closest('.dropdown').on('click', '.e-item', function () {
|
||||||
$(oElement).dropdown('toggle');
|
$(oElement).dropdown('toggle');
|
||||||
|
|
|
||||||
|
|
@ -1370,10 +1370,10 @@ Utils.draggeblePlace = function ()
|
||||||
|
|
||||||
Utils.defautOptionsAfterRender = function (oOption, oItem)
|
Utils.defautOptionsAfterRender = function (oOption, oItem)
|
||||||
{
|
{
|
||||||
if (oItem && !Utils.isUnd(oItem.disable))
|
if (oItem && !Utils.isUnd(oItem.disabled))
|
||||||
{
|
{
|
||||||
ko.applyBindingsToNode(oOption, {
|
ko.applyBindingsToNode(oOption, {
|
||||||
'disable': oItem.disable
|
'disabled': oItem.disabled
|
||||||
}, oItem);
|
}, oItem);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -40,11 +40,6 @@ MailBoxScreen.prototype.onShow = function ()
|
||||||
RL.data().keyScope(Enums.KeyState.MessageList);
|
RL.data().keyScope(Enums.KeyState.MessageList);
|
||||||
};
|
};
|
||||||
|
|
||||||
MailBoxScreen.prototype.onHide = function ()
|
|
||||||
{
|
|
||||||
RL.data().keyScope(Enums.KeyState.All);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} sFolderHash
|
* @param {string} sFolderHash
|
||||||
* @param {number} iPage
|
* @param {number} iPage
|
||||||
|
|
@ -131,17 +126,6 @@ MailBoxScreen.prototype.onStart = function ()
|
||||||
}, this);
|
}, this);
|
||||||
};
|
};
|
||||||
|
|
||||||
//MailBoxScreen.prototype.onBuild = function ()
|
|
||||||
//{
|
|
||||||
// if (!Globals.bMobileDevice)
|
|
||||||
// {
|
|
||||||
// _.defer(function () {
|
|
||||||
// Utils.initLayoutResizer('#rl-resizer-left', '#rl-resizer-right', '#rl-right',
|
|
||||||
// 350, 800, 350, 350, Enums.ClientSideKeyName.MailBoxListSize);
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
//};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return {Array}
|
* @return {Array}
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -26,4 +26,5 @@ SettingsScreen.prototype.onShow = function ()
|
||||||
// AbstractSettings.prototype.onShow.call(this);
|
// AbstractSettings.prototype.onShow.call(this);
|
||||||
|
|
||||||
RL.setTitle(this.sSettingsTitle);
|
RL.setTitle(this.sSettingsTitle);
|
||||||
|
RL.data().keyScope(Enums.KeyState.Settings);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,18 @@
|
||||||
*/
|
*/
|
||||||
function AbstractData()
|
function AbstractData()
|
||||||
{
|
{
|
||||||
this.keyScope = ko.observable(Enums.KeyState.All);
|
this.keyScopeReal = ko.observable(Enums.KeyState.All);
|
||||||
this.keyScope.subscribe(function (sValue) {
|
this.keyScopeFake = ko.observable(Enums.KeyState.All);
|
||||||
|
|
||||||
|
this.keyScope = ko.computed({
|
||||||
|
'owner': this,
|
||||||
|
'read': function () {
|
||||||
|
return this.keyScopeFake();
|
||||||
|
},
|
||||||
|
'write': function (sValue) {
|
||||||
|
|
||||||
|
if (Enums.KeyState.Menu !== sValue)
|
||||||
|
{
|
||||||
if (Enums.KeyState.Compose === sValue)
|
if (Enums.KeyState.Compose === sValue)
|
||||||
{
|
{
|
||||||
Utils.disableKeyFilter();
|
Utils.disableKeyFilter();
|
||||||
|
|
@ -17,10 +26,34 @@ function AbstractData()
|
||||||
Utils.restoreKeyFilter();
|
Utils.restoreKeyFilter();
|
||||||
}
|
}
|
||||||
|
|
||||||
// window.console.log(sValue);
|
this.keyScopeFake(sValue);
|
||||||
|
if (Globals.dropdownVisibility())
|
||||||
|
{
|
||||||
|
sValue = Enums.KeyState.Menu;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// window.console.log(sValue + '/' + this.keyScopeFake());
|
||||||
|
this.keyScopeReal(sValue);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.keyScopeReal.subscribe(function (sValue) {
|
||||||
|
window.console.log(sValue);
|
||||||
key.setScope(sValue);
|
key.setScope(sValue);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Globals.dropdownVisibility.subscribe(function (bValue) {
|
||||||
|
if (bValue)
|
||||||
|
{
|
||||||
|
this.keyScope(Enums.KeyState.Menu);
|
||||||
|
}
|
||||||
|
else if (Enums.KeyState.Menu === key.getScope())
|
||||||
|
{
|
||||||
|
this.keyScope(this.keyScopeFake());
|
||||||
|
}
|
||||||
|
}, this);
|
||||||
|
|
||||||
Utils.initDataConstructorBySettings(this);
|
Utils.initDataConstructorBySettings(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,17 +39,6 @@ function WebMailDataStorage()
|
||||||
this.projectHash = ko.observable('');
|
this.projectHash = ko.observable('');
|
||||||
this.threading = ko.observable(false);
|
this.threading = ko.observable(false);
|
||||||
|
|
||||||
this.accountMenuFocus = ko.observable(false);
|
|
||||||
this.accountMenuFocus.sKeyState = Enums.KeyState.All;
|
|
||||||
|
|
||||||
this.accountMenuFocus.subscribe(function (bValue) {
|
|
||||||
if (bValue)
|
|
||||||
{
|
|
||||||
this.accountMenuFocus.sKeyState = RL.data().keyScope();
|
|
||||||
}
|
|
||||||
RL.data().keyScope(bValue ? Enums.KeyState.Menu : this.accountMenuFocus.sKeyState);
|
|
||||||
}, this);
|
|
||||||
|
|
||||||
this.lastFoldersHash = '';
|
this.lastFoldersHash = '';
|
||||||
this.remoteSuggestions = false;
|
this.remoteSuggestions = false;
|
||||||
|
|
||||||
|
|
@ -288,7 +277,14 @@ function WebMailDataStorage()
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
this.message.focused.subscribe(function (bValue) {
|
this.message.focused.subscribe(function (bValue) {
|
||||||
RL.data().keyScope(bValue ? Enums.KeyState.MessageView : Enums.KeyState.MessageList);
|
if (bValue)
|
||||||
|
{
|
||||||
|
RL.data().keyScope(Enums.KeyState.MessageView);
|
||||||
|
}
|
||||||
|
else if (Enums.KeyState.MessageView === RL.data().keyScope())
|
||||||
|
{
|
||||||
|
RL.data().keyScope(Enums.KeyState.MessageList);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
this.messageLoading.subscribe(function (bValue) {
|
this.messageLoading.subscribe(function (bValue) {
|
||||||
|
|
|
||||||
|
|
@ -42,16 +42,16 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.delete-domain, .disable-domain {
|
.delete-domain, .disabled-domain {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
.opacity(50);
|
.opacity(50);
|
||||||
}
|
}
|
||||||
|
|
||||||
&.disabled .disable-domain {
|
&.disabled .disabled-domain {
|
||||||
.opacity(50);
|
.opacity(50);
|
||||||
}
|
}
|
||||||
|
|
||||||
.delete-domain, .disable-domain {
|
.delete-domain, .disabled-domain {
|
||||||
&:hover {
|
&:hover {
|
||||||
.opacity(100);
|
.opacity(100);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
.plugin-img, .plugin-name {
|
.plugin-img, .plugin-name {
|
||||||
color: #bbb;
|
color: #bbb;
|
||||||
}
|
}
|
||||||
.disable-plugin {
|
.disabled-plugin {
|
||||||
.opacity(50);
|
.opacity(50);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@
|
||||||
.opacity(100);
|
.opacity(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn.disable {
|
.btn.disabled {
|
||||||
&.button-delete {
|
&.button-delete {
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
|
|
@ -41,7 +41,7 @@
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.disable.button-delete {
|
.disabled.button-delete {
|
||||||
margin-left: 0px;
|
margin-left: 0px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,10 @@
|
||||||
.popups {
|
.popups {
|
||||||
.b-shortcuts-content {
|
.b-shortcuts-content {
|
||||||
|
|
||||||
|
&.modal {
|
||||||
|
width: 1025px;
|
||||||
|
}
|
||||||
|
|
||||||
.modal-header {
|
.modal-header {
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -69,14 +69,14 @@
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.e-item.disable > .e-link {
|
.e-item.disabled > .e-link {
|
||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
background-image: none;
|
background-image: none;
|
||||||
color: grey;
|
color: grey;
|
||||||
}
|
}
|
||||||
|
|
||||||
.e-item.disable [class^="icon-"] {
|
.e-item.disabled [class^="icon-"] {
|
||||||
color: grey;
|
color: grey;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,8 @@ function AbstractSystemDropDownViewModel()
|
||||||
this.accounts = oData.accounts;
|
this.accounts = oData.accounts;
|
||||||
this.accountEmail = oData.accountEmail;
|
this.accountEmail = oData.accountEmail;
|
||||||
this.accountsLoading = oData.accountsLoading;
|
this.accountsLoading = oData.accountsLoading;
|
||||||
this.accountMenuFocus = oData.accountMenuFocus;
|
|
||||||
|
this.accountMenuDropdownTrigger = ko.observable(false);
|
||||||
|
|
||||||
this.allowAddAccount = RL.settingsGet('AllowAdditionalAccounts');
|
this.allowAddAccount = RL.settingsGet('AllowAdditionalAccounts');
|
||||||
|
|
||||||
|
|
@ -22,14 +23,6 @@ function AbstractSystemDropDownViewModel()
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
this.accountClick = _.bind(this.accountClick, this);
|
this.accountClick = _.bind(this.accountClick, this);
|
||||||
|
|
||||||
key('`', function () {
|
|
||||||
if (oData.useKeyboardShortcuts() && !RL.popupVisibility() &&
|
|
||||||
!oData.accountMenuFocus())
|
|
||||||
{
|
|
||||||
oData.accountMenuFocus(true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_.extend(AbstractSystemDropDownViewModel.prototype, KnoinAbstractViewModel.prototype);
|
_.extend(AbstractSystemDropDownViewModel.prototype, KnoinAbstractViewModel.prototype);
|
||||||
|
|
@ -77,3 +70,14 @@ AbstractSystemDropDownViewModel.prototype.logoutClick = function ()
|
||||||
RL.loginAndLogoutReload(true, RL.settingsGet('ParentEmail') && 0 < RL.settingsGet('ParentEmail').length);
|
RL.loginAndLogoutReload(true, RL.settingsGet('ParentEmail') && 0 < RL.settingsGet('ParentEmail').length);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
AbstractSystemDropDownViewModel.prototype.onBuild = function ()
|
||||||
|
{
|
||||||
|
var self = this;
|
||||||
|
key('`', [Enums.KeyState.MessageList, Enums.KeyState.MessageView, Enums.KeyState.Settings], function () {
|
||||||
|
if (RL.data().useKeyboardShortcuts() && !RL.popupVisibility() && !Globals.dropdownVisibility() && self.viewModelVisibility())
|
||||||
|
{
|
||||||
|
self.accountMenuDropdownTrigger(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,9 @@ function MailBoxMessageListViewModel()
|
||||||
this.userUsageSize = oData.userUsageSize;
|
this.userUsageSize = oData.userUsageSize;
|
||||||
this.userUsageProc = oData.userUsageProc;
|
this.userUsageProc = oData.userUsageProc;
|
||||||
|
|
||||||
|
this.moveDropdownTrigger = ko.observable(false);
|
||||||
|
this.moreDropdownTrigger = ko.observable(false);
|
||||||
|
|
||||||
// append drag and drop
|
// append drag and drop
|
||||||
this.dragOver = ko.observable(false).extend({'throttle': 1});
|
this.dragOver = ko.observable(false).extend({'throttle': 1});
|
||||||
this.dragOverEnter = ko.observable(false).extend({'throttle': 1});
|
this.dragOverEnter = ko.observable(false).extend({'throttle': 1});
|
||||||
|
|
@ -518,7 +521,7 @@ MailBoxMessageListViewModel.prototype.flagMessages = function (oCurrentMessage)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
MailBoxMessageListViewModel.prototype.flagMessagesFast = function ()
|
MailBoxMessageListViewModel.prototype.flagMessagesFast = function (bFlag)
|
||||||
{
|
{
|
||||||
var
|
var
|
||||||
aChecked = this.messageListCheckedOrSelected(),
|
aChecked = this.messageListCheckedOrSelected(),
|
||||||
|
|
@ -531,24 +534,43 @@ MailBoxMessageListViewModel.prototype.flagMessagesFast = function ()
|
||||||
return oMessage.flagged();
|
return oMessage.flagged();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (Utils.isUnd(bFlag))
|
||||||
|
{
|
||||||
this.setAction(aChecked[0].folderFullNameRaw,
|
this.setAction(aChecked[0].folderFullNameRaw,
|
||||||
aChecked.length === aFlagged.length ? Enums.MessageSetAction.UnsetFlag : Enums.MessageSetAction.SetFlag, aChecked);
|
aChecked.length === aFlagged.length ? Enums.MessageSetAction.UnsetFlag : Enums.MessageSetAction.SetFlag, aChecked);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.setAction(aChecked[0].folderFullNameRaw,
|
||||||
|
!bFlag ? Enums.MessageSetAction.UnsetFlag : Enums.MessageSetAction.SetFlag, aChecked);
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
MailBoxMessageListViewModel.prototype.seenMessagesFast = function ()
|
MailBoxMessageListViewModel.prototype.seenMessagesFast = function (bSeen)
|
||||||
{
|
{
|
||||||
var
|
var
|
||||||
aChecked = this.messageListCheckedOrSelected(),
|
aChecked = this.messageListCheckedOrSelected(),
|
||||||
aUnseen = []
|
aUnseen = []
|
||||||
;
|
;
|
||||||
|
|
||||||
|
if (0 < aChecked.length)
|
||||||
|
{
|
||||||
aUnseen = _.filter(aChecked, function (oMessage) {
|
aUnseen = _.filter(aChecked, function (oMessage) {
|
||||||
return oMessage.unseen();
|
return oMessage.unseen();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (Utils.isUnd(bSeen))
|
||||||
|
{
|
||||||
this.setAction(aChecked[0].folderFullNameRaw,
|
this.setAction(aChecked[0].folderFullNameRaw,
|
||||||
0 < aUnseen.length ? Enums.MessageSetAction.SetSeen : Enums.MessageSetAction.UnsetSeen, aChecked);
|
0 < aUnseen.length ? Enums.MessageSetAction.SetSeen : Enums.MessageSetAction.UnsetSeen, aChecked);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.setAction(aChecked[0].folderFullNameRaw,
|
||||||
|
bSeen ? Enums.MessageSetAction.SetSeen : Enums.MessageSetAction.UnsetSeen, aChecked);
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
MailBoxMessageListViewModel.prototype.onBuild = function (oDom)
|
MailBoxMessageListViewModel.prototype.onBuild = function (oDom)
|
||||||
|
|
@ -648,6 +670,14 @@ MailBoxMessageListViewModel.prototype.initShortcuts = function ()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
key('z', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||||
|
if (oData.useKeyboardShortcuts())
|
||||||
|
{
|
||||||
|
self.moreDropdownTrigger(true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// delete
|
// delete
|
||||||
key('delete, shift+delete', Enums.KeyState.MessageList, function (event, handler) {
|
key('delete, shift+delete', Enums.KeyState.MessageList, function (event, handler) {
|
||||||
if (oData.useKeyboardShortcuts() && event)
|
if (oData.useKeyboardShortcuts() && event)
|
||||||
|
|
@ -677,8 +707,8 @@ MailBoxMessageListViewModel.prototype.initShortcuts = function ()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// new message (open compose popup)
|
// write/compose (open compose popup)
|
||||||
key('c,n', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
key('w,c', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||||
if (oData.useKeyboardShortcuts())
|
if (oData.useKeyboardShortcuts())
|
||||||
{
|
{
|
||||||
kn.showScreenPopup(PopupsComposeViewModel);
|
kn.showScreenPopup(PopupsComposeViewModel);
|
||||||
|
|
@ -686,8 +716,8 @@ MailBoxMessageListViewModel.prototype.initShortcuts = function ()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// star/flag messages
|
// important - star/flag messages
|
||||||
key('s', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
key('i', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||||
if (oData.useKeyboardShortcuts())
|
if (oData.useKeyboardShortcuts())
|
||||||
{
|
{
|
||||||
self.flagMessagesFast();
|
self.flagMessagesFast();
|
||||||
|
|
@ -695,11 +725,29 @@ MailBoxMessageListViewModel.prototype.initShortcuts = function ()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// mark as read/unread
|
// move
|
||||||
key('m', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
key('m', Enums.KeyState.MessageList, function () {
|
||||||
if (oData.useKeyboardShortcuts())
|
if (oData.useKeyboardShortcuts())
|
||||||
{
|
{
|
||||||
self.seenMessagesFast();
|
self.moveDropdownTrigger(true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// read
|
||||||
|
key('q', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||||
|
if (oData.useKeyboardShortcuts())
|
||||||
|
{
|
||||||
|
self.seenMessagesFast(true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// unread
|
||||||
|
key('u', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||||
|
if (oData.useKeyboardShortcuts())
|
||||||
|
{
|
||||||
|
self.seenMessagesFast(false);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ function MailBoxMessageViewViewModel()
|
||||||
this.fullScreenMode = oData.messageFullScreenMode;
|
this.fullScreenMode = oData.messageFullScreenMode;
|
||||||
|
|
||||||
this.showFullInfo = ko.observable(false);
|
this.showFullInfo = ko.observable(false);
|
||||||
|
this.moreDropdownTrigger = ko.observable(false);
|
||||||
this.messageDomFocused = ko.observable(false).extend({'rateLimit': 0});
|
this.messageDomFocused = ko.observable(false).extend({'rateLimit': 0});
|
||||||
|
|
||||||
this.messageVisibility = ko.computed(function () {
|
this.messageVisibility = ko.computed(function () {
|
||||||
|
|
@ -360,6 +361,13 @@ MailBoxMessageViewViewModel.prototype.onBuild = function (oDom)
|
||||||
this.messageDomFocused(!!bValue);
|
this.messageDomFocused(!!bValue);
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
|
this.messageDomFocused.subscribe(function (bValue) {
|
||||||
|
if (!bValue && Enums.KeyState.MessageView === this.keyScope())
|
||||||
|
{
|
||||||
|
this.message.focused(false);
|
||||||
|
}
|
||||||
|
}, this);
|
||||||
|
|
||||||
this.keyScope.subscribe(function (sValue) {
|
this.keyScope.subscribe(function (sValue) {
|
||||||
if (Enums.KeyState.MessageView === sValue && this.message.focused())
|
if (Enums.KeyState.MessageView === sValue && this.message.focused())
|
||||||
{
|
{
|
||||||
|
|
@ -384,10 +392,14 @@ MailBoxMessageViewViewModel.prototype.escShortcuts = function ()
|
||||||
{
|
{
|
||||||
this.fullScreenMode(false);
|
this.fullScreenMode(false);
|
||||||
}
|
}
|
||||||
else
|
else if (Enums.Layout.NoPreview === RL.data().layout())
|
||||||
{
|
{
|
||||||
this.message(null);
|
this.message(null);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.message.focused(false);
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -412,6 +424,14 @@ MailBoxMessageViewViewModel.prototype.initShortcuts = function ()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
key('x', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||||
|
if (oData.useKeyboardShortcuts())
|
||||||
|
{
|
||||||
|
self.moreDropdownTrigger(true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// reply
|
// reply
|
||||||
key('r', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
key('r', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||||
if (oData.useKeyboardShortcuts() && oData.message())
|
if (oData.useKeyboardShortcuts() && oData.message())
|
||||||
|
|
@ -440,13 +460,13 @@ MailBoxMessageViewViewModel.prototype.initShortcuts = function ()
|
||||||
});
|
});
|
||||||
|
|
||||||
// message information
|
// message information
|
||||||
key('i', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
// key('i', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||||
if (oData.useKeyboardShortcuts())
|
// if (oData.useKeyboardShortcuts())
|
||||||
{
|
// {
|
||||||
self.showFullInfo(!self.showFullInfo());
|
// self.showFullInfo(!self.showFullInfo());
|
||||||
return false;
|
// return false;
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
|
||||||
// toggle message blockquotes
|
// toggle message blockquotes
|
||||||
key('b', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
key('b', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,17 @@ function SettingsPaneViewModel()
|
||||||
|
|
||||||
Utils.extendAsViewModel('SettingsPaneViewModel', SettingsPaneViewModel);
|
Utils.extendAsViewModel('SettingsPaneViewModel', SettingsPaneViewModel);
|
||||||
|
|
||||||
|
SettingsPaneViewModel.prototype.onBuild = function ()
|
||||||
|
{
|
||||||
|
var self = this;
|
||||||
|
key('esc', Enums.KeyState.Settings, function () {
|
||||||
|
if (RL.data().useKeyboardShortcuts())
|
||||||
|
{
|
||||||
|
self.backToMailBoxClick();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
SettingsPaneViewModel.prototype.onShow = function ()
|
SettingsPaneViewModel.prototype.onShow = function ()
|
||||||
{
|
{
|
||||||
RL.data().message(null);
|
RL.data().message(null);
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
@dropdown-menu-background-color: #fff;
|
@dropdown-menu-background-color: #fff;
|
||||||
@dropdown-menu-hover-background-color: #48525C;
|
@dropdown-menu-hover-background-color: #48525C;
|
||||||
@dropdown-menu-hover-color: #eee;
|
@dropdown-menu-hover-color: #eee;
|
||||||
@dropdown-menu-disable-color: #999;
|
@dropdown-menu-disabled-color: #999;
|
||||||
|
|
||||||
// FOLDERS
|
// FOLDERS
|
||||||
@folders-color: #fff;
|
@folders-color: #fff;
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
@dropdown-menu-background-color: #fff;
|
@dropdown-menu-background-color: #fff;
|
||||||
@dropdown-menu-hover-background-color: #757575;
|
@dropdown-menu-hover-background-color: #757575;
|
||||||
@dropdown-menu-hover-color: #eee;
|
@dropdown-menu-hover-color: #eee;
|
||||||
@dropdown-menu-disable-color: #999;
|
@dropdown-menu-disabled-color: #999;
|
||||||
|
|
||||||
// FOLDERS
|
// FOLDERS
|
||||||
@folders-color: #000;
|
@folders-color: #000;
|
||||||
|
|
|
||||||
|
|
@ -98,12 +98,12 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.g-ui-menu .e-item.disable > .e-link, .g-ui-menu .e-item.disable > .e-link:hover {
|
.g-ui-menu .e-item.disabled > .e-link, .g-ui-menu .e-item.disabled > .e-link:hover {
|
||||||
color: @dropdown-menu-disable-color !important;
|
color: @dropdown-menu-disabled-color !important;
|
||||||
background-color: @dropdown-menu-background-color !important;
|
background-color: @dropdown-menu-background-color !important;
|
||||||
|
|
||||||
> i {
|
> i {
|
||||||
color: @dropdown-menu-disable-color !important;
|
color: @dropdown-menu-disabled-color !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
@dropdown-menu-background-color: #fff;
|
@dropdown-menu-background-color: #fff;
|
||||||
@dropdown-menu-hover-background-color: #444;
|
@dropdown-menu-hover-background-color: #444;
|
||||||
@dropdown-menu-hover-color: #eee;
|
@dropdown-menu-hover-color: #eee;
|
||||||
@dropdown-menu-disable-color: #999;
|
@dropdown-menu-disabled-color: #999;
|
||||||
@dropdown-menu-selected-background-color: #eee;
|
@dropdown-menu-selected-background-color: #eee;
|
||||||
|
|
||||||
// FOLDERS
|
// FOLDERS
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span class="disable-domain" data-bind="click: function (oDomain) { $root.disableDomain(oDomain); }">
|
<span class="disabled-domain" data-bind="click: function (oDomain) { $root.disableDomain(oDomain); }">
|
||||||
<i data-bind="css: {'icon-checkbox-checked': !disabled(), 'icon-checkbox-unchecked': disabled}"></i>
|
<i data-bind="css: {'icon-checkbox-checked': !disabled(), 'icon-checkbox-unchecked': disabled}"></i>
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<span class="plugin-name" data-bind="text: name"></span>
|
<span class="plugin-name" data-bind="text: name"></span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span class="disable-plugin">
|
<span class="disabled-plugin">
|
||||||
<i data-bind="css: {'e-action icon-checkbox-checked': !disabled(), 'e-action icon-checkbox-unchecked': disabled}"></i>
|
<i data-bind="css: {'e-action icon-checkbox-checked': !disabled(), 'e-action icon-checkbox-unchecked': disabled}"></i>
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
<div class="b-folders g-ui-user-select-none thm-folders">
|
<div class="b-folders g-ui-user-select-none thm-folders">
|
||||||
<div class="b-toolbar btn-toolbar">
|
<div class="b-toolbar btn-toolbar">
|
||||||
<a class="btn buttonCompose" data-placement="bottom" data-bind="click: composeClick, tooltip: 'FOLDER_LIST/BUTTON_COMPOSE'">
|
<a class="btn buttonCompose" data-tooltip-placement="bottom" data-bind="click: composeClick, tooltip: 'FOLDER_LIST/BUTTON_COMPOSE'">
|
||||||
<i class="icon-paper-plane"></i>
|
<i class="icon-paper-plane"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="btn buttonContacts" data-placement="bottom" data-bind="visible: allowContacts, click: contactsClick, tooltip: 'FOLDER_LIST/BUTTON_CONTACTS'">
|
<a class="btn buttonContacts" data-tooltip-placement="bottom" data-bind="visible: allowContacts, click: contactsClick, tooltip: 'FOLDER_LIST/BUTTON_CONTACTS'">
|
||||||
<i class="icon-address-book"></i>
|
<i class="icon-address-book"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -4,95 +4,95 @@
|
||||||
<div class="toolbar">
|
<div class="toolbar">
|
||||||
<div class="btn-toolbar">
|
<div class="btn-toolbar">
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<a class="btn buttonReload" data-placement="bottom" data-bind="command: reloadCommand, tooltip: 'MESSAGE_LIST/BUTTON_RELOAD'">
|
<a class="btn buttonReload" data-tooltip-placement="bottom" data-bind="command: reloadCommand, tooltip: 'MESSAGE_LIST/BUTTON_RELOAD'">
|
||||||
<i class="icon-spinner" data-bind="css: {'animated': messageListCompleteLoadingThrottle}"></i>
|
<i class="icon-spinner" data-bind="css: {'animated': messageListCompleteLoadingThrottle}"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group"> </div>
|
<div class="btn-group"> </div>
|
||||||
<div class="btn-group">
|
<div class="btn-group dropdown" data-bind="dropdownOpenStatus: true, openDropdownTrigger: moveDropdownTrigger">
|
||||||
<a class="btn dropdown-toggle buttonMove" data-toggle="dropdown" data-placement="bottom" data-bind="command: moveCommand, tooltip: 'MESSAGE_LIST/BUTTON_MOVE_TO'">
|
<a id="move-dropdown-id" href="#" tabindex="-1" class="btn dropdown-toggle buttonMove" data-toggle="dropdown" data-tooltip-placement="bottom" data-bind="command: moveCommand, tooltip: 'MESSAGE_LIST/BUTTON_MOVE_TO'">
|
||||||
<i class="icon-folder"></i>
|
<i class="icon-folder"></i>
|
||||||
|
|
||||||
<span class="caret"></span>
|
<span class="caret"></span>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu g-ui-menu" role="menu" data-bind="foreach: folderMenuForMove">
|
<ul class="dropdown-menu g-ui-menu" role="menu" aria-labelledby="move-dropdown-id" role="menu" data-bind="foreach: folderMenuForMove">
|
||||||
<li class="e-item" data-bind="css: { 'disable': disable }, click: function () { if (!disable) $root.moveSelectedMessagesToFolder(id); }">
|
<li class="e-item" role="presentation" data-bind="css: { 'disabled': disabled }, click: function () { if (!disabled) $root.moveSelectedMessagesToFolder(id); }">
|
||||||
<a class="e-link" data-bind="text: name"></a>
|
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="text: name"></a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group"> </div>
|
<div class="btn-group"> </div>
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<a class="btn btn-dark-disabled-border button-archive" data-placement="bottom" data-bind="visible: !isArchiveFolder() && !isArchiveDisabled() && !isDraftFolder(), command: archiveCommand, tooltip: 'MESSAGE_LIST/BUTTON_ARCHIVE'">
|
<a class="btn btn-dark-disabled-border button-archive" data-tooltip-placement="bottom" data-bind="visible: !isArchiveFolder() && !isArchiveDisabled() && !isDraftFolder(), command: archiveCommand, tooltip: 'MESSAGE_LIST/BUTTON_ARCHIVE'">
|
||||||
<i class="icon-archive"></i>
|
<i class="icon-archive"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-dark-disabled-border button-spam" data-placement="bottom" data-bind="visible: !isSpamFolder() && !isSpamDisabled() && !isDraftFolder() && !isSentFolder(), command: spamCommand, tooltip: 'MESSAGE_LIST/BUTTON_SPAM'">
|
<a class="btn btn-dark-disabled-border button-spam" data-tooltip-placement="bottom" data-bind="visible: !isSpamFolder() && !isSpamDisabled() && !isDraftFolder() && !isSentFolder(), command: spamCommand, tooltip: 'MESSAGE_LIST/BUTTON_SPAM'">
|
||||||
<i class="icon-bug"></i>
|
<i class="icon-bug"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-dark-disabled-border button-delete" data-placement="bottom" data-bind="command: deleteCommand, tooltip: 'MESSAGE_LIST/BUTTON_DELETE'">
|
<a class="btn btn-dark-disabled-border button-delete" data-tooltip-placement="bottom" data-bind="command: deleteCommand, tooltip: 'MESSAGE_LIST/BUTTON_DELETE'">
|
||||||
<i class="icon-trash"></i>
|
<i class="icon-trash"></i>
|
||||||
<span data-bind="text: printableMessageCountForDeletion()"></span>
|
<span data-bind="text: printableMessageCountForDeletion()"></span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group"> </div>
|
<div class="btn-group"> </div>
|
||||||
<div class="btn-group">
|
<div class="btn-group dropdown" data-bind="dropdownOpenStatus: true, openDropdownTrigger: moreDropdownTrigger">
|
||||||
<a class="btn dropdown-toggle buttonMore" data-toggle="dropdown" data-placement="bottom" data-bind="tooltip: 'MESSAGE_LIST/BUTTON_MORE'">
|
<a class="btn dropdown-toggle buttonMore" href="#" tabindex="-1" data-toggle="dropdown" data-tooltip-placement="bottom" data-bind="tooltip: 'MESSAGE_LIST/BUTTON_MORE'">
|
||||||
<i class="icon-list"></i>
|
<i class="icon-list"></i>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu g-ui-menu" role="menu">
|
<ul class="dropdown-menu g-ui-menu" role="menu">
|
||||||
<li class="e-item" data-bind="click: listUnsetSeen, css: {'disable': !hasCheckedOrSelectedLines()}">
|
<li class="e-item" role="presentation" data-bind="click: listUnsetSeen, css: {'disabled': !hasCheckedOrSelectedLines()}">
|
||||||
<a class="e-link">
|
<a class="e-link menuitem" href="#" tabindex="-1">
|
||||||
<i class="icon-none"></i>
|
<i class="icon-none"></i>
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/MENU_UNSET_SEEN"></span>
|
<span class="i18n" data-i18n-text="MESSAGE_LIST/MENU_UNSET_SEEN"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="e-item" data-bind="click: listSetSeen, css: {'disable': !hasCheckedOrSelectedLines()}">
|
<li class="e-item" role="presentation" data-bind="click: listSetSeen, css: {'disabled': !hasCheckedOrSelectedLines()}">
|
||||||
<a class="e-link">
|
<a class="e-link menuitem" href="#" tabindex="-1">
|
||||||
<i class="icon-none"></i>
|
<i class="icon-none"></i>
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/MENU_SET_SEEN"></span>
|
<span class="i18n" data-i18n-text="MESSAGE_LIST/MENU_SET_SEEN"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="e-item" data-bind="click: listSetFlags, css: {'disable': !hasCheckedOrSelectedLines()}">
|
<li class="e-item" role="presentation" data-bind="click: listSetFlags, css: {'disabled': !hasCheckedOrSelectedLines()}">
|
||||||
<a class="e-link">
|
<a class="e-link menuitem" href="#" tabindex="-1">
|
||||||
<i class="icon-none"></i>
|
<i class="icon-none"></i>
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/MENU_SET_FLAG"></span>
|
<span class="i18n" data-i18n-text="MESSAGE_LIST/MENU_SET_FLAG"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="e-item" data-bind="click: listUnsetFlags, css: {'disable': !hasCheckedOrSelectedLines()}">
|
<li class="e-item" role="presentation" data-bind="click: listUnsetFlags, css: {'disabled': !hasCheckedOrSelectedLines()}">
|
||||||
<a class="e-link">
|
<a class="e-link menuitem" href="#" tabindex="-1">
|
||||||
<i class="icon-none"></i>
|
<i class="icon-none"></i>
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/MENU_UNSET_FLAG"></span>
|
<span class="i18n" data-i18n-text="MESSAGE_LIST/MENU_UNSET_FLAG"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="e-item" data-bind="click: listSetAllSeen, css: {'disable': !hasMessages()}">
|
<li class="e-item" role="presentation" data-bind="click: listSetAllSeen, css: {'disabled': !hasMessages()}">
|
||||||
<a class="e-link">
|
<a class="e-link menuitem" href="#" tabindex="-1">
|
||||||
<i class="icon-none"></i>
|
<i class="icon-none"></i>
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/MENU_SET_ALL_SEEN"></span>
|
<span class="i18n" data-i18n-text="MESSAGE_LIST/MENU_SET_ALL_SEEN"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="divider"></li>
|
<li class="divider" role="presentation"></li>
|
||||||
<li class="e-item" data-bind="command: multyForwardCommand">
|
<li class="e-item" role="presentation" data-bind="command: multyForwardCommand">
|
||||||
<a class="e-link">
|
<a class="e-link menuitem" href="#" tabindex="-1">
|
||||||
<i class="icon-reply-all"></i>
|
<i class="icon-reply-all"></i>
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/BUTTON_MULTY_FORWARD"></span>
|
<span class="i18n" data-i18n-text="MESSAGE_LIST/BUTTON_MULTY_FORWARD"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="divider"></li>
|
<li class="divider" role="presentation"></li>
|
||||||
<li class="e-item" data-bind="command: deleteWithoutMoveCommand">
|
<li class="e-item" role="presentation" data-bind="command: deleteWithoutMoveCommand">
|
||||||
<a class="e-link">
|
<a class="e-link menuitem" href="#" tabindex="-1">
|
||||||
<i class="icon-trash"></i>
|
<i class="icon-trash"></i>
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/BUTTON_DELETE_WITHOUT_MOVE"></span>
|
<span class="i18n" data-i18n-text="MESSAGE_LIST/BUTTON_DELETE_WITHOUT_MOVE"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="e-item" data-bind="command: clearCommand">
|
<li class="e-item" role="presentation" data-bind="command: clearCommand">
|
||||||
<a class="e-link">
|
<a class="e-link menuitem" href="#" tabindex="-1">
|
||||||
<i class="icon-fire"></i>
|
<i class="icon-fire"></i>
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="MESSAGE_LIST/BUTTON_EMPTY_FOLDER"></span>
|
<span class="i18n" data-i18n-text="MESSAGE_LIST/BUTTON_EMPTY_FOLDER"></span>
|
||||||
|
|
@ -153,11 +153,6 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="mainDelimiter footerDelimiter"></div>
|
<div class="mainDelimiter footerDelimiter"></div>
|
||||||
<div class="b-footer thm-message-list-bottom-toolbar">
|
<div class="b-footer thm-message-list-bottom-toolbar">
|
||||||
<!--
|
|
||||||
<a class="btn buttonReload" data-placement="right" data-bind="command: reloadCommand, tooltip: 'MESSAGE_LIST/BUTTON_RELOAD'">
|
|
||||||
<i class="icon-spinner" data-bind="css: {'animated': messageListCompleteLoadingThrottle}"></i>
|
|
||||||
</a>
|
|
||||||
-->
|
|
||||||
<span data-bind="visible: 0 < userUsageProc(), tooltip2: quotaTooltip" class="e-quota">
|
<span data-bind="visible: 0 < userUsageProc(), tooltip2: quotaTooltip" class="e-quota">
|
||||||
<span data-bind="text: userUsageProc"></span>%
|
<span data-bind="text: userUsageProc"></span>%
|
||||||
</span>
|
</span>
|
||||||
|
|
|
||||||
|
|
@ -2,107 +2,107 @@
|
||||||
<div class="messageView" data-bind="css: {'message-selected': isMessageSelected, 'message-focused': message.focused}">
|
<div class="messageView" data-bind="css: {'message-selected': isMessageSelected, 'message-focused': message.focused}">
|
||||||
<div class="toolbar g-ui-user-select-none">
|
<div class="toolbar g-ui-user-select-none">
|
||||||
<div class="messageButtons btn-toolbar">
|
<div class="messageButtons btn-toolbar">
|
||||||
<div class="btn-group" data-placement="bottom" data-bind="visible: !usePreviewPane(), tooltip: 'MESSAGE/BUTTON_CLOSE'">
|
<div class="btn-group" data-tooltip-placement="bottom" data-bind="visible: !usePreviewPane(), tooltip: 'MESSAGE/BUTTON_CLOSE'">
|
||||||
<a class="btn buttonClose" data-bind="command: closeMessage">
|
<a class="btn buttonClose" data-bind="command: closeMessage">
|
||||||
<i class="icon-remove"></i>
|
<i class="icon-remove"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group"> </div>
|
<div class="btn-group"> </div>
|
||||||
<div class="btn-group" data-placement="bottom" data-bind="visible: isDraftFolder(), tooltip: 'MESSAGE/BUTTON_EDIT'">
|
<div class="btn-group" data-tooltip-placement="bottom" data-bind="visible: isDraftFolder(), tooltip: 'MESSAGE/BUTTON_EDIT'">
|
||||||
<a class="btn btn-success buttonEdit" data-bind="command: messageEditCommand">
|
<a class="btn btn-success buttonEdit" data-bind="command: messageEditCommand">
|
||||||
<i class="icon-pencil icon-white"></i>
|
<i class="icon-pencil icon-white"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group" data-bind="visible: !isDraftFolder()">
|
<div class="btn-group" data-bind="visible: !isDraftFolder()">
|
||||||
<a class="btn btn-dark-disabled-border buttonReply" data-placement="bottom" data-bind="command: replyCommand, tooltip: 'MESSAGE/BUTTON_REPLY'">
|
<a class="btn btn-dark-disabled-border buttonReply" data-tooltip-placement="bottom" data-bind="command: replyCommand, tooltip: 'MESSAGE/BUTTON_REPLY'">
|
||||||
<i class="icon-reply"></i>
|
<i class="icon-reply"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-dark-disabled-border buttonReplyAll" data-placement="bottom" data-bind="command: replyAllCommand, tooltip: 'MESSAGE/BUTTON_REPLY_ALL'">
|
<a class="btn btn-dark-disabled-border buttonReplyAll" data-tooltip-placement="bottom" data-bind="command: replyAllCommand, tooltip: 'MESSAGE/BUTTON_REPLY_ALL'">
|
||||||
<i class="icon-reply-all"></i>
|
<i class="icon-reply-all"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-dark-disabled-border buttonForward" data-placement="bottom" data-bind=" command: forwardCommand, tooltip: 'MESSAGE/BUTTON_FORWARD'">
|
<a class="btn btn-dark-disabled-border buttonForward" data-tooltip-placement="bottom" data-bind=" command: forwardCommand, tooltip: 'MESSAGE/BUTTON_FORWARD'">
|
||||||
<i class="icon-forward"></i>
|
<i class="icon-forward"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group" data-bind="visible: !usePreviewPane()"> </div>
|
<div class="btn-group" data-bind="visible: !usePreviewPane()"> </div>
|
||||||
<div class="btn-group" data-bind="visible: !usePreviewPane()">
|
<div class="btn-group" data-bind="visible: !usePreviewPane()">
|
||||||
<a class="btn btn-dark-disabled-border button-archive" data-placement="bottom" data-bind="visible: !isDraftFolder() && !isArchiveFolder() && !isArchiveDisabled(), command: archiveCommand, tooltip: 'MESSAGE/BUTTON_ARCHIVE'">
|
<a class="btn btn-dark-disabled-border button-archive" data-tooltip-placement="bottom" data-bind="visible: !isDraftFolder() && !isArchiveFolder() && !isArchiveDisabled(), command: archiveCommand, tooltip: 'MESSAGE/BUTTON_ARCHIVE'">
|
||||||
<i class="icon-archive"></i>
|
<i class="icon-archive"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-dark-disabled-border button-spam" data-placement="bottom" data-bind="visible: !isDraftFolder() && !isSentFolder() && !isSpamFolder() && !isSpamDisabled(), command: spamCommand, tooltip: 'MESSAGE/BUTTON_SPAM'">
|
<a class="btn btn-dark-disabled-border button-spam" data-tooltip-placement="bottom" data-bind="visible: !isDraftFolder() && !isSentFolder() && !isSpamFolder() && !isSpamDisabled(), command: spamCommand, tooltip: 'MESSAGE/BUTTON_SPAM'">
|
||||||
<i class="icon-bug"></i>
|
<i class="icon-bug"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-dark-disabled-border button-delete" data-placement="bottom" data-bind="command: deleteCommand, tooltip: 'MESSAGE/BUTTON_DELETE'">
|
<a class="btn btn-dark-disabled-border button-delete" data-tooltip-placement="bottom" data-bind="command: deleteCommand, tooltip: 'MESSAGE/BUTTON_DELETE'">
|
||||||
<i class="icon-trash"></i>
|
<i class="icon-trash"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group"> </div>
|
<div class="btn-group"> </div>
|
||||||
<div class="btn-group">
|
<div class="btn-group dropdown" data-bind="dropdownOpenStatus: true, openDropdownTrigger: moreDropdownTrigger"">
|
||||||
<a class="btn dropdown-toggle buttonMore" data-placement="bottom" data-toggle="dropdown" data-bind="command: messageVisibilityCommand, tooltip: 'MESSAGE/BUTTON_MORE'">
|
<a class="btn dropdown-toggle buttonMore" href="#" tabindex="-1" data-toggle="dropdown" data-tooltip-placement="bottom" data-bind="command: messageVisibilityCommand, tooltip: 'MESSAGE/BUTTON_MORE'">
|
||||||
<i class="icon-list"></i>
|
<i class="icon-list"></i>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu g-ui-menu" role="menu">
|
<ul class="dropdown-menu g-ui-menu" role="menu">
|
||||||
<li class="e-item" data-bind="visible: !isDraftFolder()">
|
<li class="e-item" role="presentation" data-bind="visible: !isDraftFolder()">
|
||||||
<a class="e-link" data-bind="command: forwardAsAttachmentCommand">
|
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="command: forwardAsAttachmentCommand">
|
||||||
<i class="icon-reply"></i>
|
<i class="icon-reply"></i>
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_FORWARD_AS_ATTACHMENT"></span>
|
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_FORWARD_AS_ATTACHMENT"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="e-item" data-bind="visible: !isDraftFolder()">
|
<li class="e-item" role="presentation" data-bind="visible: !isDraftFolder()">
|
||||||
<a class="e-link" data-bind="command: editAsNewCommand">
|
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="command: editAsNewCommand">
|
||||||
<i class="icon-pencil"></i>
|
<i class="icon-pencil"></i>
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_EDIT_AS_NEW"></span>
|
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_EDIT_AS_NEW"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="divider" data-bind="visible: !isDraftFolder()"></li>
|
<li class="divider" role="presentation" data-bind="visible: !isDraftFolder()"></li>
|
||||||
<li class="e-item" data-bind="visible: usePreviewPane() && !isDraftFolder() && !isArchiveFolder() && !isArchiveDisabled()">
|
<li class="e-item" role="presentation" data-bind="visible: usePreviewPane() && !isDraftFolder() && !isArchiveFolder() && !isArchiveDisabled()">
|
||||||
<a target="_blank" class="e-link" data-bind="command: archiveCommand">
|
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="command: archiveCommand">
|
||||||
<i class="icon-archive"></i>
|
<i class="icon-archive"></i>
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_ARCHIVE"></span>
|
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_ARCHIVE"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="e-item" data-bind="visible: usePreviewPane() && !isDraftFolder() && !isSentFolder() && !isSpamFolder() && !isSpamDisabled()">
|
<li class="e-item" role="presentation" data-bind="visible: usePreviewPane() && !isDraftFolder() && !isSentFolder() && !isSpamFolder() && !isSpamDisabled()">
|
||||||
<a target="_blank" class="e-link" data-bind="command: spamCommand">
|
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="command: spamCommand">
|
||||||
<i class="icon-bug"></i>
|
<i class="icon-bug"></i>
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_SPAM"></span>
|
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_SPAM"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="e-item" data-bind="visible: usePreviewPane()">
|
<li class="e-item" role="presentation" data-bind="visible: usePreviewPane()">
|
||||||
<a target="_blank" class="e-link" data-bind="command: deleteCommand">
|
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="command: deleteCommand">
|
||||||
<i class="icon-trash"></i>
|
<i class="icon-trash"></i>
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_DELETE"></span>
|
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_DELETE"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="divider" data-bind="visible: usePreviewPane()"></li>
|
<li class="divider" role="presentation" data-bind="visible: usePreviewPane()"></li>
|
||||||
<li class="e-item">
|
<li class="e-item" role="presentation">
|
||||||
<a target="_blank" class="e-link" data-bind="click: function () { if (message()) { message().printMessage(); }} ">
|
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="click: function () { if (message()) { message().printMessage(); }} ">
|
||||||
<i class="icon-print"></i>
|
<i class="icon-print"></i>
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="MESSAGE/MENU_PRINT"></span>
|
<span class="i18n" data-i18n-text="MESSAGE/MENU_PRINT"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="e-item">
|
<li class="e-item" role="presentation">
|
||||||
<a target="_blank" class="e-link" data-bind="click: function () { if (message()) { message().viewPopupMessage(); }}">
|
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="click: function () { if (message()) { message().viewPopupMessage(); }}">
|
||||||
<i class="icon-popup"></i>
|
<i class="icon-popup"></i>
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_IN_NEW_WINDOW"></span>
|
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_IN_NEW_WINDOW"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="divider"></li>
|
<li class="divider" role="presentation"></li>
|
||||||
<li class="e-item">
|
<li class="e-item" role="presentation">
|
||||||
<a target="_blank" class="e-link" data-bind="link: viewViewLink()">
|
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="link: viewViewLink()">
|
||||||
<i class="icon-file-code"></i>
|
<i class="icon-file-code"></i>
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="MESSAGE/MENU_VIEW_ORIGINAL"></span>
|
<span class="i18n" data-i18n-text="MESSAGE/MENU_VIEW_ORIGINAL"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="e-item">
|
<li class="e-item" role="presentation">
|
||||||
<a target="_blank" class="e-link" data-bind="link: viewDownloadLink()">
|
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="link: viewDownloadLink()">
|
||||||
<i class="icon-download"></i>
|
<i class="icon-download"></i>
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="MESSAGE/MENU_DOWNLOAD_ORIGINAL"></span>
|
<span class="i18n" data-i18n-text="MESSAGE/MENU_DOWNLOAD_ORIGINAL"></span>
|
||||||
|
|
|
||||||
|
|
@ -31,13 +31,13 @@
|
||||||
<div class="dropdown pull-left">
|
<div class="dropdown pull-left">
|
||||||
<span class="dropdown-toggle g-ui-dropdown e-identity"
|
<span class="dropdown-toggle g-ui-dropdown e-identity"
|
||||||
id="IdentityLabel" role="button" data-toggle="dropdown"
|
id="IdentityLabel" role="button" data-toggle="dropdown"
|
||||||
data-bind="text: currentIdentityString, dropdown: true, css: {'multiply': 1 < identitiesOptions().length }">
|
data-bind="text: currentIdentityString, dropdownCloser: true, css: {'multiply': 1 < identitiesOptions().length }">
|
||||||
</span>
|
</span>
|
||||||
<!-- ko if: 1 < identitiesOptions().length -->
|
<!-- ko if: 1 < identitiesOptions().length -->
|
||||||
<ul class="dropdown-menu g-ui-menu" role="menu" aria-labelledby="IdentityLabel">
|
<ul class="dropdown-menu g-ui-menu" role="menu" aria-labelledby="IdentityLabel">
|
||||||
<!-- ko foreach: identitiesOptions -->
|
<!-- ko foreach: identitiesOptions -->
|
||||||
<li class="e-item">
|
<li class="e-item">
|
||||||
<a class="e-link" data-bind="click: function (oIdentity) { $root.selectIdentity(oIdentity); return true; }">
|
<a class="e-link" tabindex="-1" href="#" data-bind="click: function (oIdentity) { $root.selectIdentity(oIdentity); return true; }">
|
||||||
<span data-bind="text: optText"></span>
|
<span data-bind="text: optText"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
@ -108,7 +108,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<div class="btn-group pull-right">
|
<div class="btn-group pull-right">
|
||||||
<a class="btn dropdown-toggle buttonMore" data-placement="bottom" data-toggle="dropdown">
|
<a class="btn dropdown-toggle buttonMore" data-toggle="dropdown">
|
||||||
<i class="icon-list"></i>
|
<i class="icon-list"></i>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu g-ui-menu" role="menu">
|
<ul class="dropdown-menu g-ui-menu" role="menu">
|
||||||
|
|
@ -120,7 +120,7 @@
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="divider"></li>
|
<li class="divider"></li>
|
||||||
<li class="e-item" data-bind="visible: allowOpenPGP, click: openOpenPgpPopup, css: {'disable': isHtml()}">
|
<li class="e-item" data-bind="visible: allowOpenPGP, click: openOpenPgpPopup, css: {'disabled': isHtml()}">
|
||||||
<a class="e-link">
|
<a class="e-link">
|
||||||
<i class="icon-key"></i>
|
<i class="icon-key"></i>
|
||||||
|
|
||||||
|
|
@ -131,13 +131,13 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group pull-right"> </div>
|
<div class="btn-group pull-right"> </div>
|
||||||
<div class="btn-group pull-right">
|
<div class="btn-group pull-right">
|
||||||
<a class="btn" data-placement="top" data-bind="visible: addAttachmentEnabled(), initDom: composeUploaderButton, tooltip: 'COMPOSE/ATTACH_FILES'">
|
<a class="btn" data-tooltip-placement="top" data-bind="visible: addAttachmentEnabled(), initDom: composeUploaderButton, tooltip: 'COMPOSE/ATTACH_FILES'">
|
||||||
<i class="icon-attachment"></i>
|
<i class="icon-attachment"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="btn" data-placement="top" data-bind="visible: dropboxEnabled, command: dropboxCommand, tooltip: 'COMPOSE/DROPBOX'">
|
<a class="btn" data-tooltip-placement="top" data-bind="visible: dropboxEnabled, command: dropboxCommand, tooltip: 'COMPOSE/DROPBOX'">
|
||||||
<i class="icon-dropbox"></i>
|
<i class="icon-dropbox"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="btn" data-placement="top" data-bind="visible: driveEnabled, command: driveCommand, tooltip: 'COMPOSE/GOOGLE_DRIVE'">
|
<a class="btn" data-tooltip-placement="top" data-bind="visible: driveEnabled, command: driveCommand, tooltip: 'COMPOSE/GOOGLE_DRIVE'">
|
||||||
<i class="icon-google-drive"></i>
|
<i class="icon-google-drive"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -109,7 +109,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="control-group" data-bind="visible: !viewReadOnly() || 0 < viewPropertiesEmails().length">
|
<div class="control-group" data-bind="visible: !viewReadOnly() || 0 < viewPropertiesEmails().length">
|
||||||
<label class="control-label remove-padding-top fix-width">
|
<label class="control-label remove-padding-top fix-width">
|
||||||
<i class="icon-at iconsize24" data-placement="left" data-bind="tooltip: 'CONTACTS/LABEL_EMAIL'"></i>
|
<i class="icon-at iconsize24" data-tooltip-placement="left" data-bind="tooltip: 'CONTACTS/LABEL_EMAIL'"></i>
|
||||||
</label>
|
</label>
|
||||||
<div class="controls fix-width">
|
<div class="controls fix-width">
|
||||||
<div data-bind="foreach: viewPropertiesEmails">
|
<div data-bind="foreach: viewPropertiesEmails">
|
||||||
|
|
@ -123,7 +123,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="control-group" data-bind="visible: !viewReadOnly() || 0 < viewPropertiesPhones().length">
|
<div class="control-group" data-bind="visible: !viewReadOnly() || 0 < viewPropertiesPhones().length">
|
||||||
<label class="control-label remove-padding-top fix-width">
|
<label class="control-label remove-padding-top fix-width">
|
||||||
<i class="icon-telephone iconsize24" data-placement="left" data-bind="tooltip: 'CONTACTS/LABEL_PHONE'"></i>
|
<i class="icon-telephone iconsize24" data-tooltip-placement="left" data-bind="tooltip: 'CONTACTS/LABEL_PHONE'"></i>
|
||||||
</label>
|
</label>
|
||||||
<div class="controls fix-width">
|
<div class="controls fix-width">
|
||||||
<div data-bind="foreach: viewPropertiesPhones">
|
<div data-bind="foreach: viewPropertiesPhones">
|
||||||
|
|
@ -144,12 +144,12 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="e-read-only-sign">
|
<div class="e-read-only-sign">
|
||||||
<i class="icon-lock iconsize24" data-placement="left" data-bind="tooltip: 'CONTACTS/LABEL_READ_ONLY'"></i>
|
<i class="icon-lock iconsize24" data-tooltip-placement="left" data-bind="tooltip: 'CONTACTS/LABEL_READ_ONLY'"></i>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="e-share-sign" data-bind="visible: contactsSharingIsAllowed">
|
<div class="e-share-sign" data-bind="visible: contactsSharingIsAllowed">
|
||||||
<div class="btn-group pull-right">
|
<div class="btn-group pull-right">
|
||||||
<a class="btn dropdown-toggle" data-placement="left" data-toggle="dropdown" data-bind="tooltip: 'CONTACTS/LABEL_SHARE'">
|
<a class="btn dropdown-toggle" data-tooltip-placement="left" data-toggle="dropdown" data-bind="tooltip: 'CONTACTS/LABEL_SHARE'">
|
||||||
<i data-bind="css: shareIcon"></i>
|
<i data-bind="css: shareIcon"></i>
|
||||||
|
|
||||||
<span class="caret"></span>
|
<span class="caret"></span>
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,58 @@
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<br />
|
<div class="row" style="margin-left: 0">
|
||||||
Coming soon!
|
<div class="span6">
|
||||||
<br />
|
|
||||||
<br />
|
<table class="table table-condensed table-striped">
|
||||||
<br />
|
<thead><tr><th>Mailbox</th></tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr><td>Open user dropdown</td><td>`</td></tr>
|
||||||
|
<tr><td>Compose popup</td><td>W, C</td></tr>
|
||||||
|
<tr><td>Open message list more dropdown</td><td>Z</td></tr>
|
||||||
|
<tr><td>Open message view more dropdown</td><td>X</td></tr>
|
||||||
|
<tr><td>Help</td><td>?, Shift + /</td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table class="table table-condensed table-striped">
|
||||||
|
<thead><tr><th>Message view (focused)</th></tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr><td>Toggle fullscreen mode</td><td>Enter</td></tr>
|
||||||
|
<tr><td>Toggle message blockquotes</td><td>B</td></tr>
|
||||||
|
<tr><td>Print</td><td>Ctrl + P, Command + P</td></tr>
|
||||||
|
<tr><td>Exit fullscreen mode</td><td>Esc</td></tr>
|
||||||
|
<tr><td>Close message (No preview pane layout)</td><td>Esc</td></tr>
|
||||||
|
<tr><td>Switch focus back to message list</td><td>Tab, Shift + Tab</td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="span6">
|
||||||
|
|
||||||
|
<table class="table table-condensed table-striped">
|
||||||
|
<thead><tr><th>Message list</th></tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr><td>Check All</td><td>Ctrl + A, Command + A</td></tr>
|
||||||
|
<tr><td>Delete selected messages</td><td>Delete, Shift + delete</td></tr>
|
||||||
|
<tr><td>Reply selected message</td><td>R</td></tr>
|
||||||
|
<tr><td>Reply All selected message</td><td>A</td></tr>
|
||||||
|
<tr><td>Froward selected message</td><td>F</td></tr>
|
||||||
|
<tr><td>Froward (multiply) selected messages</td><td>Shift + F</td></tr>
|
||||||
|
<tr><td>Move selected messages</td><td>M</td></tr>
|
||||||
|
<tr><td>Read selected messages</td><td>R</td></tr>
|
||||||
|
<tr><td>UnRead selected messages</td><td>U</td></tr>
|
||||||
|
<tr><td>Important, star/flag selected messages</td><td>I</td></tr>
|
||||||
|
<tr><td>Search</td><td>/</td></tr>
|
||||||
|
<tr><td>Cancel search</td><td>Esc</td></tr>
|
||||||
|
<tr><td>View message (No preview pane layout)</td><td>Enter</td></tr>
|
||||||
|
<tr><td>Switch focus to selected message</td><td>Tab, Shift + Tab</td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,10 @@
|
||||||
<div class="btn-group pull-right">
|
<div class="btn-group pull-right">
|
||||||
|
|
||||||
</div>-->
|
</div>-->
|
||||||
<div class="btn-group pull-right">
|
<div class="btn-group pull-right dropdown" data-bind="dropdownOpenStatus: true, openDropdownTrigger: accountMenuDropdownTrigger">
|
||||||
<a id="top-system-dropdown-id" href="#" tabindex="-1" class="btn btn-ellipsis btn-block dropdown-toggle system-dropdown"
|
<a id="top-system-dropdown-id" href="#" tabindex="-1" class="btn btn-ellipsis btn-block dropdown-toggle system-dropdown"
|
||||||
data-placement="left" data-toggle="dropdown"
|
data-toggle="dropdown" data-tooltip-placement="left"
|
||||||
data-tooltip-class="tooltip-big" data-bind="tooltip2: emailTitle, hasfocus: accountMenuFocus">
|
data-tooltip-class="tooltip-big" data-bind="tooltip2: emailTitle">
|
||||||
|
|
||||||
<i data-bind="css: {'icon-user': !loading(), 'icon-spinner animated': loading()}"></i>
|
<i data-bind="css: {'icon-user': !loading(), 'icon-spinner animated': loading()}"></i>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1535,7 +1535,7 @@ table {
|
||||||
-moz-border-radius : 5px;
|
-moz-border-radius : 5px;
|
||||||
-webkit-border-radius : 5px;
|
-webkit-border-radius : 5px;
|
||||||
border-radius : 5px;
|
border-radius : 5px;
|
||||||
z-index: 10000;
|
z-index: 102;
|
||||||
margin : 2px;
|
margin : 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -5869,13 +5869,13 @@ html.no-rgba .modal {
|
||||||
background-image: none;
|
background-image: none;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
.g-ui-menu .e-item.disable > .e-link {
|
.g-ui-menu .e-item.disabled > .e-link {
|
||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
background-image: none;
|
background-image: none;
|
||||||
color: grey;
|
color: grey;
|
||||||
}
|
}
|
||||||
.g-ui-menu .e-item.disable [class^="icon-"] {
|
.g-ui-menu .e-item.disabled [class^="icon-"] {
|
||||||
color: grey;
|
color: grey;
|
||||||
}
|
}
|
||||||
.g-ui-table {
|
.g-ui-table {
|
||||||
|
|
@ -6417,6 +6417,9 @@ html.rl-no-preview-pane #rl-right .ui-resizable-handle {
|
||||||
.popups .b-ask-content .desc-place {
|
.popups .b-ask-content .desc-place {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
}
|
}
|
||||||
|
.popups .b-shortcuts-content.modal {
|
||||||
|
width: 1025px;
|
||||||
|
}
|
||||||
.popups .b-shortcuts-content .modal-header {
|
.popups .b-shortcuts-content .modal-header {
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
@ -7850,7 +7853,7 @@ html.rl-message-fullscreen .messageView .b-content .buttonFull {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
filter: alpha(opacity=100);
|
filter: alpha(opacity=100);
|
||||||
}
|
}
|
||||||
.b-compose .b-header-toolbar .btn.disable.button-delete {
|
.b-compose .b-header-toolbar .btn.disabled.button-delete {
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
.b-compose .b-header-toolbar .button-save,
|
.b-compose .b-header-toolbar .button-save,
|
||||||
|
|
@ -7858,7 +7861,7 @@ html.rl-message-fullscreen .messageView .b-content .buttonFull {
|
||||||
.b-compose .b-header-toolbar .saved-text {
|
.b-compose .b-header-toolbar .saved-text {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
.b-compose .b-header-toolbar .disable.button-delete {
|
.b-compose .b-header-toolbar .disabled.button-delete {
|
||||||
margin-left: 0px;
|
margin-left: 0px;
|
||||||
}
|
}
|
||||||
.b-compose .b-header {
|
.b-compose .b-header {
|
||||||
|
|
@ -8064,17 +8067,17 @@ html.rl-message-fullscreen .messageView .b-content .buttonFull {
|
||||||
filter: alpha(opacity=100);
|
filter: alpha(opacity=100);
|
||||||
}
|
}
|
||||||
.b-admin-domains-list-table .e-item .delete-domain,
|
.b-admin-domains-list-table .e-item .delete-domain,
|
||||||
.b-admin-domains-list-table .e-item .disable-domain {
|
.b-admin-domains-list-table .e-item .disabled-domain {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
filter: alpha(opacity=50);
|
filter: alpha(opacity=50);
|
||||||
}
|
}
|
||||||
.b-admin-domains-list-table .e-item.disabled .disable-domain {
|
.b-admin-domains-list-table .e-item.disabled .disabled-domain {
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
filter: alpha(opacity=50);
|
filter: alpha(opacity=50);
|
||||||
}
|
}
|
||||||
.b-admin-domains-list-table .e-item .delete-domain:hover,
|
.b-admin-domains-list-table .e-item .delete-domain:hover,
|
||||||
.b-admin-domains-list-table .e-item .disable-domain:hover {
|
.b-admin-domains-list-table .e-item .disabled-domain:hover {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
filter: alpha(opacity=100);
|
filter: alpha(opacity=100);
|
||||||
}
|
}
|
||||||
|
|
@ -8159,7 +8162,7 @@ html.rl-message-fullscreen .messageView .b-content .buttonFull {
|
||||||
.b-admin-plugins-list-table .e-item.disabled .plugin-name {
|
.b-admin-plugins-list-table .e-item.disabled .plugin-name {
|
||||||
color: #bbb;
|
color: #bbb;
|
||||||
}
|
}
|
||||||
.b-admin-plugins-list-table .e-item.disabled .disable-plugin {
|
.b-admin-plugins-list-table .e-item.disabled .disabled-plugin {
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
filter: alpha(opacity=50);
|
filter: alpha(opacity=50);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
2
rainloop/v/0.0.0/static/css/app.min.css
vendored
2
rainloop/v/0.0.0/static/css/app.min.css
vendored
File diff suppressed because one or more lines are too long
|
|
@ -88,6 +88,11 @@ Globals.now = (new Date()).getTime();
|
||||||
*/
|
*/
|
||||||
Globals.momentTrigger = ko.observable(true);
|
Globals.momentTrigger = ko.observable(true);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {?}
|
||||||
|
*/
|
||||||
|
Globals.dropdownVisibility = ko.observable(false);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {?}
|
* @type {?}
|
||||||
*/
|
*/
|
||||||
|
|
@ -377,6 +382,7 @@ Enums.KeyState = {
|
||||||
'MessageList': 'message-list',
|
'MessageList': 'message-list',
|
||||||
'MessageView': 'message-view',
|
'MessageView': 'message-view',
|
||||||
'Compose': 'compose',
|
'Compose': 'compose',
|
||||||
|
'Settings': 'settings',
|
||||||
'Menu': 'menu',
|
'Menu': 'menu',
|
||||||
'PopupComposeOpenPGP': 'compose-open-pgp',
|
'PopupComposeOpenPGP': 'compose-open-pgp',
|
||||||
'PopupAsk': 'popup-ask'
|
'PopupAsk': 'popup-ask'
|
||||||
|
|
@ -2087,10 +2093,10 @@ Utils.draggeblePlace = function ()
|
||||||
|
|
||||||
Utils.defautOptionsAfterRender = function (oOption, oItem)
|
Utils.defautOptionsAfterRender = function (oOption, oItem)
|
||||||
{
|
{
|
||||||
if (oItem && !Utils.isUnd(oItem.disable))
|
if (oItem && !Utils.isUnd(oItem.disabled))
|
||||||
{
|
{
|
||||||
ko.applyBindingsToNode(oOption, {
|
ko.applyBindingsToNode(oOption, {
|
||||||
'disable': oItem.disable
|
'disabled': oItem.disabled
|
||||||
}, oItem);
|
}, oItem);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -2685,7 +2691,54 @@ ko.bindingHandlers.tooltip2 = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
ko.bindingHandlers.dropdown = {
|
ko.__detectDropdownVisibility = _.debounce(function ($el) {
|
||||||
|
Globals.dropdownVisibility(!!$el.hasClass('open'));
|
||||||
|
}, 50);
|
||||||
|
|
||||||
|
ko.bindingHandlers.dropdownOpenStatus = {
|
||||||
|
'init': function (oElement) {
|
||||||
|
var $el = $(oElement);
|
||||||
|
|
||||||
|
$el.find('.dropdown-toggle').click(function () {
|
||||||
|
ko.__detectDropdownVisibility($el);
|
||||||
|
});
|
||||||
|
|
||||||
|
// $el.on('.dropdown-menu .menuitem', 'click', function () {
|
||||||
|
// $el.removeClass('open');
|
||||||
|
// ko.__detectDropdownVisibility($el);
|
||||||
|
// });
|
||||||
|
|
||||||
|
// $el.on('.dropdown-menu .menuitem', 'keydown', function (oEvent) {
|
||||||
|
// if (oEvent && Enums.EventKeyCode.Esc === oEvent.keyCode)
|
||||||
|
// {
|
||||||
|
// $el.removeClass('open');
|
||||||
|
// ko.__detectDropdownVisibility($el);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
|
||||||
|
$html.on('click.dropdown.data-api', function () {
|
||||||
|
ko.__detectDropdownVisibility($el);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
ko.bindingHandlers.openDropdownTrigger = {
|
||||||
|
'update': function (oElement, fValueAccessor) {
|
||||||
|
if (ko.utils.unwrapObservable(fValueAccessor()))
|
||||||
|
{
|
||||||
|
var $el = $(oElement);
|
||||||
|
if (!$el.hasClass('open'))
|
||||||
|
{
|
||||||
|
$el.find('.dropdown-toggle').dropdown('toggle');
|
||||||
|
ko.__detectDropdownVisibility($el);
|
||||||
|
}
|
||||||
|
|
||||||
|
fValueAccessor()(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
ko.bindingHandlers.dropdownCloser = {
|
||||||
'init': function (oElement) {
|
'init': function (oElement) {
|
||||||
$(oElement).closest('.dropdown').on('click', '.e-item', function () {
|
$(oElement).closest('.dropdown').on('click', '.e-item', function () {
|
||||||
$(oElement).dropdown('toggle');
|
$(oElement).dropdown('toggle');
|
||||||
|
|
@ -5853,7 +5906,7 @@ function AdminContacts()
|
||||||
return {
|
return {
|
||||||
'id': sValue,
|
'id': sValue,
|
||||||
'name': getTypeName(sValue) + (bDisabled ? ' (not supported)' : ''),
|
'name': getTypeName(sValue) + (bDisabled ? ' (not supported)' : ''),
|
||||||
'disable': bDisabled
|
'disabled': bDisabled
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -6366,7 +6419,7 @@ AdminPlugins.prototype.onBuild = function (oDom)
|
||||||
self.configurePlugin(oPlugin);
|
self.configurePlugin(oPlugin);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.on('click', '.e-item .disable-plugin', function () {
|
.on('click', '.e-item .disabled-plugin', function () {
|
||||||
var oPlugin = ko.dataFor(this);
|
var oPlugin = ko.dataFor(this);
|
||||||
if (oPlugin)
|
if (oPlugin)
|
||||||
{
|
{
|
||||||
|
|
@ -6570,9 +6623,18 @@ AdminLicensing.prototype.licenseExpiredMomentValue = function ()
|
||||||
*/
|
*/
|
||||||
function AbstractData()
|
function AbstractData()
|
||||||
{
|
{
|
||||||
this.keyScope = ko.observable(Enums.KeyState.All);
|
this.keyScopeReal = ko.observable(Enums.KeyState.All);
|
||||||
this.keyScope.subscribe(function (sValue) {
|
this.keyScopeFake = ko.observable(Enums.KeyState.All);
|
||||||
|
|
||||||
|
this.keyScope = ko.computed({
|
||||||
|
'owner': this,
|
||||||
|
'read': function () {
|
||||||
|
return this.keyScopeFake();
|
||||||
|
},
|
||||||
|
'write': function (sValue) {
|
||||||
|
|
||||||
|
if (Enums.KeyState.Menu !== sValue)
|
||||||
|
{
|
||||||
if (Enums.KeyState.Compose === sValue)
|
if (Enums.KeyState.Compose === sValue)
|
||||||
{
|
{
|
||||||
Utils.disableKeyFilter();
|
Utils.disableKeyFilter();
|
||||||
|
|
@ -6582,10 +6644,34 @@ function AbstractData()
|
||||||
Utils.restoreKeyFilter();
|
Utils.restoreKeyFilter();
|
||||||
}
|
}
|
||||||
|
|
||||||
// window.console.log(sValue);
|
this.keyScopeFake(sValue);
|
||||||
|
if (Globals.dropdownVisibility())
|
||||||
|
{
|
||||||
|
sValue = Enums.KeyState.Menu;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// window.console.log(sValue + '/' + this.keyScopeFake());
|
||||||
|
this.keyScopeReal(sValue);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.keyScopeReal.subscribe(function (sValue) {
|
||||||
|
window.console.log(sValue);
|
||||||
key.setScope(sValue);
|
key.setScope(sValue);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Globals.dropdownVisibility.subscribe(function (bValue) {
|
||||||
|
if (bValue)
|
||||||
|
{
|
||||||
|
this.keyScope(Enums.KeyState.Menu);
|
||||||
|
}
|
||||||
|
else if (Enums.KeyState.Menu === key.getScope())
|
||||||
|
{
|
||||||
|
this.keyScope(this.keyScopeFake());
|
||||||
|
}
|
||||||
|
}, this);
|
||||||
|
|
||||||
Utils.initDataConstructorBySettings(this);
|
Utils.initDataConstructorBySettings(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
8
rainloop/v/0.0.0/static/js/admin.min.js
vendored
8
rainloop/v/0.0.0/static/js/admin.min.js
vendored
File diff suppressed because one or more lines are too long
|
|
@ -92,6 +92,11 @@ Globals.now = (new Date()).getTime();
|
||||||
*/
|
*/
|
||||||
Globals.momentTrigger = ko.observable(true);
|
Globals.momentTrigger = ko.observable(true);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {?}
|
||||||
|
*/
|
||||||
|
Globals.dropdownVisibility = ko.observable(false);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {?}
|
* @type {?}
|
||||||
*/
|
*/
|
||||||
|
|
@ -381,6 +386,7 @@ Enums.KeyState = {
|
||||||
'MessageList': 'message-list',
|
'MessageList': 'message-list',
|
||||||
'MessageView': 'message-view',
|
'MessageView': 'message-view',
|
||||||
'Compose': 'compose',
|
'Compose': 'compose',
|
||||||
|
'Settings': 'settings',
|
||||||
'Menu': 'menu',
|
'Menu': 'menu',
|
||||||
'PopupComposeOpenPGP': 'compose-open-pgp',
|
'PopupComposeOpenPGP': 'compose-open-pgp',
|
||||||
'PopupAsk': 'popup-ask'
|
'PopupAsk': 'popup-ask'
|
||||||
|
|
@ -2091,10 +2097,10 @@ Utils.draggeblePlace = function ()
|
||||||
|
|
||||||
Utils.defautOptionsAfterRender = function (oOption, oItem)
|
Utils.defautOptionsAfterRender = function (oOption, oItem)
|
||||||
{
|
{
|
||||||
if (oItem && !Utils.isUnd(oItem.disable))
|
if (oItem && !Utils.isUnd(oItem.disabled))
|
||||||
{
|
{
|
||||||
ko.applyBindingsToNode(oOption, {
|
ko.applyBindingsToNode(oOption, {
|
||||||
'disable': oItem.disable
|
'disabled': oItem.disabled
|
||||||
}, oItem);
|
}, oItem);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -2689,7 +2695,54 @@ ko.bindingHandlers.tooltip2 = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
ko.bindingHandlers.dropdown = {
|
ko.__detectDropdownVisibility = _.debounce(function ($el) {
|
||||||
|
Globals.dropdownVisibility(!!$el.hasClass('open'));
|
||||||
|
}, 50);
|
||||||
|
|
||||||
|
ko.bindingHandlers.dropdownOpenStatus = {
|
||||||
|
'init': function (oElement) {
|
||||||
|
var $el = $(oElement);
|
||||||
|
|
||||||
|
$el.find('.dropdown-toggle').click(function () {
|
||||||
|
ko.__detectDropdownVisibility($el);
|
||||||
|
});
|
||||||
|
|
||||||
|
// $el.on('.dropdown-menu .menuitem', 'click', function () {
|
||||||
|
// $el.removeClass('open');
|
||||||
|
// ko.__detectDropdownVisibility($el);
|
||||||
|
// });
|
||||||
|
|
||||||
|
// $el.on('.dropdown-menu .menuitem', 'keydown', function (oEvent) {
|
||||||
|
// if (oEvent && Enums.EventKeyCode.Esc === oEvent.keyCode)
|
||||||
|
// {
|
||||||
|
// $el.removeClass('open');
|
||||||
|
// ko.__detectDropdownVisibility($el);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
|
||||||
|
$html.on('click.dropdown.data-api', function () {
|
||||||
|
ko.__detectDropdownVisibility($el);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
ko.bindingHandlers.openDropdownTrigger = {
|
||||||
|
'update': function (oElement, fValueAccessor) {
|
||||||
|
if (ko.utils.unwrapObservable(fValueAccessor()))
|
||||||
|
{
|
||||||
|
var $el = $(oElement);
|
||||||
|
if (!$el.hasClass('open'))
|
||||||
|
{
|
||||||
|
$el.find('.dropdown-toggle').dropdown('toggle');
|
||||||
|
ko.__detectDropdownVisibility($el);
|
||||||
|
}
|
||||||
|
|
||||||
|
fValueAccessor()(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
ko.bindingHandlers.dropdownCloser = {
|
||||||
'init': function (oElement) {
|
'init': function (oElement) {
|
||||||
$(oElement).closest('.dropdown').on('click', '.e-item', function () {
|
$(oElement).closest('.dropdown').on('click', '.e-item', function () {
|
||||||
$(oElement).dropdown('toggle');
|
$(oElement).dropdown('toggle');
|
||||||
|
|
@ -11661,7 +11714,8 @@ function AbstractSystemDropDownViewModel()
|
||||||
this.accounts = oData.accounts;
|
this.accounts = oData.accounts;
|
||||||
this.accountEmail = oData.accountEmail;
|
this.accountEmail = oData.accountEmail;
|
||||||
this.accountsLoading = oData.accountsLoading;
|
this.accountsLoading = oData.accountsLoading;
|
||||||
this.accountMenuFocus = oData.accountMenuFocus;
|
|
||||||
|
this.accountMenuDropdownTrigger = ko.observable(false);
|
||||||
|
|
||||||
this.allowAddAccount = RL.settingsGet('AllowAdditionalAccounts');
|
this.allowAddAccount = RL.settingsGet('AllowAdditionalAccounts');
|
||||||
|
|
||||||
|
|
@ -11670,14 +11724,6 @@ function AbstractSystemDropDownViewModel()
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
this.accountClick = _.bind(this.accountClick, this);
|
this.accountClick = _.bind(this.accountClick, this);
|
||||||
|
|
||||||
key('`', function () {
|
|
||||||
if (oData.useKeyboardShortcuts() && !RL.popupVisibility() &&
|
|
||||||
!oData.accountMenuFocus())
|
|
||||||
{
|
|
||||||
oData.accountMenuFocus(true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_.extend(AbstractSystemDropDownViewModel.prototype, KnoinAbstractViewModel.prototype);
|
_.extend(AbstractSystemDropDownViewModel.prototype, KnoinAbstractViewModel.prototype);
|
||||||
|
|
@ -11725,6 +11771,18 @@ AbstractSystemDropDownViewModel.prototype.logoutClick = function ()
|
||||||
RL.loginAndLogoutReload(true, RL.settingsGet('ParentEmail') && 0 < RL.settingsGet('ParentEmail').length);
|
RL.loginAndLogoutReload(true, RL.settingsGet('ParentEmail') && 0 < RL.settingsGet('ParentEmail').length);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
AbstractSystemDropDownViewModel.prototype.onBuild = function ()
|
||||||
|
{
|
||||||
|
var self = this;
|
||||||
|
key('`', [Enums.KeyState.MessageList, Enums.KeyState.MessageView, Enums.KeyState.Settings], function () {
|
||||||
|
if (RL.data().useKeyboardShortcuts() && !RL.popupVisibility() && !Globals.dropdownVisibility() && self.viewModelVisibility())
|
||||||
|
{
|
||||||
|
self.accountMenuDropdownTrigger(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @constructor
|
* @constructor
|
||||||
* @extends AbstractSystemDropDownViewModel
|
* @extends AbstractSystemDropDownViewModel
|
||||||
|
|
@ -11928,6 +11986,9 @@ function MailBoxMessageListViewModel()
|
||||||
this.userUsageSize = oData.userUsageSize;
|
this.userUsageSize = oData.userUsageSize;
|
||||||
this.userUsageProc = oData.userUsageProc;
|
this.userUsageProc = oData.userUsageProc;
|
||||||
|
|
||||||
|
this.moveDropdownTrigger = ko.observable(false);
|
||||||
|
this.moreDropdownTrigger = ko.observable(false);
|
||||||
|
|
||||||
// append drag and drop
|
// append drag and drop
|
||||||
this.dragOver = ko.observable(false).extend({'throttle': 1});
|
this.dragOver = ko.observable(false).extend({'throttle': 1});
|
||||||
this.dragOverEnter = ko.observable(false).extend({'throttle': 1});
|
this.dragOverEnter = ko.observable(false).extend({'throttle': 1});
|
||||||
|
|
@ -12404,7 +12465,7 @@ MailBoxMessageListViewModel.prototype.flagMessages = function (oCurrentMessage)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
MailBoxMessageListViewModel.prototype.flagMessagesFast = function ()
|
MailBoxMessageListViewModel.prototype.flagMessagesFast = function (bFlag)
|
||||||
{
|
{
|
||||||
var
|
var
|
||||||
aChecked = this.messageListCheckedOrSelected(),
|
aChecked = this.messageListCheckedOrSelected(),
|
||||||
|
|
@ -12417,24 +12478,43 @@ MailBoxMessageListViewModel.prototype.flagMessagesFast = function ()
|
||||||
return oMessage.flagged();
|
return oMessage.flagged();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (Utils.isUnd(bFlag))
|
||||||
|
{
|
||||||
this.setAction(aChecked[0].folderFullNameRaw,
|
this.setAction(aChecked[0].folderFullNameRaw,
|
||||||
aChecked.length === aFlagged.length ? Enums.MessageSetAction.UnsetFlag : Enums.MessageSetAction.SetFlag, aChecked);
|
aChecked.length === aFlagged.length ? Enums.MessageSetAction.UnsetFlag : Enums.MessageSetAction.SetFlag, aChecked);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.setAction(aChecked[0].folderFullNameRaw,
|
||||||
|
!bFlag ? Enums.MessageSetAction.UnsetFlag : Enums.MessageSetAction.SetFlag, aChecked);
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
MailBoxMessageListViewModel.prototype.seenMessagesFast = function ()
|
MailBoxMessageListViewModel.prototype.seenMessagesFast = function (bSeen)
|
||||||
{
|
{
|
||||||
var
|
var
|
||||||
aChecked = this.messageListCheckedOrSelected(),
|
aChecked = this.messageListCheckedOrSelected(),
|
||||||
aUnseen = []
|
aUnseen = []
|
||||||
;
|
;
|
||||||
|
|
||||||
|
if (0 < aChecked.length)
|
||||||
|
{
|
||||||
aUnseen = _.filter(aChecked, function (oMessage) {
|
aUnseen = _.filter(aChecked, function (oMessage) {
|
||||||
return oMessage.unseen();
|
return oMessage.unseen();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (Utils.isUnd(bSeen))
|
||||||
|
{
|
||||||
this.setAction(aChecked[0].folderFullNameRaw,
|
this.setAction(aChecked[0].folderFullNameRaw,
|
||||||
0 < aUnseen.length ? Enums.MessageSetAction.SetSeen : Enums.MessageSetAction.UnsetSeen, aChecked);
|
0 < aUnseen.length ? Enums.MessageSetAction.SetSeen : Enums.MessageSetAction.UnsetSeen, aChecked);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.setAction(aChecked[0].folderFullNameRaw,
|
||||||
|
bSeen ? Enums.MessageSetAction.SetSeen : Enums.MessageSetAction.UnsetSeen, aChecked);
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
MailBoxMessageListViewModel.prototype.onBuild = function (oDom)
|
MailBoxMessageListViewModel.prototype.onBuild = function (oDom)
|
||||||
|
|
@ -12534,6 +12614,14 @@ MailBoxMessageListViewModel.prototype.initShortcuts = function ()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
key('z', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||||
|
if (oData.useKeyboardShortcuts())
|
||||||
|
{
|
||||||
|
self.moreDropdownTrigger(true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// delete
|
// delete
|
||||||
key('delete, shift+delete', Enums.KeyState.MessageList, function (event, handler) {
|
key('delete, shift+delete', Enums.KeyState.MessageList, function (event, handler) {
|
||||||
if (oData.useKeyboardShortcuts() && event)
|
if (oData.useKeyboardShortcuts() && event)
|
||||||
|
|
@ -12563,8 +12651,8 @@ MailBoxMessageListViewModel.prototype.initShortcuts = function ()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// new message (open compose popup)
|
// write/compose (open compose popup)
|
||||||
key('c,n', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
key('w,c', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||||
if (oData.useKeyboardShortcuts())
|
if (oData.useKeyboardShortcuts())
|
||||||
{
|
{
|
||||||
kn.showScreenPopup(PopupsComposeViewModel);
|
kn.showScreenPopup(PopupsComposeViewModel);
|
||||||
|
|
@ -12572,8 +12660,8 @@ MailBoxMessageListViewModel.prototype.initShortcuts = function ()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// star/flag messages
|
// important - star/flag messages
|
||||||
key('s', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
key('i', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||||
if (oData.useKeyboardShortcuts())
|
if (oData.useKeyboardShortcuts())
|
||||||
{
|
{
|
||||||
self.flagMessagesFast();
|
self.flagMessagesFast();
|
||||||
|
|
@ -12581,11 +12669,29 @@ MailBoxMessageListViewModel.prototype.initShortcuts = function ()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// mark as read/unread
|
// move
|
||||||
key('m', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
key('m', Enums.KeyState.MessageList, function () {
|
||||||
if (oData.useKeyboardShortcuts())
|
if (oData.useKeyboardShortcuts())
|
||||||
{
|
{
|
||||||
self.seenMessagesFast();
|
self.moveDropdownTrigger(true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// read
|
||||||
|
key('q', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||||
|
if (oData.useKeyboardShortcuts())
|
||||||
|
{
|
||||||
|
self.seenMessagesFast(true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// unread
|
||||||
|
key('u', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||||
|
if (oData.useKeyboardShortcuts())
|
||||||
|
{
|
||||||
|
self.seenMessagesFast(false);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -12806,6 +12912,7 @@ function MailBoxMessageViewViewModel()
|
||||||
this.fullScreenMode = oData.messageFullScreenMode;
|
this.fullScreenMode = oData.messageFullScreenMode;
|
||||||
|
|
||||||
this.showFullInfo = ko.observable(false);
|
this.showFullInfo = ko.observable(false);
|
||||||
|
this.moreDropdownTrigger = ko.observable(false);
|
||||||
this.messageDomFocused = ko.observable(false).extend({'rateLimit': 0});
|
this.messageDomFocused = ko.observable(false).extend({'rateLimit': 0});
|
||||||
|
|
||||||
this.messageVisibility = ko.computed(function () {
|
this.messageVisibility = ko.computed(function () {
|
||||||
|
|
@ -13126,6 +13233,13 @@ MailBoxMessageViewViewModel.prototype.onBuild = function (oDom)
|
||||||
this.messageDomFocused(!!bValue);
|
this.messageDomFocused(!!bValue);
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
|
this.messageDomFocused.subscribe(function (bValue) {
|
||||||
|
if (!bValue && Enums.KeyState.MessageView === this.keyScope())
|
||||||
|
{
|
||||||
|
this.message.focused(false);
|
||||||
|
}
|
||||||
|
}, this);
|
||||||
|
|
||||||
this.keyScope.subscribe(function (sValue) {
|
this.keyScope.subscribe(function (sValue) {
|
||||||
if (Enums.KeyState.MessageView === sValue && this.message.focused())
|
if (Enums.KeyState.MessageView === sValue && this.message.focused())
|
||||||
{
|
{
|
||||||
|
|
@ -13150,10 +13264,14 @@ MailBoxMessageViewViewModel.prototype.escShortcuts = function ()
|
||||||
{
|
{
|
||||||
this.fullScreenMode(false);
|
this.fullScreenMode(false);
|
||||||
}
|
}
|
||||||
else
|
else if (Enums.Layout.NoPreview === RL.data().layout())
|
||||||
{
|
{
|
||||||
this.message(null);
|
this.message(null);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.message.focused(false);
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -13178,6 +13296,14 @@ MailBoxMessageViewViewModel.prototype.initShortcuts = function ()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
key('x', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||||
|
if (oData.useKeyboardShortcuts())
|
||||||
|
{
|
||||||
|
self.moreDropdownTrigger(true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// reply
|
// reply
|
||||||
key('r', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
key('r', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||||
if (oData.useKeyboardShortcuts() && oData.message())
|
if (oData.useKeyboardShortcuts() && oData.message())
|
||||||
|
|
@ -13206,13 +13332,13 @@ MailBoxMessageViewViewModel.prototype.initShortcuts = function ()
|
||||||
});
|
});
|
||||||
|
|
||||||
// message information
|
// message information
|
||||||
key('i', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
// key('i', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||||
if (oData.useKeyboardShortcuts())
|
// if (oData.useKeyboardShortcuts())
|
||||||
{
|
// {
|
||||||
self.showFullInfo(!self.showFullInfo());
|
// self.showFullInfo(!self.showFullInfo());
|
||||||
return false;
|
// return false;
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
|
||||||
// toggle message blockquotes
|
// toggle message blockquotes
|
||||||
key('b', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
key('b', [Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
|
||||||
|
|
@ -13452,6 +13578,17 @@ function SettingsPaneViewModel()
|
||||||
|
|
||||||
Utils.extendAsViewModel('SettingsPaneViewModel', SettingsPaneViewModel);
|
Utils.extendAsViewModel('SettingsPaneViewModel', SettingsPaneViewModel);
|
||||||
|
|
||||||
|
SettingsPaneViewModel.prototype.onBuild = function ()
|
||||||
|
{
|
||||||
|
var self = this;
|
||||||
|
key('esc', Enums.KeyState.Settings, function () {
|
||||||
|
if (RL.data().useKeyboardShortcuts())
|
||||||
|
{
|
||||||
|
self.backToMailBoxClick();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
SettingsPaneViewModel.prototype.onShow = function ()
|
SettingsPaneViewModel.prototype.onShow = function ()
|
||||||
{
|
{
|
||||||
RL.data().message(null);
|
RL.data().message(null);
|
||||||
|
|
@ -14747,9 +14884,18 @@ SettingsOpenPGP.prototype.deleteOpenPgpKey = function (oOpenPgpKeyToRemove)
|
||||||
*/
|
*/
|
||||||
function AbstractData()
|
function AbstractData()
|
||||||
{
|
{
|
||||||
this.keyScope = ko.observable(Enums.KeyState.All);
|
this.keyScopeReal = ko.observable(Enums.KeyState.All);
|
||||||
this.keyScope.subscribe(function (sValue) {
|
this.keyScopeFake = ko.observable(Enums.KeyState.All);
|
||||||
|
|
||||||
|
this.keyScope = ko.computed({
|
||||||
|
'owner': this,
|
||||||
|
'read': function () {
|
||||||
|
return this.keyScopeFake();
|
||||||
|
},
|
||||||
|
'write': function (sValue) {
|
||||||
|
|
||||||
|
if (Enums.KeyState.Menu !== sValue)
|
||||||
|
{
|
||||||
if (Enums.KeyState.Compose === sValue)
|
if (Enums.KeyState.Compose === sValue)
|
||||||
{
|
{
|
||||||
Utils.disableKeyFilter();
|
Utils.disableKeyFilter();
|
||||||
|
|
@ -14759,10 +14905,34 @@ function AbstractData()
|
||||||
Utils.restoreKeyFilter();
|
Utils.restoreKeyFilter();
|
||||||
}
|
}
|
||||||
|
|
||||||
// window.console.log(sValue);
|
this.keyScopeFake(sValue);
|
||||||
|
if (Globals.dropdownVisibility())
|
||||||
|
{
|
||||||
|
sValue = Enums.KeyState.Menu;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// window.console.log(sValue + '/' + this.keyScopeFake());
|
||||||
|
this.keyScopeReal(sValue);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.keyScopeReal.subscribe(function (sValue) {
|
||||||
|
window.console.log(sValue);
|
||||||
key.setScope(sValue);
|
key.setScope(sValue);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Globals.dropdownVisibility.subscribe(function (bValue) {
|
||||||
|
if (bValue)
|
||||||
|
{
|
||||||
|
this.keyScope(Enums.KeyState.Menu);
|
||||||
|
}
|
||||||
|
else if (Enums.KeyState.Menu === key.getScope())
|
||||||
|
{
|
||||||
|
this.keyScope(this.keyScopeFake());
|
||||||
|
}
|
||||||
|
}, this);
|
||||||
|
|
||||||
Utils.initDataConstructorBySettings(this);
|
Utils.initDataConstructorBySettings(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -14872,17 +15042,6 @@ function WebMailDataStorage()
|
||||||
this.projectHash = ko.observable('');
|
this.projectHash = ko.observable('');
|
||||||
this.threading = ko.observable(false);
|
this.threading = ko.observable(false);
|
||||||
|
|
||||||
this.accountMenuFocus = ko.observable(false);
|
|
||||||
this.accountMenuFocus.sKeyState = Enums.KeyState.All;
|
|
||||||
|
|
||||||
this.accountMenuFocus.subscribe(function (bValue) {
|
|
||||||
if (bValue)
|
|
||||||
{
|
|
||||||
this.accountMenuFocus.sKeyState = RL.data().keyScope();
|
|
||||||
}
|
|
||||||
RL.data().keyScope(bValue ? Enums.KeyState.Menu : this.accountMenuFocus.sKeyState);
|
|
||||||
}, this);
|
|
||||||
|
|
||||||
this.lastFoldersHash = '';
|
this.lastFoldersHash = '';
|
||||||
this.remoteSuggestions = false;
|
this.remoteSuggestions = false;
|
||||||
|
|
||||||
|
|
@ -15121,7 +15280,14 @@ function WebMailDataStorage()
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
this.message.focused.subscribe(function (bValue) {
|
this.message.focused.subscribe(function (bValue) {
|
||||||
RL.data().keyScope(bValue ? Enums.KeyState.MessageView : Enums.KeyState.MessageList);
|
if (bValue)
|
||||||
|
{
|
||||||
|
RL.data().keyScope(Enums.KeyState.MessageView);
|
||||||
|
}
|
||||||
|
else if (Enums.KeyState.MessageView === RL.data().keyScope())
|
||||||
|
{
|
||||||
|
RL.data().keyScope(Enums.KeyState.MessageList);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
this.messageLoading.subscribe(function (bValue) {
|
this.messageLoading.subscribe(function (bValue) {
|
||||||
|
|
@ -17712,11 +17878,6 @@ MailBoxScreen.prototype.onShow = function ()
|
||||||
RL.data().keyScope(Enums.KeyState.MessageList);
|
RL.data().keyScope(Enums.KeyState.MessageList);
|
||||||
};
|
};
|
||||||
|
|
||||||
MailBoxScreen.prototype.onHide = function ()
|
|
||||||
{
|
|
||||||
RL.data().keyScope(Enums.KeyState.All);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} sFolderHash
|
* @param {string} sFolderHash
|
||||||
* @param {number} iPage
|
* @param {number} iPage
|
||||||
|
|
@ -17803,17 +17964,6 @@ MailBoxScreen.prototype.onStart = function ()
|
||||||
}, this);
|
}, this);
|
||||||
};
|
};
|
||||||
|
|
||||||
//MailBoxScreen.prototype.onBuild = function ()
|
|
||||||
//{
|
|
||||||
// if (!Globals.bMobileDevice)
|
|
||||||
// {
|
|
||||||
// _.defer(function () {
|
|
||||||
// Utils.initLayoutResizer('#rl-resizer-left', '#rl-resizer-right', '#rl-right',
|
|
||||||
// 350, 800, 350, 350, Enums.ClientSideKeyName.MailBoxListSize);
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
//};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return {Array}
|
* @return {Array}
|
||||||
*/
|
*/
|
||||||
|
|
@ -17885,6 +18035,7 @@ SettingsScreen.prototype.onShow = function ()
|
||||||
// AbstractSettings.prototype.onShow.call(this);
|
// AbstractSettings.prototype.onShow.call(this);
|
||||||
|
|
||||||
RL.setTitle(this.sSettingsTitle);
|
RL.setTitle(this.sSettingsTitle);
|
||||||
|
RL.data().keyScope(Enums.KeyState.Settings);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -19027,7 +19178,7 @@ RainLoopApp.prototype.folderListOptionsBuilder = function (aSystem, aList, aDisa
|
||||||
aResult.push({
|
aResult.push({
|
||||||
'id': aHeaderLines[iIndex][0],
|
'id': aHeaderLines[iIndex][0],
|
||||||
'name': aHeaderLines[iIndex][1],
|
'name': aHeaderLines[iIndex][1],
|
||||||
'disable': false
|
'disabled': false
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -19040,7 +19191,7 @@ RainLoopApp.prototype.folderListOptionsBuilder = function (aSystem, aList, aDisa
|
||||||
'id': oItem.fullNameRaw,
|
'id': oItem.fullNameRaw,
|
||||||
'system': true,
|
'system': true,
|
||||||
'name': fRenameCallback ? fRenameCallback.call(null, oItem) : oItem.name(),
|
'name': fRenameCallback ? fRenameCallback.call(null, oItem) : oItem.name(),
|
||||||
'disable': !oItem.selectable || -1 < Utils.inArray(oItem.fullNameRaw, aDisabled) ||
|
'disabled': !oItem.selectable || -1 < Utils.inArray(oItem.fullNameRaw, aDisabled) ||
|
||||||
(fDisableCallback ? fDisableCallback.call(null, oItem) : false)
|
(fDisableCallback ? fDisableCallback.call(null, oItem) : false)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -19060,7 +19211,7 @@ RainLoopApp.prototype.folderListOptionsBuilder = function (aSystem, aList, aDisa
|
||||||
'system': false,
|
'system': false,
|
||||||
'name': (new window.Array(oItem.deep + 1 - iUnDeep)).join(sDeepPrefix) +
|
'name': (new window.Array(oItem.deep + 1 - iUnDeep)).join(sDeepPrefix) +
|
||||||
(fRenameCallback ? fRenameCallback.call(null, oItem) : oItem.name()),
|
(fRenameCallback ? fRenameCallback.call(null, oItem) : oItem.name()),
|
||||||
'disable': !oItem.selectable || -1 < Utils.inArray(oItem.fullNameRaw, aDisabled) ||
|
'disabled': !oItem.selectable || -1 < Utils.inArray(oItem.fullNameRaw, aDisabled) ||
|
||||||
(Enums.FolderType.User !== oItem.type()) ||
|
(Enums.FolderType.User !== oItem.type()) ||
|
||||||
(fDisableCallback ? fDisableCallback.call(null, oItem) : false)
|
(fDisableCallback ? fDisableCallback.call(null, oItem) : false)
|
||||||
});
|
});
|
||||||
|
|
|
||||||
18
rainloop/v/0.0.0/static/js/app.min.js
vendored
18
rainloop/v/0.0.0/static/js/app.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2280
vendors/bootstrap/js/bootstrap.js
vendored
Normal file
2280
vendors/bootstrap/js/bootstrap.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
7
vendors/bootstrap/js/bootstrap.min.js
vendored
7
vendors/bootstrap/js/bootstrap.min.js
vendored
File diff suppressed because one or more lines are too long
4
vendors/bootstrap/js/bootstrap.min.orig.js
vendored
4
vendors/bootstrap/js/bootstrap.min.orig.js
vendored
File diff suppressed because one or more lines are too long
2280
vendors/bootstrap/js/bootstrap.orig.js
vendored
Normal file
2280
vendors/bootstrap/js/bootstrap.orig.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
6
vendors/bootstrap/js/old.bootstrap.min.js
vendored
Normal file
6
vendors/bootstrap/js/old.bootstrap.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
6
vendors/bootstrap/js/old.bootstrap.min.orig.js
vendored
Normal file
6
vendors/bootstrap/js/old.bootstrap.min.orig.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
vendors/jquery-nanoscroller/nanoscroller.css
vendored
2
vendors/jquery-nanoscroller/nanoscroller.css
vendored
|
|
@ -49,7 +49,7 @@
|
||||||
-moz-border-radius : 5px;
|
-moz-border-radius : 5px;
|
||||||
-webkit-border-radius : 5px;
|
-webkit-border-radius : 5px;
|
||||||
border-radius : 5px;
|
border-radius : 5px;
|
||||||
z-index: 10000;
|
z-index: 102;
|
||||||
margin : 2px;
|
margin : 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue