Fixed popup javascript error when related modal is inactive. #76
parent
f7ec79eb75
commit
147a2a6abf
|
|
@ -2,49 +2,42 @@
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
function getModalWindowData()
|
|
||||||
{
|
|
||||||
var windowRef = window;
|
var windowRef = window;
|
||||||
var windowName = windowRef.name;
|
var windowName, widgetName;
|
||||||
var widgetName = windowName.replace(/^(change|add|delete|lookup)_/, '');
|
|
||||||
var modalRef = {};
|
|
||||||
var openerRef = windowRef.opener;
|
var openerRef = windowRef.opener;
|
||||||
if (!openerRef) {
|
if (!openerRef) {
|
||||||
|
// related modal is active
|
||||||
openerRef = windowRef.parent;
|
openerRef = windowRef.parent;
|
||||||
modalRef = {
|
windowName = windowRef.name;
|
||||||
|
widgetName = windowName.replace(/^(change|add|delete|lookup)_/, '');
|
||||||
|
windowRef = {
|
||||||
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();
|
|
||||||
var modalRef = modalData['modal'];
|
|
||||||
var openerRef = modalData['opener'];
|
|
||||||
|
|
||||||
|
// default django popup_response.js
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue