~canonical-django/canonical-django/project-template

« back to all changes in this revision

Viewing changes to trunk/python-packages/django/contrib/admin/media/js/admin/RelatedObjectLookups.js

  • Committer: Matthew Nuzum
  • Date: 2008-11-13 05:46:03 UTC
  • Revision ID: matthew.nuzum@canonical.com-20081113054603-v0kvr6z6xyexvqt3
adding to version control

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Handles related-objects functionality: lookup link for raw_id_fields
 
2
// and Add Another links.
 
3
 
 
4
function html_unescape(text) {
 
5
    // Unescape a string that was escaped using django.utils.html.escape.
 
6
    text = text.replace(/&lt;/g, '<');
 
7
    text = text.replace(/&gt;/g, '>');
 
8
    text = text.replace(/&quot;/g, '"');
 
9
    text = text.replace(/&#39;/g, "'");
 
10
    text = text.replace(/&amp;/g, '&');
 
11
    return text;
 
12
}
 
13
 
 
14
function showRelatedObjectLookupPopup(triggeringLink) {
 
15
    var name = triggeringLink.id.replace(/^lookup_/, '');
 
16
    // IE doesn't like periods in the window name, so convert temporarily.
 
17
    name = name.replace(/\./g, '___');
 
18
    var href;
 
19
    if (triggeringLink.href.search(/\?/) >= 0) {
 
20
        href = triggeringLink.href + '&pop=1';
 
21
    } else {
 
22
        href = triggeringLink.href + '?pop=1';
 
23
    }
 
24
    var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
 
25
    win.focus();
 
26
    return false;
 
27
}
 
28
 
 
29
function dismissRelatedLookupPopup(win, chosenId) {
 
30
    var name = win.name.replace(/___/g, '.');
 
31
    var elem = document.getElementById(name);
 
32
    if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) {
 
33
        elem.value += ',' + chosenId;
 
34
    } else {
 
35
        document.getElementById(name).value = chosenId;
 
36
    }
 
37
    win.close();
 
38
}
 
39
 
 
40
function showAddAnotherPopup(triggeringLink) {
 
41
    var name = triggeringLink.id.replace(/^add_/, '');
 
42
    name = name.replace(/\./g, '___');
 
43
    href = triggeringLink.href
 
44
    if (href.indexOf('?') == -1) {
 
45
        href += '?_popup=1';
 
46
    } else {
 
47
        href  += '&_popup=1';
 
48
    }
 
49
    var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
 
50
    win.focus();
 
51
    return false;
 
52
}
 
53
 
 
54
function dismissAddAnotherPopup(win, newId, newRepr) {
 
55
    // newId and newRepr are expected to have previously been escaped by
 
56
    // django.utils.html.escape.
 
57
    newId = html_unescape(newId);
 
58
    newRepr = html_unescape(newRepr);
 
59
    var name = win.name.replace(/___/g, '.');
 
60
    var elem = document.getElementById(name);
 
61
    if (elem) {
 
62
        if (elem.nodeName == 'SELECT') {
 
63
            var o = new Option(newRepr, newId);
 
64
            elem.options[elem.options.length] = o;
 
65
            o.selected = true;
 
66
        } else if (elem.nodeName == 'INPUT') {
 
67
            elem.value = newId;
 
68
        }
 
69
    } else {
 
70
        var toId = name + "_to";
 
71
        elem = document.getElementById(toId);
 
72
        var o = new Option(newRepr, newId);
 
73
        SelectBox.add_to_cache(toId, o);
 
74
        SelectBox.redisplay(toId);
 
75
    }
 
76
    win.close();
 
77
}