소스 검색

added add/delete buttons for collections with allow_add/allow_delete

Arnaud Le Blanc 13 년 전
부모
커밋
75707fd4a2
3개의 변경된 파일66개의 추가작업 그리고 3개의 파일을 삭제
  1. 20 1
      Resources/public/base.js
  2. 15 1
      Resources/public/css/layout.css
  3. 31 1
      Resources/views/Form/form_admin_fields.html.twig

+ 20 - 1
Resources/public/base.js

@@ -3,6 +3,7 @@ jQuery(document).ready(function() {
     Admin.add_collapsed_toggle();
     Admin.add_collapsed_toggle();
     Admin.add_filters(document);
     Admin.add_filters(document);
     Admin.set_object_field_value(document);
     Admin.set_object_field_value(document);
+    Admin.setup_collection_buttons(document);
 });
 });
 
 
 var Admin = {
 var Admin = {
@@ -143,5 +144,23 @@ var Admin = {
                 }
                 }
             });
             });
         });
         });
+    },
+
+    setup_collection_buttons: function(subject) {
+
+        jQuery(subject).delegate('.sonata-collection-add', 'click', function(event) {
+            Admin.stopEvent(event);
+
+            var container = jQuery(this).closest('[data-prototype]');
+            var proto = container.attr('data-prototype');
+            proto = proto.replace(/\$\$name\$\$/g, '');
+            jQuery(proto).insertBefore(jQuery(this).parent());
+        });
+
+        jQuery(subject).delegate('.sonata-collection-delete', 'click', function(event) {
+            Admin.stopEvent(event);
+
+            jQuery(this).closest('.sonata-collection-row').remove();
+        });
     }
     }
-}
+}

+ 15 - 1
Resources/public/css/layout.css

@@ -215,4 +215,18 @@ body.sonata-bc {
 .sonata-bc .container-fluid > .sidebar
 .sonata-bc .container-fluid > .sidebar
 {
 {
     top: auto;
     top: auto;
-}
+}
+
+.sonata-collection-add, .sonata-collection-delete {
+    display: inline-block;
+    width: 16px;
+    height: 28px;
+    background: url(../famfamfam/add.png) no-repeat 50% 50%;
+}
+
+.sonata-collection-delete {
+    background-image: url(../famfamfam/delete.png);
+    float: left;
+    margin-top: 5px;
+}
+

+ 31 - 1
Resources/views/Form/form_admin_fields.html.twig

@@ -107,4 +107,34 @@ file that was distributed with this source code.
             </div>
             </div>
         </div>
         </div>
     {% endif %}
     {% endif %}
-{% endblock field_row %}
+{% endblock field_row %}
+
+{% block collection_widget_row %}
+{% spaceless %}
+    <div class="sonata-collection-row">
+        {% if allow_delete %}
+            <a href="#" class="sonata-collection-delete"></a>
+        {% endif %}
+        {{ form_row(child) }}
+    </div>
+{% endspaceless %}
+{% endblock %}
+
+{% block collection_widget %}
+{% spaceless %}
+    {% if prototype is defined %}
+        {% set child = prototype %}
+        {% set attr = attr|merge({'data-prototype': block('collection_widget_row') }) %}
+    {% endif %}
+    <div {{ block('widget_container_attributes') }}>
+        {{ form_errors(form) }}
+        {% for child in form %}
+            {{ block('collection_widget_row') }}
+        {% endfor %}
+        {{ form_rest(form) }}
+        {% if allow_add %}
+            <div><a href="#" class="sonata-collection-add"></a></div>
+        {% endif %}
+    </div>
+{% endspaceless %}
+{% endblock collection_widget %}