Author: russellm
Date: 2010-05-11 08:40:17 -0500 (Tue, 11 May 2010)
New Revision: 13234

Modified:
   django/trunk/django/contrib/admin/media/js/inlines.js
   django/trunk/django/contrib/admin/media/js/inlines.min.js
Log:
Fixed #13521 -- Corrected javascript comparisons determining when to show and 
hide the 'add another' inline button. Thanks to darkrho for the report and 
patch.

Modified: django/trunk/django/contrib/admin/media/js/inlines.js
===================================================================
--- django/trunk/django/contrib/admin/media/js/inlines.js       2010-05-11 
13:07:09 UTC (rev 13233)
+++ django/trunk/django/contrib/admin/media/js/inlines.js       2010-05-11 
13:40:17 UTC (rev 13234)
@@ -95,7 +95,7 @@
                                // Update number of total forms
                                $(totalForms).val(nextIndex + 1);
                                // Hide add button in case we've hit the max, 
except we want to add infinitely
-                               if ((maxForms.val() != '') && (maxForms.val() 
<= totalForms.val())) {
+                               if ((maxForms.val() != '') && 
(maxForms.val()-totalForms.val()) <= 0) {
                                        addButton.parent().hide();
                                }
                                // The delete button of each row triggers a 
bunch of other things
@@ -111,7 +111,7 @@
                                        var forms = $("." + 
options.formCssClass);
                                        $("#id_" + options.prefix + 
"-TOTAL_FORMS").val(forms.length);
                                        // Show add button again once we drop 
below max
-                                       if ((maxForms.val() == '') || 
(maxForms.val() >= forms.length)) {
+                                       if ((maxForms.val() == '') || 
(maxForms.val()-forms.length) > 0) {
                                                addButton.parent().show();
                                        }
                                        // Also, update names and ids for all 
remaining form controls

Modified: django/trunk/django/contrib/admin/media/js/inlines.min.js
===================================================================
--- django/trunk/django/contrib/admin/media/js/inlines.min.js   2010-05-11 
13:07:09 UTC (rev 13233)
+++ django/trunk/django/contrib/admin/media/js/inlines.min.js   2010-05-11 
13:40:17 UTC (rev 13234)
@@ -2,5 +2,5 @@
 if(a(this).length&&g){var 
i;if(a(this).attr("tagName")=="TR"){g=this.eq(0).children().length;a(this).parent().append('<tr
 class="'+b.addCssClass+'"><td colspan="'+g+'"><a 
href="javascript:void(0)">'+b.addText+"</a></tr>");i=a(this).parent().find("tr:last
 a")}else{a(this).filter(":last").after('<div class="'+b.addCssClass+'"><a 
href="javascript:void(0)">'+b.addText+"</a></div>");i=a(this).filter(":last").next().find("a")}i.click(function(){var
 e=a("#id_"+b.prefix+"-TOTAL_FORMS"),f=parseInt(e.val()),
 
j=a("#"+b.prefix+"-empty"),d=j.clone(true);d.removeClass(b.emptyCssClass).addClass(b.formCssClass).attr("id",b.prefix+"-"+f).insertBefore(a(j));d.find("*").filter(function(){var
 c=a(this);return 
c.attr("id")&&c.attr("id").search(/__prefix__/)>=0}).each(function(){var 
c=a(this);c.attr("id",c.attr("id").replace(/__prefix__/g,f))}).end().filter(function(){var
 c=a(this);return 
c.attr("name")&&c.attr("name").search(/__prefix__/)>=0}).each(function(){var 
c=a(this);c.attr("name",c.attr("name").replace(/__prefix__/g,
 f))});if(d.is("tr"))d.children(":last").append('<div><a 
class="'+b.deleteCssClass+'" 
href="javascript:void(0)">'+b.deleteText+"</a></div>");else 
d.is("ul")||d.is("ol")?d.append('<li><a class="'+b.deleteCssClass+'" 
href="javascript:void(0)">'+b.deleteText+"</a></li>"):d.children(":first").append('<span><a
 class="'+b.deleteCssClass+'" 
href="javascript:void(0)">'+b.deleteText+"</a></span>");d.find("input,select,textarea,label,a").each(function(){l(this,b.prefix,e.val())});a(e).val(f+1);h.val()!=""&&
-h.val()<=e.val()&&i.parent().hide();d.find("a."+b.deleteCssClass).click(function(){var
 
c=a(this).parents("."+b.formCssClass);c.remove();b.removed&&b.removed(c);c=a("."+b.formCssClass);a("#id_"+b.prefix+"-TOTAL_FORMS").val(c.length);if(h.val()==""||h.val()>=c.length)i.parent().show();for(var
 
k=0,m=c.length;k<m;k++)a(c.get(k)).find("input,select,textarea,label,a").each(function(){l(this,b.prefix,k)});return
 false});b.added&&b.added(d);return false})}return 
this};a.fn.formset.defaults={prefix:"form",
+h.val()-e.val()<=0&&i.parent().hide();d.find("a."+b.deleteCssClass).click(function(){var
 
c=a(this).parents("."+b.formCssClass);c.remove();b.removed&&b.removed(c);c=a("."+b.formCssClass);a("#id_"+b.prefix+"-TOTAL_FORMS").val(c.length);if(h.val()==""||h.val()-c.length>0)i.parent().show();for(var
 
k=0,m=c.length;k<m;k++)a(c.get(k)).find("input,select,textarea,label,a").each(function(){l(this,b.prefix,k)});return
 false});b.added&&b.added(d);return false})}return 
this};a.fn.formset.defaults={prefix:"form",
 addText:"add 
another",deleteText:"remove",addCssClass:"add-row",deleteCssClass:"delete-row",emptyCssClass:"empty-row",formCssClass:"dynamic-form",added:null,removed:null}})(django.jQuery);

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to