Allow editing of the selected object of the filter_vertical/filter_horizontal widget with jquery

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Index: django/contrib/admin/media/js/SelectFilter2.js
===================================================================
--- django/contrib/admin/media/js/SelectFilter2.js      (revision 9220)
+++ django/contrib/admin/media/js/SelectFilter2.js      (working copy)
@@ -71,6 +71,8 @@
         addEvent(filter_input, 'keydown', function(e) { SelectFilter.filter_key_down(e, field_id); });
         addEvent(from_box, 'dblclick', function() { SelectBox.move(field_id + '_from', field_id + '_to'); });
         addEvent(to_box, 'dblclick', function() { SelectBox.move(field_id + '_to', field_id + '_from'); });
+        addEvent(from_box, 'keypress', function(e) { SelectBox.edit(e, field_id + '_from'); });
+        addEvent(to_box, 'keypress', function(e) { SelectBox.edit(e, field_id + '_to'); });
         addEvent(findForm(from_box), 'submit', function() { SelectBox.select_all(field_id + '_to'); });
         SelectBox.init(field_id + '_from');
         SelectBox.init(field_id + '_to');
Index: django/contrib/admin/media/js/SelectBox.js
===================================================================
--- django/contrib/admin/media/js/SelectBox.js  (revision 9220)
+++ django/contrib/admin/media/js/SelectBox.js  (working copy)
@@ -107,5 +107,16 @@
         for (var i = 0; i < box.options.length; i++) {
             box.options[i].selected = 'selected';
         }
+    },
+    edit: function(event, id) {
+        // 45 = Insert
+        if ((event.which && event.which == 45) || (event.keyCode && event.keyCode == 45)) {
+            var selected_id = document.getElementById(id).value;
+            // Thanks trovster from #jquery@freenode!
+            var link = $('#'+id).parents().find('a.add-another:first').attr('href')+'../'+selected_id
+            var win = window.open(link + '?_popup=1', link, 'height=600,width=1000,resizable=yes,scrollbars=yes');
+            win.focus();
+            return false;
+        }
     }
 }

More like this

  1. admin: edit related object shortcut by christian 5 years, 7 months ago
  2. Horizontal RadioSelect widget by gnrfan 1 year, 2 months ago
  3. filter/search a newforms select widget by miracle2k 5 years, 8 months ago
  4. jQuery Double Click Edit ManyToMany in Admin by justhamade 3 years, 4 months ago
  5. Django using admin horizontal filter in forms by crodjer 1 year, 11 months ago

Comments

(Forgotten your password?)