parent
327ebf00a4
commit
3560f0486e
1
NEWS
1
NEWS
|
@ -39,6 +39,7 @@ Bug fixes
|
||||||
- [web] fixed computation of week number (#3973, #3976)
|
- [web] fixed computation of week number (#3973, #3976)
|
||||||
- [web] fixed saving of inactive calendars (#3862, #3980)
|
- [web] fixed saving of inactive calendars (#3862, #3980)
|
||||||
- [web] fixed public URLs to Calendars (#3974)
|
- [web] fixed public URLs to Calendars (#3974)
|
||||||
|
- [web] fixed hotkeys in Mail module when a dialog is active (#3983)
|
||||||
- [eas] properly skip folders we don't want to synchronize (#3943)
|
- [eas] properly skip folders we don't want to synchronize (#3943)
|
||||||
- [eas] fixed 30 mins freebusy offset with S Planner
|
- [eas] fixed 30 mins freebusy offset with S Planner
|
||||||
- [eas] now correctly handles reminders on tasks (#3964)
|
- [eas] now correctly handles reminders on tasks (#3964)
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
*/
|
*/
|
||||||
MailboxController.$inject = ['$window', '$scope', '$timeout', '$q', '$state', '$mdDialog', '$mdToast', 'stateAccounts', 'stateAccount', 'stateMailbox', 'sgHotkeys', 'encodeUriFilter', 'sgFocus', 'Dialog', 'Account', 'Mailbox'];
|
MailboxController.$inject = ['$window', '$scope', '$timeout', '$q', '$state', '$mdDialog', '$mdToast', 'stateAccounts', 'stateAccount', 'stateMailbox', 'sgHotkeys', 'encodeUriFilter', 'sgFocus', 'Dialog', 'Account', 'Mailbox'];
|
||||||
function MailboxController($window, $scope, $timeout, $q, $state, $mdDialog, $mdToast, stateAccounts, stateAccount, stateMailbox, sgHotkeys, encodeUriFilter, focus, Dialog, Account, Mailbox) {
|
function MailboxController($window, $scope, $timeout, $q, $state, $mdDialog, $mdToast, stateAccounts, stateAccount, stateMailbox, sgHotkeys, encodeUriFilter, focus, Dialog, Account, Mailbox) {
|
||||||
var vm = this, messageDialog = null,
|
var vm = this,
|
||||||
defaultWindowTitle = angular.element($window.document).find('title').attr('sg-default') || "SOGo",
|
defaultWindowTitle = angular.element($window.document).find('title').attr('sg-default') || "SOGo",
|
||||||
hotkeys = [];
|
hotkeys = [];
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@
|
||||||
vm.account = stateAccount;
|
vm.account = stateAccount;
|
||||||
vm.selectedFolder = stateMailbox;
|
vm.selectedFolder = stateMailbox;
|
||||||
vm.selectMessage = selectMessage;
|
vm.selectMessage = selectMessage;
|
||||||
|
vm.messageDialog = null; // also access from Message controller
|
||||||
vm.toggleMessageSelection = toggleMessageSelection;
|
vm.toggleMessageSelection = toggleMessageSelection;
|
||||||
vm.sort = sort;
|
vm.sort = sort;
|
||||||
vm.sortedBy = sortedBy;
|
vm.sortedBy = sortedBy;
|
||||||
|
@ -71,7 +72,10 @@
|
||||||
keys.push(sgHotkeys.createHotkey({
|
keys.push(sgHotkeys.createHotkey({
|
||||||
key: l('hotkey_compose'),
|
key: l('hotkey_compose'),
|
||||||
description: l('Write a new message'),
|
description: l('Write a new message'),
|
||||||
callback: newMessage
|
callback: function($event) {
|
||||||
|
if (vm.messageDialog === null)
|
||||||
|
newMessage($event);
|
||||||
|
}
|
||||||
}));
|
}));
|
||||||
keys.push(sgHotkeys.createHotkey({
|
keys.push(sgHotkeys.createHotkey({
|
||||||
key: l('hotkey_junk'),
|
key: l('hotkey_junk'),
|
||||||
|
@ -155,9 +159,9 @@
|
||||||
function newMessage($event) {
|
function newMessage($event) {
|
||||||
var message;
|
var message;
|
||||||
|
|
||||||
if (messageDialog === null) {
|
if (vm.messageDialog === null) {
|
||||||
message = vm.account.$newMessage();
|
message = vm.account.$newMessage();
|
||||||
messageDialog = $mdDialog
|
vm.messageDialog = $mdDialog
|
||||||
.show({
|
.show({
|
||||||
parent: angular.element(document.body),
|
parent: angular.element(document.body),
|
||||||
targetEvent: $event,
|
targetEvent: $event,
|
||||||
|
@ -173,7 +177,7 @@
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.finally(function() {
|
.finally(function() {
|
||||||
messageDialog = null;
|
vm.messageDialog = null;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -344,8 +348,8 @@
|
||||||
function confirmDeleteSelectedMessages($event) {
|
function confirmDeleteSelectedMessages($event) {
|
||||||
var selectedMessages = vm.selectedFolder.$selectedMessages();
|
var selectedMessages = vm.selectedFolder.$selectedMessages();
|
||||||
|
|
||||||
if (messageDialog === null && _.size(selectedMessages) > 0)
|
if (vm.messageDialog === null && _.size(selectedMessages) > 0)
|
||||||
messageDialog = Dialog.confirm(l('Confirmation'),
|
vm.messageDialog = Dialog.confirm(l('Confirmation'),
|
||||||
l('Are you sure you want to delete the selected messages?'),
|
l('Are you sure you want to delete the selected messages?'),
|
||||||
{ ok: l('Delete') })
|
{ ok: l('Delete') })
|
||||||
.then(function() {
|
.then(function() {
|
||||||
|
@ -362,7 +366,7 @@
|
||||||
_unselectMessage(deleteSelectedMessage, index);
|
_unselectMessage(deleteSelectedMessage, index);
|
||||||
}
|
}
|
||||||
}, function(response) {
|
}, function(response) {
|
||||||
messageDialog = Dialog.confirm(l('Warning'),
|
vm.messageDialog = Dialog.confirm(l('Warning'),
|
||||||
l('The messages could not be moved to the trash folder. Would you like to delete them immediately?'),
|
l('The messages could not be moved to the trash folder. Would you like to delete them immediately?'),
|
||||||
{ ok: l('Delete') })
|
{ ok: l('Delete') })
|
||||||
.then(function() {
|
.then(function() {
|
||||||
|
@ -382,7 +386,7 @@
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.finally(function() {
|
.finally(function() {
|
||||||
messageDialog = null;
|
vm.messageDialog = null;
|
||||||
});
|
});
|
||||||
|
|
||||||
$event.preventDefault();
|
$event.preventDefault();
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
*/
|
*/
|
||||||
MessageController.$inject = ['$window', '$scope', '$state', '$mdMedia', '$mdDialog', 'sgConstant', 'stateAccounts', 'stateAccount', 'stateMailbox', 'stateMessage', 'sgHotkeys', 'encodeUriFilter', 'sgSettings', 'sgFocus', 'Dialog', 'Calendar', 'Component', 'Account', 'Mailbox', 'Message'];
|
MessageController.$inject = ['$window', '$scope', '$state', '$mdMedia', '$mdDialog', 'sgConstant', 'stateAccounts', 'stateAccount', 'stateMailbox', 'stateMessage', 'sgHotkeys', 'encodeUriFilter', 'sgSettings', 'sgFocus', 'Dialog', 'Calendar', 'Component', 'Account', 'Mailbox', 'Message'];
|
||||||
function MessageController($window, $scope, $state, $mdMedia, $mdDialog, sgConstant, stateAccounts, stateAccount, stateMailbox, stateMessage, sgHotkeys, encodeUriFilter, sgSettings, focus, Dialog, Calendar, Component, Account, Mailbox, Message) {
|
function MessageController($window, $scope, $state, $mdMedia, $mdDialog, sgConstant, stateAccounts, stateAccount, stateMailbox, stateMessage, sgHotkeys, encodeUriFilter, sgSettings, focus, Dialog, Calendar, Component, Account, Mailbox, Message) {
|
||||||
var vm = this, messageDialog = null, popupWindow = null, hotkeys = [];
|
var vm = this, popupWindow = null, hotkeys = [];
|
||||||
|
|
||||||
// Expose controller
|
// Expose controller
|
||||||
$window.$messageController = vm;
|
$window.$messageController = vm;
|
||||||
|
@ -39,7 +39,6 @@
|
||||||
vm.convertToEvent = convertToEvent;
|
vm.convertToEvent = convertToEvent;
|
||||||
vm.convertToTask = convertToTask;
|
vm.convertToTask = convertToTask;
|
||||||
|
|
||||||
|
|
||||||
_registerHotkeys(hotkeys);
|
_registerHotkeys(hotkeys);
|
||||||
|
|
||||||
// One-way refresh of the parent window when modifying the message from a popup window.
|
// One-way refresh of the parent window when modifying the message from a popup window.
|
||||||
|
@ -104,34 +103,51 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To keep track of the currently active dialog, we share a common variable with the parent controller.
|
||||||
|
*/
|
||||||
|
function _messageDialog() {
|
||||||
|
if (arguments.length > 0)
|
||||||
|
$scope.mailbox.messageDialog = arguments[0];
|
||||||
|
return $scope.mailbox.messageDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _unlessInDialog(callback) {
|
||||||
|
return function() {
|
||||||
|
// Check if a dialog is opened either from the current controller or the parent controller
|
||||||
|
if (_messageDialog() === null)
|
||||||
|
return callback.apply(vm, arguments);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
function _registerHotkeys(keys) {
|
function _registerHotkeys(keys) {
|
||||||
keys.push(sgHotkeys.createHotkey({
|
keys.push(sgHotkeys.createHotkey({
|
||||||
key: l('hotkey_reply'),
|
key: l('hotkey_reply'),
|
||||||
description: l('Reply to the message'),
|
description: l('Reply to the message'),
|
||||||
callback: reply
|
callback: _unlessInDialog(reply)
|
||||||
}));
|
}));
|
||||||
keys.push(sgHotkeys.createHotkey({
|
keys.push(sgHotkeys.createHotkey({
|
||||||
key: l('hotkey_replyall'),
|
key: l('hotkey_replyall'),
|
||||||
description: l('Reply to sender and all recipients'),
|
description: l('Reply to sender and all recipients'),
|
||||||
callback: replyAll
|
callback: _unlessInDialog(replyAll)
|
||||||
}));
|
}));
|
||||||
keys.push(sgHotkeys.createHotkey({
|
keys.push(sgHotkeys.createHotkey({
|
||||||
key: l('hotkey_forward'),
|
key: l('hotkey_forward'),
|
||||||
description: l('Forward selected message'),
|
description: l('Forward selected message'),
|
||||||
callback: forward
|
callback: _unlessInDialog(forward)
|
||||||
}));
|
}));
|
||||||
keys.push(sgHotkeys.createHotkey({
|
keys.push(sgHotkeys.createHotkey({
|
||||||
key: l('hotkey_flag'),
|
key: l('hotkey_flag'),
|
||||||
description: l('Flagged'),
|
description: l('Flagged'),
|
||||||
callback: angular.bind(stateMessage, stateMessage.toggleFlag)
|
callback: _unlessInDialog(angular.bind(stateMessage, stateMessage.toggleFlag))
|
||||||
}));
|
}));
|
||||||
keys.push(sgHotkeys.createHotkey({
|
keys.push(sgHotkeys.createHotkey({
|
||||||
key: 'backspace',
|
key: 'backspace',
|
||||||
callback: function($event) {
|
callback: _unlessInDialog(function($event) {
|
||||||
if (vm.mailbox.$selectedCount() === 0)
|
if (vm.mailbox.$selectedCount() === 0)
|
||||||
deleteMessage();
|
deleteMessage();
|
||||||
$event.preventDefault();
|
$event.preventDefault();
|
||||||
}
|
})
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Register the hotkeys
|
// Register the hotkeys
|
||||||
|
@ -261,9 +277,10 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function showMailEditor($event, message) {
|
function showMailEditor($event, message) {
|
||||||
if (messageDialog === null) {
|
if (_messageDialog() === null) {
|
||||||
messageDialog = $mdDialog
|
_messageDialog(
|
||||||
.show({
|
$mdDialog
|
||||||
|
.show({
|
||||||
parent: angular.element(document.body),
|
parent: angular.element(document.body),
|
||||||
targetEvent: $event,
|
targetEvent: $event,
|
||||||
clickOutsideToClose: false,
|
clickOutsideToClose: false,
|
||||||
|
@ -277,9 +294,10 @@
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.finally(function() {
|
.finally(function() {
|
||||||
messageDialog = null;
|
_messageDialog(null);
|
||||||
closePopup();
|
closePopup();
|
||||||
});
|
})
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue