mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-02-17 07:33:57 +00:00
fix(calendar): Impossible to create a new event after creating a new one. Closes #5718
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -205,36 +205,49 @@
|
||||
component = Calendar.$get(component.pid).$getComponent(component.id, component.occurrenceId);
|
||||
promise = component.$futureComponentData;
|
||||
}
|
||||
|
||||
if (vm.isComponentOpened) { // Prevent opening a new modal if there is already one opened (multiple clicks)
|
||||
return;
|
||||
}
|
||||
|
||||
if ('appointment' === type) {
|
||||
// TODO: Improve Angular implementation
|
||||
var originalCancel = $mdDialog.cancel;
|
||||
var originalDataHash = eventHash(component);
|
||||
vm.isComponentOpened = true;
|
||||
|
||||
$mdDialog.cancel = () => {
|
||||
var newDataHash = eventHash(component);
|
||||
|
||||
if (originalDataHash === newDataHash) {
|
||||
originalCancel();
|
||||
$mdDialog.cancel = originalCancel;
|
||||
vm.isComponentOpened = false;
|
||||
} else if (confirm(l('You have modified data unsaved. Do you want to close popup and loose data ?'))) {
|
||||
originalCancel();
|
||||
$mdDialog.cancel = originalCancel;
|
||||
vm.isComponentOpened = false;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
promise.then(function() {
|
||||
// UI/Templates/SchedulerUI/UIxAppointmentViewTemplate.wox or
|
||||
// UI/Templates/SchedulerUI/UIxTaskViewTemplate.wox
|
||||
var templateUrl = 'UIx' + type.capitalize() + 'ViewTemplate';
|
||||
|
||||
if (vm.isComponentOpened) { // Prevent opening a new modal if there is already one opened (multiple clicks)
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: Improve Angular implementation
|
||||
var originalCancel = $mdDialog.cancel;
|
||||
var originalDestroy = $mdDialog.destroy;
|
||||
var originalShow = $mdDialog.show;
|
||||
|
||||
|
||||
$mdDialog.show = function(p) {
|
||||
vm.isComponentOpened = true;
|
||||
|
||||
$mdDialog.cancel = function () {
|
||||
var newDataHash = eventHash(component);
|
||||
vm.isComponentOpened = false;
|
||||
|
||||
if (originalDataHash === newDataHash) {
|
||||
$mdDialog.cancel = originalCancel;
|
||||
return originalCancel();
|
||||
} else if (confirm(l('You have modified data unsaved. Do you want to close popup and loose data ?'))) {
|
||||
$mdDialog.cancel = originalCancel;
|
||||
return originalCancel();
|
||||
}
|
||||
};
|
||||
|
||||
$mdDialog.destroy = function () {
|
||||
vm.isComponentOpened = false;
|
||||
$mdDialog.cancel = originalCancel;
|
||||
$mdDialog.destroy = originalDestroy;
|
||||
return originalDestroy();
|
||||
};
|
||||
|
||||
return originalShow(p);
|
||||
};
|
||||
|
||||
$mdDialog.show({
|
||||
parent: angular.element(document.body),
|
||||
targetEvent: $event,
|
||||
@@ -273,23 +286,30 @@
|
||||
|
||||
// TODO: Improve Angular implementation
|
||||
var originalCancel = $mdDialog.cancel;
|
||||
var originalDestroy = $mdDialog.destroy;
|
||||
var originalDataHash = eventHash(component);
|
||||
vm.isComponentOpened = true;
|
||||
|
||||
$mdDialog.cancel = () => {
|
||||
$mdDialog.cancel = function() {
|
||||
var newDataHash = eventHash(component);
|
||||
vm.isComponentOpened = false;
|
||||
|
||||
if (originalDataHash === newDataHash) {
|
||||
originalCancel();
|
||||
$mdDialog.cancel = originalCancel;
|
||||
vm.isComponentOpened = false;
|
||||
return originalCancel();
|
||||
} else if (confirm(l('You have modified data unsaved. Do you want to close popup and loose data ?'))) {
|
||||
originalCancel();
|
||||
$mdDialog.cancel = originalCancel;
|
||||
vm.isComponentOpened = false;
|
||||
return originalCancel();
|
||||
}
|
||||
};
|
||||
|
||||
$mdDialog.destroy = function () {
|
||||
vm.isComponentOpened = false;
|
||||
$mdDialog.cancel = originalCancel;
|
||||
$mdDialog.destroy = originalDestroy;
|
||||
return originalDestroy();
|
||||
};
|
||||
|
||||
return $mdDialog.show({
|
||||
parent: angular.element(document.body),
|
||||
targetEvent: $event,
|
||||
|
||||
Reference in New Issue
Block a user