]> _ Git - cubist_cms-back.git/commitdiff
wip #6250 @0.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 6 Sep 2023 18:29:28 +0000 (20:29 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 6 Sep 2023 18:29:28 +0000 (20:29 +0200)
src/app/Middleware/BunchRequest.php
src/public/bunchmultiple/bunchmultiple.js
src/resources/views/fields/bunch.blade.php
src/resources/views/fields/bunch_multiple.blade.php

index 00e16b78c0385b69f4fedd8870367747581c0862..d4816688c085a3693067f88f3ba334bc7b4ea8b4 100644 (file)
@@ -49,7 +49,7 @@ class BunchRequest extends CubistMiddleware
                 $this->normalizeBunchInBunch($v);
             }
             if (stristr($k, '___')) {
-                $e = explode('___', $k);
+                $e = explode('___', $k, 2);
                 $varname = $e[0];
                 $sub = $e[1];
                 if (!isset($data[$varname])) {
index 7bebb0805f7f5fd365f96c4b2450849457e8bb9f..558a52433ee27d157884ee2dae73a67b7bab937b 100644 (file)
         },
 
         setValues(item, values) {
+            let $this = this;
             var id = this.element.attr('id');
             try {
                 $.each(values, function (k, v) {
                     var input = $(item).find('[name="' + id + '___' + k + '"]');
-
-                    if (input.is('.hiddenfield')) {
-                        $(input).parent().attr('data-values', JSON.stringify(v));
-                    } else if ($(input).nextAll('[type="checkbox"]').length > 0) {
-                        var cb = $(input).nextAll('[type="checkbox"]');
-                        cb.attr('name', cb.prev('[type="hidden"]').attr('name')).attr('value', '1');
-                        cb.prop('checked', v === true || v === '1' || v === 1);
-                    } else if ($(input).is('.select2_from_array')) {
-                        try {
-                            if ($(input).is("[data-ajax]") && $(input).find('option[value="' + k + '"]').length === 0) {
-                                var options = $(input).data('options');
-                                var newOption = new Option(options[v], v, false, false);
-                                $(input).append(newOption).trigger('change');
+                    if (input.length === 0) {
+                        var bunch = $(item).find('[bp-field-name="' + id + '___' + k + '"][bp-field-type="bunch"]');
+                        var bunchName = $(bunch).attr('data-name');
+                        $.each(v, function (kk, vv) {
+                            let bunchInput = $(bunch).find('[name="' + bunchName + '___' + kk + '"]');
+                            if (bunchInput.length > 0) {
+                                $this.setInputVal(bunchInput, kk, vv);
                             }
-                        } catch (e) {
-                        }
-                        input.val(v);
-                    } else if (input) {
-                        input.val(v);
+                        });
+                    } else {
+                        $this.setInputVal(input, k, v);
                     }
                 });
             } catch (e) {
             }
             this.updateAndChange();
         },
+
+        setInputVal: function (input, k, v) {
+            if (input.is('.hiddenfield')) {
+                $(input).parent().attr('data-values', JSON.stringify(v));
+            } else if ($(input).nextAll('[type="checkbox"]').length > 0) {
+                var cb = $(input).nextAll('[type="checkbox"]');
+                cb.attr('name', cb.prev('[type="hidden"]').attr('name')).attr('value', '1');
+                cb.prop('checked', v === true || v === '1' || v === 1);
+            } else if ($(input).is('.select2_from_array')) {
+                try {
+                    if ($(input).is("[data-ajax]") && $(input).find('option[value="' + k + '"]').length === 0) {
+                        var options = $(input).data('options');
+                        var newOption = new Option(options[v], v, false, false);
+                        $(input).append(newOption).trigger('change');
+                    }
+                } catch (e) {
+
+                }
+                input.val(v);
+            } else if (input) {
+                input.val(v);
+            }
+        },
     };
 
     jQuery.fn.bunchmultiple = function () {
index 98d1983747db6d1c9791d602215c43c020d05251..f9619489440f719b0d38ec0f264d3604b08558a6 100644 (file)
@@ -7,6 +7,7 @@ if ($value == '') {
     $value = $empty;
 }
 
+
 if (is_string($value)) {
     $value = json_decode($value, true);
 }
index 4f901cd5845a94f00923c6fa588fec63fba4e7dd..8bb9cac18bc2dd2c466dfe7c8826782efd223145 100644 (file)
@@ -9,6 +9,7 @@ if (!is_string($value)) {
     $value = json_encode($value);
 }
 
+
 @endphp
 <div class="bunchmultiple{{ ($field['show_empty']?' showEmpty':'') }}" id="{!! $field['rand'] !!}" data-bunch-name="{{$field['name']}}" data-values="{{ $value }}">
     <input type="hidden" class="hiddenfield" name="{{$field['name']}}" value="{{ $value }}" data-bmid="{!! $field['rand'] !!}"/>