diff options
| author | Julien Phalip <jphalip@gmail.com> | 2013-07-30 00:21:08 -0700 |
|---|---|---|
| committer | Julien Phalip <jphalip@gmail.com> | 2013-07-30 00:21:08 -0700 |
| commit | e351dbf6ee5d344a0fe73a6d05c7dcad7b1d2e9c (patch) | |
| tree | 39e2756c9aa060f8d52f6a2601b00c18f98654da /django | |
| parent | 6ed579e7eb6e1eda3dd1b0afb306d58b9498bfa0 (diff) | |
Fixed #19082 -- Enabled admin field pre-population for existing objects.
Thanks to msaelices and d1ffuz0r for the initial patch and tests.
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/admin/static/admin/js/prepopulate.js | 41 | ||||
| -rw-r--r-- | django/contrib/admin/static/admin/js/prepopulate.min.js | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templatetags/admin_modify.py | 2 |
3 files changed, 25 insertions, 20 deletions
diff --git a/django/contrib/admin/static/admin/js/prepopulate.js b/django/contrib/admin/static/admin/js/prepopulate.js index 24f24f95a8..db7903a5ef 100644 --- a/django/contrib/admin/static/admin/js/prepopulate.js +++ b/django/contrib/admin/static/admin/js/prepopulate.js @@ -3,32 +3,37 @@ /* Depends on urlify.js Populates a selected field with the values of the dependent fields, - URLifies and shortens the string. - dependencies - array of dependent fields id's - maxLength - maximum length of the URLify'd string + URLifies and shortens the string. + dependencies - array of dependent fields ids + maxLength - maximum length of the URLify'd string */ return this.each(function() { - var field = $(this); - - field.data('_changed', false); - field.change(function() { - field.data('_changed', true); - }); + var prepopulatedField = $(this); var populate = function () { - // Bail if the fields value has changed - if (field.data('_changed') == true) return; - + // Bail if the field's value has been changed by the user + if (prepopulatedField.data('_changed')) { + return; + } + var values = []; $.each(dependencies, function(i, field) { - if ($(field).val().length > 0) { - values.push($(field).val()); - } - }) - field.val(URLify(values.join(' '), maxLength)); + field = $(field); + if (field.val().length > 0) { + values.push(field.val()); + } + }); + prepopulatedField.val(URLify(values.join(' '), maxLength)); }; - $(dependencies.join(',')).keyup(populate).change(populate).focus(populate); + prepopulatedField.data('_changed', false); + prepopulatedField.change(function() { + prepopulatedField.data('_changed', true); + }); + + if (!prepopulatedField.val()) { + $(dependencies.join(',')).keyup(populate).change(populate).focus(populate); + } }); }; })(django.jQuery); diff --git a/django/contrib/admin/static/admin/js/prepopulate.min.js b/django/contrib/admin/static/admin/js/prepopulate.min.js index aa94937963..4a75827c97 100644 --- a/django/contrib/admin/static/admin/js/prepopulate.min.js +++ b/django/contrib/admin/static/admin/js/prepopulate.min.js @@ -1 +1 @@ -(function(a){a.fn.prepopulate=function(d,g){return this.each(function(){var b=a(this);b.data("_changed",false);b.change(function(){b.data("_changed",true)});var c=function(){if(b.data("_changed")!=true){var e=[];a.each(d,function(h,f){a(f).val().length>0&&e.push(a(f).val())});b.val(URLify(e.join(" "),g))}};a(d.join(",")).keyup(c).change(c).focus(c)})}})(django.jQuery); +(function(b){b.fn.prepopulate=function(e,g){return this.each(function(){var a=b(this),d=function(){if(!a.data("_changed")){var f=[];b.each(e,function(h,c){c=b(c);c.val().length>0&&f.push(c.val())});a.val(URLify(f.join(" "),g))}};a.data("_changed",false);a.change(function(){a.data("_changed",true)});a.val()||b(e.join(",")).keyup(d).change(d).focus(d)})}})(django.jQuery); diff --git a/django/contrib/admin/templatetags/admin_modify.py b/django/contrib/admin/templatetags/admin_modify.py index 98ac1a657e..005bde3023 100644 --- a/django/contrib/admin/templatetags/admin_modify.py +++ b/django/contrib/admin/templatetags/admin_modify.py @@ -9,7 +9,7 @@ def prepopulated_fields_js(context): the prepopulated fields for both the admin form and inlines. """ prepopulated_fields = [] - if context['add'] and 'adminform' in context: + if 'adminform' in context: prepopulated_fields.extend(context['adminform'].prepopulated_fields) if 'inline_admin_formsets' in context: for inline_admin_formset in context['inline_admin_formsets']: |
