From 7448186462e457315a453897c1a72053421bd6a3 Mon Sep 17 00:00:00 2001 From: K J Kooistra Date: Thu, 16 Feb 2023 16:40:04 +0100 Subject: [PATCH] [Feature]: Manage select options via interface Add Select Options management interface via Settings > Data Objects submenu. Add selectoptions permission to allow access to management interface. Add options source selection to select fields definition to switch between direct configuration, select options or class / service configuration. Generate configuration file and enum to store select options. Introduce OptionsProviderInterface to detect field definitions using provider. Introduce OptionsProviderTrait to share properties between select types. Update classes rebuild command to also rebuild select options. Add PHP and JavaScript reserved words helper classes. Add and update documentation. Relates to #3409 --- bundles/AdminBundle/public/css/icons.css | 4 + .../public/js/pimcore/layout/toolbar.js | 19 +- .../object/classes/data/multiselect.js | 23 +- .../js/pimcore/object/classes/data/select.js | 19 +- .../public/js/pimcore/object/helpers/grid.js | 6 +- .../pimcore/object/helpers/reservedWords.js | 55 ++ .../js/pimcore/object/helpers/selectField.js | 163 ++++++ .../public/js/pimcore/object/selectoptions.js | 257 ++++++++++ .../object/selectoptionsitems/definition.js | 483 ++++++++++++++++++ .../public/js/pimcore/object/tags/select.js | 5 +- .../Admin/DataObject/ClassController.php | 154 ++++++ .../src/Controller/Admin/IndexController.php | 1 + .../SelectOptionsOptionsProvider.php | 60 +++ .../templates/admin/index/index.html.twig | 4 + .../AdminBundle/translations/admin.en.yaml | 1 + .../translations/admin_ext.en.yaml | 5 + bundles/CoreBundle/config/class_builder.yaml | 6 + .../ClassesDefinitionsBuildCommand.php | 7 + .../src/Command/ClassesRebuildCommand.php | 13 + .../src/DependencyInjection/Configuration.php | 26 + .../src/Migrations/Version20230221073317.php | 41 ++ bundles/InstallBundle/src/Installer.php | 1 + config/dao-classmap.php | 2 + .../01_Data_Types/30_Dynamic_Select_Types.md | 13 +- .../01_Data_Types/77_Select_Options.md | 70 +++ .../01_Data_Types/80_Select_Types.md | 6 +- .../01_Object_Classes/01_Data_Types/README.md | 6 + .../03_Configuration_Environments.md | 4 + .../07_Users_and_Roles.md | 1 + .../classes-datatypes-select-configure.png | Bin 0 -> 21211 bytes doc/img/classes-datatypes-select2.png | Bin 17456 -> 0 bytes ...classes-datatypes-selectoptions-editor.png | Bin 0 -> 153285 bytes ...asses-datatypes-selectoptions-selector.png | Bin 0 -> 32606 bytes doc/img/dynamic_select_class.png | Bin 0 -> 37917 bytes doc/img/dynamic_select_service.png | Bin 0 -> 25976 bytes doc/img/dynselect1.png | Bin 28931 -> 0 bytes doc/img/dynselect1a.png | Bin 17909 -> 0 bytes doc/img/dynselect1b.png | Bin 14086 -> 0 bytes .../PHPSelectOptionsEnumDumper.php | 35 ++ .../PHPSelectOptionsEnumDumperInterface.php | 24 + .../ClassBuilder/SelectOptionsEnumBuilder.php | 259 ++++++++++ .../SelectOptionsEnumBuilderInterface.php | 24 + lib/Event/AdminEvents.php | 23 + lib/Helper/ReservedWordsHelper.php | 78 +++ lib/Kernel.php | 4 + .../ClassDefinition/Data/Multiselect.php | 50 +- .../Data/OptionsProviderInterface.php | 44 ++ .../Data/OptionsProviderTrait.php | 66 +++ .../ClassDefinition/Data/Select.php | 51 +- .../SelectionProviderTrait.php | 4 + models/DataObject/ClassDefinition/Service.php | 2 +- models/DataObject/SelectOptions/Config.php | 382 ++++++++++++++ .../DataObject/SelectOptions/Config/Dao.php | 168 ++++++ .../SelectOptions/Config/Listing.php | 89 ++++ .../SelectOptions/Config/Listing/Dao.php | 43 ++ .../SelectOptions/Data/SelectOption.php | 116 +++++ .../Traits/EnumGetValuesTrait.php | 14 + .../Traits/EnumTryFromNullableTrait.php | 14 + models/DataObject/SelectOptionsInterface.php | 29 ++ models/DataObject/Service.php | 8 +- tests/_bootstrap.php | 1 + 61 files changed, 2855 insertions(+), 128 deletions(-) create mode 100644 bundles/AdminBundle/public/js/pimcore/object/helpers/reservedWords.js create mode 100644 bundles/AdminBundle/public/js/pimcore/object/helpers/selectField.js create mode 100644 bundles/AdminBundle/public/js/pimcore/object/selectoptions.js create mode 100644 bundles/AdminBundle/public/js/pimcore/object/selectoptionsitems/definition.js create mode 100644 bundles/AdminBundle/src/OptionsProvider/SelectOptionsOptionsProvider.php create mode 100644 bundles/CoreBundle/src/Migrations/Version20230221073317.php create mode 100644 doc/05_Objects/01_Object_Classes/01_Data_Types/77_Select_Options.md create mode 100644 doc/img/classes-datatypes-select-configure.png delete mode 100644 doc/img/classes-datatypes-select2.png create mode 100644 doc/img/classes-datatypes-selectoptions-editor.png create mode 100644 doc/img/classes-datatypes-selectoptions-selector.png create mode 100644 doc/img/dynamic_select_class.png create mode 100644 doc/img/dynamic_select_service.png delete mode 100644 doc/img/dynselect1.png delete mode 100644 doc/img/dynselect1a.png delete mode 100644 doc/img/dynselect1b.png create mode 100644 lib/DataObject/ClassBuilder/PHPSelectOptionsEnumDumper.php create mode 100644 lib/DataObject/ClassBuilder/PHPSelectOptionsEnumDumperInterface.php create mode 100644 lib/DataObject/ClassBuilder/SelectOptionsEnumBuilder.php create mode 100644 lib/DataObject/ClassBuilder/SelectOptionsEnumBuilderInterface.php create mode 100644 lib/Helper/ReservedWordsHelper.php create mode 100644 models/DataObject/ClassDefinition/Data/OptionsProviderInterface.php create mode 100644 models/DataObject/ClassDefinition/Data/OptionsProviderTrait.php create mode 100644 models/DataObject/SelectOptions/Config.php create mode 100644 models/DataObject/SelectOptions/Config/Dao.php create mode 100644 models/DataObject/SelectOptions/Config/Listing.php create mode 100644 models/DataObject/SelectOptions/Config/Listing/Dao.php create mode 100644 models/DataObject/SelectOptions/Data/SelectOption.php create mode 100644 models/DataObject/SelectOptions/Traits/EnumGetValuesTrait.php create mode 100644 models/DataObject/SelectOptions/Traits/EnumTryFromNullableTrait.php create mode 100644 models/DataObject/SelectOptionsInterface.php diff --git a/bundles/AdminBundle/public/css/icons.css b/bundles/AdminBundle/public/css/icons.css index db18d15eb83..9aa132f64e3 100644 --- a/bundles/AdminBundle/public/css/icons.css +++ b/bundles/AdminBundle/public/css/icons.css @@ -335,6 +335,10 @@ background: url(/bundles/pimcoreadmin/img/flat-white-icons/bricks.svg) center center no-repeat !important; } +.pimcore_nav_icon_selectoptions { + background: url(/bundles/pimcoreadmin/img/flat-white-icons/expand.svg) center center no-repeat !important; +} + .pimcore_nav_icon_quantityValue { background: url(/bundles/pimcoreadmin/img/flat-white-icons/calculator.svg) center center no-repeat !important; } diff --git a/bundles/AdminBundle/public/js/pimcore/layout/toolbar.js b/bundles/AdminBundle/public/js/pimcore/layout/toolbar.js index 0c92cca4cd7..b2667663283 100644 --- a/bundles/AdminBundle/public/js/pimcore/layout/toolbar.js +++ b/bundles/AdminBundle/public/js/pimcore/layout/toolbar.js @@ -594,6 +594,15 @@ pimcore.layout.toolbar = Class.create({ }); } + if (perspectiveCfg.inToolbar('settings.objects.selectoptions') && user.isAllowed('selectoptions')) { + objectMenu.menu.items.push({ + text: t('selectoptions'), + iconCls: 'pimcore_nav_icon_selectoptions', + itemId: 'pimcore_menu_settings_data_objects_selectoptions', + handler: this.editSelectOptions + }); + } + if (perspectiveCfg.inToolbar("settings.objects.quantityValue") && user.isAllowed("quantityValueUnits")) { objectMenu.menu.items.push({ text: t("quantityValue_field"), @@ -787,7 +796,7 @@ pimcore.layout.toolbar = Class.create({ } }); } - + // help menu menu.settings = { label: t('settings'), @@ -1176,6 +1185,14 @@ pimcore.layout.toolbar = Class.create({ } }, + editSelectOptions: function () { + try { + pimcore.globalmanager.get('selectoptions').activate(); + } catch (e) { + pimcore.globalmanager.add('selectoptions', new pimcore.object.selectoptions()); + } + }, + clearCache: function (params) { Ext.Msg.confirm(t('warning'), t('system_performance_stability_warning'), function(btn){ if (btn == 'yes'){ diff --git a/bundles/AdminBundle/public/js/pimcore/object/classes/data/multiselect.js b/bundles/AdminBundle/public/js/pimcore/object/classes/data/multiselect.js index e36b6c1195b..1827a551129 100644 --- a/bundles/AdminBundle/public/js/pimcore/object/classes/data/multiselect.js +++ b/bundles/AdminBundle/public/js/pimcore/object/classes/data/multiselect.js @@ -277,24 +277,14 @@ pimcore.object.classes.data.multiselect = Class.create(pimcore.object.classes.da triggerAction: "all", editable: false, forceSelection: true - }, - { - xtype: "textfield", - fieldLabel: t("options_provider_class"), - width: 600, - name: "optionsProviderClass", - value: datax.optionsProviderClass - }, - { - xtype: "textfield", - fieldLabel: t("options_provider_data"), - width: 600, - value: datax.optionsProviderData, - name: "optionsProviderData" - }, - valueGrid + } ]; + specificItems = specificItems.concat( + pimcore.object.helpers.selectField.getOptionsProviderFields(datax, valueGrid) + ); + specificItems.push(valueGrid); + return specificItems; }, @@ -331,6 +321,7 @@ pimcore.object.classes.data.multiselect = Class.create(pimcore.object.classes.da height: source.datax.height, maxItems: source.datax.maxItems, renderType: source.datax.renderType, + optionsProviderType: source.datax.optionsProviderType, optionsProviderClass: source.datax.optionsProviderClass, optionsProviderData: source.datax.optionsProviderData }); diff --git a/bundles/AdminBundle/public/js/pimcore/object/classes/data/select.js b/bundles/AdminBundle/public/js/pimcore/object/classes/data/select.js index e45b2b3ecaa..6663c720a3d 100644 --- a/bundles/AdminBundle/public/js/pimcore/object/classes/data/select.js +++ b/bundles/AdminBundle/public/js/pimcore/object/classes/data/select.js @@ -271,21 +271,9 @@ pimcore.object.classes.data.select = Class.create(pimcore.object.classes.data.da value: datax.defaultValueGenerator }); - items.push({ - xtype: "textfield", - fieldLabel: t("options_provider_class"), - width: 600, - name: "optionsProviderClass", - value: datax.optionsProviderClass - }); - - items.push({ - xtype: "textfield", - fieldLabel: t("options_provider_data"), - width: 600, - value: datax.optionsProviderData, - name: "optionsProviderData" - }); + items = items.concat( + pimcore.object.helpers.selectField.getOptionsProviderFields(datax, valueGrid) + ) items.push(valueGrid); return items; @@ -318,6 +306,7 @@ pimcore.object.classes.data.select = Class.create(pimcore.object.classes.data.da { options: source.datax.options, width: source.datax.width, + optionsProviderType: source.datax.optionsProviderType, optionsProviderClass: source.datax.optionsProviderClass, optionsProviderData: source.datax.optionsProviderData, defaultValue: source.datax.defaultValue, diff --git a/bundles/AdminBundle/public/js/pimcore/object/helpers/grid.js b/bundles/AdminBundle/public/js/pimcore/object/helpers/grid.js index 22859aad136..f8ba5eeb808 100644 --- a/bundles/AdminBundle/public/js/pimcore/object/helpers/grid.js +++ b/bundles/AdminBundle/public/js/pimcore/object/helpers/grid.js @@ -84,7 +84,11 @@ pimcore.object.helpers.grid = Class.create({ var key = fieldConfig.key; var readerFieldConfig = {name: key}; // dynamic select returns data + options on cell level - if ((type == "select" || type == "multiselect") && fieldConfig.layout.optionsProviderClass) { + if ( + (type == "select" || type == "multiselect") + && fieldConfig.layout.optionsProviderType !== pimcore.object.helpers.selectField.OPTIONS_PROVIDER_TYPE_CLASS + && fieldConfig.layout.optionsProviderClass + ) { if (typeof noBatchColumns != "undefined") { if (fieldConfig.layout.dynamicOptions) { noBatchColumns.push(key); diff --git a/bundles/AdminBundle/public/js/pimcore/object/helpers/reservedWords.js b/bundles/AdminBundle/public/js/pimcore/object/helpers/reservedWords.js new file mode 100644 index 00000000000..39e72925fea --- /dev/null +++ b/bundles/AdminBundle/public/js/pimcore/object/helpers/reservedWords.js @@ -0,0 +1,55 @@ +/** + * Pimcore + * + * This source file is available under two different licenses: + * - GNU General Public License version 3 (GPLv3) + * - Pimcore Commercial License (PCL) + * Full copyright and license information is available in + * LICENSE.md which is distributed with this source code. + * + * @copyright Copyright (c) Pimcore GmbH (http://www.pimcore.org) + * @license http://www.pimcore.org/license GPLv3 and PCL + */ + +pimcore.registerNS('pimcore.object.helpers.reservedWords'); + +pimcore.object.helpers.reservedWords = { + // https://www.php.net/manual/en/reserved.keywords.php + phpReservedKeywords: [ + 'abstract', 'and', 'array', 'as', 'break', 'callable', 'case', 'catch', 'class', 'clone', 'const', 'continue', + 'declare', 'default', 'die', 'do', 'echo', 'else', 'elseif', 'empty', 'enddeclare', 'endfor', 'endforeach', + 'endif', 'endswitch', 'endwhile', 'eval', 'exit', 'extends', 'final', 'finally', 'fn', 'for', 'foreach', + 'function', 'global', 'goto', 'if', 'implements', 'include', 'include_once', 'instanceof', 'insteadof', + 'interface', 'isset', 'list', 'match', 'namespace', 'new', 'or', 'print', 'private', 'protected', 'public', + 'readonly', 'require', 'require_once', 'return', 'static', 'switch', 'throw', 'trait', 'try', 'unset', 'use', + 'var', 'while', 'xor', 'yield', 'yield_from' + ], + + // https://www.php.net/manual/en/reserved.classes.php + phpReservedClasses: [ + 'self', 'static', 'parent' + ], + + // https://www.php.net/manual/en/reserved.other-reserved-words.php + phpOtherReservedWords: [ + 'int', 'float', 'bool', 'string', 'true', 'false', 'null', 'void', 'iterable', 'object', 'mixed', 'never', + 'enum', 'resource', 'numeric' + ], + + pimcore: [ + // Pimcore + 'data', 'folder', 'permissions', 'dao', 'concrete', 'items' + ], + + isReservedWord: function (word) { + return in_arrayi(word, this.getAllReservedWords()); + }, + + getAllReservedWords: function () { + return this.phpReservedKeywords.concat( + this.phpReservedClasses, + this.phpOtherReservedWords, + this.pimcore + ); + } +}; diff --git a/bundles/AdminBundle/public/js/pimcore/object/helpers/selectField.js b/bundles/AdminBundle/public/js/pimcore/object/helpers/selectField.js new file mode 100644 index 00000000000..5a069ae6fa9 --- /dev/null +++ b/bundles/AdminBundle/public/js/pimcore/object/helpers/selectField.js @@ -0,0 +1,163 @@ +/** + * Pimcore + * + * This source file is available under two different licenses: + * - GNU General Public License version 3 (GPLv3) + * - Pimcore Commercial License (PCL) + * Full copyright and license information is available in + * LICENSE.md which is distributed with this source code. + * + * @copyright Copyright (c) Pimcore GmbH (http://www.pimcore.org) + * @license http://www.pimcore.org/license GPLv3 and PCL + */ + +pimcore.registerNS('pimcore.object.helpers.selectField'); + +/** + * @private + */ +pimcore.object.helpers.selectField = { + OPTIONS_PROVIDER_TYPE_CONFIGURE: 'configure', + OPTIONS_PROVIDER_TYPE_SELECT_OPTIONS: 'select_options', + OPTIONS_PROVIDER_TYPE_CLASS: 'class', + + selectOptionsStore: null, + + /** + * @param {Object} datax + * @param {Ext.grid.Panel} valueGrid + * @returns {[ + * Ext.form.field.ComboBox, + * Ext.form.field.Text, + * Ext.form.field.Text, + * Ext.form.field.ComboBox + * ]} + */ + getOptionsProviderFields: function (datax, valueGrid) { + var selectOptionsSelector = Ext.create('Ext.form.field.ComboBox', { + fieldLabel: t('selectoptions'), + emptyText: '', + value: datax.optionsProviderData, + hidden: true, + valueField: 'id', + displayField: 'text', + editable: false, + forceSelection: true, + queryMode: 'local', + store: this.getSelectOptionsStore(), + listeners: { + change: function (comboBox, newValue) { + optionsProviderClass.setValue('\\Pimcore\\Bundle\\AdminBundle\\OptionsProvider\\SelectOptionsOptionsProvider'); + optionsProviderData.setValue(newValue); + } + } + }); + + var optionsProviderClass = Ext.create('Ext.form.field.Text', { + fieldLabel: t('options_provider_class'), + width: 600, + name: 'optionsProviderClass', + hidden: true, + value: datax.optionsProviderClass + }); + + var optionsProviderData = Ext.create('Ext.form.field.Text', { + fieldLabel: t('options_provider_data'), + width: 600, + value: datax.optionsProviderData, + hidden: true, + name: 'optionsProviderData' + }); + + var toggleFields = function (optionsProviderType) { + switch (optionsProviderType) { + case this.OPTIONS_PROVIDER_TYPE_SELECT_OPTIONS: + optionsProviderClass.hide(); + optionsProviderData.hide(); + selectOptionsSelector.show(); + valueGrid.hide(); + break; + case this.OPTIONS_PROVIDER_TYPE_CLASS: + optionsProviderClass.show(); + optionsProviderData.show(); + selectOptionsSelector.hide(); + valueGrid.hide(); + break; + // Configure + default: + optionsProviderClass.hide(); + optionsProviderData.hide(); + selectOptionsSelector.hide(); + valueGrid.show(); + } + }.bind(this) + + var typeValue = this.OPTIONS_PROVIDER_TYPE_CONFIGURE; + if (datax.optionsProviderType) { + typeValue = datax.optionsProviderType; + // Legacy fallback in case no type is set and a class/service is configured + } else if (datax.optionsProviderClass) { + typeValue = this.OPTIONS_PROVIDER_TYPE_CLASS; + } + + toggleFields(typeValue); + + var optionsProviderType = Ext.create('Ext.form.field.ComboBox', { + name: 'optionsProviderType', + fieldLabel: t('options_provider_type'), + value: typeValue, + valueField: 'value', + displayField: 'label', + editable: false, + forceSelection: true, + queryMode: 'local', + store: Ext.create('Ext.data.Store', { + fields: ['value', 'label'], + data: [ + {value: this.OPTIONS_PROVIDER_TYPE_CONFIGURE, label: t('options_provider_type_configure')}, + {value: this.OPTIONS_PROVIDER_TYPE_SELECT_OPTIONS, label: t('options_provider_type_select_options')}, + {value: this.OPTIONS_PROVIDER_TYPE_CLASS, label: t('options_provider_type_class')} + ] + }), + listeners: { + change: function (comboBox, newValue) { + toggleFields(newValue); + } + } + }); + + return [ + optionsProviderType, + optionsProviderClass, + optionsProviderData, + selectOptionsSelector + ]; + }, + + /** + * @returns {Ext.data.JsonStore} + */ + getSelectOptionsStore: function () { + if (this.selectOptionsStore === null) { + this.selectOptionsStore = Ext.create('Ext.data.JsonStore', { + fields: [ + {name: 'id'}, + {name: 'text'} + ], + autoLoad: true, + proxy: { + type: 'ajax', + url: Routing.generate('pimcore_admin_dataobject_class_selectoptionstree'), + reader: { + type: 'json' + }, + extraParams: { + grouped: 0 + } + }, + }); + } + + return this.selectOptionsStore; + } +}; diff --git a/bundles/AdminBundle/public/js/pimcore/object/selectoptions.js b/bundles/AdminBundle/public/js/pimcore/object/selectoptions.js new file mode 100644 index 00000000000..8826e0d4fd3 --- /dev/null +++ b/bundles/AdminBundle/public/js/pimcore/object/selectoptions.js @@ -0,0 +1,257 @@ +/** + * Pimcore + * + * This source file is available under two different licenses: + * - GNU General Public License version 3 (GPLv3) + * - Pimcore Commercial License (PCL) + * Full copyright and license information is available in + * LICENSE.md which is distributed with this source code. + * + * @copyright Copyright (c) Pimcore GmbH (http://www.pimcore.org) + * @license http://www.pimcore.org/license GPLv3 and PCL + */ + +pimcore.registerNS('pimcore.object.selectoptions'); + +/** + * @private + */ +pimcore.object.selectoptions = Class.create({ + initialize: function () { + this.getTabPanel(); + }, + + getTabPanel: function () { + if (!this.panel) { + this.panel = new Ext.Panel({ + id: 'pimcore_selectoptions', + title: t('selectoptions'), + iconCls: 'pimcore_icon_select', + border: false, + layout: 'border', + closable:true, + items: [this.getTree(), this.getEditPanel()] + }); + + var tabPanel = Ext.getCmp('pimcore_panel_tabs'); + tabPanel.add(this.panel); + tabPanel.setActiveItem('pimcore_selectoptions'); + + this.panel.on('destroy', function () { + pimcore.globalmanager.remove('selectoptions'); + }.bind(this)); + + pimcore.layout.refresh(); + } + + return this.panel; + }, + + getTree: function () { + if (!this.tree) { + this.store = Ext.create('Ext.data.TreeStore', { + autoLoad: false, + autoSync: true, + proxy: { + type: 'ajax', + url: Routing.generate('pimcore_admin_dataobject_class_selectoptionstree'), + reader: { + type: 'json' + + }, + extraParams: { + grouped: 1 + } + } + }); + + this.tree = Ext.create('Ext.tree.Panel', { + id: 'pimcore_panel_selectoptions_tree', + store: this.store, + region: 'west', + autoScroll:true, + animate:false, + containerScroll: true, + width: 200, + split: true, + root: { + id: '0' + }, + listeners: this.getTreeNodeListeners(), + rootVisible: false, + tbar: { + cls: 'pimcore_toolbar_border_bottom', + items: [ + { + text: t('add'), + iconCls: 'pimcore_icon_select pimcore_icon_overlay_add', + handler: this.addDefinition.bind(this), + disabled: !pimcore.settings['select-options-writeable'] + } + ] + } + }); + + this.tree.on('render', function () { + this.getRootNode().expand(); + }); + } + + return this.tree; + }, + + getEditPanel: function () { + if (!this.editPanel) { + this.editPanel = Ext.create('Ext.tab.Panel', { + region: "center", + plugins: + [ + Ext.create('Ext.ux.TabCloseMenu', { + showCloseAll: true, + showCloseOthers: true + }), + Ext.create('Ext.ux.TabReorderer', {}) + ] + }); + } + + return this.editPanel; + }, + + getTreeNodeListeners: function () { + var treeNodeListeners = { + 'itemclick': this.onTreeNodeClick.bind(this), + 'itemcontextmenu': this.onTreeNodeContextmenu.bind(this), + 'beforeitemmove': this.onTreeNodeBeforeMove.bind(this) + }; + return treeNodeListeners; + }, + + onTreeNodeClick: function (tree, record) { + if (!record.isLeaf()) { + return; + } + this.openSelectOptions(record.data.id); + }, + + openSelectOptions: function (id) { + if (Ext.getCmp('pimcore_selectoptions_editor_panel_' + id)) { + this.getEditPanel().setActiveTab(Ext.getCmp('pimcore_selectoptions_editor_panel_' + id)); + return; + } + + Ext.Ajax.request({ + url: Routing.generate('pimcore_admin_dataobject_class_selectoptionsget'), + params: { + id: id + }, + success: this.addDefinitionPanel.bind(this) + }); + }, + + addDefinitionPanel: function (response) { + var data = Ext.decode(response.responseText); + new pimcore.object.selectoptionsitems.definition( + data, + this, + this.openSelectOptions.bind(this, data.id), + 'pimcore_selectoptions_editor_panel_' + ); + pimcore.layout.refresh(); + }, + + onTreeNodeContextmenu: function (tree, record, item, index, e, eOpts) { + if (!record.isLeaf()) { + return; + } + + e.stopEvent(); + tree.select(); + + var menu = new Ext.menu.Menu(); + menu.add(new Ext.menu.Item({ + text: t('delete'), + iconCls: 'pimcore_icon_select pimcore_icon_overlay_delete', + handler: this.deleteDefinition.bind(this, tree, record) + })); + + menu.showAt(e.pageX, e.pageY); + }, + + onTreeNodeBeforeMove: function (node, oldParent, newParent, index, eOpts ) { + return pimcore.helpers.treeDragDropValidate(node, oldParent, newParent); + }, + + addDefinition: function () { + Ext.MessageBox.prompt(' ', t('enter_the_name_of_the_new_item'), + this.addDefinitionComplete.bind(this), null, null, ''); + }, + + addDefinitionComplete: function (button, value, object) { + var isValidName = /^[A-Z][a-zA-Z0-9]*$/; + + if ( + button !== 'ok' + || value.length < 3 + || !isValidName.test(value) + || pimcore.object.helpers.reservedWords.isReservedWord(value) + ) { + if (button !== 'cancel') { + Ext.Msg.alert(' ', t('failed_to_create_new_item_select_options')); + } + return; + } + + Ext.Ajax.request({ + url: Routing.generate('pimcore_admin_dataobject_class_selectoptionsupdate'), + method: 'POST', + params: { + id: value, + task: 'add' + }, + success: function (response) { + this.tree.getStore().load(); + + var data = Ext.decode(response.responseText); + if (!data) { + return; + } + + if (data.success) { + this.openSelectOptions(data.id); + pimcore.object.helpers.selectField.getSelectOptionsStore().reload(); + } else { + pimcore.helpers.showNotification(t('error'), data.message, 'error', response.responseText); + } + }.bind(this) + }); + }, + + activate: function () { + Ext.getCmp('pimcore_panel_tabs').setActiveItem('pimcore_selectoptions'); + }, + + deleteDefinition: function (tree, record) { + Ext.Msg.confirm(t('delete'), sprintf(t('delete_message_advanced'), t('selectoptions'), record.data.text), function (btn) { + if (btn === 'yes') { + Ext.Ajax.request({ + url: Routing.generate('pimcore_admin_dataobject_class_selectoptionsdelete'), + method: 'DELETE', + params: { + id: record.data.id + }, + success: function (response) { + var data = Ext.decode(response.responseText); + if (data && data.success === false) { + pimcore.helpers.showNotification(t('error'), data.message, 'error', response.responseText); + return; + } + + this.getEditPanel().removeAll(); + record.remove(); + }.bind(this) + }); + } + }.bind(this)); + } +}); diff --git a/bundles/AdminBundle/public/js/pimcore/object/selectoptionsitems/definition.js b/bundles/AdminBundle/public/js/pimcore/object/selectoptionsitems/definition.js new file mode 100644 index 00000000000..7b602f0770b --- /dev/null +++ b/bundles/AdminBundle/public/js/pimcore/object/selectoptionsitems/definition.js @@ -0,0 +1,483 @@ +/** + * Pimcore + * + * This source file is available under two different licenses: + * - GNU General Public License version 3 (GPLv3) + * - Pimcore Commercial License (PCL) + * Full copyright and license information is available in + * LICENSE.md which is distributed with this source code. + * + * @copyright Copyright (c) Pimcore GmbH (http://www.pimcore.org) + * @license http://www.pimcore.org/license GPLv3 and PCL + */ + +pimcore.registerNS('pimcore.object.selectoptionsitems.definition'); + +/** + * @private + */ +pimcore.object.selectoptionsitems.definition = Class.create({ + parentPanel: null, + data: { + id: null, + enumName: null, + group: null, + useTraits: '', + implementsInterfaces: '', + selectOptions: [] + }, + editorPrefix: null, + reopen: null, + + panel: null, + formPanel: null, + groupField: null, + useTraitsField: null, + implementsInterfacesField: null, + optionsEditorGrid: null, + selectionModel: null, + + initialize: function (data, parentPanel, reopen, editorPrefix) { + this.parentPanel = parentPanel; + this.data = data; + this.editorPrefix = editorPrefix; + this.reopen = reopen; + + this.addLayout(); + }, + + getId: function () { + return this.data.id; + }, + + addLayout: function () { + this.panel = new Ext.Panel({ + border: false, + layout: 'border', + closable: true, + autoScroll: true, + title: 'ID: ' + this.data.id, + id: this.editorPrefix + this.getId(), + items: [ + this.createEditPanel() + ], + buttons: this.createPanelButtons() + }); + + this.parentPanel.getEditPanel().add(this.panel); + + this.editpanel.add(this.getFormPanel()); + // this.setCurrentNode('root'); + this.parentPanel.getEditPanel().setActiveTab(this.panel); + + pimcore.layout.refresh(); + }, + + createEditPanel: function () { + this.editpanel = Ext.create('Ext.Panel', { + region: 'center', + bodyStyle: 'padding: 10px;', + autoScroll: true + }); + return this.editpanel; + }, + + createPanelButtons: function () { + return [ + { + text: t('reload_definition'), + handler: this.onRefresh.bind(this), + iconCls: 'pimcore_icon_reload' + }, + { + text: t('save'), + iconCls: 'pimcore_icon_apply', + handler: this.save.bind(this), + disabled: !this.data.isWriteable + } + ]; + }, + + getFormPanel: function () { + this.formPanel = new Ext.form.FormPanel({ + title: '' + t('general_settings') + '', + bodyStyle: 'padding: 10px; border-top: 1px solid #606060 !important;', + autoScroll: true, + defaults: { + labelWidth: 200 + }, + items: [ + this.createPhpEnumNameField(), + this.createUseTraitsField(), + this.createImplementsInterfacesField(), + this.createGroupField(), + this.createOptionsEditorGrid(), + { + xtype: 'displayfield', + fieldLabel: '' + t('used_by_class') + '', + labelSeparator: '' + }, + this.createUsagesGrid() + ] + }); + + this.formPanel.on('afterrender', function () { + this.usagesStore.reload() + }.bind(this)); + + return this.formPanel; + }, + + /** + * @returns {Ext.form.field.Text} + */ + createPhpEnumNameField: function () { + return Ext.create('Ext.form.field.Text', { + width: 600, + name: 'phpEnumName', + fieldLabel: t('PHP Enum Name'), + disabled: true, + renderer: Ext.util.Format.htmlEncode, + value: this.data.enumName + }); + }, + + /** + * @returns {Ext.form.field.Text} + */ + createUseTraitsField: function () { + this.useTraitsField = Ext.create('Ext.form.field.Text', { + width: 600, + name: 'useTraits', + fieldLabel: t('use_traits'), + value: this.data.useTraits + }); + return this.useTraitsField; + }, + + /** + * @returns {Ext.form.field.Text} + */ + createImplementsInterfacesField: function () { + this.implementsInterfacesField = Ext.create('Ext.form.field.Text', { + width: 600, + name: 'implementsInterfaces', + fieldLabel: t('implements_interfaces'), + value: this.data.implementsInterfaces + }); + return this.implementsInterfacesField; + }, + + /** + * @returns {Ext.form.field.Text} + */ + createGroupField: function () { + this.groupField = Ext.create('Ext.form.field.Text', { + width: 600, + name: 'group', + fieldLabel: t('group'), + value: this.data.group + }); + return this.groupField; + }, + + /** + * @returns {Ext.grid.Panel} + */ + createOptionsEditorGrid: function () { + var valueStore = new Ext.data.Store({ + fields: [ + 'label', + {name: 'value', allowBlank: false}, + 'name' + ], + proxy: { + type: 'memory' + }, + data: this.data.selectOptions + }); + + // Modified copy of the select field implementation + this.optionsEditorGrid = Ext.create('Ext.grid.Panel', { + viewConfig: { + plugins: [ + { + ptype: 'gridviewdragdrop', + dragroup: 'selectoptionsselect' + } + ] + }, + tbar: [ + { + xtype: 'tbtext', + text: t('selection_options') + }, + '-', + { + xtype: 'button', + iconCls: 'pimcore_icon_add', + handler: function () { + var u = { + label: '', + value: '' + }; + + let selection = this.selectionModel.getSelection(); + var idx; + if (selection.length > 0) { + let selectedRow = selection[0]; + idx = valueStore.indexOf(selectedRow) + 1; + } else { + idx = valueStore.getCount(); + } + valueStore.insert(idx, u); + this.selectionModel.select(idx); + }.bind(this) + } + ], + style: 'margin-top: 10px', + store: valueStore, + selModel: Ext.create('Ext.selection.RowModel', {}), + clicksToEdit: 1, + columnLines: true, + columns: this.createOptionsEditorGridColumns(), + autoHeight: true, + plugins: [ + Ext.create('Ext.grid.plugin.CellEditing', { + clicksToEdit: 1, + listeners: { + edit: function (editor, e) { + if (!e.record.get('value')) { + e.record.set('value', e.record.get('label')); + } + }, + beforeedit: function (editor, e) { + if (e.field === 'value') { + return !!e.value; + } + return true; + }, + validateedit: function (editor, e) { + if (e.field !== 'value') { + return true; + } + + // Iterate to all store data + for (var i = 0; i < valueStore.data.length; i++) { + var existingRecord = valueStore.getAt(i); + if (i != e.rowIdx && existingRecord.get('value') === e.value) { + return false; + } + } + return true; + } + } + }) + ] + }); + + this.selectionModel = this.optionsEditorGrid.getSelectionModel(); + return this.optionsEditorGrid; + }, + + createOptionsEditorGridColumns: function () { + return [ + { + text: t('display_name'), + sortable: true, + dataIndex: 'label', + editor: new Ext.form.TextField({}), + renderer: function (value) { + return replace_html_event_attributes(strip_tags(value, 'div,span,b,strong,em,i,small,sup,sub')); + }, + flex: 1 + }, + { + text: t('value'), + sortable: true, + dataIndex: 'value', + editor: new Ext.form.TextField({ + allowBlank: false + }), + flex: 1 + }, + { + text: t('name'), + sortable: true, + dataIndex: 'name', + editor: { + xtype: 'textfield', + enableKeyEvents: true, + listeners: { + keyup: function (field) { + var value = field.getValue(); + if (typeof value === 'string') { + // Only allow alphanumeric and underscore characters + field.setValue( + value.replace(/[^A-Za-z0-9_]/g, '') + ); + } + } + } + }, + flex: 1 + }, + { + xtype: 'actioncolumn', + menuText: t('up'), + width: 40, + items: [ + { + tooltip: t('up'), + icon: '/bundles/pimcoreadmin/img/flat-color-icons/up.svg', + handler: function (grid, rowIndex) { + if (rowIndex > 0) { + var rec = grid.getStore().getAt(rowIndex); + grid.getStore().removeAt(rowIndex); + grid.getStore().insert(--rowIndex, [rec]); + this.selectionModel.select(rowIndex); + } + }.bind(this) + } + ] + }, + { + xtype: 'actioncolumn', + menuText: t('down'), + width: 40, + items: [ + { + tooltip: t('down'), + icon: '/bundles/pimcoreadmin/img/flat-color-icons/down.svg', + handler: function (grid, rowIndex) { + if (rowIndex < (grid.getStore().getCount() - 1)) { + var rec = grid.getStore().getAt(rowIndex); + grid.getStore().removeAt(rowIndex); + grid.getStore().insert(++rowIndex, [rec]); + this.selectionModel.select(rowIndex); + } + }.bind(this) + } + ] + }, + { + xtype: 'actioncolumn', + menuText: t('remove'), + width: 40, + items: [ + { + tooltip: t('remove'), + icon: '/bundles/pimcoreadmin/img/flat-color-icons/delete.svg', + handler: function (grid, rowIndex) { + grid.getStore().removeAt(rowIndex); + }.bind(this) + } + ] + } + ]; + }, + + /** + * @returns {Ext.grid.GridPanel} + */ + createUsagesGrid: function () { + return Ext.create('Ext.grid.GridPanel', { + frame: false, + autoScroll: true, + store: this.createUsagesStore(), + columnLines: true, + stripeRows: true, + plugins: ['gridfilters'], + width: 600, + columns: [ + {text: t('class'), sortable: true, dataIndex: 'class', filter: 'string', flex: 1}, + {text: t('field'), sortable: true, dataIndex: 'field', filter: 'string', flex: 1} + ], + viewConfig: { + forceFit: true + } + }); + }, + + /** + * @returns {Ext.data.ArrayStore} + */ + createUsagesStore: function () { + this.usagesStore = Ext.create('Ext.data.ArrayStore', { + proxy: { + url: Routing.generate('pimcore_admin_dataobject_class_getselectoptionsusages'), + type: 'ajax', + reader: { + type: 'json' + }, + extraParams: { + id: this.data.id + } + }, + fields: ['class', 'field'] + }); + return this.usagesStore; + }, + + save: function (showSuccess = true) { + var reload = false; + var newGroup = this.groupField.getValue(); + if (newGroup !== this.data.group) { + this.data.group = newGroup; + reload = true; + } + + var formData = this.getFormData(); + + Ext.Ajax.request({ + url: Routing.generate('pimcore_admin_dataobject_class_selectoptionsupdate'), + method: 'PUT', + params: formData, + success: showSuccess ? this.saveOnComplete.bind(this, reload) : null + }); + }, + + getFormData: function () { + // Collect select options + var selectOptions = []; + var valueStore = this.optionsEditorGrid.getStore(); + valueStore.commitChanges(); + valueStore.each(function (record) { + selectOptions.push({ + label: record.get('label'), + value: record.get('value'), + name: record.get('name') + }); + }); + + return { + id: this.data.id, + group: this.groupField.getValue(), + useTraits: this.useTraitsField.getValue(), + implementsInterfaces: this.implementsInterfacesField.getValue(), + selectOptions: Ext.encode(selectOptions) + }; + }, + + saveOnComplete: function (reload, response) { + var rdata = Ext.decode(response.responseText); + if (rdata && rdata.success) { + if (reload) { + this.parentPanel.tree.getStore().load(); + } + pimcore.helpers.showNotification(t('success'), t('saved_successfully'), 'success'); + return; + } + + if (rdata && rdata.message) { + pimcore.helpers.showNotification(t('error'), rdata.message, 'error'); + } else { + throw 'save was not successful, see log files in /var/log'; + } + }, + + onRefresh: function() { + this.parentPanel.getEditPanel().remove(this.panel); + this.reopen(); + } +}); diff --git a/bundles/AdminBundle/public/js/pimcore/object/tags/select.js b/bundles/AdminBundle/public/js/pimcore/object/tags/select.js index 848273d1c5c..f4fbc74ab23 100644 --- a/bundles/AdminBundle/public/js/pimcore/object/tags/select.js +++ b/bundles/AdminBundle/public/js/pimcore/object/tags/select.js @@ -99,7 +99,10 @@ pimcore.object.tags.select = Class.create(pimcore.object.tags.abstract, { }, getGridColumnConfig:function (field) { - if (field.layout.optionsProviderClass) { + if ( + field.layout.optionsProviderType !== pimcore.object.helpers.selectField.OPTIONS_PROVIDER_TYPE_CLASS + && field.layout.optionsProviderClass + ) { return this.getGridColumnConfigDynamic(field); } else { return this.getGridColumnConfigStatic(field); diff --git a/bundles/AdminBundle/src/Controller/Admin/DataObject/ClassController.php b/bundles/AdminBundle/src/Controller/Admin/DataObject/ClassController.php index f570aa3a8cb..4a85844b71f 100644 --- a/bundles/AdminBundle/src/Controller/Admin/DataObject/ClassController.php +++ b/bundles/AdminBundle/src/Controller/Admin/DataObject/ClassController.php @@ -33,6 +33,7 @@ use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBagInterface; use Symfony\Component\HttpKernel\Event\ControllerEvent; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Routing\Annotation\Route; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; @@ -1857,6 +1858,7 @@ public function onKernelControllerEvent(ControllerEvent $event): void 'getTreeAction', 'fieldcollectionListAction', 'fieldcollectionTreeAction', 'fieldcollectionGetAction', 'getClassDefinitionForColumnConfigAction', 'objectbrickListAction', 'objectbrickTreeAction', 'objectbrickGetAction', 'objectbrickDeleteAction', 'objectbrickUpdateAction', 'importObjectbrickAction', 'exportObjectbrickAction', 'bulkCommitAction', 'doBulkExportAction', 'bulkExportAction', 'importFieldcollectionAction', 'exportFieldcollectionAction', // permissions for listed write operations handled separately in action methods + 'selectOptionsGetAction', 'selectOptionsTreeAction', 'selectOptionsUpdateAction', 'getSelectOptionsUsagesAction', 'selectOptionsDeleteAction', ]; $this->checkActionPermission($event, 'classes', $unrestrictedActions); @@ -1925,6 +1927,24 @@ public function getBrickUsagesAction(Request $request): Response return $this->adminJson($result); } + #[Route('/get-select-options-usages', name: 'getselectoptionsusages', methods: [Request::METHOD_GET])] + public function getSelectOptionsUsagesAction(Request $request): Response + { + $usages = []; + $id = $request->get(DataObject\SelectOptions\Config::PROPERTY_ID); + $selectOptionsConfiguration = $this->getSelectOptionsConfig($id); + foreach ($selectOptionsConfiguration->getFieldsUsedIn() as $className => $fieldNames) { + foreach ($fieldNames as $fieldName) { + $usages[] = [ + 'class' => $className, + 'field' => $fieldName, + ]; + } + } + + return $this->adminJson($usages); + } + /** * @Route("/get-icons", name="geticons", methods={"GET"}) * @@ -2090,4 +2110,138 @@ public function videoAllowedTypesAction(Request $request): Response return $this->adminJson($res); } + + /** + * SELECT OPTIONS + */ + + #[Route('/select-options-get', name: 'selectoptionsget', methods: [Request::METHOD_GET])] + public function selectOptionsGetAction(Request $request): JsonResponse + { + $this->checkPermission('selectoptions'); + $id = $request->get(DataObject\SelectOptions\Config::PROPERTY_ID); + $selectOptionsConfiguration = $this->getSelectOptionsConfig($id); + + $data = $selectOptionsConfiguration->getObjectVars(); + $data['isWriteable'] = $selectOptionsConfiguration->isWriteable(); + $data['enumName'] = $selectOptionsConfiguration->getEnumName(true); + + return $this->adminJson($data); + } + + #[Route('/select-options-update', name: 'selectoptionsupdate', methods: [Request::METHOD_PUT, Request::METHOD_POST])] + public function selectOptionsUpdateAction(Request $request, EventDispatcherInterface $eventDispatcher): JsonResponse + { + $this->checkPermission('selectoptions'); + try { + $id = $request->get(DataObject\SelectOptions\Config::PROPERTY_ID); + + if ($request->get('task') === 'add') { + if ((new DataObject\SelectOptions\Config\Listing())->hasConfig($id)) { + throw new \Exception('Select options with the same ID already exists (lower/upper cases may be different)'); + } + } + + $group = $request->get(DataObject\SelectOptions\Config::PROPERTY_GROUP); + $useTraits = $request->get(DataObject\SelectOptions\Config::PROPERTY_USE_TRAITS, ''); + $implementsInterfaces = $request->get(DataObject\SelectOptions\Config::PROPERTY_IMPLEMENTS_INTERFACES, ''); + $selectOptionsData = $request->get(DataObject\SelectOptions\Config::PROPERTY_SELECT_OPTIONS, 'null'); + $selectOptionsConfiguration = DataObject\SelectOptions\Config::createFromData( + [ + DataObject\SelectOptions\Config::PROPERTY_ID => $id, + DataObject\SelectOptions\Config::PROPERTY_GROUP => $group, + DataObject\SelectOptions\Config::PROPERTY_USE_TRAITS => $useTraits, + DataObject\SelectOptions\Config::PROPERTY_IMPLEMENTS_INTERFACES => $implementsInterfaces, + DataObject\SelectOptions\Config::PROPERTY_SELECT_OPTIONS => $this->decodeJson($selectOptionsData), + ] + ); + + $event = new GenericEvent($this, [ + 'selectOptionsConfiguration' => $selectOptionsConfiguration, + ]); + $eventDispatcher->dispatch($event, AdminEvents::CLASS_SELECTOPTIONS_UPDATE_CONFIGURATION); + /** @var DataObject\SelectOptions\Config $selectOptionsConfiguration */ + $selectOptionsConfiguration = $event->getArgument('selectOptionsConfiguration'); + + $selectOptionsConfiguration->save(); + + return $this->adminJson(['success' => true, 'id' => $selectOptionsConfiguration->getId()]); + } catch (\Exception $exception) { + Logger::error($exception->getMessage()); + + return $this->adminJson(['success' => false, 'message' => $exception->getMessage()]); + } + } + + #[Route('/select-options-tree', name: 'selectoptionstree', methods: [Request::METHOD_GET, Request::METHOD_POST])] + public function selectOptionsTreeAction(Request $request, EventDispatcherInterface $eventDispatcher): JsonResponse + { + $this->checkPermission('selectoptions'); + $configurations = $groups = []; + + $selectOptionConfigs = new DataObject\SelectOptions\Config\Listing(); + foreach ($selectOptionConfigs as $selectOptionConfig) { + $id = $selectOptionConfig->getId(); + $configurationData = [ + 'id' => $id, + 'text' => $id, + 'leaf' => true, + 'iconCls' => 'pimcore_icon_select', + ]; + + if ((int)$request->get('grouped', 0) === 0 || !$selectOptionConfig->hasGroup()) { + $configurations[] = $configurationData; + continue; + } + + $group = $selectOptionConfig->getGroup(); + if (!isset($groups[$group])) { + $groups[$group] = [ + 'id' => 'group_' . $id, + 'text' => htmlspecialchars($group), + 'expandable' => true, + 'leaf' => false, + 'allowChildren' => true, + 'iconCls' => 'pimcore_icon_folder', + 'group' => $group, + 'children' => [], + ]; + } + $groups[$group]['children'][] = $configurationData; + } + + foreach ($groups as $group) { + $configurations[] = $group; + } + + $event = new GenericEvent($this, [ + 'list' => $configurations, + ]); + $eventDispatcher->dispatch($event, AdminEvents::CLASS_SELECTOPTIONS_LIST_PRE_SEND_DATA); + + return $this->adminJson($configurations); + } + + #[Route('/select-options-delete', name: 'selectoptionsdelete', methods: [Request::METHOD_DELETE])] + public function selectOptionsDeleteAction(Request $request): JsonResponse + { + $this->checkPermission('selectoptions'); + + try { + $id = $request->get(DataObject\SelectOptions\Config::PROPERTY_ID); + $this->getSelectOptionsConfig($id)->delete(); + return $this->adminJson(['success' => true]); + } catch (\Exception $exception) { + return $this->adminJson(['success' => false, 'message' => $exception->getMessage()]); + } + } + + protected function getSelectOptionsConfig(string $id): DataObject\SelectOptions\Config + { + $selectOptions = DataObject\SelectOptions\Config::getById($id); + if ($selectOptions === null) { + throw new NotFoundHttpException('Not Found', code: 1677133720896); + } + return $selectOptions; + } } diff --git a/bundles/AdminBundle/src/Controller/Admin/IndexController.php b/bundles/AdminBundle/src/Controller/Admin/IndexController.php index 6a7bdd4b0f4..83fe7e00f80 100644 --- a/bundles/AdminBundle/src/Controller/Admin/IndexController.php +++ b/bundles/AdminBundle/src/Controller/Admin/IndexController.php @@ -242,6 +242,7 @@ protected function buildPimcoreSettings(Request $request, array &$templateParams 'custom-views-writeable' => \Pimcore\CustomView\Config::isWriteable(), 'class-definition-writeable' => isset($_SERVER['PIMCORE_CLASS_DEFINITION_WRITABLE']) ? (bool)$_SERVER['PIMCORE_CLASS_DEFINITION_WRITABLE'] : true, 'object-custom-layout-writeable' => (new CustomLayout())->isWriteable(), + 'select-options-writeable' => (new \Pimcore\Model\DataObject\SelectOptions\Config())->isWriteable(), ]; $this diff --git a/bundles/AdminBundle/src/OptionsProvider/SelectOptionsOptionsProvider.php b/bundles/AdminBundle/src/OptionsProvider/SelectOptionsOptionsProvider.php new file mode 100644 index 00000000000..7fdc93ba554 --- /dev/null +++ b/bundles/AdminBundle/src/OptionsProvider/SelectOptionsOptionsProvider.php @@ -0,0 +1,60 @@ +getOptionsProviderData(); + $selectOptionsConfiguration = Config::getById($configurationId); + if ($selectOptionsConfiguration === null) { + throw new \Exception('Missing select options configuration ' . $configurationId, 1677137682677); + } + + return array_map( + fn (SelectOption $selectOption) => [ + 'value' => $selectOption->getValue(), + 'key' => $selectOption->getLabel(), + ], + $selectOptionsConfiguration->getSelectOptions(), + ); + } + + public function hasStaticOptions(array $context, Data $fieldDefinition): bool + { + return true; + } + + public function getDefaultValue(array $context, Data $fieldDefinition): ?string + { + if ($fieldDefinition instanceof Data\Select) { + return $fieldDefinition->getDefaultValue(); + } + return null; + } +} diff --git a/bundles/AdminBundle/templates/admin/index/index.html.twig b/bundles/AdminBundle/templates/admin/index/index.html.twig index 9a24245fc0c..32e93b89eda 100644 --- a/bundles/AdminBundle/templates/admin/index/index.html.twig +++ b/bundles/AdminBundle/templates/admin/index/index.html.twig @@ -294,6 +294,8 @@ "pimcore/object/helpers/optionEditor.js", "pimcore/object/helpers/imageGalleryDropZone.js", "pimcore/object/helpers/imageGalleryPanel.js", + "pimcore/object/helpers/selectField.js", + "pimcore/object/helpers/reservedWords.js", "pimcore/element/tag/configuration.js", "pimcore/element/tag/assignment.js", "pimcore/element/tag/tree.js", @@ -498,6 +500,8 @@ "pimcore/object/importcolumn/value/DefaultValue.js", "pimcore/object/objectbrick.js", "pimcore/object/objectbricks/field.js", + "pimcore/object/selectoptions.js", + "pimcore/object/selectoptionsitems/definition.js", "pimcore/object/tags/abstract.js", "pimcore/object/tags/abstractRelations.js", "pimcore/object/tags/block.js", diff --git a/bundles/AdminBundle/translations/admin.en.yaml b/bundles/AdminBundle/translations/admin.en.yaml index 09fa9e5f15f..35bc913b456 100644 --- a/bundles/AdminBundle/translations/admin.en.yaml +++ b/bundles/AdminBundle/translations/admin.en.yaml @@ -754,6 +754,7 @@ prefix: Prefix load: Load saving_failed: 'Saving failed!' failed_to_create_new_item: 'Failed to create new item, please try again.' +failed_to_create_new_item_select_options: 'Failed to create new item. Name must be UpperCamelCase format, at least 3 characters long and may not contain any reserved words.' bundle: Bundle product: Product index_field_selection_field: 'Index Field Selection' diff --git a/bundles/AdminBundle/translations/admin_ext.en.yaml b/bundles/AdminBundle/translations/admin_ext.en.yaml index 02c247ff82c..61d829cad37 100644 --- a/bundles/AdminBundle/translations/admin_ext.en.yaml +++ b/bundles/AdminBundle/translations/admin_ext.en.yaml @@ -496,6 +496,10 @@ predefined_hotspot_data_templates: Predefined data templates hide_locale_labels_when_tabs_reached: Hide locale labels after number of tabs classificationstore_error_addkey_msg: Error adding Key classificationstore_dialog_keygroup_search: Key/Group Search +options_provider_type: Options source +options_provider_type_configure: Configure +options_provider_type_select_options: Select Options +options_provider_type_class: Class / Service options_provider_class: Options Provider Class or Service Name options_provider_data: Options Provider Data show_applogger_tab: Show App Logger Tab @@ -619,6 +623,7 @@ every: Every categories: Categories revision: Build objectbricks: Objectbricks +selectoptions: Select Options class_definitions: Class Definitions custom_layout_changed: Layout was changed in the meantime. Please reload the layout and try again rule_violation: Rule Violation diff --git a/bundles/CoreBundle/config/class_builder.yaml b/bundles/CoreBundle/config/class_builder.yaml index 3d1cc2f4ba6..e542de5958e 100644 --- a/bundles/CoreBundle/config/class_builder.yaml +++ b/bundles/CoreBundle/config/class_builder.yaml @@ -47,3 +47,9 @@ services: class: 'Pimcore\DataObject\ClassBuilder\PHPObjectBrickContainerClassDumper' public: true + Pimcore\DataObject\ClassBuilder\PHPSelectOptionsEnumDumperInterface: + class: 'Pimcore\DataObject\ClassBuilder\PHPSelectOptionsEnumDumper' + public: true + + Pimcore\DataObject\ClassBuilder\SelectOptionsEnumBuilderInterface: + class: 'Pimcore\DataObject\ClassBuilder\SelectOptionsEnumBuilder' diff --git a/bundles/CoreBundle/src/Command/ClassesDefinitionsBuildCommand.php b/bundles/CoreBundle/src/Command/ClassesDefinitionsBuildCommand.php index ddc0f937ba7..5a1285fe125 100644 --- a/bundles/CoreBundle/src/Command/ClassesDefinitionsBuildCommand.php +++ b/bundles/CoreBundle/src/Command/ClassesDefinitionsBuildCommand.php @@ -21,6 +21,7 @@ use Pimcore\DataObject\ClassBuilder\PHPFieldCollectionClassDumperInterface; use Pimcore\DataObject\ClassBuilder\PHPObjectBrickClassDumperInterface; use Pimcore\DataObject\ClassBuilder\PHPObjectBrickContainerClassDumperInterface; +use Pimcore\DataObject\ClassBuilder\PHPSelectOptionsEnumDumperInterface; use Pimcore\Model\DataObject; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -35,6 +36,7 @@ public function __construct( protected PHPFieldCollectionClassDumperInterface $collectionClassDumper, protected PHPObjectBrickClassDumperInterface $brickClassDumper, protected PHPObjectBrickContainerClassDumperInterface $brickContainerClassDumper, + protected PHPSelectOptionsEnumDumperInterface $selectOptionsEnumDumper, ) { parent::__construct(); } @@ -80,6 +82,11 @@ protected function execute(InputInterface $input, OutputInterface $output): int $this->collectionClassDumper->dumpPHPClass($fcDefinition); } + $selectOptionConfigurations = new DataObject\SelectOptions\Config\Listing(); + foreach ($selectOptionConfigurations as $selectOptionConfiguration) { + $this->selectOptionsEnumDumper->dumpPHPEnum($selectOptionConfiguration); + } + return 0; } } diff --git a/bundles/CoreBundle/src/Command/ClassesRebuildCommand.php b/bundles/CoreBundle/src/Command/ClassesRebuildCommand.php index 39bed14f14c..4d31b7e9554 100644 --- a/bundles/CoreBundle/src/Command/ClassesRebuildCommand.php +++ b/bundles/CoreBundle/src/Command/ClassesRebuildCommand.php @@ -145,6 +145,19 @@ protected function execute(InputInterface $input, OutputInterface $output): int $fc->save(false); } + if ($output->isVerbose()) { + $output->writeln('---------------------'); + $output->writeln('Saving all select options'); + } + $selectOptionConfigurations = new DataObject\SelectOptions\Config\Listing(); + foreach ($selectOptionConfigurations as $selectOptionConfiguration) { + if ($output->isVerbose()) { + $output->writeln(sprintf('%s saved', $selectOptionConfiguration->getId())); + } + + $selectOptionConfiguration->generateEnumFiles(); + } + return 0; } } diff --git a/bundles/CoreBundle/src/DependencyInjection/Configuration.php b/bundles/CoreBundle/src/DependencyInjection/Configuration.php index e25ced67965..f8f5a103d71 100644 --- a/bundles/CoreBundle/src/DependencyInjection/Configuration.php +++ b/bundles/CoreBundle/src/DependencyInjection/Configuration.php @@ -682,6 +682,31 @@ private function addObjectsNode(ArrayNodeDefinition $rootNode): void ->end() ->end() ->end() + ->arrayNode('select_options') + ->addDefaultsIfNotSet() + ->children() + ->arrayNode('definitions') + ->normalizeKeys(false) + ->prototype('array') + ->children() + ->scalarNode('id')->end() + ->scalarNode('group')->end() + ->scalarNode('useTraits')->end() + ->scalarNode('implementsInterfaces')->end() + ->arrayNode('selectOptions') + ->prototype('array') + ->children() + ->scalarNode('value')->end() + ->scalarNode('label')->end() + ->scalarNode('name')->end() + ->end() + ->end() + ->end() + ->end() + ->end() + ->end() + ->end() + ->end() ->end(); $classDefinitionsNode = $objectsNode ->children() @@ -1897,6 +1922,7 @@ private function addWriteTargetNodes(ArrayNodeDefinition $rootNode): void $this->addStorageNode($storageNode, 'custom_views', '/var/config/custom_views'); $this->addStorageNode($storageNode, 'data_hub', '/var/config/data_hub'); $this->addStorageNode($storageNode, 'object_custom_layouts', '/var/config/object_custom_layouts'); + $this->addStorageNode($storageNode, 'select_options', '/var/config/select-options'); } private function addStorageNode(NodeBuilder $node, string $name, string $folder): void diff --git a/bundles/CoreBundle/src/Migrations/Version20230221073317.php b/bundles/CoreBundle/src/Migrations/Version20230221073317.php new file mode 100644 index 00000000000..fcc38e7c6d4 --- /dev/null +++ b/bundles/CoreBundle/src/Migrations/Version20230221073317.php @@ -0,0 +1,41 @@ +addSql("INSERT IGNORE INTO users_permission_definitions (`key`) VALUES('selectoptions');"); + } + + public function down(Schema $schema): void + { + $this->addSql("DELETE FROM users_permission_definitions WHERE `key` = 'selectoptions'"); + } +} diff --git a/bundles/InstallBundle/src/Installer.php b/bundles/InstallBundle/src/Installer.php index c58beb85f0c..4729c66b28f 100644 --- a/bundles/InstallBundle/src/Installer.php +++ b/bundles/InstallBundle/src/Installer.php @@ -779,6 +779,7 @@ protected function insertDatabaseContents(): void $userPermissions = [ 'assets', 'classes', + 'selectoptions', 'clear_cache', 'clear_fullpage_cache', 'clear_temp_files', diff --git a/config/dao-classmap.php b/config/dao-classmap.php index e3470def7f0..4961487bd58 100644 --- a/config/dao-classmap.php +++ b/config/dao-classmap.php @@ -60,6 +60,8 @@ 'Pimcore\\Model\\DataObject\\Objectbrick\\Definition' => 'Pimcore\\Model\\DataObject\\Objectbrick\\Definition\\Dao', 'Pimcore\\Model\\DataObject\\QuantityValue\\Unit' => 'Pimcore\\Model\\DataObject\\QuantityValue\\Unit\\Dao', 'Pimcore\\Model\\DataObject\\QuantityValue\\Unit\\Listing' => 'Pimcore\\Model\\DataObject\\QuantityValue\\Unit\\Listing\\Dao', + 'Pimcore\\Model\\DataObject\\SelectOptions\\Config' => 'Pimcore\\Model\\DataObject\\SelectOptions\\Config\\Dao', + 'Pimcore\\Model\\DataObject\\SelectOptions\\Config\\Listing' => 'Pimcore\\Model\\DataObject\\SelectOptions\\Config\\Listing\\Dao', 'Pimcore\\Model\\DataObject\\Service' => 'Pimcore\\Model\\Element\\Dao', 'Pimcore\\Model\\Dependency' => 'Pimcore\\Model\\Dependency\\Dao', 'Pimcore\\Model\\Document' => 'Pimcore\\Model\\Document\\Dao', diff --git a/doc/05_Objects/01_Object_Classes/01_Data_Types/30_Dynamic_Select_Types.md b/doc/05_Objects/01_Object_Classes/01_Data_Types/30_Dynamic_Select_Types.md index 875137680cd..c5264e26d39 100644 --- a/doc/05_Objects/01_Object_Classes/01_Data_Types/30_Dynamic_Select_Types.md +++ b/doc/05_Objects/01_Object_Classes/01_Data_Types/30_Dynamic_Select_Types.md @@ -10,14 +10,19 @@ Note that there are two ways to define an options provider. Either simply specify the class name ... -![Select Field](../../../img/dynselect1.png) +![Select Field](../../../img/dynamic_select_class.png) ... or the name of a Symfony service (notice the prefix). -![Select Field](../../../img/dynselect1b.png) +![Select Field](../../../img/dynamic_select_service.png) -The services.yaml would then look like this one ... +The services.yaml would then look like this: -![Select Field](../../../img/dynselect1a.png) +```yaml +services: + website.optionsprovider: + class: Website\OptionsProvider + public: true +``` Depending on your datatype you have to implement the appropriate interface. diff --git a/doc/05_Objects/01_Object_Classes/01_Data_Types/77_Select_Options.md b/doc/05_Objects/01_Object_Classes/01_Data_Types/77_Select_Options.md new file mode 100644 index 00000000000..796afc39bac --- /dev/null +++ b/doc/05_Objects/01_Object_Classes/01_Data_Types/77_Select_Options.md @@ -0,0 +1,70 @@ +# Select Options + +Select options are predefined sets of options which may be used for (multi)select fields. + +![Fieldcollection Configuration](../../../img/classes-datatypes-selectoptions-editor.png) + +The 'Name' column is optional, unless the value can't be converted to a valid PHP enum case. +This applies to values starting with a number or certain symbols. +A name may contain alphanumeric characters and underscores. + +## Field configuration + +Set the options source to 'Select Options' and select one of the select options sets. + +![Fieldcollection Configuration](../../../img/classes-datatypes-selectoptions-selector.png) + +## Working with PHP API + +The configuration in the first screenshot generates the [backed enum](https://www.php.net/manual/en/language.enumerations.backed.php) below. + +```php + '10', + self::Twenty => 'Twenty', + self::Check => '√', + self::C => '©', + self::Multiple_Word_Value => 'Multiple Word Value', + }; + } +} +``` + +### Retrieve available option values + +Provided by the `EnumGetValuesTrait`. + +```php +TestOptions::getValues(); +``` + +### Map select value to enum + +Provided by the `EnumTryFromNullableTrait`. + +```php +$value = $product->getSelectField(); +$testOption = TestOptions::tryFromNullable($value); +if ($testOption !== null) { + $label = $testOption->getLabel(); +} +``` diff --git a/doc/05_Objects/01_Object_Classes/01_Data_Types/80_Select_Types.md b/doc/05_Objects/01_Object_Classes/01_Data_Types/80_Select_Types.md index b7ea760b9af..8d20e9340a6 100644 --- a/doc/05_Objects/01_Object_Classes/01_Data_Types/80_Select_Types.md +++ b/doc/05_Objects/01_Object_Classes/01_Data_Types/80_Select_Types.md @@ -9,7 +9,11 @@ multiselect, values are stored as a comma separated list. For select and multiselect the options can be defined with a value and display value in the class definition: -![Select Field](../../../img/classes-datatypes-select2.png) +![Select Field](../../../img/classes-datatypes-select-configure.png) + +It's also possible to retrieve options from difference sources. +* [Select Options](./77_Select_Options.md) +* [Class / Service](./30_Dynamic_Select_Types.md) Country and language have fixed option values. For the language field the options can be limited to available system languages. The country and language select field are also available as multi select fields. diff --git a/doc/05_Objects/01_Object_Classes/01_Data_Types/README.md b/doc/05_Objects/01_Object_Classes/01_Data_Types/README.md index 10d099a64ea..55385b34314 100644 --- a/doc/05_Objects/01_Object_Classes/01_Data_Types/README.md +++ b/doc/05_Objects/01_Object_Classes/01_Data_Types/README.md @@ -42,6 +42,12 @@ The entire list of data types is indicated below: | countries | combo box with multiple select and predefined country list | | languages | combo box with multiple select and combo box with multiple select and predefined language | +### [Select Options](./77_Select_Options.md) + +| Name | Description | +|----------------|------------------------------------------------| +| select options | Manage select options for (multi)select fields | + ### [Dynamic Select Datatypes](./30_Dynamic_Select_Types.md) | Name | Description | diff --git a/doc/21_Deployment/03_Configuration_Environments.md b/doc/21_Deployment/03_Configuration_Environments.md index f0b5bef3ea4..c9c1c7d296f 100644 --- a/doc/21_Deployment/03_Configuration_Environments.md +++ b/doc/21_Deployment/03_Configuration_Environments.md @@ -107,6 +107,10 @@ pimcore: target: 'symfony-config' options: directory: '/var/www/html/var/config/object_custom_layouts' + select_options: + target: 'symfony-config' + options: + directory: '/var/www/html/var/config/select-options' ``` #### Production environment with `symfony-config` diff --git a/doc/22_Administration_of_Pimcore/07_Users_and_Roles.md b/doc/22_Administration_of_Pimcore/07_Users_and_Roles.md index ab3d9ddfe7e..c00457427cb 100644 --- a/doc/22_Administration_of_Pimcore/07_Users_and_Roles.md +++ b/doc/22_Administration_of_Pimcore/07_Users_and_Roles.md @@ -46,6 +46,7 @@ The following list outlines what the different system permissions (available for * **Redirects**: User can create and modify redirects * **Reports**: User has access to reports module * **Seemode**: Seemode available/not available for user +* **Select Options**: Object [select options editor](../05_Objects/01_Object_Classes/01_Data_Types/77_Select_Options.md) * **SEO Document Editor**: User has access to SEO document editor * **System Settings**: User has access to system settings * **Tag & Snippet Management**: User can create and modify entries in tag & snippet management diff --git a/doc/img/classes-datatypes-select-configure.png b/doc/img/classes-datatypes-select-configure.png new file mode 100644 index 0000000000000000000000000000000000000000..08a59723b551ecd49343d39f5f603dffbad614c3 GIT binary patch literal 21211 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 diff --git a/doc/img/classes-datatypes-selectoptions-editor.png b/doc/img/classes-datatypes-selectoptions-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..22ed58858a9b99361de61403f944f2fb31bd983a GIT binary patch literal 153285 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 literal 0 HcmV?d00001 diff --git a/doc/img/classes-datatypes-selectoptions-selector.png b/doc/img/classes-datatypes-selectoptions-selector.png new file mode 100644 index 0000000000000000000000000000000000000000..69fc491d845a54c3ab4fb1d9b7f1e34ba55916aa GIT binary patch literal 32606 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�|1*f&pOMWt^*~& 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 literal 0 HcmV?d00001 diff --git a/doc/img/dynamic_select_service.png b/doc/img/dynamic_select_service.png new file mode 100644 index 0000000000000000000000000000000000000000..dd36e2e8c3dc61c01cbb5c26d9338b7de82aa339 GIT binary patch literal 25976 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 diff --git a/doc/img/dynselect1a.png b/doc/img/dynselect1a.png deleted file mode 100644 index 225b17f0e28945c8b91fc52b369ab6a36b4aaae6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17909 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 RAibQB5Rnxw6V&(p{{Rj~A5{PV diff --git a/doc/img/dynselect1b.png b/doc/img/dynselect1b.png deleted file mode 100644 index c81e4d37753c1769630809bc3f998e97376394fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14086 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 diff --git a/lib/DataObject/ClassBuilder/PHPSelectOptionsEnumDumper.php b/lib/DataObject/ClassBuilder/PHPSelectOptionsEnumDumper.php new file mode 100644 index 00000000000..73a774ecb1f --- /dev/null +++ b/lib/DataObject/ClassBuilder/PHPSelectOptionsEnumDumper.php @@ -0,0 +1,35 @@ +getPhpClassFile(); + $enum = $this->enumBuilder->buildEnum($config); + + File::put($filePath, $enum); + } +} diff --git a/lib/DataObject/ClassBuilder/PHPSelectOptionsEnumDumperInterface.php b/lib/DataObject/ClassBuilder/PHPSelectOptionsEnumDumperInterface.php new file mode 100644 index 00000000000..e2af8d39b3a --- /dev/null +++ b/lib/DataObject/ClassBuilder/PHPSelectOptionsEnumDumperInterface.php @@ -0,0 +1,24 @@ +getTemplate(); + + return strtr( + $template, + [ + '%namespace%' => $config->getNamespace(), + '%enumName%' => $config->getEnumName(), + '%interfaces%' => $this->generateInterfaces($config), + '%traits%' => $this->generateTraits($config), + '%cases%' => $this->generateCases($config), + '%labelMatches%' => $this->generateLabelMatches($config), + ] + ); + } + + protected function generateInterfaces(Config $config): string + { + $interfaces = $this->parseClasses($config->getImplementsInterfaces()); + + $baseInterface = '\\' . SelectOptionsInterface::class; + $extendsBaseInterface = false; + $implements = []; + foreach ($interfaces as $interface) { + if (!interface_exists($interface)) { + throw new \Exception('Interface ' . $interface . ' does not exist', 1676878234790); + } + + if (is_subclass_of($interface, $baseInterface)) { + $extendsBaseInterface = true; + } + + $implements[] = $interface; + } + + // Add base interface if none of the custom interfaces extend it + if (!$extendsBaseInterface) { + array_unshift($implements, $baseInterface); + } + + return implode(', ', $implements); + } + + protected function generateTraits(Config $config): string + { + $template = 'use %trait%;'; + + $traits = $this->parseClasses($config->getUseTraits()); + // Prepend default traits + array_unshift( + $traits, + '\\' . EnumGetValuesTrait::class, + '\\' . EnumTryFromNullableTrait::class, + ); + + $uses = []; + foreach ($traits as $trait) { + if (!trait_exists($trait)) { + throw new \Exception('Trait ' . $trait . ' does not exist', 1676878234791); + } + $uses[] = strtr($template, ['%trait%' => $trait]); + } + + return $this->implodeTemplateValues($uses, addEndLineBreak: true); + } + + /** + * @return string[] + */ + protected function parseClasses(string $classes): array + { + // Prefix backslash + return array_map( + fn (string $class) => '\\' . ltrim($class), + explode_and_trim(',', $classes) + ); + } + + protected function generateCases(Config $config): string + { + $template = 'case %caseName% = \'%optionValue%\';'; + + $cases = $caseNames = []; + foreach ($config->getSelectOptions() as $selectOption) { + $caseName = $this->generateCaseName($selectOption); + if (isset($caseNames[$caseName])) { + throw new \Exception( + sprintf( + 'Case \'%s\' for value \'%s\' already exists for value \'%s\'. Configure a name or ensure the alphanumeric characters are unique.', + $caseName, + $selectOption->getValue(), + $caseNames[$caseName] + ), + 1676890789419 + ); + } + + // Store value for unique check + $value = $selectOption->getValue(); + $caseNames[$caseName] = $value; + + $cases[] = strtr( + $template, + [ + '%caseName%' => $caseName, + '%optionValue%' => $this->escapeSingleQuote($value), + ] + ); + } + + return $this->implodeTemplateValues($cases); + } + + protected function generateLabelMatches(Config $config): string + { + if (!$config->hasSelectOptions()) { + return 'default => \'\''; + } + + $template = 'self::%caseName% => \'%optionLabel%\','; + + $labelMatches = []; + foreach ($config->getSelectOptions() as $selectOption) { + $label = $selectOption->hasLabel() ? $selectOption->getLabel() : $selectOption->getValue(); + $labelMatches[] = strtr( + $template, + [ + '%caseName%' => $this->generateCaseName($selectOption), + '%optionLabel%' => $this->escapeSingleQuote($label), + ] + ); + } + + return $this->implodeTemplateValues($labelMatches, 12); + } + + protected function implodeTemplateValues(array $lines, int $indent = 4, bool $addEndLineBreak = false): string + { + $content = implode("\n" . $this->indent($indent), $lines); + if ($addEndLineBreak && (bool)count($lines)) { + $content .= "\n"; + } + return $content; + } + + protected function indent(int $spaces = 4): string + { + return str_repeat(' ', $spaces); + } + + protected function escapeSingleQuote(string $value): string + { + return str_replace("'", "\\'", $value); + } + + protected function generateCaseName(SelectOption $selectOption): string + { + $selectOptionName = $this->getSelectOptionName($selectOption); + + // Start with a letter or underscore, followed by zero or more alphanumeric and underscore characters + if (!preg_match('/^[A-Z-a-z_][A-Za-z0-9_]*$/', $selectOptionName)) { + throw new \Exception( + sprintf( + 'Invalid name \'%s\' for option with value \'%s\'. Must be alphanumeric and start with a letter (underscores allowed). Configure a name or use a different value.', + $selectOptionName, + $selectOption->getValue() + ), + 1676896232762 + ); + } + + // Use prefix to assure the case doesn't start with a numeric value + return $selectOptionName; + } + + protected function getSelectOptionName(SelectOption $selectOption): string + { + if ($selectOption->hasName()) { + return $selectOption->getName(); + } + + // Attempt to convert value to case name + $value = $selectOption->getValue(); + // Apply slug to remove invalid characters + $caseName = (new AsciiSlugger()) + ->slug($value, '_', 'en') + ->toString(); + $caseName = $this->toUpperCamelCase($caseName); + + if (empty($caseName) && $caseName !== '0') { + throw new \Exception( + 'Unable to convert value \'' . $value . '\' to case name. Configure a name or use a different value.', + 1676895007458 + ); + } + + return $caseName; + } + + protected function toUpperCamelCase(string $value): string + { + return str_replace( + ' ', + '_', + ucwords( + str_replace('_', ' ', $value) + ) + ); + } + + protected function getTemplate(): string + { + return 'getAllPhpReservedWords(), + ...static::PIMCORE, + ]; + } + + public function isReservedWord(string $word): bool + { + return in_array( + strtolower($word), + $this->getAllReservedWords(), + true + ); + } +} diff --git a/lib/Kernel.php b/lib/Kernel.php index aee8bfff635..7e6f969a452 100644 --- a/lib/Kernel.php +++ b/lib/Kernel.php @@ -184,6 +184,10 @@ public function registerContainerConfiguration(LoaderInterface $loader): void 'storageDirectoryEnvVariableName' => 'PIMCORE_CONFIG_STORAGE_DIR_OBJECT_CUSTOM_LAYOUTS', 'defaultStorageDirectoryName' => 'custom-layouts', ], + [ + 'storageDirectoryEnvVariableName' => 'PIMCORE_CONFIG_STORAGE_DIR_SELECT_OPTIONS', + 'defaultStorageDirectoryName' => 'select-options', + ], ]; $loader->load(function (ContainerBuilder $container) use ($loader, $configArray) { diff --git a/models/DataObject/ClassDefinition/Data/Multiselect.php b/models/DataObject/ClassDefinition/Data/Multiselect.php index 0d395cd09ff..5c4540627da 100644 --- a/models/DataObject/ClassDefinition/Data/Multiselect.php +++ b/models/DataObject/ClassDefinition/Data/Multiselect.php @@ -34,13 +34,15 @@ class Multiselect extends Data implements NormalizerInterface, LayoutDefinitionEnrichmentInterface, FieldDefinitionEnrichmentInterface, - DataContainerAwareInterface + DataContainerAwareInterface, + OptionsProviderInterface { use DataObject\Traits\SimpleComparisonTrait; use DataObject\Traits\SimpleNormalizerTrait; use DataObject\ClassDefinition\DynamicOptionsProvider\SelectionProviderTrait; use DataObject\Traits\DataHeightTrait; use DataObject\Traits\DataWidthTrait; + use OptionsProviderTrait; /** * Available options to select @@ -65,24 +67,6 @@ class Multiselect extends Data implements */ public ?string $renderType = null; - /** - * Options provider class - * - * @internal - * - * @var string|null - */ - public ?string $optionsProviderClass = null; - - /** - * Options provider data - * - * @internal - * - * @var string|null - */ - public ?string $optionsProviderData = null; - /** * @internal */ @@ -203,7 +187,7 @@ public function getDataForGrid(?array $data, Concrete $object = null, array $par DataObject\ClassDefinition\Helper\OptionsProviderResolver::MODE_MULTISELECT ); - if ($optionsProvider === null) { + if ($this->useConfiguredOptions() || $optionsProvider === null) { return $this->getDataForEditmode($data, $object, $params); } @@ -425,26 +409,6 @@ public function synchronizeWithMasterDefinition(DataObject\ClassDefinition\Data $this->options = $masterDefinition->options; } - public function getOptionsProviderClass(): ?string - { - return $this->optionsProviderClass; - } - - public function setOptionsProviderClass(?string $optionsProviderClass): void - { - $this->optionsProviderClass = $optionsProviderClass; - } - - public function getOptionsProviderData(): ?string - { - return $this->optionsProviderData; - } - - public function setOptionsProviderData(?string $optionsProviderData): void - { - $this->optionsProviderData = $optionsProviderData; - } - public function appendData(?array $existingData, array $additionalData): array { if (!is_array($existingData)) { @@ -482,7 +446,7 @@ public function isEqual(mixed $oldValue, mixed $newValue): bool public function jsonSerialize(): mixed { - if ($this->getOptionsProviderClass() && Service::doRemoveDynamicOptions()) { + if (!$this->useConfiguredOptions() && $this->getOptionsProviderClass() && Service::doRemoveDynamicOptions()) { $this->options = null; } @@ -496,7 +460,7 @@ public function resolveBlockedVars(): array { $blockedVars = parent::resolveBlockedVars(); - if ($this->getOptionsProviderClass()) { + if (!$this->useConfiguredOptions() && $this->getOptionsProviderClass()) { $blockedVars[] = 'options'; } @@ -536,7 +500,7 @@ public function preSave(mixed $containerDefinition, array $params = []): void $this->getOptionsProviderClass(), DataObject\ClassDefinition\Helper\OptionsProviderResolver::MODE_MULTISELECT ); - if ($optionsProvider) { + if (!$this->useConfiguredOptions() && $optionsProvider !== null) { $context = []; $context['fieldname'] = $this->getName(); diff --git a/models/DataObject/ClassDefinition/Data/OptionsProviderInterface.php b/models/DataObject/ClassDefinition/Data/OptionsProviderInterface.php new file mode 100644 index 00000000000..e0298ca6f1f --- /dev/null +++ b/models/DataObject/ClassDefinition/Data/OptionsProviderInterface.php @@ -0,0 +1,44 @@ +optionsProviderType; + } + + public function setOptionsProviderType(?string $optionsProviderType): void + { + $this->optionsProviderType = $optionsProviderType; + } + + public function getOptionsProviderClass(): ?string + { + return $this->optionsProviderClass; + } + + public function setOptionsProviderClass(?string $optionsProviderClass): void + { + $this->optionsProviderClass = $optionsProviderClass; + } + + public function getOptionsProviderData(): ?string + { + return $this->optionsProviderData; + } + + public function setOptionsProviderData(?string $optionsProviderData): void + { + $this->optionsProviderData = $optionsProviderData; + } + + public function useConfiguredOptions(): bool + { + return $this->getOptionsProviderType() === OptionsProviderInterface::TYPE_CONFIGURE + // Legacy fallback in case no type was set yet and no class/service was configured + || ($this->getOptionsProviderType() === null && empty($this->getOptionsProviderClass())); + } +} diff --git a/models/DataObject/ClassDefinition/Data/Select.php b/models/DataObject/ClassDefinition/Data/Select.php index b79b21645b4..37d9c78a30d 100644 --- a/models/DataObject/ClassDefinition/Data/Select.php +++ b/models/DataObject/ClassDefinition/Data/Select.php @@ -33,13 +33,15 @@ class Select extends Data implements \JsonSerializable, NormalizerInterface, LayoutDefinitionEnrichmentInterface, - FieldDefinitionEnrichmentInterface + FieldDefinitionEnrichmentInterface, + OptionsProviderInterface { use Model\DataObject\Traits\SimpleComparisonTrait; use DataObject\Traits\SimpleNormalizerTrait; use DataObject\Traits\DefaultValueTrait; use DataObject\ClassDefinition\DynamicOptionsProvider\SelectionProviderTrait; use DataObject\Traits\DataWidthTrait; + use OptionsProviderTrait; /** * Available options to select @@ -57,24 +59,6 @@ class Select extends Data implements */ public ?string $defaultValue = null; - /** - * Options provider class - * - * @internal - * - * @var string|null - */ - public ?string $optionsProviderClass = null; - - /** - * Options provider data - * - * @internal - * - * @var string|null - */ - public ?string $optionsProviderData = null; - /** * Column length * @@ -302,6 +286,7 @@ public function synchronizeWithMasterDefinition(DataObject\ClassDefinition\Data $this->options = $masterDefinition->options; $this->columnLength = $masterDefinition->columnLength; $this->defaultValue = $masterDefinition->defaultValue; + $this->optionsProviderType = $masterDefinition->optionsProviderType; $this->optionsProviderClass = $masterDefinition->optionsProviderClass; $this->optionsProviderData = $masterDefinition->optionsProviderData; } @@ -316,26 +301,6 @@ public function setDefaultValue(?string $defaultValue): void $this->defaultValue = $defaultValue; } - public function getOptionsProviderClass(): ?string - { - return $this->optionsProviderClass; - } - - public function setOptionsProviderClass(?string $optionsProviderClass): void - { - $this->optionsProviderClass = $optionsProviderClass; - } - - public function getOptionsProviderData(): ?string - { - return $this->optionsProviderData; - } - - public function setOptionsProviderData(?string $optionsProviderData): void - { - $this->optionsProviderData = $optionsProviderData; - } - /** * { @inheritdoc } */ @@ -372,7 +337,7 @@ public function getDataForGrid(?string $data, Concrete $object = null, array $pa DataObject\ClassDefinition\Helper\OptionsProviderResolver::MODE_SELECT ); - if ($optionsProvider) { + if (!$this->useConfiguredOptions() && $optionsProvider !== null) { $context = $params['context'] ?? []; $context['object'] = $object; if ($object) { @@ -440,7 +405,7 @@ protected function doGetDefaultValue(Concrete $object, array $context = []): ?st $this->getOptionsProviderClass(), DataObject\ClassDefinition\Helper\OptionsProviderResolver::MODE_SELECT ); - if ($optionsProvider) { + if (!$this->useConfiguredOptions() && $optionsProvider !== null) { $context['object'] = $object; $context['class'] = $object->getClass(); @@ -457,7 +422,7 @@ protected function doGetDefaultValue(Concrete $object, array $context = []): ?st public function jsonSerialize(): mixed { - if ($this->getOptionsProviderClass() && Service::doRemoveDynamicOptions()) { + if (!$this->useConfiguredOptions() && $this->getOptionsProviderClass() && Service::doRemoveDynamicOptions()) { $this->options = null; } @@ -471,7 +436,7 @@ public function resolveBlockedVars(): array { $blockedVars = parent::resolveBlockedVars(); - if ($this->getOptionsProviderClass()) { + if (!$this->useConfiguredOptions() && $this->getOptionsProviderClass()) { $blockedVars[] = 'options'; } diff --git a/models/DataObject/ClassDefinition/DynamicOptionsProvider/SelectionProviderTrait.php b/models/DataObject/ClassDefinition/DynamicOptionsProvider/SelectionProviderTrait.php index 19daf21317c..cbaed5beb0a 100644 --- a/models/DataObject/ClassDefinition/DynamicOptionsProvider/SelectionProviderTrait.php +++ b/models/DataObject/ClassDefinition/DynamicOptionsProvider/SelectionProviderTrait.php @@ -26,6 +26,10 @@ trait SelectionProviderTrait { protected function doEnrichDefinitionDefinition(/*?Concrete */ ?DataObject\Concrete $object, string $fieldname, string $purpose, int $mode, /** array */ array $context = []): void { + if ($this->getOptionsProviderType() === Data\OptionsProviderInterface::TYPE_CONFIGURE) { + return; + } + $optionsProvider = DataObject\ClassDefinition\Helper\OptionsProviderResolver::resolveProvider( $this->getOptionsProviderClass(), $mode diff --git a/models/DataObject/ClassDefinition/Service.php b/models/DataObject/ClassDefinition/Service.php index 414e86963d8..79c469721bc 100644 --- a/models/DataObject/ClassDefinition/Service.php +++ b/models/DataObject/ClassDefinition/Service.php @@ -82,7 +82,7 @@ private static function removeDynamicOptionsFromLayoutDefinition(mixed &$layout) if (is_array($children)) { foreach ($children as $child) { if ($child instanceof DataObject\ClassDefinition\Data\Select) { - if ($child->getOptionsProviderClass()) { + if (!$child->useConfiguredOptions() && $child->getOptionsProviderClass()) { $child->options = null; } } diff --git a/models/DataObject/SelectOptions/Config.php b/models/DataObject/SelectOptions/Config.php new file mode 100644 index 00000000000..81b2ab3f793 --- /dev/null +++ b/models/DataObject/SelectOptions/Config.php @@ -0,0 +1,382 @@ +id; + } + + /** + * @return $this + */ + public function setId(string $id): static + { + $reservedWordsHelper = new ReservedWordsHelper(); + if ($reservedWordsHelper->isReservedWord($id)) { + throw new \Exception( + 'ID must not be one of reserved words: ' . implode(', ', $reservedWordsHelper->getAllReservedWords()), + 1677241981466 + ); + } + + $this->id = $id; + return $this; + } + + public function getGroup(): ?string + { + return $this->group; + } + + /** + * @return $this + */ + public function setGroup(?string $group): static + { + $this->group = $group; + return $this; + } + + public function hasGroup(): bool + { + return !empty($this->group); + } + + public function getUseTraits(): string + { + return $this->useTraits; + } + + /** + * @return $this + */ + public function setUseTraits(string $useTraits): static + { + $this->useTraits = $useTraits; + return $this; + } + + public function getImplementsInterfaces(): string + { + return $this->implementsInterfaces; + } + + /** + * @return $this + */ + public function setImplementsInterfaces(string $implementsInterfaces): static + { + $this->implementsInterfaces = $implementsInterfaces; + return $this; + } + + /** + * @return Data\SelectOption[] + */ + public function getSelectOptions(): array + { + return $this->selectOptions; + } + + /** + * @return array[] + */ + public function getSelectOptionsAsData(): array + { + return array_map( + fn(Data\SelectOption $selectOption) => $selectOption->toArray(), + $this->getSelectOptions() + ); + } + + /** + * @return $this + */ + public function setSelectOptions(Data\SelectOption ...$selectOptions): static + { + $this->selectOptions = $selectOptions; + return $this; + } + + /** + * @return $this + */ + public function setSelectOptionsFromData(array $selectOptionsData): static + { + $selectOptions = []; + foreach ($selectOptionsData as $selectOptionData) { + $selectOptions[] = Data\SelectOption::createFromData($selectOptionData); + } + + return $this->setSelectOptions(...$selectOptions); + } + + public function hasSelectOptions(): bool + { + return !empty($this->selectOptions); + } + + public static function getById(string $id): ?Config + { + $cacheKey = self::getCacheKey($id); + + try { + $selectOptions = RuntimeCache::get($cacheKey); + if (!$selectOptions instanceof self) { + throw new \Exception('Select options in registry is invalid', 1678353750987); + } + + // TODO is this needed? +// $selectOptions->setId($id); + } catch (\Exception $e) { + try { + $selectOptions = new self(); + /** @var Config\Dao $dao */ + $dao = $selectOptions->getDao(); + $dao->getById($id); + RuntimeCache::set($cacheKey, $selectOptions); + } catch (NotFoundException $e) { + return null; + } + } + + return $selectOptions; + } + + protected static function getCacheKey(string $key): string + { + return 'selectoptions_' . $key; + } + + public static function createFromData(array $data): static + { + // Check whether ID is available + $id = $data[static::PROPERTY_ID] ?? null; + if (empty($id)) { + throw new \Exception('ID is mandatory for select options definition', 1676646778230); + } + + $group = $data[static::PROPERTY_GROUP] ?? null; + $useTraits = $data[static::PROPERTY_USE_TRAITS] ?? ''; + $implementsInterfaces = $data[static::PROPERTY_IMPLEMENTS_INTERFACES] ?? ''; + $selectOptionsData = $data[static::PROPERTY_SELECT_OPTIONS] ?? []; + + return (new static()) + ->setId($id) + ->setGroup($group) + ->setUseTraits($useTraits) + ->setImplementsInterfaces($implementsInterfaces) + ->setSelectOptionsFromData($selectOptionsData); + } + + public function save(): void + { + $this->getDao()->save(); + } + + /** + * @return array + */ + public function jsonSerialize(): array + { + return [ + static::PROPERTY_ID => $this->getId(), + static::PROPERTY_GROUP => $this->getGroup(), + static::PROPERTY_USE_TRAITS => $this->getUseTraits(), + static::PROPERTY_IMPLEMENTS_INTERFACES => $this->getImplementsInterfaces(), + static::PROPERTY_SELECT_OPTIONS => $this->getSelectOptions(), + ]; + } + + /** + * @return array Class name as key and field names as value + */ + public function getFieldsUsedIn(): array + { + $definitions = [ + ...(new ClassDefinition\Listing())->load(), + ...(new Fieldcollection\Definition\Listing())->load(), + ...(new Objectbrick\Definition\Listing())->load(), + ]; + + $fieldsUsedIn = []; + foreach ($definitions as $definition) { + $prefix = match (get_class($definition)) { + ClassDefinition::class => 'Class', + Fieldcollection\Definition::class => 'Field Collection', + Objectbrick\Definition::class => 'Objectbrick', + default => 'Unknown', + }; + + $fieldsUsedIn = [ + ...$fieldsUsedIn, + ...$this->getFieldsUsedInClass($definition, $prefix), + ]; + } + + // Add classification store select fields + foreach ((new Classificationstore\KeyConfig\Listing())->load() as $keyConfiguration) { + $fieldDefinition = Classificationstore\Service::getFieldDefinitionFromKeyConfig($keyConfiguration); + if ($this->isConfiguredAsOptionsProvider($fieldDefinition)) { + $fieldsUsedIn['Classification Store ' . $keyConfiguration->getStoreId()][] = $fieldDefinition->getName(); + } + } + + return $fieldsUsedIn; + } + + /** + * @return array + */ + protected function getFieldsUsedInClass( + ClassDefinition|Fieldcollection\Definition|Objectbrick\Definition $definition, + string $prefix + ): array { + if (method_exists($definition, 'getName')) { + $definitionName = $definition->getName(); + } else { + $definitionName = $definition->getKey(); + } + + $fieldsUsedIn = []; + foreach ($this->getAllFieldDefinitions($definition) as $fieldDefinition) { + if ($this->isConfiguredAsOptionsProvider($fieldDefinition)) { + $fieldsUsedIn[$prefix . ' ' . $definitionName][] = $fieldDefinition->getName(); + } + } + + return $fieldsUsedIn; + } + + protected function isConfiguredAsOptionsProvider(?ClassDefinition\Data $fieldDefinition): bool + { + if ( + $fieldDefinition === null + || !$fieldDefinition instanceof ClassDefinition\Data\OptionsProviderInterface + || empty($fieldDefinition->getOptionsProviderType()) + || $fieldDefinition->getOptionsProviderType() === ClassDefinition\Data\OptionsProviderInterface::TYPE_CONFIGURE + ) { + return false; + } + + $configuredClass = trim($fieldDefinition->getOptionsProviderClass() ?? '', '\\'); + $configuredEnumName = trim($fieldDefinition->getOptionsProviderData() ?? '', '\\ '); + + $expectedEnumNames = [ + $this->getEnumName(), + $this->getEnumName(true), + ]; + + return $configuredClass === SelectOptionsOptionsProvider::class + && in_array($configuredEnumName, $expectedEnumNames, true); + } + + /** + * @return ClassDefinition\Data[] + */ + protected function getAllFieldDefinitions( + ClassDefinition|Fieldcollection\Definition|Objectbrick\Definition $definition + ): array { + $fieldDefinitions = $definition->getFieldDefinitions(['suppressEnrichment' => true]); + $localizedFieldDefinition = $definition->getFieldDefinition('localizedfields', ['suppressEnrichment' => true]); + if ($localizedFieldDefinition instanceof ClassDefinition\Data\Localizedfields) { + $fieldDefinitions = [ + ...$fieldDefinitions, + ...$localizedFieldDefinition->getFieldDefinitions(['suppressEnrichment' => true]) + ]; + } + + return $fieldDefinitions; + } + + /** + * @throws \Exception if configured interfaces or traits don't exist + * + * @internal + */ + public function generateEnumFiles(): void + { + \Pimcore::getContainer()->get(PHPSelectOptionsEnumDumperInterface::class)->dumpPHPEnum($this); + } + + /** + * @internal + */ + public function getPhpClassFile(): string + { + return $this->locateFile(ucfirst($this->getId()), 'DataObject/SelectOptions/%s.php'); + } + + public function getEnumName(bool $prependNamespace = false): string + { + $className = $this->getId(); + if (!$prependNamespace) { + return $className; + } + + return $this->getNamespace() . '\\' . $className; + } + + public function getNamespace(): string + { + return 'Pimcore\\Model\\DataObject\\SelectOptions'; + } +} diff --git a/models/DataObject/SelectOptions/Config/Dao.php b/models/DataObject/SelectOptions/Config/Dao.php new file mode 100644 index 00000000000..8c8d6622a10 --- /dev/null +++ b/models/DataObject/SelectOptions/Config/Dao.php @@ -0,0 +1,168 @@ +getParameter('pimcore.config'); + + $storageDirectory = LocationAwareConfigRepository::getStorageDirectoryFromSymfonyConfig($config, self::CONFIG_KEY, 'PIMCORE_CONFIG_STORAGE_DIR_SELECT_OPTIONS'); + $writeTarget = LocationAwareConfigRepository::getWriteTargetFromSymfonyConfig($config, self::CONFIG_KEY, self::WRITE_TARGET); + + parent::configure([ + 'containerConfig' => $config['objects']['select_options']['definitions'], + 'settingsStoreScope' => 'pimcore_select_options', + 'storageDirectory' => $storageDirectory, + 'writeTarget' => $writeTarget, + 'options' => $config['storage'][self::CONFIG_KEY]['options'], + ]); + } + + public function getById(?string $id = null): void + { + if ($id !== null) { + $this->model->setId($id); + } + + $data = $this->getDataByName($this->model->getId()); + if ($data && $id !== null) { + $data['id'] = $id; + } + + if (empty($data)) { + throw new Model\Exception\NotFoundException( + sprintf( + 'Select options with ID "%s" does not exist.', + $this->model->getId() + ), + 1678366154585 + ); + } + + $selectOptionsData = $data[Model\DataObject\SelectOptions\Config::PROPERTY_SELECT_OPTIONS] ?? []; + $this->model->setSelectOptionsFromData($selectOptionsData); + + unset($data[Model\DataObject\SelectOptions\Config::PROPERTY_SELECT_OPTIONS]); + $this->assignVariablesToModel($data); + } + + public function exists(string $name): bool + { + return (bool) $this->getDataByName($this->model->getId()); + } + + public function save(): void + { + $this->validateId(); + + $this->saveConfiguration(); + $this->model->generateEnumFiles(); + } + + protected function saveConfiguration(): void + { + $dataRaw = $this->model->getObjectVars(); + $data = []; + $allowedProperties = [ + Model\DataObject\SelectOptions\Config::PROPERTY_ID, + Model\DataObject\SelectOptions\Config::PROPERTY_USE_TRAITS, + Model\DataObject\SelectOptions\Config::PROPERTY_IMPLEMENTS_INTERFACES, + Model\DataObject\SelectOptions\Config::PROPERTY_GROUP, + ]; + + foreach ($dataRaw as $key => $value) { + if (in_array($key, $allowedProperties)) { + $data[$key] = $value; + } + } + + $data[Model\DataObject\SelectOptions\Config::PROPERTY_SELECT_OPTIONS] = $this->model->getSelectOptionsAsData(); + + $this->saveData($this->model->getId(), $data); + } + + protected function validateId(): void + { + $id = $this->model->getId(); + if (empty($id)) { + throw new \Exception('A select options definition needs an ID to be saved!', 1676639722696); + } + + if (!preg_match('/[A-Z][a-zA-Z0-9]+/', $id)) { + throw new \Exception('Invalid ID: Must start with capital letter, followed by alphanumeric characters', 1676639634486); + } + } + + /** + * {@inheritdoc} + */ + protected function prepareDataStructureForYaml(string $id, mixed $data): mixed + { + return [ + 'pimcore' => [ + 'objects' => [ + 'select_options' => [ + 'definitions' => [ + $id => $data, + ], + ], + ], + ], + ]; + } + + public function delete(): void + { + $this->reportFieldsUsedIn(); + $this->deleteData($this->model->getId()); + @unlink($this->model->getPhpClassFile()); + } + + protected function reportFieldsUsedIn(): void + { + $fieldsUsedIn = $this->model->getFieldsUsedIn(); + if (empty($fieldsUsedIn)) { + return; + } + + $report = []; + foreach ($fieldsUsedIn as $className => $fieldNames) { + $report[] = $className . ': ' . implode(', ', $fieldNames); + } + + throw new \Exception( + 'Select options are still used by ' . implode(' / ', $report), + 1676887977650 + ); + } +} diff --git a/models/DataObject/SelectOptions/Config/Listing.php b/models/DataObject/SelectOptions/Config/Listing.php new file mode 100644 index 00000000000..4db56c4b3b1 --- /dev/null +++ b/models/DataObject/SelectOptions/Config/Listing.php @@ -0,0 +1,89 @@ +selectOptions === null) { + $this->getDao()->loadList(); + } + + return $this->selectOptions; + } + + /** + * @param Model\DataObject\SelectOptions\Config[]|null $selectOptions + * + * @return $this + */ + public function setSelectOptions(?array $selectOptions): static + { + $this->selectOptions = $selectOptions; + + return $this; + } + + /** + * Alias of getSelectOptions() + * + * @return Model\DataObject\SelectOptions\Config[] + */ + public function load(): array + { + return $this->getSelectOptions(); + } + /** + * @return \ArrayIterator<\Pimcore\Model\DataObject\SelectOptions\Config> + */ + public function getIterator(): \ArrayIterator + { + return new \ArrayIterator($this->getSelectOptions()); + } + + public function hasConfig(?string $id): bool + { + if (empty($id)) { + return false; + } + + $matchId = strtolower($id); + foreach ($this as $selectOptionConfig) { + if (strtolower($selectOptionConfig->getId()) === $matchId) { + return true; + } + } + + return false; + } +} diff --git a/models/DataObject/SelectOptions/Config/Listing/Dao.php b/models/DataObject/SelectOptions/Config/Listing/Dao.php new file mode 100644 index 00000000000..cb61318090a --- /dev/null +++ b/models/DataObject/SelectOptions/Config/Listing/Dao.php @@ -0,0 +1,43 @@ +loadIdList() as $id) { + $configs[] = Config::getById($id); + } + + $this->model->setSelectOptions($configs); + + return $configs; + } + + public function getTotalCount(): int + { + return count($this->loadList()); + } +} diff --git a/models/DataObject/SelectOptions/Data/SelectOption.php b/models/DataObject/SelectOptions/Data/SelectOption.php new file mode 100644 index 00000000000..c44019f40ce --- /dev/null +++ b/models/DataObject/SelectOptions/Data/SelectOption.php @@ -0,0 +1,116 @@ +value; + } + + /** + * @return $this + */ + public function setValue(string $value): static + { + $this->value = $value; + return $this; + } + + public function hasValue(): bool + { + return $this->value !== ''; + } + + public function getLabel(): string + { + return $this->label; + } + + public function hasLabel(): bool + { + return $this->label !== ''; + } + + /** + * @return $this + */ + public function setLabel(string $label): static + { + $this->label = $label; + return $this; + } + + public function getName(): string + { + return $this->name; + } + + /** + * @return $this + */ + public function setName(string $name): static + { + $this->name = $name; + return $this; + } + + public function hasName(): bool + { + return $this->name !== ''; + } + + /** + * @return array + */ + public function jsonSerialize(): array + { + return $this->toArray(); + } + + /** + * @return array + */ + public function toArray(): array + { + return [ + static::PROPERTY_VALUE => $this->getValue(), + static::PROPERTY_LABEL => $this->getLabel(), + static::PROPERTY_NAME => $this->getName(), + ]; + } + + public static function createFromData(array $data): static + { + $value = $data[static::PROPERTY_VALUE] ?? ''; + $label = $data[static::PROPERTY_LABEL] ?? ''; + $name = $data[static::PROPERTY_NAME] ?? ''; + + return (new static($value, $label, $name)); + } +} diff --git a/models/DataObject/SelectOptions/Traits/EnumGetValuesTrait.php b/models/DataObject/SelectOptions/Traits/EnumGetValuesTrait.php new file mode 100644 index 00000000000..e7ae4659454 --- /dev/null +++ b/models/DataObject/SelectOptions/Traits/EnumGetValuesTrait.php @@ -0,0 +1,14 @@ +getOptionsProviderClass()) { + if ( + $def instanceof Model\DataObject\ClassDefinition\Data\Select + && !$def->useConfiguredOptions() + && $def->getOptionsProviderClass() + ) { $data[$dataKey . '%options'] = $def->getOptions(); } } @@ -813,7 +817,7 @@ public static function getOptionsForSelectField(string|Concrete $object, ClassDe DataObject\ClassDefinition\Helper\OptionsProviderResolver::MODE_MULTISELECT ); - if ($optionsProvider instanceof DataObject\ClassDefinition\DynamicOptionsProvider\MultiSelectOptionsProviderInterface) { + if (!$definition->useConfiguredOptions() && $optionsProvider instanceof DataObject\ClassDefinition\DynamicOptionsProvider\MultiSelectOptionsProviderInterface) { $_options = $optionsProvider->getOptions(['fieldname' => $definition->getName()], $definition); } else { $_options = $definition->getOptions(); diff --git a/tests/_bootstrap.php b/tests/_bootstrap.php index 3d9110d031f..b1737328f09 100644 --- a/tests/_bootstrap.php +++ b/tests/_bootstrap.php @@ -41,6 +41,7 @@ $_ENV['PIMCORE_WRITE_TARGET_PERSPECTIVES'] = 'settings-store'; $_ENV['PIMCORE_WRITE_TARGET_CUSTOM_VIEWS'] = 'settings-store'; $_ENV['PIMCORE_WRITE_TARGET_OBJECT_CUSTOM_LAYOUTS'] = 'settings-store'; +$_ENV['PIMCORE_WRITE_TARGET_SELECT_OPTIONS'] = 'settings-store'; include PIMCORE_PROJECT_ROOT . '/vendor/autoload.php'; \Pimcore\Bootstrap::setProjectRoot();