diff --git a/modules/backend/formwidgets/Repeater.php b/modules/backend/formwidgets/Repeater.php index 80e744670..0919e6368 100644 --- a/modules/backend/formwidgets/Repeater.php +++ b/modules/backend/formwidgets/Repeater.php @@ -175,8 +175,8 @@ class Repeater extends FormWidgetBase $loadValue = $this->getLoadValue(); if (is_array($loadValue)) { - foreach ($loadValue as $loadedValue) { - $loadedIndexes[] = array_get($loadedValue, '_index'); + foreach ($loadValue as $index => $loadedValue) { + $loadedIndexes[] = array_get($loadedValue, '_index', $index); $loadedGroups[] = array_get($loadedValue, '_group'); } } @@ -338,4 +338,14 @@ class Repeater extends FormWidgetBase { return array_get($this->indexMeta, $index.'.groupCode'); } + + /** + * Returns the group title from its unique code. + * @param $groupCode string + * @return string + */ + public function getGroupTitle($groupCode) + { + return array_get($this->groupDefinitions, $groupCode.'.name'); + } } diff --git a/modules/backend/formwidgets/repeater/assets/js/repeater.js b/modules/backend/formwidgets/repeater/assets/js/repeater.js index 00969db83..d1fda348e 100644 --- a/modules/backend/formwidgets/repeater/assets/js/repeater.js +++ b/modules/backend/formwidgets/repeater/assets/js/repeater.js @@ -173,7 +173,12 @@ Repeater.prototype.getCollapseTitle = function($item) { var $target, - defaultText = '' + defaultText = '', + explicitText = $item.data('collapse-title') + + if (explicitText) { + return explicitText + } if (this.options.titleFrom) { $target = $('[data-field-name="'+this.options.titleFrom+'"]') diff --git a/modules/backend/formwidgets/repeater/partials/_repeater_item.htm b/modules/backend/formwidgets/repeater/partials/_repeater_item.htm index 3a867f375..843fd24ef 100644 --- a/modules/backend/formwidgets/repeater/partials/_repeater_item.htm +++ b/modules/backend/formwidgets/repeater/partials/_repeater_item.htm @@ -1,7 +1,10 @@ getGroupCodeFromIndex($indexValue) : ''; + $itemTitle = $useGroups ? $this->getGroupTitle($groupCode) : null; ?> -