diff --git a/modules/backend/formwidgets/Repeater.php b/modules/backend/formwidgets/Repeater.php index 41f5d8a87..ca58d1c49 100644 --- a/modules/backend/formwidgets/Repeater.php +++ b/modules/backend/formwidgets/Repeater.php @@ -92,8 +92,8 @@ class Repeater extends FormWidgetBase ]); $fieldName = $this->formField->getName(false); - $this->indexInputName = self::INDEX_PREFIX.$fieldName.'[]'; - $this->groupInputName = self::GROUP_PREFIX.$fieldName.'[]'; + $this->indexInputName = self::INDEX_PREFIX.$fieldName; + $this->groupInputName = self::GROUP_PREFIX.$fieldName; $this->processGroupMode(); @@ -166,15 +166,15 @@ class Repeater extends FormWidgetBase $itemIndexes = post($this->indexInputName, $loadValue); $itemGroups = post($this->groupInputName, $loadValue); + if (!count($itemIndexes)) { + return; + } + $items = array_combine( (array) $itemIndexes, (array) ($this->useGroups ? $itemGroups : $itemIndexes) ); - if (!is_array($items)) { - return; - } - foreach ($items as $itemIndex => $groupCode) { $this->makeItemFormWidget($itemIndex, $groupCode); $this->indexCount = max((int) $itemIndex, $this->indexCount); @@ -225,8 +225,6 @@ class Repeater extends FormWidgetBase $this->indexCount++; - traceLog($this->indexCount); - $groupCode = post('_repeater_group'); $this->prepareVars(); diff --git a/modules/backend/formwidgets/repeater/assets/js/repeater.js b/modules/backend/formwidgets/repeater/assets/js/repeater.js index 5f661946b..8537a438e 100644 --- a/modules/backend/formwidgets/repeater/assets/js/repeater.js +++ b/modules/backend/formwidgets/repeater/assets/js/repeater.js @@ -83,11 +83,23 @@ } Repeater.prototype.clickAddGroupButton = function(ev) { - var templateHtml = $('> [data-group-palette-template]', this.$el).html() + var templateHtml = $('> [data-group-palette-template]', this.$el).html(), + $target = $(ev.target), + $form = this.$el.closest('form') - $(ev.target).ocPopover({ + $target.ocPopover({ content: templateHtml }) + + var $container = $target.data('oc.popover').$container + + $container.on('click', 'a', function (ev) { + setTimeout(function() { + $(ev.target).trigger('close.oc.popover') + }, 1) + }) + + $('[data-repeater-add]', $container).data('request-form', $form) } Repeater.prototype.onRemoveItemSuccess = function(ev) { diff --git a/modules/backend/formwidgets/repeater/partials/_repeater.htm b/modules/backend/formwidgets/repeater/partials/_repeater.htm index d68c8a1b4..7c5d6611b 100644 --- a/modules/backend/formwidgets/repeater/partials/_repeater.htm +++ b/modules/backend/formwidgets/repeater/partials/_repeater.htm @@ -49,7 +49,6 @@
  • diff --git a/modules/backend/formwidgets/repeater/partials/_repeater_item.htm b/modules/backend/formwidgets/repeater/partials/_repeater_item.htm index 76a28bf7b..3a867f375 100644 --- a/modules/backend/formwidgets/repeater/partials/_repeater_item.htm +++ b/modules/backend/formwidgets/repeater/partials/_repeater_item.htm @@ -37,9 +37,9 @@ - + - +