diff --git a/modules/backend/behaviors/RelationController.php b/modules/backend/behaviors/RelationController.php index 20b55decc..25d6d3dc2 100644 --- a/modules/backend/behaviors/RelationController.php +++ b/modules/backend/behaviors/RelationController.php @@ -1477,39 +1477,79 @@ class RelationController extends ControllerBehavior /** * Determine the default buttons based on the model relationship type. - * @return string + * @return array|null */ protected function evalToolbarButtons() { $buttons = $this->getConfig('view[toolbarButtons]'); - if ($buttons === false) { - return null; - } - elseif (is_string($buttons)) { - return array_map('trim', explode('|', $buttons)); - } - elseif (is_array($buttons)) { - return $buttons; + if (!is_array($buttons)) { + if ($buttons === false) { + return null; + } elseif (is_string($buttons)) { + $buttons = array_map('trim', explode('|', $buttons)); + } elseif ($this->manageMode === 'pivot') { + $buttons = ['add', 'remove']; + } else { + switch ($this->relationType) { + case 'hasMany': + case 'morphMany': + case 'morphToMany': + case 'morphedByMany': + case 'belongsToMany': + return ['create', 'add', 'delete', 'remove']; + + case 'hasOne': + case 'morphOne': + case 'belongsTo': + return ['create', 'update', 'link', 'delete', 'unlink']; + } + } } - if ($this->manageMode == 'pivot') { - return ['add', 'remove']; + $buttonText = []; + + foreach ($buttons as $type => $text) { + if (is_numeric($type) || !$text) { + if (is_numeric($type) && $text) { + $type = $text; + } + + switch ($type) { + case 'create': + $text = 'backend::lang.relation.create_name'; + break; + + case 'update': + $text = 'backend::lang.relation.update_name'; + break; + + case 'delete': + $text = 'backend::lang.relation.delete'; + break; + + case 'add': + $text = 'backend::lang.relation.add_name'; + break; + + case 'remove': + $text = 'backend::lang.relation.remove'; + break; + + case 'link': + $text = 'backend::lang.relation.link_name'; + break; + + case 'unlink': + $text = 'backend::lang.relation.unlink'; + break; + } + } + + $buttonText[$type] = $text; } - switch ($this->relationType) { - case 'hasMany': - case 'morphMany': - case 'morphToMany': - case 'morphedByMany': - case 'belongsToMany': - return ['create', 'add', 'delete', 'remove']; - - case 'hasOne': - case 'morphOne': - case 'belongsTo': - return ['create', 'update', 'link', 'delete', 'unlink']; - } + return $buttonText; } /** @@ -1543,28 +1583,41 @@ class RelationController extends ControllerBehavior */ protected function evalManageTitle() { - if ($customTitle = $this->getConfig('manage[title]')) { + $customTitle = $this->getConfig('manage[title]'); + + if (is_string($customTitle)) { return $customTitle; } + $customTitles = is_array($customTitle) ? $customTitle : []; + switch ($this->manageMode) { case 'pivot': + if (array_key_exists('pivot', $customTitles)) { + return $customTitles['pivot']; + } elseif ($this->eventTarget === 'button-link') { + return 'backend::lang.relation.link_a_new'; + } + + return 'backend::lang.relation.add_a_new'; case 'list': - if ($this->eventTarget == 'button-link') { + if (array_key_exists('list', $customTitles)) { + return $customTitles['list']; + } elseif ($this->eventTarget === 'button-link') { return 'backend::lang.relation.link_a_new'; } return 'backend::lang.relation.add_a_new'; case 'form': - if ($this->readOnly) { + if (array_key_exists('form', $customTitles)) { + return $customTitles['form']; + } elseif ($this->readOnly) { return 'backend::lang.relation.preview_name'; - } - elseif ($this->manageId) { + } elseif ($this->manageId) { return 'backend::lang.relation.update_name'; } - else { - return 'backend::lang.relation.create_name'; - } + + return 'backend::lang.relation.create_name'; } } diff --git a/modules/backend/behaviors/relationcontroller/partials/_button_add.htm b/modules/backend/behaviors/relationcontroller/partials/_button_add.htm index 68e80a401..6939b3bc3 100644 --- a/modules/backend/behaviors/relationcontroller/partials/_button_add.htm +++ b/modules/backend/behaviors/relationcontroller/partials/_button_add.htm @@ -4,5 +4,5 @@ data-handler="onRelationButtonAdd" href="javascript:;" class="btn btn-sm btn-secondary oc-icon-plus"> - = e(trans('backend::lang.relation.add_name', ['name'=>trans($relationLabel)])) ?> + = e(trans($text, ['name' => trans($relationLabel)])) ?> diff --git a/modules/backend/behaviors/relationcontroller/partials/_button_create.htm b/modules/backend/behaviors/relationcontroller/partials/_button_create.htm index aa9b9ee19..d7d3569df 100644 --- a/modules/backend/behaviors/relationcontroller/partials/_button_create.htm +++ b/modules/backend/behaviors/relationcontroller/partials/_button_create.htm @@ -4,5 +4,5 @@ data-handler="onRelationButtonCreate" href="javascript:;" class="btn btn-sm btn-secondary oc-icon-file"> - = e(trans('backend::lang.relation.create_name', ['name'=>trans($relationLabel)])) ?> + = e(trans($text, ['name' => trans($relationLabel)])) ?> diff --git a/modules/backend/behaviors/relationcontroller/partials/_button_delete.htm b/modules/backend/behaviors/relationcontroller/partials/_button_delete.htm index 5e1e76268..d8fd4ff6b 100644 --- a/modules/backend/behaviors/relationcontroller/partials/_button_delete.htm +++ b/modules/backend/behaviors/relationcontroller/partials/_button_delete.htm @@ -5,7 +5,7 @@ data-request-confirm="= e(trans('backend::lang.relation.delete_confirm')) ?>" data-request-success="$.oc.relationBehavior.changed('= e($this->vars['relationField']) ?>', 'deleted')" data-stripe-load-indicator> - = e(trans('backend::lang.relation.delete')) ?> + = e(trans($text)) ?> - \ No newline at end of file + diff --git a/modules/backend/behaviors/relationcontroller/partials/_button_link.htm b/modules/backend/behaviors/relationcontroller/partials/_button_link.htm index ff765a7d6..b4ad47073 100644 --- a/modules/backend/behaviors/relationcontroller/partials/_button_link.htm +++ b/modules/backend/behaviors/relationcontroller/partials/_button_link.htm @@ -4,5 +4,5 @@ data-handler="onRelationButtonLink" href="javascript:;" class="btn btn-sm btn-secondary oc-icon-link"> - = e(trans('backend::lang.relation.link_name', ['name'=>trans($relationLabel)])) ?> + = e(trans($text, ['name' => trans($relationLabel)])) ?> diff --git a/modules/backend/behaviors/relationcontroller/partials/_button_remove.htm b/modules/backend/behaviors/relationcontroller/partials/_button_remove.htm index b4f647641..c288bdec6 100644 --- a/modules/backend/behaviors/relationcontroller/partials/_button_remove.htm +++ b/modules/backend/behaviors/relationcontroller/partials/_button_remove.htm @@ -4,7 +4,7 @@ data-request="onRelationButtonRemove" data-request-success="$.oc.relationBehavior.changed('= e($this->vars['relationField']) ?>', 'removed')" data-stripe-load-indicator> - = e(trans('backend::lang.relation.remove')) ?> + = e(trans($text)) ?> - \ No newline at end of file + diff --git a/modules/backend/behaviors/relationcontroller/partials/_button_unlink.htm b/modules/backend/behaviors/relationcontroller/partials/_button_unlink.htm index cfbec72fb..30851eea6 100644 --- a/modules/backend/behaviors/relationcontroller/partials/_button_unlink.htm +++ b/modules/backend/behaviors/relationcontroller/partials/_button_unlink.htm @@ -5,5 +5,5 @@ data-request-success="$.oc.relationBehavior.changed('= e($this->vars['relationField']) ?>', 'removed')" data-request-confirm="= e(trans('backend::lang.relation.unlink_confirm')) ?>" data-stripe-load-indicator> - = e(trans('backend::lang.relation.unlink')) ?> + = e(trans($text)) ?> diff --git a/modules/backend/behaviors/relationcontroller/partials/_button_update.htm b/modules/backend/behaviors/relationcontroller/partials/_button_update.htm index f1cf08a48..3f267e4c9 100644 --- a/modules/backend/behaviors/relationcontroller/partials/_button_update.htm +++ b/modules/backend/behaviors/relationcontroller/partials/_button_update.htm @@ -5,5 +5,5 @@ data-request-data="manage_id: '= $relationManageId ?>'" href="javascript:;" class="btn btn-sm btn-secondary oc-icon-pencil"> - = e(trans('backend::lang.relation.update_name', ['name'=>trans($relationLabel)])) ?> + = e(trans($text, ['name' => trans($relationLabel)])) ?> diff --git a/modules/backend/behaviors/relationcontroller/partials/_toolbar.htm b/modules/backend/behaviors/relationcontroller/partials/_toolbar.htm index 3b23bd498..d7f85f55e 100644 --- a/modules/backend/behaviors/relationcontroller/partials/_toolbar.htm +++ b/modules/backend/behaviors/relationcontroller/partials/_toolbar.htm @@ -1,13 +1,16 @@