Index: django/contrib/admin/media/js/admin/RelatedObjectLookups.js
===================================================================
--- django/contrib/admin/media/js/admin/RelatedObjectLookups.js (revision 7195)
+++ django/contrib/admin/media/js/admin/RelatedObjectLookups.js (working copy)
@@ -1,77 +1,96 @@
-// Handles related-objects functionality: lookup link for raw_id_fields
-// and Add Another links.
-
-function html_unescape(text) {
- // Unescape a string that was escaped using django.utils.html.escape.
- text = text.replace(/</g, '<');
- text = text.replace(/>/g, '>');
- text = text.replace(/"/g, '"');
- text = text.replace(/'/g, "'");
- text = text.replace(/&/g, '&');
- return text;
-}
-
-function showRelatedObjectLookupPopup(triggeringLink) {
- var name = triggeringLink.id.replace(/^lookup_/, '');
- // IE doesn't like periods in the window name, so convert temporarily.
- name = name.replace(/\./g, '___');
- var href;
- if (triggeringLink.href.search(/\?/) >= 0) {
- href = triggeringLink.href + '&pop=1';
- } else {
- href = triggeringLink.href + '?pop=1';
- }
- var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
- win.focus();
- return false;
-}
-
-function dismissRelatedLookupPopup(win, chosenId) {
- var name = win.name.replace(/___/g, '.');
- var elem = document.getElementById(name);
- if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) {
- elem.value += ',' + chosenId;
- } else {
- document.getElementById(name).value = chosenId;
- }
- win.close();
-}
-
-function showAddAnotherPopup(triggeringLink) {
- var name = triggeringLink.id.replace(/^add_/, '');
- name = name.replace(/\./g, '___');
- href = triggeringLink.href
- if (href.indexOf('?') == -1) {
- href += '?_popup=1';
- } else {
- href += '&_popup=1';
- }
- var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
- win.focus();
- return false;
-}
-
-function dismissAddAnotherPopup(win, newId, newRepr) {
- // newId and newRepr are expected to have previously been escaped by
- // django.utils.html.escape.
- newId = html_unescape(newId);
- newRepr = html_unescape(newRepr);
- var name = win.name.replace(/___/g, '.');
- var elem = document.getElementById(name);
- if (elem) {
- if (elem.nodeName == 'SELECT') {
- var o = new Option(newRepr, newId);
- elem.options[elem.options.length] = o;
- o.selected = true;
- } else if (elem.nodeName == 'INPUT') {
- elem.value = newId;
- }
- } else {
- var toId = name + "_to";
- elem = document.getElementById(toId);
- var o = new Option(newRepr, newId);
- SelectBox.add_to_cache(toId, o);
- SelectBox.redisplay(toId);
- }
- win.close();
-}
+// Handles related-objects functionality: lookup link for raw_id_fields
+// and Add Another links.
+
+function html_unescape(text) {
+ // Unescape a string that was escaped using django.utils.html.escape.
+ text = text.replace(/</g, '<');
+ text = text.replace(/>/g, '>');
+ text = text.replace(/"/g, '"');
+ text = text.replace(/'/g, "'");
+ text = text.replace(/&/g, '&');
+ return text;
+}
+
+function showRelatedObjectLookupPopup(triggeringLink) {
+ var name = triggeringLink.id.replace(/^lookup_/, '');
+ // IE doesn't like periods in the window name, so convert temporarily.
+ name = name.replace(/\./g, '___');
+ var href;
+ if (triggeringLink.href.search(/\?/) >= 0) {
+ href = triggeringLink.href + '&pop=1';
+ } else {
+ href = triggeringLink.href + '?pop=1';
+ }
+ var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
+ win.focus();
+ return false;
+}
+
+function dismissRelatedLookupPopup(win, chosenId) {
+ var name = win.name.replace(/___/g, '.');
+ var elem = document.getElementById(name);
+ if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) {
+ elem.value += ',' + chosenId;
+ } else {
+ document.getElementById(name).value = chosenId;
+ }
+ win.close();
+}
+
+function showAddAnotherPopup(triggeringLink) {
+ var name = triggeringLink.id.replace(/^add_/, '');
+ name = name.replace(/\./g, '___');
+ href = triggeringLink.href
+ if (href.indexOf('?') == -1) {
+ href += '?_popup=1';
+ } else {
+ href += '&_popup=1';
+ }
+ var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
+ win.focus();
+ return false;
+}
+
+function showEditSelectedPopup(triggeringLink) {
+ var name = triggeringLink.id.replace(/^edit_/, '');
+ name = name.replace(/\./g, '___');
+ var elem = document.getElementById(name);
+ var id = elem.options[elem.selectedIndex].value;
+ if (id == '')
+ return false;
+
+ href = triggeringLink.href +id+'/';
+ if (href.indexOf('?') == -1) {
+ href += '?_popup=1';
+ } else {
+ href += '&_popup=1';
+ }
+ var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
+ win.focus();
+ return false;
+}
+
+function dismissAddAnotherPopup(win, newId, newRepr) {
+ // newId and newRepr are expected to have previously been escaped by
+ // django.utils.html.escape.
+ newId = html_unescape(newId);
+ newRepr = html_unescape(newRepr);
+ var name = win.name.replace(/___/g, '.');
+ var elem = document.getElementById(name);
+ if (elem) {
+ if (elem.nodeName == 'SELECT') {
+ var o = new Option(newRepr, newId);
+ elem.options[elem.options.length] = o;
+ o.selected = true;
+ } else if (elem.nodeName == 'INPUT') {
+ elem.value = newId;
+ }
+ } else {
+ var toId = name + "_to";
+ elem = document.getElementById(toId);
+ var o = new Option(newRepr, newId);
+ SelectBox.add_to_cache(toId, o);
+ SelectBox.redisplay(toId);
+ }
+ win.close();
+}
Index: django/contrib/admin/widgets.py
===================================================================
--- django/contrib/admin/widgets.py (revision 7195)
+++ django/contrib/admin/widgets.py (working copy)
@@ -150,6 +150,9 @@
output.append(u' ' % \
(related_url, name))
output.append(u'' % settings.ADMIN_MEDIA_PREFIX)
+ output.append(' ' % \
+ (related_url, name))
+ output.append(u'' % settings.ADMIN_MEDIA_PREFIX)
return mark_safe(u''.join(output))
def __deepcopy__(self, memo):