Sfoglia il codice sorgente

Merge pull request #2892 from netounet/patch-2

Fix collection management
Fixes #2909
Sullivan SENECHAL 10 anni fa
parent
commit
61300928d0
1 ha cambiato i file con 12 aggiunte e 7 eliminazioni
  1. 12 7
      Resources/public/Admin.js

+ 12 - 7
Resources/public/Admin.js

@@ -16,16 +16,20 @@ jQuery(document).ready(function() {
     }
 
     Admin.setup_per_page_switcher(document);
+    Admin.setup_collection_buttons(document);
     Admin.shared_setup(document);
 });
 
 jQuery(document).on('sonata-admin-append-form-element', function(e) {
     Admin.setup_select2(e.target);
     Admin.setup_icheck(e.target);
+    Admin.setup_collection_counter(e.target);
 });
 
 var Admin = {
 
+    collectionCounters: [],
+
     /**
      * This function must called when a ajax call is done, to ensure
      * retrieve html is properly setup
@@ -34,7 +38,6 @@ var Admin = {
      */
     shared_setup: function(subject) {
         Admin.log("[core|shared_setup] Register services on", subject);
-        Admin.setup_collection_buttons(subject);
         Admin.set_object_field_value(subject);
         Admin.setup_select2(subject);
         Admin.setup_icheck(subject);
@@ -44,6 +47,7 @@ var Admin = {
         Admin.setup_form_tabs_for_errors(subject);
         Admin.setup_inline_form_errors(subject);
         Admin.setup_tree_view(subject);
+        Admin.setup_collection_counter(subject);
 
 //        Admin.setup_list_modal(subject);
     },
@@ -304,10 +308,8 @@ var Admin = {
         });
     },
 
-    setup_collection_buttons: function(subject) {
-        Admin.log('[core|setup_collection_buttons] setup collection buttons', subject);
-
-        var counters = [];
+    setup_collection_counter: function(subject) {
+        Admin.log('[core|setup_collection_counter] setup collection counter', subject);
 
         // Count and save element of each collection
         var highestCounterRegexp = new RegExp('_([0-9])+$');
@@ -320,14 +322,17 @@ var Admin = {
                     counter = parseInt(matches[1], 10);
                 }
             });
-            counters[collection.attr('id')] = counter;
+            Admin.collectionCounters[collection.attr('id')] = counter;
         });
+    },
+
+    setup_collection_buttons: function(subject) {
 
         jQuery(subject).on('click', '.sonata-collection-add', function(event) {
             Admin.stopEvent(event);
 
             var container = jQuery(this).closest('[data-prototype]');
-            var counter = ++counters[container.attr('id')];
+            var counter = ++Admin.collectionCounters[container.attr('id')];
             var proto = container.attr('data-prototype');
             var protoName = container.attr('data-prototype-name') || '__name__';
             // Set field id