Ticket #13883: RelatedObjectLookups.js.diff

File RelatedObjectLookups.js.diff, 2.1 KB (added by SardarNL, 14 years ago)

takes group in account

  • js/admin/RelatedObjectLookups.js

     
    6666    return false;
    6767}
    6868
    69 function dismissAddAnotherPopup(win, newId, newRepr) {
    70     // newId and newRepr are expected to have previously been escaped by
     69function dismissAddAnotherPopup(win, newId, newRepr, newGrp) {
     70    // newId, newRepr and newGrp are expected to have previously been escaped by
    7171    // django.utils.html.escape.
    7272    newId = html_unescape(newId);
    7373    newRepr = html_unescape(newRepr);
     74    newGrp = newGrp? html_unescape(newGrp): null;
    7475    var name = windowname_to_id(win.name);
    7576    var elem = document.getElementById(name);
    76     if (elem) {
     77    if (elem) { //simple selects
    7778        if (elem.nodeName == 'SELECT') {
    7879            var o = new Option(newRepr, newId);
    79             elem.options[elem.options.length] = o;
     80            if(newGrp) { //find/create option group
     81                var grps = elem.getElementsByTagName('optgroup');
     82                var grp = null;
     83                for(var i=0; i < grps.length; i++) {
     84                    if(grps[i].getAttribute('label') == newGrp) {
     85                        grp = grps[i];
     86                        break;
     87                    }
     88                }
     89                if(grp == null) {
     90                    grp = document.createElement('optgroup');
     91                    grp.setAttribute('label', newGrp);
     92                    elem.appendChild(grp);
     93                }
     94                grp.appendChild(o);
     95            } else {
     96                elem.options[elem.options.length] = o;
     97            }
    8098            o.selected = true;
    8199        } else if (elem.nodeName == 'INPUT') {
    82100            if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) {
     
    89107        var toId = name + "_to";
    90108        elem = document.getElementById(toId);
    91109        var o = new Option(newRepr, newId);
    92         SelectBox.add_to_cache(toId, o);
     110        SelectBox.add_to_cache(toId, o, newGrp);
    93111        SelectBox.redisplay(toId);
    94112    }
    95113    win.close();
Back to Top