#14303: admin inline form id attribute numbering order and uniqueness is lost
----------------------------------+-----------------------------------------
 Reporter:  m0nonoke              |       Owner:  nobody    
   Status:  new                   |   Milestone:  1.3       
Component:  django.contrib.admin  |     Version:  SVN       
 Keywords:  inline javascript     |       Stage:  Unreviewed
Has_patch:  0                     |  
----------------------------------+-----------------------------------------
 Inline forms that are added using the "Add another ..." button created by
 contrib/admin/media/js/inlines.js lose their id attribute ordering and
 uniqueness if they are deleted out of reverse order.

 To demonstrate the effect take the following steps:

 1. Create an admin form eg. MyAdmin with a tabular inline form eg.
 MyInline.

 2. Add 3 or more inline forms using the "Add another MyInline button"

 3. The HTML for the formset looks something like <tr id="myinline_set-0"
 class="dynamic-myinline_ser row1"> where myinline_set is the prefix. For 4
 forms the ids are therefore myinline_set-0, myinline_set-1,
 myinline_set-2, myinline_set-3.

 4. Delete the second form using the delete link. The ids are now
 myinline_set-0, myinline_set-2, myinline_set-3.

 5. Add another inline using the "Add another MyInline button". The ids now
 show The ids are now myinline_set-0, myinline_set-2, myinline_set-3,
 myinline_set-3.


 It looks like the problem occurs because of the way the id is computed in
 contrib/admin/media/js/inlines.js.
 {{{
 # contrib/admin/media/js/inlines.js Line 59-62
 59 row.removeClass(options.emptyCssClass)
 60    .addClass(options.formCssClass)
 61    .attr("id", options.prefix + "-" + nextIndex)
 62    .insertBefore($(template));
 }}}

 nextIndex is just the TOTAL_FORMS value of the management form plus one.
 The solution would involve resetting the values for all inline forms.

-- 
Ticket URL: <http://code.djangoproject.com/ticket/14303>
Django <http://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

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

Reply via email to