Fixed popup javascript error when related modal is inactive. #76

pull/87/head
Fabio Caccamo 2020-04-07 15:49:19 +02:00
parent f7ec79eb75
commit 147a2a6abf
1 changed files with 19 additions and 26 deletions

View File

@ -2,49 +2,42 @@
'use strict'; 'use strict';
function getModalWindowData() var windowRef = window;
{ var windowName, widgetName;
var windowRef = window; var openerRef = windowRef.opener;
var windowName = windowRef.name; if (!openerRef) {
var widgetName = windowName.replace(/^(change|add|delete|lookup)_/, ''); // related modal is active
var modalRef = {}; openerRef = windowRef.parent;
var openerRef = windowRef.opener; windowName = windowRef.name;
if (!openerRef) { widgetName = windowName.replace(/^(change|add|delete|lookup)_/, '');
openerRef = windowRef.parent; windowRef = {
modalRef = { name: openerRef.id_to_windowname(widgetName),
name: openerRef.id_to_windowname(widgetName), close: function() {
close: function() { openerRef.dismissRelatedObjectModal();
openerRef.dismissRelatedObjectModal(); }
} };
};
}
return { opener:openerRef, modal:modalRef };
} }
var modalData = getModalWindowData(); // default django popup_response.js
var modalRef = modalData['modal'];
var openerRef = modalData['opener'];
var initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse); var initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse);
// console.log(initData);
switch (initData.action) { switch (initData.action) {
case 'change': case 'change':
if (typeof(openerRef.dismissChangeRelatedObjectPopup) === 'function') { if (typeof(openerRef.dismissChangeRelatedObjectPopup) === 'function') {
openerRef.dismissChangeRelatedObjectPopup(modalRef, initData.value, initData.obj, initData.new_value); openerRef.dismissChangeRelatedObjectPopup(windowRef, initData.value, initData.obj, initData.new_value);
} }
break; break;
case 'delete': case 'delete':
if (typeof(openerRef.dismissDeleteRelatedObjectPopup) === 'function') { if (typeof(openerRef.dismissDeleteRelatedObjectPopup) === 'function') {
openerRef.dismissDeleteRelatedObjectPopup(modalRef, initData.value); openerRef.dismissDeleteRelatedObjectPopup(windowRef, initData.value);
} }
break; break;
default: default:
if (typeof(openerRef.dismissAddRelatedObjectPopup) === 'function') { if (typeof(openerRef.dismissAddRelatedObjectPopup) === 'function') {
openerRef.dismissAddRelatedObjectPopup(modalRef, initData.value, initData.obj); openerRef.dismissAddRelatedObjectPopup(windowRef, initData.value, initData.obj);
} }
else if (typeof(openerRef.dismissAddAnotherPopup) === 'function') { else if (typeof(openerRef.dismissAddAnotherPopup) === 'function') {
// django 1.7 compatibility // django 1.7 compatibility
openerRef.dismissAddAnotherPopup(modalRef, initData.value, initData.obj); openerRef.dismissAddAnotherPopup(windowRef, initData.value, initData.obj);
} }
break; break;
} }