Author: zain
Date: 2009-06-07 02:05:27 -0500 (Sun, 07 Jun 2009)
New Revision: 10939

Modified:
   django/branches/soc2009/admin-ui/django/contrib/admin/media/css/forms.css
   django/branches/soc2009/admin-ui/django/contrib/admin/options.py
   
django/branches/soc2009/admin-ui/django/contrib/admin/templates/admin/edit_inline/stacked.html
Log:
[soc2009/admin-ui] First steps to dynamically add stacked inlines. Upon loading 
the change list page, all extra inline fields are hidden and an "Add" link is 
shown at the bottom. 

Currently, clicking on the link will only re-show the hidden extra inlines; it 
won't add any new ones. Proper addition is going to be in the next check-in.


Modified: 
django/branches/soc2009/admin-ui/django/contrib/admin/media/css/forms.css
===================================================================
--- django/branches/soc2009/admin-ui/django/contrib/admin/media/css/forms.css   
2009-06-07 07:01:22 UTC (rev 10938)
+++ django/branches/soc2009/admin-ui/django/contrib/admin/media/css/forms.css   
2009-06-07 07:05:27 UTC (rev 10939)
@@ -325,3 +325,6 @@
     padding-left: 14px;
 }
 
+.add_inline {
+    display: none;
+}
\ No newline at end of file

Modified: django/branches/soc2009/admin-ui/django/contrib/admin/options.py
===================================================================
--- django/branches/soc2009/admin-ui/django/contrib/admin/options.py    
2009-06-07 07:01:22 UTC (rev 10938)
+++ django/branches/soc2009/admin-ui/django/contrib/admin/options.py    
2009-06-07 07:05:27 UTC (rev 10939)
@@ -868,6 +868,7 @@
             'root_path': self.admin_site.root_path,
             'app_label': opts.app_label,
         }
+        #import ipdb; ipdb.set_trace()
         context.update(extra_context or {})
         return self.render_change_form(request, context, change=True, obj=obj)
     change_view = transaction.commit_on_success(change_view)
@@ -1122,7 +1123,7 @@
 
     def _media(self):
         from django.conf import settings
-        js = []
+        js = ['js/jquery.js']
         if self.prepopulated_fields:
             js.append('js/urlify.js')
         if self.filter_vertical or self.filter_horizontal:

Modified: 
django/branches/soc2009/admin-ui/django/contrib/admin/templates/admin/edit_inline/stacked.html
===================================================================
--- 
django/branches/soc2009/admin-ui/django/contrib/admin/templates/admin/edit_inline/stacked.html
      2009-06-07 07:01:22 UTC (rev 10938)
+++ 
django/branches/soc2009/admin-ui/django/contrib/admin/templates/admin/edit_inline/stacked.html
      2009-06-07 07:05:27 UTC (rev 10939)
@@ -5,7 +5,7 @@
 {{ inline_admin_formset.formset.non_form_errors }}
 
 {% for inline_admin_form in inline_admin_formset %}
-<div class="inline-related{% if forloop.last %} last-related{% endif %}">
+<div class="inline-related{% if forloop.last %} last-related{% endif %}" 
id="{{ inline_admin_formset.opts.verbose_name}}{{ forloop.counter }}">
   <h3><b>{{ inline_admin_formset.opts.verbose_name|title }}:</b>&nbsp;{% if 
inline_admin_form.original %}{{ inline_admin_form.original }}{% else %} #{{ 
forloop.counter }}{% endif %}
     {% if inline_admin_formset.formset.can_delete and 
inline_admin_form.original %}<span class="delete">{{ 
inline_admin_form.deletion_field.field }} {{ 
inline_admin_form.deletion_field.label_tag }}</span>{% endif %}
   </h3>
@@ -22,7 +22,33 @@
 </div>
 {% endfor %}
 
-{# <ul class="tools"> #}
-{#   <li><a class="add" href="">Add another {{ 
inline_admin_formset.opts.verbose_name|title }}</a></li> #}
-{# </ul> #}
+<ul class="tools add_inline">
+  <li><a id="{{ inline_admin_formset.opts.verbose_name }}-add" class="add" 
href="#">Add a {{ inline_admin_formset.opts.verbose_name }}</a></li>
+</ul>
+
 </div>
+
+<script type="text/javascript">
+$(function() {
+    {# TODO Zain: properly set the TOTAL_FORMS hidden input field #}
+    
+    var id_prefix = "{{ inline_admin_formset.opts.verbose_name }}";
+    var total_forms = {{ 
inline_admin_formset.formset.management_form.initial.TOTAL_FORMS }};
+    var initial_forms = {{ 
inline_admin_formset.formset.management_form.initial.INITIAL_FORMS }};
+    
+    // since javascript is turned on, unhide the "add new <inline>" link and 
hide the extras
+    $('.add_inline').show();
+    
+    for(var i = initial_forms + 1; i <= total_forms; i++) {
+        $('#' + id_prefix + i).hide();
+    }
+    
+    total_forms = initial_forms;
+    
+    // clicking on the "add" link will add a blank form to add a new inline 
object
+    $('#' + id_prefix + "-add").click(function() {
+        total_forms++;
+        $('#' + id_prefix + (total_forms)).show();
+    });
+});
+</script>


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-updates@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