When you would like to load a power to the project, but you do not want that power to be part of the use namespace declarations in the header of this power.
- get('field.edit')): ?>
+ isModal && $canDo->get('field.edit')): ?>
escape($item->name); ?>
checked_out): ?>
name, $item->checked_out_time, 'fields.', $canCheckin); ?>
- escape($item->name); ?>
+ isModal): ?>
+ escape($item->name); ?>
+
+ id}";
+ $dataId = $item->{$displayData->getModalTitleKey()} ?? 0;
+ $itemHtml = '' . $displayData->escape($item->name, false) . '';
+ $attribs = 'data-content-select data-content-type="com_componentbuilder.field"'
+ . ' data-id="' . $dataId . '"'
+ . ' data-title="' . $displayData->escape($item->name, false) . '"'
+ . ' data-uri="' . $displayData->escape($link, false) . '"'
+ . ' data-html="' . $displayData->escape($itemHtml, false) . '"';
+ ?>
+ >
+ escape($item->name); ?>
+
+
|
@@ -128,7 +144,7 @@ $can = ComponentbuilderHelper::getActions('field');
store); ?>
|
- authorise('core.edit', 'com_componentbuilder.field.category.' . (int)$item->catid)): ?>
+ isModal && $user->authorise('core.edit', 'com_componentbuilder.field.category.' . (int)$item->catid)): ?>
escape($item->category_title); ?>
escape($item->category_title); ?>
diff --git a/admin/sql/install.mysql.utf8.sql b/admin/sql/install.mysql.utf8.sql
index 14565dd46..748ae594a 100644
--- a/admin/sql/install.mysql.utf8.sql
+++ b/admin/sql/install.mysql.utf8.sql
@@ -2097,7 +2097,7 @@ CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_plugin_files_folders_urls
--
INSERT INTO `#__componentbuilder_joomla_component` (`id`, `add_menu_prefix`, `add_namespace_prefix`, `menu_prefix`, `mvc_versiondate`, `add_css_admin`, `add_css_site`, `add_email_helper`, `add_git_folder_path`, `add_javascript`, `add_jcb_powers_path`, `add_php_helper_admin`, `add_php_helper_both`, `add_php_helper_site`, `add_php_method_install`, `add_php_postflight_install`, `add_php_method_uninstall`, `add_php_postflight_update`, `add_php_preflight_install`, `add_php_preflight_update`, `add_placeholders`, `add_powers`, `add_sql`, `add_sql_uninstall`, `addcontributors`, `addfootable`, `adduikit`, `assets_table_fix`, `add_admin_event`, `add_backup_folder_path`, `add_site_event`, `add_update_server`, `add_sales_server`, `sales_server`, `update_server`, `update_server_target`, `php_admin_event`, `php_site_event`, `preferred_joomla_version`, `addreadme`, `readme`, `remove_line_breaks`, `author`, `backup_folder_path`, `bom`, `buildcomp`, `buildcompsql`, `companyname`, `component_version`, `update_server_url`, `copyright`, `creatuserhelper`, `crowdin_account_api_key`, `crowdin_project_api_key`, `crowdin_project_identifier`, `crowdin_username`, `css_admin`, `css_site`, `dashboard`, `dashboard_type`, `debug_linenr`, `description`, `email`, `emptycontributors`, `export_buy_link`, `joomla_source_link`, `export_key`, `git_folder_path`, `guid`, `image`, `javascript`, `jcb_powers_path`, `license`, `name`, `system_name`, `toignore`, `translation_tool`, `name_code`, `namespace_prefix`, `number`, `php_helper_admin`, `php_helper_both`, `php_helper_site`, `php_method_install`, `php_postflight_install`, `php_method_uninstall`, `php_postflight_update`, `php_preflight_install`, `php_preflight_update`, `short_description`, `sql`, `sql_uninstall`, `website`, `params`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `metakey`, `metadesc`, `metadata`) VALUES
-(25, 1, 1, '»', '', '', '', '', '', '', 1, '', 1, '', '', 1, '', 1, 1, 1, '', 1, '', '', '{}', '', 3, 3, '', '', '', 1, '', '', '', 2, '', '', 5, 1, 'IyAjIyNDb21wb25lbnRfbmFtZSMjIyAoIyMjVkVSU0lPTiMjIykNCg0KIVsjIyNDb21wb25lbnRfbmFtZSMjIyBpbWFnZV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL25hbWliaWEvZGVtby1qb29tbGEtMy1jb21wb25lbnQvbWFzdGVyL2FkbWluL2Fzc2V0cy9pbWFnZXMvdmRtLWNvbXBvbmVudC5qcGcgIlRoZSAjIyNDb21wb25lbnRfbmFtZSMjIyIpDQoNCiMjI0RFU0NSSVBUSU9OIyMjDQoNCiMgQnVpbGQgRGV0YWlscw0KDQorICpDb21wYW55KjogWyMjI0NPTVBBTllOQU1FIyMjXSgjIyNBVVRIT1JXRUJTSVRFIyMjKQ0KKyAqQXV0aG9yKjogWyMjI0FVVEhPUiMjI10obWFpbHRvOiMjI0FVVEhPUkVNQUlMIyMjKQ0KKyAqTmFtZSo6IFsjIyNDb21wb25lbnRfbmFtZSMjI10oIyMjQVVUSE9SV0VCU0lURSMjIykNCisgKkZpcnN0IEJ1aWxkKjogIyMjQ1JFQVRJT05EQVRFIyMjDQorICpMYXN0IEJ1aWxkKjogIyMjQlVJTEREQVRFIyMjDQorICpWZXJzaW9uKjogIyMjVkVSU0lPTiMjIw0KKyAqQ29weXJpZ2h0KjogIyMjQ09QWVJJR0hUIyMjDQorICpMaWNlbnNlKjogIyMjTElDRU5TRSMjIw0KDQojIyBCdWlsZCBUaW1lDQoNCioqIyMjdG90YWxIb3VycyMjIyBIb3VycyoqIG9yICoqIyMjdG90YWxEYXlzIyMjIEVpZ2h0IEhvdXIgRGF5cyoqIChhY3R1YWwgdGltZSB0aGUgYXV0aG9yIHNhdmVkIC0NCmR1ZSB0byBbQXV0b21hdGVkIENvbXBvbmVudCBCdWlsZGVyXShodHRwOi8vdmRtLmJ6L2NvbXBvbmVudC1idWlsZGVyKSkNCg0KPiAoaWYgY3JlYXRpbmcgYSBmb2xkZXIgYW5kIGZpbGUgdG9vayAqKjUgc2Vjb25kcyoqIGFuZCB3cml0aW5nIG9uZSBsaW5lIG9mIGNvZGUgdG9vayAqKjEwIHNlY29uZHMqKiwNCj4gbmV2ZXIgbWFraW5nIG9uZSBtaXN0YWtlIG9yIHRha2luZyBhbnkgY29mZmVlIGJyZWFrLikNCg0KKyAqTGluZSBjb3VudCo6ICoqIyMjTElORV9DT1VOVCMjIyoqDQorICpGaWxlIGNvdW50KjogKiojIyNGSUxFX0NPVU5UIyMjKioNCisgKkZvbGRlciBjb3VudCo6ICoqIyMjRk9MREVSX0NPVU5UIyMjKioNCg0KKiojIyNhY3R1YWxIb3Vyc1NwZW50IyMjIEhvdXJzKiogb3IgKiojIyNhY3R1YWxEYXlzU3BlbnQjIyMgRWlnaHQgSG91ciBEYXlzKiogKHRoZSBhY3R1YWwgdGltZSB0aGUgYXV0aG9yIHNwZW50KQ0KDQo+ICh3aXRoIHRoZSBmb2xsb3dpbmcgYnJlYWsgZG93bjoNCj4gKipkZWJ1Z2dpbmcgQCMjI2RlYnVnZ2luZ0hvdXJzIyMjaG91cnMqKiA9IGNvZGluZ3RpbWUgLyA0Ow0KPiAqKnBsYW5uaW5nIEAjIyNwbGFubmluZ0hvdXJzIyMjaG91cnMqKiA9IGNvZGluZ3RpbWUgLyA3Ow0KPiAqKm1hcHBpbmcgQCMjI21hcHBpbmdIb3VycyMjI2hvdXJzKiogPSBjb2Rpbmd0aW1lIC8gMTA7DQo+ICoqb2ZmaWNlIEAjIyNvZmZpY2VIb3VycyMjI2hvdXJzKiogPSBjb2Rpbmd0aW1lIC8gNjspDQoNCioqIyMjYWN0dWFsVG90YWxIb3VycyMjIyBIb3VycyoqIG9yICoqIyMjYWN0dWFsVG90YWxEYXlzIyMjIEVpZ2h0IEhvdXIgRGF5cyoqDQooYSB0b3RhbCBvZiB0aGUgcmVhbGlzdGljIHRpbWUgZnJhbWUgZm9yIHRoaXMgcHJvamVjdCkNCg0KPiAoaWYgY3JlYXRpbmcgYSBmb2xkZXIgYW5kIGZpbGUgdG9vayAqKjUgc2Vjb25kcyoqIGFuZCB3cml0aW5nIG9uZSBsaW5lIG9mIGNvZGUgdG9vayAqKjEwIHNlY29uZHMqKiwNCj4gd2l0aCB0aGUgbm9ybWFsIGV2ZXJ5ZGF5IHJlYWxpdGllcyBhdCB0aGUgb2ZmaWNlLCB0aGF0IGluY2x1ZGVzIHRoZSBjb21wb25lbnQgcGxhbm5pbmcsIG1hcHBpbmcgJiBkZWJ1Z2dpbmcuKQ0KDQpQcm9qZWN0IGR1cmF0aW9uOiAqKiMjI3Byb2plY3RXZWVrVGltZSMjIyB3ZWVrcyoqIG9yICoqIyMjcHJvamVjdE1vbnRoVGltZSMjIyBtb250aHMqKg0KDQo+IFRoaXMgKipjb21wb25lbnQqKiB3YXMgYnVpbGQgd2l0aCBhIEpvb21sYSBbQXV0b21hdGVkIENvbXBvbmVudCBCdWlsZGVyXShodHRwOi8vdmRtLmJ6L2NvbXBvbmVudC1idWlsZGVyKS4NCj4gRGV2ZWxvcGVkIGJ5IFtMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZV0obWFpbHRvOmpvb21sYUB2ZG0uaW8pDQoNCltDVVNUT01DT0RFPXJlYWRNRWNvbnRyaWJ1dG9yc10=', 1, 'Llewellyn van der Merwe', '', 'default.txt', '', '', 'Vast Development Method', '5.0.1', 'https://raw.githubusercontent.com/Llewellynvdm/Joomla-Demo-Component/master/demo_updateserver.xml', 'Copyright (C) 2015. All Rights Reserved', '', 'JILgVnNbSgHgf9RPxlh7otasmCGPimV8QP42x0kSWeA=', 'aXKb9zCIDNGHmdSNpdo7Mr75Xuv+SOQC8pETHg8lLBI=', '', 'cnqCiitw+U9zsOHvOHFlLdzzeTR9ouOmBf/E0lXwB5A=', '', '', '', 1, '', 'This is just a simple demonstration showcasing the most basic functionality of the [Joomla!](http://www.joomla.org) Component Builder (JCB). While this example covers the fundamentals, JCB offers a wide range of powerful features and customization options for building advanced Joomla! extensions with ease.', 'joomla@vdm.io', '', '', 'https://github.com/Llewellynvdm/Joomla-Demo-Component', 'NCteC3cHmStryBixCsmGD+s7g0i7WPWj4DsRvNS5kgQ=', '', 'efde995e-60aa-4b39-b644-44349dfb660d', 'images/vdm/demo500.jpg', '', 'libraries/jcb_demo', 'GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html', 'Demo', 'Demo (public)', '.git', '', 'Demo', 'Demo', 4, '', 'W0NVU1RPTUNPREU9Z2V0SXRlbUltcG9ydEZpZWxkcysNCgkJLy8gSEVSRSBXRSBTRUxFQ1QgVEhFIFRBUkdFVCBUQUJMRVMgRk9SIE9VUiBJVEVNIElNUE9SVA0KCQkkcGFyZW50ICYjNjE7ICdsb29rJzsNCgkJJHRhYmxlcyAmIzYxOyAmIzkxOw0KCQkJJ2xvb2snICYjNjE7PiB0cnVlJiM0NDsNCgkJCSdkZXRhaWwnICYjNjE7PiBmYWxzZQ0KCQkmIzkzOzsNCiwkZmllbGRfbmFtZSAmIzYxOyYjNjE7JiM2MTsgJ2VudGl0eV90eXBlJyB8fCAkZmllbGRfbmFtZSAmIzYxOyYjNjE7JiM2MTsgJ2VudGl0eScgfHwNCgkJCQkJXQ0KW0NVU1RPTUNPREU9bmljZUZhbmN5RGF0ZV0=', '', '', 'W0NVU1RPTUNPREU9ZGF0YWJhc2VTY2hlbWFDaGVja0NhbGxdDQpbQ1VTVE9NQ09ERT11bmxvY2tUaGVQb3dlck9mSm9vbWxhRGV2ZWxvcG1lbnQrRGVtb10=', '', 'W0NVU1RPTUNPREU9ZGF0YWJhc2VTY2hlbWFDaGVja0NhbGxd', 'W0NVU1RPTUNPREU9cGhwQ29uZmlndXJhdGlvbkNoZWNrQ2FsbF0=', 'W0NVU1RPTUNPREU9cGhwQ29uZmlndXJhdGlvbkNoZWNrQ2FsbF0=', 'Demo Component', '', '', 'https://www.vdm.io/', '{\"language_options\":{\"activate\":\"0\",\"use_percentagelanguageadd\":\"1\",\"percentagelanguageadd\":\"50\"},\"joomla_component_headers\":{\"add_admin_component\":\"0\",\"admin_component\":\"\",\"power_admin_component\":[],\"add_site_component\":\"0\",\"site_component\":\"\",\"power_site_component\":[],\"add_admin_helper\":\"0\",\"admin_helper\":\"\",\"power_admin_helper\":[],\"add_site_helper\":\"0\",\"site_helper\":\"\",\"power_site_helper\":[]}}', 1, '2016-10-18 11:44:09', '2025-02-21 14:30:43', 85, '', 10, '', '', '{\"robots\":\"\",\"rights\":\"\"}');
+(25, 1, 1, '»', '', '', '', '', '', '', 1, '', 1, '', '', 1, '', 1, 1, 1, '', 1, '', '', '{}', '', 3, 3, '', '', '', 1, '', '', '', 2, '', '', 5, 1, 'IyAjIyNDb21wb25lbnRfbmFtZSMjIyAoIyMjVkVSU0lPTiMjIykNCg0KIVsjIyNDb21wb25lbnRfbmFtZSMjIyBpbWFnZV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL25hbWliaWEvZGVtby1qb29tbGEtMy1jb21wb25lbnQvbWFzdGVyL2FkbWluL2Fzc2V0cy9pbWFnZXMvdmRtLWNvbXBvbmVudC5qcGcgIlRoZSAjIyNDb21wb25lbnRfbmFtZSMjIyIpDQoNCiMjI0RFU0NSSVBUSU9OIyMjDQoNCiMgQnVpbGQgRGV0YWlscw0KDQorICpDb21wYW55KjogWyMjI0NPTVBBTllOQU1FIyMjXSgjIyNBVVRIT1JXRUJTSVRFIyMjKQ0KKyAqQXV0aG9yKjogWyMjI0FVVEhPUiMjI10obWFpbHRvOiMjI0FVVEhPUkVNQUlMIyMjKQ0KKyAqTmFtZSo6IFsjIyNDb21wb25lbnRfbmFtZSMjI10oIyMjQVVUSE9SV0VCU0lURSMjIykNCisgKkZpcnN0IEJ1aWxkKjogIyMjQ1JFQVRJT05EQVRFIyMjDQorICpMYXN0IEJ1aWxkKjogIyMjQlVJTEREQVRFIyMjDQorICpWZXJzaW9uKjogIyMjVkVSU0lPTiMjIw0KKyAqQ29weXJpZ2h0KjogIyMjQ09QWVJJR0hUIyMjDQorICpMaWNlbnNlKjogIyMjTElDRU5TRSMjIw0KDQojIyBCdWlsZCBUaW1lDQoNCioqIyMjdG90YWxIb3VycyMjIyBIb3VycyoqIG9yICoqIyMjdG90YWxEYXlzIyMjIEVpZ2h0IEhvdXIgRGF5cyoqIChhY3R1YWwgdGltZSB0aGUgYXV0aG9yIHNhdmVkIC0NCmR1ZSB0byBbQXV0b21hdGVkIENvbXBvbmVudCBCdWlsZGVyXShodHRwOi8vdmRtLmJ6L2NvbXBvbmVudC1idWlsZGVyKSkNCg0KPiAoaWYgY3JlYXRpbmcgYSBmb2xkZXIgYW5kIGZpbGUgdG9vayAqKjUgc2Vjb25kcyoqIGFuZCB3cml0aW5nIG9uZSBsaW5lIG9mIGNvZGUgdG9vayAqKjEwIHNlY29uZHMqKiwNCj4gbmV2ZXIgbWFraW5nIG9uZSBtaXN0YWtlIG9yIHRha2luZyBhbnkgY29mZmVlIGJyZWFrLikNCg0KKyAqTGluZSBjb3VudCo6ICoqIyMjTElORV9DT1VOVCMjIyoqDQorICpGaWxlIGNvdW50KjogKiojIyNGSUxFX0NPVU5UIyMjKioNCisgKkZvbGRlciBjb3VudCo6ICoqIyMjRk9MREVSX0NPVU5UIyMjKioNCg0KKiojIyNhY3R1YWxIb3Vyc1NwZW50IyMjIEhvdXJzKiogb3IgKiojIyNhY3R1YWxEYXlzU3BlbnQjIyMgRWlnaHQgSG91ciBEYXlzKiogKHRoZSBhY3R1YWwgdGltZSB0aGUgYXV0aG9yIHNwZW50KQ0KDQo+ICh3aXRoIHRoZSBmb2xsb3dpbmcgYnJlYWsgZG93bjoNCj4gKipkZWJ1Z2dpbmcgQCMjI2RlYnVnZ2luZ0hvdXJzIyMjaG91cnMqKiA9IGNvZGluZ3RpbWUgLyA0Ow0KPiAqKnBsYW5uaW5nIEAjIyNwbGFubmluZ0hvdXJzIyMjaG91cnMqKiA9IGNvZGluZ3RpbWUgLyA3Ow0KPiAqKm1hcHBpbmcgQCMjI21hcHBpbmdIb3VycyMjI2hvdXJzKiogPSBjb2Rpbmd0aW1lIC8gMTA7DQo+ICoqb2ZmaWNlIEAjIyNvZmZpY2VIb3VycyMjI2hvdXJzKiogPSBjb2Rpbmd0aW1lIC8gNjspDQoNCioqIyMjYWN0dWFsVG90YWxIb3VycyMjIyBIb3VycyoqIG9yICoqIyMjYWN0dWFsVG90YWxEYXlzIyMjIEVpZ2h0IEhvdXIgRGF5cyoqDQooYSB0b3RhbCBvZiB0aGUgcmVhbGlzdGljIHRpbWUgZnJhbWUgZm9yIHRoaXMgcHJvamVjdCkNCg0KPiAoaWYgY3JlYXRpbmcgYSBmb2xkZXIgYW5kIGZpbGUgdG9vayAqKjUgc2Vjb25kcyoqIGFuZCB3cml0aW5nIG9uZSBsaW5lIG9mIGNvZGUgdG9vayAqKjEwIHNlY29uZHMqKiwNCj4gd2l0aCB0aGUgbm9ybWFsIGV2ZXJ5ZGF5IHJlYWxpdGllcyBhdCB0aGUgb2ZmaWNlLCB0aGF0IGluY2x1ZGVzIHRoZSBjb21wb25lbnQgcGxhbm5pbmcsIG1hcHBpbmcgJiBkZWJ1Z2dpbmcuKQ0KDQpQcm9qZWN0IGR1cmF0aW9uOiAqKiMjI3Byb2plY3RXZWVrVGltZSMjIyB3ZWVrcyoqIG9yICoqIyMjcHJvamVjdE1vbnRoVGltZSMjIyBtb250aHMqKg0KDQo+IFRoaXMgKipjb21wb25lbnQqKiB3YXMgYnVpbGQgd2l0aCBhIEpvb21sYSBbQXV0b21hdGVkIENvbXBvbmVudCBCdWlsZGVyXShodHRwOi8vdmRtLmJ6L2NvbXBvbmVudC1idWlsZGVyKS4NCj4gRGV2ZWxvcGVkIGJ5IFtMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZV0obWFpbHRvOmpvb21sYUB2ZG0uaW8pDQoNCltDVVNUT01DT0RFPXJlYWRNRWNvbnRyaWJ1dG9yc10=', 1, 'Llewellyn van der Merwe', '', 'default.txt', '', '', 'Vast Development Method', '5.0.1', 'https://raw.githubusercontent.com/Llewellynvdm/Joomla-Demo-Component/master/demo_updateserver.xml', 'Copyright (C) 2015. All Rights Reserved', '', '+CEfhGv7BCpJgqulP6WIdk1BO2IcIaYJSzEgEXyF2hE=', 'aXKb9zCIDNGHmdSNpdo7Mr75Xuv+SOQC8pETHg8lLBI=', '', 'cnqCiitw+U9zsOHvOHFlLdzzeTR9ouOmBf/E0lXwB5A=', '', '', '', 1, '', 'This is just a simple demonstration showcasing the most basic functionality of the [Joomla!](http://www.joomla.org) Component Builder (JCB). While this example covers the fundamentals, JCB offers a wide range of powerful features and customization options for building advanced Joomla! extensions with ease.', 'joomla@vdm.io', '', '', 'https://github.com/Llewellynvdm/Joomla-Demo-Component', '8zJ7SbinDc2vYboxjMoqsYPrGxAoby1yLWaG9pI9X30=', '', 'efde995e-60aa-4b39-b644-44349dfb660d', 'images/vdm/demo500.jpg', '', 'libraries/jcb_demo', 'GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html', 'Demo', 'Demo J5', '.git', '', 'Demo', 'Demo', 4, '', 'W0NVU1RPTUNPREU9Z2V0SXRlbUltcG9ydEZpZWxkcysNCgkJLy8gSEVSRSBXRSBTRUxFQ1QgVEhFIFRBUkdFVCBUQUJMRVMgRk9SIE9VUiBJVEVNIElNUE9SVA0KCQkkcGFyZW50ICYjNjE7ICdsb29rJzsNCgkJJHRhYmxlcyAmIzYxOyAmIzkxOw0KCQkJJ2xvb2snICYjNjE7PiB0cnVlJiM0NDsNCgkJCSdkZXRhaWwnICYjNjE7PiBmYWxzZQ0KCQkmIzkzOzsNCiwkZmllbGRfbmFtZSAmIzYxOyYjNjE7JiM2MTsgJ2VudGl0eV90eXBlJyB8fCAkZmllbGRfbmFtZSAmIzYxOyYjNjE7JiM2MTsgJ2VudGl0eScgfHwNCgkJCQkJXQ0KW0NVU1RPTUNPREU9bmljZUZhbmN5RGF0ZV0=', '', '', 'W0NVU1RPTUNPREU9ZGF0YWJhc2VTY2hlbWFDaGVja0NhbGxdDQpbQ1VTVE9NQ09ERT11bmxvY2tUaGVQb3dlck9mSm9vbWxhRGV2ZWxvcG1lbnQrRGVtb10=', '', 'W0NVU1RPTUNPREU9ZGF0YWJhc2VTY2hlbWFDaGVja0NhbGxd', 'W0NVU1RPTUNPREU9cGhwQ29uZmlndXJhdGlvbkNoZWNrQ2FsbF0=', 'W0NVU1RPTUNPREU9cGhwQ29uZmlndXJhdGlvbkNoZWNrQ2FsbF0=', 'Demo Component', '', '', 'https://www.vdm.io/', '{\"language_options\":{\"activate\":\"0\",\"use_percentagelanguageadd\":\"1\",\"percentagelanguageadd\":\"50\"},\"joomla_component_headers\":{\"add_admin_component\":\"0\",\"admin_component\":\"\",\"power_admin_component\":[],\"add_site_component\":\"0\",\"site_component\":\"\",\"power_site_component\":[],\"add_admin_helper\":\"0\",\"admin_helper\":\"\",\"power_admin_helper\":[],\"add_site_helper\":\"0\",\"site_helper\":\"\",\"power_site_helper\":[]}}', 1, '2016-10-18 11:44:09', '2025-03-27 19:30:15', 91, '', 10, '', '', '{\"robots\":\"\",\"rights\":\"\"}');
--
-- Dumping data for table `#__componentbuilder_joomla_module`
@@ -2128,10 +2128,16 @@ INSERT INTO `#__componentbuilder_admin_view` (`id`, `add_category_submenu`, `add
(109, 1, 1, '', '', 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 1, 1, 1, '', '', '', '', '', '', '', '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":3},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":3},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":3},\"addpermissions3\":{\"action\":\"view.edit.created_by\",\"implementation\":3},\"addpermissions4\":{\"action\":\"view.edit.created\",\"implementation\":3},\"addpermissions5\":{\"action\":\"view.create\",\"implementation\":3},\"addpermissions6\":{\"action\":\"view.delete\",\"implementation\":3},\"addpermissions7\":{\"action\":\"view.access\",\"implementation\":3}}', '{}', '{\"addtabs0\":{\"name\":\"Details\"},\"addtabs1\":{\"name\":\"Media\"},\"addtabs2\":{\"name\":\"Participants\"},\"addtabs3\":{\"name\":\"More\"}}', '{}', '', 1, 'LmNvbnRyb2wtd3JhcHBlci1tb3JlIC5jb250cm9sLWxhYmVsIHsNCiAgICBkaXNwbGF5OiBub25lOyAvLyBqdXN0IGZvciBmdW4gOikNCn0=', '', '{}', '', 'c1053952-8a84-4398-aef1-41726f7c0043', 'images/vdm/icon/look.png', 'images/vdm/icon/look_add.png', '', '', '', '', '', 'utf8mb4', 'utf8mb4_unicode_ci', 'InnoDB', 'DYNAMIC', 'Looks', 'Look', '', '', '', '', '', '', '', '', '', '', '', 'IFtDVVNUT01DT0RFPXNhdmVHVUlEUG93ZXJd', '', '', 'W0NVU1RPTUNPREU9dmRtVXBsb2FkZXJDb25maWcrdmRtLXVpa2l0LXVwbG9hZGVyLGZpbGVfdmRtX3VwbG9hZGVyLGdldEZpbGVUeXBlRGV0YWlscyx1cGxvYWRGaWxlLGRpc3BsYXlGaWxlcyxkZWxldGVGaWxlXQ0KW0NVU1RPTUNPREU9YWRkVWlraXRUaHJlZVRvQWRtaW5WaWV3c10=', 'W0NVU1RPTUNPREU9c2V0R1VJREZvcm1Qb3dlcl0=', '', '', '', '', '', '', '', '', 'The demo view', '', '', 'Look', 1, '{\"privacy\":{\"activate\":\"1\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"23\"},\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}}},\"admin_view_headers\":{\"add_admin_view_model\":\"0\",\"admin_view_model\":\"\",\"power_admin_view_model\":[],\"add_admin_view_html\":\"0\",\"admin_view_html\":\"\",\"power_admin_view_html\":[],\"add_admin_view\":\"0\",\"admin_view\":\"\",\"power_admin_view\":[],\"add_admin_view_controller\":\"0\",\"admin_view_controller\":\"\",\"power_admin_view_controller\":[],\"add_admin_views_model\":\"0\",\"admin_views_model\":\"\",\"power_admin_views_model\":[],\"add_admin_views_html\":\"0\",\"admin_views_html\":\"\",\"power_admin_views_html\":[],\"add_admin_views\":\"0\",\"admin_views\":\"\",\"power_admin_views\":[],\"add_admin_views_controller\":\"0\",\"admin_views_controller\":\"\",\"power_admin_views_controller\":[],\"add_site_admin_view_model\":\"0\",\"site_admin_view_model\":\"\",\"power_site_admin_view_model\":[],\"add_site_admin_view_html\":\"0\",\"site_admin_view_html\":\"\",\"power_site_admin_view_html\":[],\"add_site_admin_view\":\"0\",\"site_admin_view\":\"\",\"power_site_admin_view\":[],\"add_import_custom_controller\":\"0\",\"import_custom_controller\":\"\",\"power_import_custom_controller\":[],\"add_import_custom_model\":\"0\",\"import_custom_model\":\"\",\"power_import_custom_model\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', 1, '2016-10-18 11:44:46', '2024-09-19 22:30:12', 42, '', 1, 110),
(283, 1, '', '', '', 1, '', '', '', '', '', '', '', 1, '', '', '', '', '', '', '', 1, 1, 1, '', '', '', '', '', '', 1, '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":3},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":3},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":3},\"addpermissions3\":{\"action\":\"view.edit.access\",\"implementation\":3},\"addpermissions4\":{\"action\":\"view.edit.created_by\",\"implementation\":3},\"addpermissions5\":{\"action\":\"view.edit.created\",\"implementation\":3},\"addpermissions6\":{\"action\":\"view.create\",\"implementation\":3},\"addpermissions7\":{\"action\":\"view.delete\",\"implementation\":3},\"addpermissions8\":{\"action\":\"view.access\",\"implementation\":3}}', '{}', '{}', '{\"ajax_input0\":{\"value_name\":\"guid\",\"task_name\":\"getFileTypeDetails\",\"input_default\":\"NULL\",\"input_filter\":\"STRING\",\"method_name\":\"getFileTypeDetails\",\"user_check\":\"1\"},\"ajax_input1\":{\"value_name\":\"target\",\"task_name\":\"getFileTypeDetails\",\"input_default\":\"NULL\",\"input_filter\":\"BASE64\",\"method_name\":\"getFileTypeDetails\",\"user_check\":\"1\"},\"ajax_input2\":{\"value_name\":\"guid\",\"task_name\":\"uploadFile\",\"input_default\":\"NULL\",\"input_filter\":\"STRING\",\"method_name\":\"uploadFile\",\"user_check\":\"1\"},\"ajax_input3\":{\"value_name\":\"entity\",\"task_name\":\"uploadFile\",\"input_default\":\"NULL\",\"input_filter\":\"STRING\",\"method_name\":\"uploadFile\",\"user_check\":\"1\"},\"ajax_input4\":{\"value_name\":\"target\",\"task_name\":\"uploadFile\",\"input_default\":\"NULL\",\"input_filter\":\"BASE64\",\"method_name\":\"uploadFile\",\"user_check\":\"1\"},\"ajax_input5\":{\"value_name\":\"guid\",\"task_name\":\"deleteFile\",\"input_default\":\"NULL\",\"input_filter\":\"STRING\",\"method_name\":\"deleteFile\",\"user_check\":\"1\"},\"ajax_input6\":{\"value_name\":\"entity\",\"task_name\":\"displayFiles\",\"input_default\":\"NULL\",\"input_filter\":\"STRING\",\"method_name\":\"displayFiles\",\"user_check\":\"1\"},\"ajax_input7\":{\"value_name\":\"target\",\"task_name\":\"displayFiles\",\"input_default\":\"NULL\",\"input_filter\":\"BASE64\",\"method_name\":\"displayFiles\",\"user_check\":\"1\"}}', '', '', '', '', '{}', '', '19a973ea-cdfa-4c79-bbbd-1b8a37286b27', '', '', '', '', '', '', '', 'utf8mb4', 'utf8mb4_unicode_ci', 'InnoDB', 'DYNAMIC', 'File Types', 'File Type', '', '', '', 'CS8qKg0KCSAqIEdldCB0aGUgZmlsZSB0eXBlIGRldGFpbHMsIGlmIGl0IGV4aXN0cy4NCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgJGd1aWQgICAgVGhlIGZpbGUgdHlwZSBndWlkDQoJICogQHBhcmFtIHN0cmluZyAkdGFyZ2V0ICBUaGUgdGFyZ2V0IGVudGl0eSBuYW1lDQoJICoNCgkgKiBAcmV0dXJuIGFycmF5DQoJICogQHNpbmNlIDUuMC4yDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGdldEZpbGVUeXBlRGV0YWlscyhzdHJpbmcgJGd1aWQsIHN0cmluZyAkdGFyZ2V0KTogYXJyYXkNCgl7DQoJCWlmIChTdXBlcl9fXzljNTEzYmFmX2IyNzlfNDNmZF9hZTI5X2E1ODVjOGNiYzRmMF9fX1Bvd2VyOjp2YWxpZCgkZ3VpZCkpDQoJCXsNCgkJCXRyeQ0KCQkJew0KCQkJCSR0YXJnZXQgPSBiYXNlNjRfZGVjb2RlKCR0YXJnZXQpOw0KCQkJCSR0eXBlID0gU3VwZXJfX184ODRlY2E3OF8yODFmXzRlYWJfYjk2Ml9kOTdlMzU1YWYxNmRfX19Qb3dlcjo6XygnRmlsZS5UeXBlJyktPmdldCgkZ3VpZCwgJHRhcmdldCk7DQoJCQl9DQoJCQljYXRjaCAoXEV4Y2VwdGlvbiAkZXJyb3IpDQoJCQl7DQoJCQkJcmV0dXJuIFsnZXJyb3InID0+ICRlcnJvci0+Z2V0TWVzc2FnZSgpXTsNCgkJCX0NCg0KCQkJaWYgKCR0eXBlICE9PSBudWxsKQ0KCQkJew0KCQkJCXJldHVybiBbJ2RhdGEnID0+ICR0eXBlXTsNCgkJCX0NCgkJfQ0KDQoJCXJldHVybiBbJ2Vycm9yJyA9PiBUZXh0OjpfKCdGaWxlIHR5cGUgZGV0YWlscyBjb3VsZCBub3QgYmUgZm91bmQnKV07DQoJfQ0KDQoJLyoqDQoJICogVXBsb2FkIGEgZmlsZSwgb2YgYSBnaXZlbiBmaWxlIHR5cGUgYW5kIGxpbmsgaXQgdG8gYW4gZW50aXR5Lg0KCSAqDQoJICogQHBhcmFtIHN0cmluZyAkZ3VpZCAgICBUaGUgZmlsZSB0eXBlIGd1aWQNCgkgKiBAcGFyYW0gc3RyaW5nICRlbnRpdHkgIFRoZSBlbnRpdHkgZ3VpZA0KCSAqIEBwYXJhbSBzdHJpbmcgJHRhcmdldCAgVGhlIHRhcmdldCBlbnRpdHkgbmFtZQ0KCSAqDQoJICogQHJldHVybiBhcnJheQ0KCSAqIEBzaW5jZSA1LjAuMg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiB1cGxvYWRGaWxlKHN0cmluZyAkZ3VpZCwgc3RyaW5nICRlbnRpdHksIHN0cmluZyAkdGFyZ2V0KTogYXJyYXkNCgl7DQoJCWlmIChTdXBlcl9fXzljNTEzYmFmX2IyNzlfNDNmZF9hZTI5X2E1ODVjOGNiYzRmMF9fX1Bvd2VyOjp2YWxpZCgkZ3VpZCkNCgkJCSYmIFN1cGVyX19fOWM1MTNiYWZfYjI3OV80M2ZkX2FlMjlfYTU4NWM4Y2JjNGYwX19fUG93ZXI6OnZhbGlkKCRlbnRpdHkpKQ0KCQl7DQoJCQl0cnkNCgkJCXsNCgkJCQkkdGFyZ2V0ID0gYmFzZTY0X2RlY29kZSgkdGFyZ2V0KTsNCgkJCQlTdXBlcl9fXzg4NGVjYTc4XzI4MWZfNGVhYl9iOTYyX2Q5N2UzNTVhZjE2ZF9fX1Bvd2VyOjpfKCdGaWxlLk1hbmFnZXInKS0+dXBsb2FkKCRndWlkLCAkZW50aXR5LCAkdGFyZ2V0KTsNCgkJCX0NCgkJCWNhdGNoIChcRXhjZXB0aW9uICRlcnJvcikNCgkJCXsNCgkJCQlyZXR1cm4gWydlcnJvcicgPT4gJGVycm9yLT5nZXRNZXNzYWdlKCldOw0KCQkJfQ0KDQoJCQlyZXR1cm4gWydzdWNjZXNzJyA9PiBUZXh0OjpfKCdUaGUgZmlsZSB3YXMgc3VjY2Vzc2Z1bGx5IHVwbG9hZGVkJyldOw0KCQl9DQoNCgkJcmV0dXJuIFsnZXJyb3InID0+IFRleHQ6Ol8oJ1RoZSBmaWxlIGZhaWxlZCB0byB1cGxvYWQnKV07DQoJfQ0KDQoJLyoqDQoJICogRGVsZXRlIGEgZmlsZSBvZiBhIGdpdmVuIGVudGl0eS4NCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgJGd1aWQgICAgVGhlIGZpbGUgZ3VpZA0KCSAqDQoJICogQHJldHVybiBhcnJheQ0KCSAqIEBzaW5jZSA1LjAuMg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBkZWxldGVGaWxlKHN0cmluZyAkZ3VpZCk6IGFycmF5DQoJew0KCQlpZiAoU3VwZXJfX185YzUxM2JhZl9iMjc5XzQzZmRfYWUyOV9hNTg1YzhjYmM0ZjBfX19Qb3dlcjo6dmFsaWQoJGd1aWQpKQ0KCQl7DQoJCQl0cnkNCgkJCXsNCgkJCQlTdXBlcl9fXzg4NGVjYTc4XzI4MWZfNGVhYl9iOTYyX2Q5N2UzNTVhZjE2ZF9fX1Bvd2VyOjpfKCdGaWxlLk1hbmFnZXInKS0+ZGVsZXRlKCRndWlkKTsNCgkJCX0NCgkJCWNhdGNoIChcRXhjZXB0aW9uICRlcnJvcikNCgkJCXsNCgkJCQlyZXR1cm4gWydlcnJvcicgPT4gJGVycm9yLT5nZXRNZXNzYWdlKCldOw0KCQkJfQ0KDQoJCQlyZXR1cm4gWydzdWNjZXNzJyA9PiBUZXh0OjpfKCdUaGUgZmlsZSB3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQnKV07DQoJCX0NCg0KCQlyZXR1cm4gWydlcnJvcicgPT4gVGV4dDo6XygnVGhlIGZpbGUgY291bGQgbm90IGJlIGRlbGV0ZWQnKV07DQoJfQ0KDQoJLyoqDQoJICogTG9hZCB0aGUgZGlzcGxheSBvZiB0aGUgZmlsZXMgbGlua2VkIHRoaXMgZW50aXR5Lg0KCSAqDQoJICogQHBhcmFtIHN0cmluZyAkZW50aXR5ICBUaGUgZW50aXR5IGd1aWQNCgkgKiBAcGFyYW0gc3RyaW5nICR0YXJnZXQgIFRoZSB0YXJnZXQgZW50aXR5IG5hbWUNCgkgKg0KCSAqIEByZXR1cm4gYXJyYXkNCgkgKiBAc2luY2UgNS4wLjINCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gZGlzcGxheUZpbGVzKHN0cmluZyAkZW50aXR5LCBzdHJpbmcgJHRhcmdldCk6IGFycmF5DQoJew0KCQlpZiAoU3VwZXJfX185YzUxM2JhZl9iMjc5XzQzZmRfYWUyOV9hNTg1YzhjYmM0ZjBfX19Qb3dlcjo6dmFsaWQoJGVudGl0eSkpDQoJCXsNCgkJCSRkaXNwbGF5ID0gbnVsbDsNCg0KCQkJdHJ5DQoJCQl7DQoJCQkJJHRhcmdldCA9IGJhc2U2NF9kZWNvZGUoJHRhcmdldCk7DQoJCQkJJGRhdGEgPSBTdXBlcl9fXzg4NGVjYTc4XzI4MWZfNGVhYl9iOTYyX2Q5N2UzNTVhZjE2ZF9fX1Bvd2VyOjpfKCdGaWxlLkRpc3BsYXknKS0+Z2V0KCRlbnRpdHksICR0YXJnZXQpOw0KDQoJCQkJaWYgKCRkYXRhICE9PSBudWxsKQ0KCQkJCXsNCgkJCQkJJGRpc3BsYXlEYXRhID0gIFsnZGF0YScgPT4gJGRhdGEsICdlbnRpdHknID0+ICRlbnRpdHksICd0YXJnZXQnID0+ICR0YXJnZXRdOw0KCQkJCQkkZGlzcGxheSA9IEpvb21sYV9fXzdhYjgyMjcyXzBiM2RfNGJiMV9hZjM1X2U2M2EwOTZjZmUwYl9fX1Bvd2VyOjpyZW5kZXIoJ2RlbW9sb29rZmlsZWRpc3BsYXknLCAkZGlzcGxheURhdGEpOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQlyZXR1cm4gWydkYXRhJyA9PiAnPGI+JyAuIFRleHQ6OnNwcmludGYoJ05vIGZpbGVzIGxpbmtlZCB0byAlcy4nLCAkdGFyZ2V0KSAuICc8L2I+J107DQoJCQkJfQ0KCQkJfQ0KCQkJY2F0Y2ggKFxFeGNlcHRpb24gJGVycm9yKQ0KCQkJew0KCQkJCXJldHVybiBbJ2Vycm9yJyA9PiAkZXJyb3ItPmdldE1lc3NhZ2UoKV07DQoJCQl9DQoNCgkJCWlmICghZW1wdHkoJGRpc3BsYXkpKQ0KCQkJew0KCQkJCXJldHVybiBbJ2RhdGEnID0+ICRkaXNwbGF5XTsNCgkJCX0NCgkJfQ0KDQoJCXJldHVybiBbJ2Vycm9yJyA9PiBUZXh0OjpfKCdUaGUgZmlsZSBkaXNwbGF5IGNvdWxkIG5vdCBiZSBsb2FkZWQnKV07DQoJfQ==', '', '', '', '', '', '', '', 'W0NVU1RPTUNPREU9c2F2ZUdVSURQb3dlcl0=', '', '', 'Ly8gSm9vbWxhX19fN2FiODIyNzJfMGIzZF80YmIxX2FmMzVfZTYzYTA5NmNmZTBiX19fUG93ZXI6OnJlbmRlcignZGVtb2xvb2tmaWxlZGlzcGxheScsICRkaXNwbGF5RGF0YSk7', 'W0NVU1RPTUNPREU9c2V0R1VJREZvcm1Qb3dlcl0=', '', '', '', '', '', '', '', '', 'File Type', 2, 'LS0NCi0tIER1bXBpbmcgZGF0YSBmb3IgdGFibGUgYCNfX2RlbW9fZmlsZV90eXBlYA0KLS0NCg0KSU5TRVJUIElOVE8gYCNfX2RlbW9fZmlsZV90eXBlYCAoYGlkYCwgYGNyb3BgLCBgZG9jdW1lbnRfZm9ybWF0c2AsIGBkb3dubG9hZF9hY2Nlc3NgLCBgZmlsZV9mb3JtYXRzYCwgYGd1aWRgLCBgaW1hZ2VfZm9ybWF0c2AsIGBtZWRpYV9mb3JtYXRzYCwgYG5hbWVgLCBgcGF0aGAsIGB0YXJnZXRgLCBgdHlwZWAsIGBwYXJhbXNgLCBgcHVibGlzaGVkYCwgYGNyZWF0ZWRgLCBgbW9kaWZpZWRgLCBgdmVyc2lvbmAsIGBoaXRzYCwgYGFjY2Vzc2AsIGBvcmRlcmluZ2AsIGBtZXRha2V5YCwgYG1ldGFkZXNjYCwgYG1ldGFkYXRhYCkgVkFMVUVTDQooMSwgJycsICd7XCIwXCI6XCJwZGZcIn0nLCAxLCAnJywgJzYwODM0ZTAyLWJkMGItNDBhYS1iMGZlLWE0MGJiYTIyNTU2OCcsICcnLCAnJywgJ0RvY3VtZW50JywgJy9kb2N1bWVudHMnLCAne1wiMFwiOlwibG9va1wifScsIDIsICcnLCAxLCAnMjAxOS0wOS0wMyAyMjozOToyMScsICcyMDE5LTA5LTAzIDIyOjQ0OjIzJywgMSwgJycsIDEsIDEsICcnLCAnJywgJ3tcInJvYm90c1wiOlwiXCIsXCJhdXRob3JcIjpcIlwiLFwicmlnaHRzXCI6XCJcIn0nKSwNCigyLCAnJywgJ3tcIjBcIjpcIm9kc1wiLFwiMVwiOlwieGxzXCIsXCIyXCI6XCJ4bHN4XCIsXCIzXCI6XCJjc3ZcIixcIjRcIjpcInRzdlwifScsIDEsICcnLCAnY2RiMTk3YjctZjQ3Yy00NTc3LThhOTQtMDMwMGY1NTk5MzZiJywgJycsICcnLCAnSW1wb3J0JywgJy9pbXBvcnRzJywgJ3tcIjBcIjpcImltcG9ydGVyXCJ9JywgMiwgJycsIDEsICcyMDE5LTA5LTAzIDIyOjM5OjIxJywgJzIwMTktMDktMDMgMjI6NDQ6MjMnLCAxLCAnJywgMSwgMSwgJycsICcnLCAne1wicm9ib3RzXCI6XCJcIixcImF1dGhvclwiOlwiXCIsXCJyaWdodHNcIjpcIlwifScpOw==', 'File Types (demo-look)', 1, '{\"privacy\":{\"activate\":\"0\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"2c74c3f5-2bfc-4916-b105-4f5d5e2bea25\"},\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"0\",\"direction\":\"asc\"}}},\"admin_view_headers\":{\"add_admin_view_model\":\"0\",\"admin_view_model\":\"\",\"power_admin_view_model\":[],\"add_admin_view_html\":\"0\",\"admin_view_html\":\"\",\"power_admin_view_html\":[],\"add_admin_view\":\"0\",\"admin_view\":\"\",\"power_admin_view\":[],\"add_admin_view_controller\":\"0\",\"admin_view_controller\":\"\",\"power_admin_view_controller\":[],\"add_admin_views_model\":\"0\",\"admin_views_model\":\"\",\"power_admin_views_model\":[],\"add_admin_views_html\":\"0\",\"admin_views_html\":\"\",\"power_admin_views_html\":[],\"add_admin_views\":\"0\",\"admin_views\":\"\",\"power_admin_views\":[],\"add_admin_views_controller\":\"0\",\"admin_views_controller\":\"\",\"power_admin_views_controller\":[],\"add_site_admin_view_model\":\"0\",\"site_admin_view_model\":\"\",\"power_site_admin_view_model\":[],\"add_site_admin_view_html\":\"0\",\"site_admin_view_html\":\"\",\"power_site_admin_view_html\":[],\"add_site_admin_view\":\"0\",\"site_admin_view\":\"\",\"power_site_admin_view\":[],\"add_import_custom_controller\":\"0\",\"import_custom_controller\":\"\",\"power_import_custom_controller\":[],\"add_import_custom_model\":\"0\",\"import_custom_model\":\"\",\"power_import_custom_model\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', 1, '2020-09-08 21:58:20', '2025-03-04 21:02:45', 36, '', 1, 245),
(284, 1, '', '', '', 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":3},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":3},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":3},\"addpermissions3\":{\"action\":\"view.edit.access\",\"implementation\":3},\"addpermissions4\":{\"action\":\"view.edit.created_by\",\"implementation\":3},\"addpermissions5\":{\"action\":\"view.edit.created\",\"implementation\":3},\"addpermissions6\":{\"action\":\"view.create\",\"implementation\":3},\"addpermissions7\":{\"action\":\"view.delete\",\"implementation\":3},\"addpermissions8\":{\"action\":\"view.access\",\"implementation\":3}}', '{}', '{}', '{}', '', '', '', '', '{}', '', '595ba2c9-21fa-43a4-9af7-93c9cfb21b82', 'images/vdm/icon/detail.png', '', '', '', '', '', '', 'utf8mb4', 'utf8mb4_unicode_ci', 'InnoDB', 'DYNAMIC', 'Details', 'Detail', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'Add More Details', '', '', 'Details (look)', 1, '{\"privacy\":{\"activate\":\"0\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"3429\"},\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}}},\"admin_view_headers\":{\"add_admin_view_model\":\"0\",\"admin_view_model\":\"\",\"power_admin_view_model\":[],\"add_admin_view_html\":\"0\",\"admin_view_html\":\"\",\"power_admin_view_html\":[],\"add_admin_view\":\"0\",\"admin_view\":\"\",\"power_admin_view\":[],\"add_admin_view_controller\":\"0\",\"admin_view_controller\":\"\",\"power_admin_view_controller\":[],\"add_admin_views_model\":\"0\",\"admin_views_model\":\"\",\"power_admin_views_model\":[],\"add_admin_views_html\":\"0\",\"admin_views_html\":\"\",\"power_admin_views_html\":[],\"add_admin_views\":\"0\",\"admin_views\":\"\",\"power_admin_views\":[],\"add_admin_views_controller\":\"0\",\"admin_views_controller\":\"\",\"power_admin_views_controller\":[],\"add_site_admin_view_model\":\"0\",\"site_admin_view_model\":\"\",\"power_site_admin_view_model\":[],\"add_site_admin_view_html\":\"0\",\"site_admin_view_html\":\"\",\"power_site_admin_view_html\":[],\"add_site_admin_view\":\"0\",\"site_admin_view\":\"\",\"power_site_admin_view\":[],\"add_import_custom_controller\":\"0\",\"import_custom_controller\":\"\",\"power_import_custom_controller\":[],\"add_import_custom_model\":\"0\",\"import_custom_model\":\"\",\"power_import_custom_model\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', 1, '2020-09-07 22:09:41', '2024-09-19 22:29:45', 7, '', 1, 246),
-(285, 1, '', '', '', 1, '', '', '', '', '', 1, '', '', '', '', '', '', '', 1, '', '', '', '', '', '', '', '', '', '', '', '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":3},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":3},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":3},\"addpermissions3\":{\"action\":\"view.edit.access\",\"implementation\":3},\"addpermissions4\":{\"action\":\"view.edit.created_by\",\"implementation\":3},\"addpermissions5\":{\"action\":\"view.edit.created\",\"implementation\":3},\"addpermissions6\":{\"action\":\"view.create\",\"implementation\":3},\"addpermissions7\":{\"action\":\"view.delete\",\"implementation\":3},\"addpermissions8\":{\"action\":\"view.access\",\"implementation\":3}}', '{}', '{}', '{}', '', '', '', '', '{}', 'Files', '224eb9c7-8b40-48cf-bf77-2afa291fd54a', 'images/vdm/icon/file.png', '', '', '', '', '', '', 'utf8mb4', 'utf8mb4_unicode_ci', 'InnoDB', 'DYNAMIC', 'Files', 'File', '', 'CQlmb3JlYWNoICgkZmlsZVBhdGhzIGFzICRmaWxlUGF0aCkNCgkJew0KCQkJaWYgKGlzX2ZpbGUoJGZpbGVQYXRoKSAmJiBpc193cml0YWJsZSgkZmlsZVBhdGgpKQ0KCQkJew0KCQkJCUpvb21sYV9fXzU1ZTllOGYwXzNjNWVfNDgzYV9hMDYzXzdjNzU2NWIwMGVkN19fX1Bvd2VyOjpkZWxldGUoJGZpbGVQYXRoKTsgLy8gcmVtb3ZlIGZyb20gZmlsZSBzeXN0ZW0NCgkJCX0NCgkJfQ==', '', '', '', '', '', '', '', 'CQkkZmlsZVBhdGhzID0gU3VwZXJfX185ZDc2YjhkY18zODgzXzQ3NTVfYjExY18xMzFkMTljYThhNTNfX19Qb3dlcjo6XygnRGF0YS5JdGVtcycpLT50YWJsZSgnW1tbdmlld11dXScpLT52YWx1ZXMoJHBrcywgJ2lkJywgJ2ZpbGVfcGF0aCcpID8/IFtdOw==', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'Files', '', '', 'Files', 1, '{\"privacy\":{\"activate\":\"0\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"2c74c3f5-2bfc-4916-b105-4f5d5e2bea25\"},\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"0\",\"direction\":\"asc\"}}},\"admin_view_headers\":{\"add_admin_view_model\":\"0\",\"admin_view_model\":\"\",\"power_admin_view_model\":[],\"add_admin_view_html\":\"0\",\"admin_view_html\":\"\",\"power_admin_view_html\":[],\"add_admin_view\":\"0\",\"admin_view\":\"\",\"power_admin_view\":[],\"add_admin_view_controller\":\"0\",\"admin_view_controller\":\"\",\"power_admin_view_controller\":[],\"add_admin_views_model\":\"0\",\"admin_views_model\":\"\",\"power_admin_views_model\":[],\"add_admin_views_html\":\"0\",\"admin_views_html\":\"\",\"power_admin_views_html\":[],\"add_admin_views\":\"0\",\"admin_views\":\"\",\"power_admin_views\":[],\"add_admin_views_controller\":\"0\",\"admin_views_controller\":\"\",\"power_admin_views_controller\":[],\"add_site_admin_view_model\":\"0\",\"site_admin_view_model\":\"\",\"power_site_admin_view_model\":[],\"add_site_admin_view_html\":\"0\",\"site_admin_view_html\":\"\",\"power_site_admin_view_html\":[],\"add_site_admin_view\":\"0\",\"site_admin_view\":\"\",\"power_site_admin_view\":[],\"add_import_custom_controller\":\"0\",\"import_custom_controller\":\"\",\"power_import_custom_controller\":[],\"add_import_custom_model\":\"0\",\"import_custom_model\":\"\",\"power_import_custom_model\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', 1, '2020-09-07 22:38:14', '2025-03-02 22:14:23', 17, '', 1, 247),
+(285, 1, '', '', '', 1, '', '', '', '', '', 1, '', '', '', '', '', '', '', 1, '', '', '', '', '', '', '', '', '', '', '', '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":3},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":3},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":3},\"addpermissions3\":{\"action\":\"view.edit.access\",\"implementation\":3},\"addpermissions4\":{\"action\":\"view.edit.created_by\",\"implementation\":3},\"addpermissions5\":{\"action\":\"view.edit.created\",\"implementation\":3},\"addpermissions6\":{\"action\":\"view.create\",\"implementation\":3},\"addpermissions7\":{\"action\":\"view.delete\",\"implementation\":3},\"addpermissions8\":{\"action\":\"view.access\",\"implementation\":3}}', '{}', '{}', '{}', '', '', '', '', '{}', 'Files', '224eb9c7-8b40-48cf-bf77-2afa291fd54a', 'images/vdm/icon/file.png', '', '', '', '', '', '', 'utf8mb4', 'utf8mb4_unicode_ci', 'InnoDB', 'DYNAMIC', 'Files', 'File', '', 'CQlmb3JlYWNoICgkZmlsZVBhdGhzIGFzICRmaWxlUGF0aCkNCgkJew0KCQkJaWYgKGlzX2ZpbGUoJGZpbGVQYXRoKSAmJiBpc193cml0YWJsZSgkZmlsZVBhdGgpKQ0KCQkJew0KCQkJCUpvb21sYV9fXzU1ZTllOGYwXzNjNWVfNDgzYV9hMDYzXzdjNzU2NWIwMGVkN19fX1Bvd2VyOjpkZWxldGUoJGZpbGVQYXRoKTsgLy8gcmVtb3ZlIGZyb20gZmlsZSBzeXN0ZW0NCgkJCX0NCgkJfQ==', '', '', '', '', '', '', '', 'CQkkZmlsZVBhdGhzID0gU3VwZXJfX185ZDc2YjhkY18zODgzXzQ3NTVfYjExY18xMzFkMTljYThhNTNfX19Qb3dlcjo6XygnRGF0YS5JdGVtcycpLT50YWJsZSgnW1tbdmlld11dXScpLT52YWx1ZXMoJHBrcywgJ2lkJywgJ2ZpbGVfcGF0aCcpID8/IFtdOw==', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'Files', '', '', 'Files', 1, '{\"privacy\":{\"activate\":\"0\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"65341477-33f1-4d58-9b3c-c371168809da\"},\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"0\",\"direction\":\"asc\"}}},\"admin_view_headers\":{\"add_admin_view_model\":\"0\",\"admin_view_model\":\"\",\"power_admin_view_model\":[],\"add_admin_view_html\":\"0\",\"admin_view_html\":\"\",\"power_admin_view_html\":[],\"add_admin_view\":\"0\",\"admin_view\":\"\",\"power_admin_view\":[],\"add_admin_view_controller\":\"0\",\"admin_view_controller\":\"\",\"power_admin_view_controller\":[],\"add_admin_views_model\":\"0\",\"admin_views_model\":\"\",\"power_admin_views_model\":[],\"add_admin_views_html\":\"0\",\"admin_views_html\":\"\",\"power_admin_views_html\":[],\"add_admin_views\":\"0\",\"admin_views\":\"\",\"power_admin_views\":[],\"add_admin_views_controller\":\"0\",\"admin_views_controller\":\"\",\"power_admin_views_controller\":[],\"add_site_admin_view_model\":\"0\",\"site_admin_view_model\":\"\",\"power_site_admin_view_model\":[],\"add_site_admin_view_html\":\"0\",\"site_admin_view_html\":\"\",\"power_site_admin_view_html\":[],\"add_site_admin_view\":\"0\",\"site_admin_view\":\"\",\"power_site_admin_view\":[],\"add_import_custom_controller\":\"0\",\"import_custom_controller\":\"\",\"power_import_custom_controller\":[],\"add_import_custom_model\":\"0\",\"import_custom_model\":\"\",\"power_import_custom_model\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', 1, '2020-09-07 22:38:14', '2025-03-28 10:18:59', 18, '', 1, 247),
(286, 1, '', '', '', 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 1, '', 1, '', '', '', '', '', '', '', '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":1},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":1},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":1},\"addpermissions3\":{\"action\":\"view.edit.access\",\"implementation\":1},\"addpermissions4\":{\"action\":\"view.edit.created_by\",\"implementation\":1},\"addpermissions5\":{\"action\":\"view.edit.created\",\"implementation\":1},\"addpermissions6\":{\"action\":\"view.create\",\"implementation\":1},\"addpermissions7\":{\"action\":\"view.delete\",\"implementation\":1},\"addpermissions8\":{\"action\":\"view.access\",\"implementation\":1}}', '{}', '{}', '{}', '', '', '', '', '{}', '', '60b7b30d-9229-4ce2-b055-9efbb7ac4cea', '', '', '', '', '', '', '', 'utf8mb4', 'utf8mb4_unicode_ci', 'InnoDB', 'DYNAMIC', 'User Entity Maps', 'User Entity Map', '', '', '', '', '', '', '', '', '', '', '', 'W0NVU1RPTUNPREU9c2F2ZUdVSURQb3dlcl0=', '', '', '', 'W0NVU1RPTUNPREU9c2V0R1VJREZvcm1Qb3dlcl0=', '', '', '', '', '', '', '', '', 'User Entity Maps', '', '', 'User Entity Map', 1, '{\"privacy\":{\"activate\":\"0\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"3404\"},\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}}},\"admin_view_headers\":{\"add_admin_view_model\":\"0\",\"admin_view_model\":\"\",\"power_admin_view_model\":[],\"add_admin_view_html\":\"0\",\"admin_view_html\":\"\",\"power_admin_view_html\":[],\"add_admin_view\":\"0\",\"admin_view\":\"\",\"power_admin_view\":[],\"add_admin_view_controller\":\"0\",\"admin_view_controller\":\"\",\"power_admin_view_controller\":[],\"add_admin_views_model\":\"0\",\"admin_views_model\":\"\",\"power_admin_views_model\":[],\"add_admin_views_html\":\"0\",\"admin_views_html\":\"\",\"power_admin_views_html\":[],\"add_admin_views\":\"0\",\"admin_views\":\"\",\"power_admin_views\":[],\"add_admin_views_controller\":\"0\",\"admin_views_controller\":\"\",\"power_admin_views_controller\":[],\"add_site_admin_view_model\":\"0\",\"site_admin_view_model\":\"\",\"power_site_admin_view_model\":[],\"add_site_admin_view_html\":\"0\",\"site_admin_view_html\":\"\",\"power_site_admin_view_html\":[],\"add_site_admin_view\":\"0\",\"site_admin_view\":\"\",\"power_site_admin_view\":[],\"add_import_custom_controller\":\"0\",\"import_custom_controller\":\"\",\"power_import_custom_controller\":[],\"add_import_custom_model\":\"0\",\"import_custom_model\":\"\",\"power_import_custom_model\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', 1, '2020-09-07 22:49:46', '2024-09-16 23:34:45', 4, '', 1, 248),
(293, 1, '', '', '', 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":3},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":3},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":3},\"addpermissions3\":{\"action\":\"view.edit.access\",\"implementation\":3},\"addpermissions4\":{\"action\":\"view.edit.created_by\",\"implementation\":3},\"addpermissions5\":{\"action\":\"view.edit.created\",\"implementation\":3},\"addpermissions6\":{\"action\":\"view.create\",\"implementation\":3},\"addpermissions7\":{\"action\":\"view.delete\",\"implementation\":3},\"addpermissions8\":{\"action\":\"view.access\",\"implementation\":3}}', '{}', '{}', '{}', '', '', '', '', '{}', '', 'ab2bbdfc-c0a0-4ffc-9556-67d5af8bec64', '', '', '', '', '', '', '', 'utf8mb4', 'utf8mb4_unicode_ci', 'InnoDB', 'DYNAMIC', 'Importer Message Logs', 'Importer Message Log', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'Importer Message Logs', '', '', 'Importer Message Logs', 1, '{\"privacy\":{\"activate\":\"0\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"2c74c3f5-2bfc-4916-b105-4f5d5e2bea25\"},\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"0\",\"direction\":\"asc\"}}},\"admin_view_headers\":{\"add_admin_view_model\":\"0\",\"admin_view_model\":\"\",\"power_admin_view_model\":[],\"add_admin_view_html\":\"0\",\"admin_view_html\":\"\",\"power_admin_view_html\":[],\"add_admin_view\":\"0\",\"admin_view\":\"\",\"power_admin_view\":[],\"add_admin_view_controller\":\"0\",\"admin_view_controller\":\"\",\"power_admin_view_controller\":[],\"add_admin_views_model\":\"0\",\"admin_views_model\":\"\",\"power_admin_views_model\":[],\"add_admin_views_html\":\"0\",\"admin_views_html\":\"\",\"power_admin_views_html\":[],\"add_admin_views\":\"0\",\"admin_views\":\"\",\"power_admin_views\":[],\"add_admin_views_controller\":\"0\",\"admin_views_controller\":\"\",\"power_admin_views_controller\":[],\"add_site_admin_view_model\":\"0\",\"site_admin_view_model\":\"\",\"power_site_admin_view_model\":[],\"add_site_admin_view_html\":\"0\",\"site_admin_view_html\":\"\",\"power_site_admin_view_html\":[],\"add_site_admin_view\":\"0\",\"site_admin_view\":\"\",\"power_site_admin_view\":[],\"add_import_custom_controller\":\"0\",\"import_custom_controller\":\"\",\"power_import_custom_controller\":[],\"add_import_custom_model\":\"0\",\"import_custom_model\":\"\",\"power_import_custom_model\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', 1, '2020-02-06 17:25:28', '2025-02-17 10:13:58', 6, '', 1, 249),
-(294, 1, '', '', '', 1, '', '', '', '', '', 1, 1, '', '', '', '', '', '', 1, 1, 1, '', 1, '', '', '', '', 1, '', '', '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":3},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":3},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":3},\"addpermissions3\":{\"action\":\"view.edit.access\",\"implementation\":3},\"addpermissions4\":{\"action\":\"view.edit.created_by\",\"implementation\":3},\"addpermissions5\":{\"action\":\"view.edit.created\",\"implementation\":3},\"addpermissions6\":{\"action\":\"view.create\",\"implementation\":3},\"addpermissions7\":{\"action\":\"view.delete\",\"implementation\":3},\"addpermissions8\":{\"action\":\"view.access\",\"implementation\":3}}', '{}', '{}', '{}', '', '', '', '', '{}', 'The item import queue', 'a9f19a16-fadb-44ea-a9b6-41130aad05ec', '', '', '', '', '', '', '', 'utf8mb4', 'utf8mb4_unicode_ci', 'InnoDB', 'DYNAMIC', 'Items Import Queue', 'Item Import', '', 'CQlpZiAoIWVtcHR5KCRmaWxlcykpDQoJCXsNCgkJCSRmaWxlcyA9IFN1cGVyX19fOWQ3NmI4ZGNfMzg4M180NzU1X2IxMWNfMTMxZDE5Y2E4YTUzX19fUG93ZXI6Ol8oJ0RhdGEuSXRlbXMnKS0+dGFibGUoJ2ZpbGUnKS0+dmFsdWVzKCRmaWxlcywgJ2d1aWQnLCAnaWQnKTsNCgkJCWlmICghZW1wdHkoJGZpbGVzKSkNCgkJCXsNCgkJCQkkbW9kZWwgPSBTdXBlcl9fXzY0MGI1MzUyX2ZiMDlfNDI1Zl9hMjZlX2NkNDRlZGEwM2YxNV9fX1Bvd2VyOjpnZXRNb2RlbCgnZmlsZScpOw0KCQkJCSRtb2RlbC0+ZGVsZXRlKCRmaWxlcyk7DQoJCQl9DQoJCX0=', 'CQlpZiAoIWVtcHR5KCRmaWxlcykpDQoJCXsNCgkJCSR1cGRhdGUgPSBbXTsNCgkJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkNCgkJCXsNCgkJCQkkdXBkYXRlW10gPSAob2JqZWN0KSBbJ2d1aWQnID0+ICRmaWxlLCAncHVibGlzaGVkJyA9PiAkdmFsdWVdOw0KCQkJfQ0KCQkJU3VwZXJfX185ZDc2YjhkY18zODgzXzQ3NTVfYjExY18xMzFkMTljYThhNTNfX19Qb3dlcjo6XygnRGF0YS5JdGVtcycpLT50YWJsZSgnZmlsZScpLT5zZXQoJHVwZGF0ZSwgJ2d1aWQnKTsNCgkJfQ==', '', '', '', '', '', '', 'CQkkZmlsZXMgPSBTdXBlcl9fXzlkNzZiOGRjXzM4ODNfNDc1NV9iMTFjXzEzMWQxOWNhOGE1M19fX1Bvd2VyOjpfKCdEYXRhLkl0ZW1zJyktPnRhYmxlKCdbW1t2aWV3XV1dJyktPnZhbHVlcygkcGtzLCAnaWQnLCAnZmlsZScpOw==', 'CQkkZmlsZXMgPSBTdXBlcl9fXzlkNzZiOGRjXzM4ODNfNDc1NV9iMTFjXzEzMWQxOWNhOGE1M19fX1Bvd2VyOjpfKCdEYXRhLkl0ZW1zJyktPnRhYmxlKCdbW1t2aWV3XV1dJyktPnZhbHVlcygkcGtzLCAnaWQnLCAnZmlsZScpOw==', 'W0NVU1RPTUNPREU9c2F2ZUdVSURQb3dlcl0=', '', '', '', 'W0NVU1RPTUNPREU9c2V0R1VJREZvcm1Qb3dlcl0=', '', '', '', '', '', '', 'CQkkZmlsZSA9IChvYmplY3QpIFsnZ3VpZCcgPT4gJHZhbGlkRGF0YVsnZmlsZSddLCAncHVibGlzaGVkJyA9PiAkdmFsaWREYXRhWydwdWJsaXNoZWQnXV07DQoJCVN1cGVyX19fOWQ3NmI4ZGNfMzg4M180NzU1X2IxMWNfMTMxZDE5Y2E4YTUzX19fUG93ZXI6Ol8oJ0RhdGEuSXRlbScpLT50YWJsZSgnZmlsZScpLT5zZXQoJGZpbGUsICdndWlkJywgJ3VwZGF0ZScpOw==', '', 'Item Import Queue', '', '', 'Item Import', 1, '{\"privacy\":{\"activate\":\"0\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"2c74c3f5-2bfc-4916-b105-4f5d5e2bea25\"},\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"0\",\"direction\":\"asc\"}}},\"admin_view_headers\":{\"add_admin_view_model\":\"0\",\"admin_view_model\":\"\",\"power_admin_view_model\":[],\"add_admin_view_html\":\"0\",\"admin_view_html\":\"\",\"power_admin_view_html\":[],\"add_admin_view\":\"0\",\"admin_view\":\"\",\"power_admin_view\":[],\"add_admin_view_controller\":\"0\",\"admin_view_controller\":\"\",\"power_admin_view_controller\":[],\"add_admin_views_model\":\"0\",\"admin_views_model\":\"\",\"power_admin_views_model\":[],\"add_admin_views_html\":\"0\",\"admin_views_html\":\"\",\"power_admin_views_html\":[],\"add_admin_views\":\"0\",\"admin_views\":\"\",\"power_admin_views\":[],\"add_admin_views_controller\":\"0\",\"admin_views_controller\":\"\",\"power_admin_views_controller\":[],\"add_site_admin_view_model\":\"0\",\"site_admin_view_model\":\"\",\"power_site_admin_view_model\":[],\"add_site_admin_view_html\":\"0\",\"site_admin_view_html\":\"\",\"power_site_admin_view_html\":[],\"add_site_admin_view\":\"0\",\"site_admin_view\":\"\",\"power_site_admin_view\":[],\"add_import_custom_controller\":\"0\",\"import_custom_controller\":\"\",\"power_import_custom_controller\":[],\"add_import_custom_model\":\"0\",\"import_custom_model\":\"\",\"power_import_custom_model\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', 1, '2020-11-05 18:35:12', '2025-03-03 09:01:55', 10, '', 1, 250);
+(294, 1, '', '', '', 1, '', '', '', '', '', 1, 1, '', '', '', '', '', '', 1, 1, 1, '', 1, '', '', '', '', 1, '', '', '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":3},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":3},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":3},\"addpermissions3\":{\"action\":\"view.edit.access\",\"implementation\":3},\"addpermissions4\":{\"action\":\"view.edit.created_by\",\"implementation\":3},\"addpermissions5\":{\"action\":\"view.edit.created\",\"implementation\":3},\"addpermissions6\":{\"action\":\"view.create\",\"implementation\":3},\"addpermissions7\":{\"action\":\"view.delete\",\"implementation\":3},\"addpermissions8\":{\"action\":\"view.access\",\"implementation\":3}}', '{}', '{}', '{}', '', '', '', '', '{}', 'The item import queue', 'a9f19a16-fadb-44ea-a9b6-41130aad05ec', '', '', '', '', '', '', '', 'utf8mb4', 'utf8mb4_unicode_ci', 'InnoDB', 'DYNAMIC', 'Items Import Queue', 'Item Import', '', 'CQlpZiAoIWVtcHR5KCRmaWxlcykpDQoJCXsNCgkJCSRmaWxlcyA9IFN1cGVyX19fOWQ3NmI4ZGNfMzg4M180NzU1X2IxMWNfMTMxZDE5Y2E4YTUzX19fUG93ZXI6Ol8oJ0RhdGEuSXRlbXMnKS0+dGFibGUoJ2ZpbGUnKS0+dmFsdWVzKCRmaWxlcywgJ2d1aWQnLCAnaWQnKTsNCgkJCWlmICghZW1wdHkoJGZpbGVzKSkNCgkJCXsNCgkJCQkkbW9kZWwgPSBTdXBlcl9fXzY0MGI1MzUyX2ZiMDlfNDI1Zl9hMjZlX2NkNDRlZGEwM2YxNV9fX1Bvd2VyOjpnZXRNb2RlbCgnZmlsZScpOw0KCQkJCSRtb2RlbC0+ZGVsZXRlKCRmaWxlcyk7DQoJCQl9DQoJCX0=', 'CQlpZiAoIWVtcHR5KCRmaWxlcykpDQoJCXsNCgkJCSR1cGRhdGUgPSBbXTsNCgkJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkNCgkJCXsNCgkJCQkkdXBkYXRlW10gPSAob2JqZWN0KSBbJ2d1aWQnID0+ICRmaWxlLCAncHVibGlzaGVkJyA9PiAkdmFsdWVdOw0KCQkJfQ0KCQkJU3VwZXJfX185ZDc2YjhkY18zODgzXzQ3NTVfYjExY18xMzFkMTljYThhNTNfX19Qb3dlcjo6XygnRGF0YS5JdGVtcycpLT50YWJsZSgnZmlsZScpLT5zZXQoJHVwZGF0ZSwgJ2d1aWQnKTsNCgkJfQ==', '', '', '', '', '', '', 'CQkkZmlsZXMgPSBTdXBlcl9fXzlkNzZiOGRjXzM4ODNfNDc1NV9iMTFjXzEzMWQxOWNhOGE1M19fX1Bvd2VyOjpfKCdEYXRhLkl0ZW1zJyktPnRhYmxlKCdbW1t2aWV3XV1dJyktPnZhbHVlcygkcGtzLCAnaWQnLCAnZmlsZScpOw==', 'CQkkZmlsZXMgPSBTdXBlcl9fXzlkNzZiOGRjXzM4ODNfNDc1NV9iMTFjXzEzMWQxOWNhOGE1M19fX1Bvd2VyOjpfKCdEYXRhLkl0ZW1zJyktPnRhYmxlKCdbW1t2aWV3XV1dJyktPnZhbHVlcygkcGtzLCAnaWQnLCAnZmlsZScpOw==', 'W0NVU1RPTUNPREU9c2F2ZUdVSURQb3dlcl0=', '', '', '', 'W0NVU1RPTUNPREU9c2V0R1VJREZvcm1Qb3dlcl0=', '', '', '', '', '', '', 'CQkkZmlsZSA9IChvYmplY3QpIFsnZ3VpZCcgPT4gJHZhbGlkRGF0YVsnZmlsZSddLCAncHVibGlzaGVkJyA9PiAkdmFsaWREYXRhWydwdWJsaXNoZWQnXV07DQoJCVN1cGVyX19fOWQ3NmI4ZGNfMzg4M180NzU1X2IxMWNfMTMxZDE5Y2E4YTUzX19fUG93ZXI6Ol8oJ0RhdGEuSXRlbScpLT50YWJsZSgnZmlsZScpLT5zZXQoJGZpbGUsICdndWlkJywgJ3VwZGF0ZScpOw==', '', 'Item Import Queue', '', '', 'Item Import', 1, '{\"privacy\":{\"activate\":\"0\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"2c74c3f5-2bfc-4916-b105-4f5d5e2bea25\"},\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"0\",\"direction\":\"asc\"}}},\"admin_view_headers\":{\"add_admin_view_model\":\"0\",\"admin_view_model\":\"\",\"power_admin_view_model\":[],\"add_admin_view_html\":\"0\",\"admin_view_html\":\"\",\"power_admin_view_html\":[],\"add_admin_view\":\"0\",\"admin_view\":\"\",\"power_admin_view\":[],\"add_admin_view_controller\":\"0\",\"admin_view_controller\":\"\",\"power_admin_view_controller\":[],\"add_admin_views_model\":\"0\",\"admin_views_model\":\"\",\"power_admin_views_model\":[],\"add_admin_views_html\":\"0\",\"admin_views_html\":\"\",\"power_admin_views_html\":[],\"add_admin_views\":\"0\",\"admin_views\":\"\",\"power_admin_views\":[],\"add_admin_views_controller\":\"0\",\"admin_views_controller\":\"\",\"power_admin_views_controller\":[],\"add_site_admin_view_model\":\"0\",\"site_admin_view_model\":\"\",\"power_site_admin_view_model\":[],\"add_site_admin_view_html\":\"0\",\"site_admin_view_html\":\"\",\"power_site_admin_view_html\":[],\"add_site_admin_view\":\"0\",\"site_admin_view\":\"\",\"power_site_admin_view\":[],\"add_import_custom_controller\":\"0\",\"import_custom_controller\":\"\",\"power_import_custom_controller\":[],\"add_import_custom_model\":\"0\",\"import_custom_model\":\"\",\"power_import_custom_model\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', 1, '2020-11-05 18:35:12', '2025-03-03 09:01:55', 10, '', 1, 250),
+(296, 1, '', '', 1, 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 1, '', 1, '', '', '', '', '', '', 1, '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":3},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":3},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":3},\"addpermissions3\":{\"action\":\"view.edit.created_by\",\"implementation\":3},\"addpermissions4\":{\"action\":\"view.edit.created\",\"implementation\":3},\"addpermissions5\":{\"action\":\"view.create\",\"implementation\":3},\"addpermissions6\":{\"action\":\"view.delete\",\"implementation\":3},\"addpermissions7\":{\"action\":\"view.access\",\"implementation\":3}}', '{}', '{\"addtabs0\":{\"name\":\"Details\"},\"addtabs1\":{\"name\":\"Cities\"}}', '{}', '', 1, '', '', '{}', '', '6c6345a1-e3e4-4840-8918-831034e95b19', 'images/vdm/icon/state.png#joomlaImage://local-images/vdm/icon/state.png?width=128&height=128', '', '', '', '', '', '', 'utf8mb4', 'utf8mb4_unicode_ci', 'InnoDB', 'DYNAMIC', 'States', 'State', '', '', '', '', '', '', '', '', '', '', '', 'W0NVU1RPTUNPREU9c2F2ZUdVSURQb3dlcl0=', 'W0NVU1RPTUNPREU9Zm9ybUNvbnRyb2xsZXJFZGl0XQ==', '', '', 'W0NVU1RPTUNPREU9c2V0R1VJREZvcm1Qb3dlcl0=', '', '', '', '', '', '', '', '', 'States', 2, 'LS0NCi0tIER1bXBpbmcgZGF0YSBmb3IgdGFibGUgYCNfX2RlbW9fc3RhdGVgDQotLQ0KDQpJTlNFUlQgSU5UTyBgI19fZGVtb19zdGF0ZWAgKGBpZGAsIGBjb3VudHJ5YCwgYGZpcHNfY29kZWAsIGBuYW1lYCwgYHR5cGVgLCBgd2lraWRhdGFpZGAsIGBsYXRpdHVkZWAsIGBsb25naXR1ZGVgLCBgbWV0YWtleWAsIGBtZXRhZGVzY2AsIGBtZXRhZGF0YWAsIGBvcmRlcmluZ2AsIGBwdWJsaXNoZWRgLCBgbW9kaWZpZWRgLCBgY3JlYXRlZGAsIGBoaXRzYCwgYHZlcnNpb25gLCBgcGFyYW1zYCwgYGd1aWRgLCBgaXNvMmApIFZBTFVFUw0KKDEsICc2MmI1MDM5Mi01NGUyLTQ0OTAtYWQ5NC04ZGUwNzczNWE1ODQnLCAyMSwgJ0tob21hcycsICdyZWdpb24nLCAnUTgzNDUwOCcsIC0yMi42Mzc3ODU0MCwgMTcuMTAxMTkzMTAsICcnLCAnJywgJ3tcInJvYm90c1wiOlwiXCIsXCJhdXRob3JcIjpcIlwiLFwicmlnaHRzXCI6XCJcIn0nLCAxLCAxLCAnMjAyNS0wMy0yNiAxOTo1NTo0NycsICcyMDI1LTAzLTI1IDE2OjIzOjM0JywgJycsIDExLCAnJywgJ2M4NDBjNWFlLWQzODQtNDg0Ny1iNTBkLWE4MmVmMjk4M2M0ZCcsICdOQScpLA0KKDIsICcyZmNhOWU3OS1jOGM5LTQ1N2YtYTJhMi05M2JlNzkyMDdlZGUnLCAxMSwgJ1dldGVybiBDYXBlJywgJ3Byb3ZpbmNlJywgJ1ExMjcxNjcnLCAtMzMuMjI3NzkxODAsIDIxLjg1Njg1ODYwLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgMiwgMSwgJzIwMjUtMDMtMjYgMTU6NTU6NDYnLCAnMjAyNS0wMy0yNiAxNToyMDowNScsICcnLCAzLCAnJywgJ2EyMDE1ZGVkLTBmZWQtNDA2NC04ZTYzLTgzYTQ5NWUxYTA5YicsICdXQycpLA0KKDMsICc2MmI1MDM5Mi01NGUyLTQ0OTAtYWQ5NC04ZGUwNzczNWE1ODQnLCAxNTIsICdPdGpvem9uZGp1cGEnLCAncmVnaW9uJywgJ1E4NzY1MDYnLCAtMjAuNTQ4NjkxNjAsIDE3LjY2ODg4NzAwLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgMywgMSwgJzIwMjUtMDMtMjYgMTk6NTY6NDQnLCAnMjAyNS0wMy0yNiAxNTo0NDoxMScsICcnLCAzLCAnJywgJ2RlNTc3MzI1LTFkZWQtNDZkOS1hMDJjLTIzMWJjZDhhNDYxZScsICdPRCcpLA0KKDQsICc2MmI1MDM5Mi01NGUyLTQ0OTAtYWQ5NC04ZGUwNzczNWE1ODQnLCAxNTIsICdFcm9uZ28nLCAncmVnaW9uJywgJ1E2NDg3NTMnLCAtMjIuMjU2NTY4MjAsIDE1LjQwNjgwNzkwLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgNCwgMSwgJzIwMjUtMDMtMjYgMTk6NTU6MDgnLCAnMjAyNS0wMy0yNiAxNTo1MDo1MCcsICcnLCA0LCAnJywgJzJjMDM3N2M3LWRkMzAtNGE2Ny1iOGI5LTdjZTFhZmY0ZmY5YicsICdFUicpLA0KKDksICc2MmI1MDM5Mi01NGUyLTQ0OTAtYWQ5NC04ZGUwNzczNWE1ODQnLCAxNTIsICdIYXJkYXAnLCAncmVnaW9uJywgJ1E3NTI2NzYnLCAtMjYuODQyOTY0NTAsIDE3LjI5MDI4MzkwLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgJycsIDEsICcyMDI1LTAzLTI3IDA2OjIxOjE3JywgJzIwMjUtMDMtMjYgMjE6MjE6NTUnLCAnJywgMiwgJycsICdhNmU3Zjk2My01Mjg4LTQyM2EtYjlmYi02ZTkyYjlmYmEyNDEnLCAnS0EnKSwNCigxMSwgJzJmY2E5ZTc5LWM4YzktNDU3Zi1hMmEyLTkzYmU3OTIwN2VkZScsIDA2LCAnR2F1dGVuZycsICdwcm92aW5jZScsICdRMTMzMDgzJywgLTI2LjI3MDc1OTMwLCAyOC4xMTIyNjc5MCwgJycsICcnLCAne1wicm9ib3RzXCI6XCJcIixcImF1dGhvclwiOlwiXCIsXCJyaWdodHNcIjpcIlwifScsIDYsIDEsICcyMDI1LTAzLTI3IDIwOjA0OjMxJywgJzIwMjUtMDMtMjcgMTI6NDA6MjMnLCAnJywgMTUsICcnLCAnOWZkY2U4NzUtMDZlZC00NDk4LTk2NGUtMGY3MjM2MzFmZTFmJywgJ0dQJyksDQooMTIsICc2MmI1MDM5Mi01NGUyLTQ0OTAtYWQ5NC04ZGUwNzczNWE1ODQnLCAzMSwgJ0thcmFzJywgJ3JlZ2lvbicsICdRNTczNDY3JywgLTI2Ljg0Mjk2NDUwLCAxNy4yOTAyODM5MCwgJycsICcnLCAnJywgJycsIDEsICcnLCAnMjAyNS0wMy0yOCAwODozNjozMCcsICcnLCAxLCAnJywgJ2NjMDdjNTViLWZmZTQtNDNiMy05N2I3LTIzYjU3NDZjMDlmOScsICdLQScpLA0KKDEzLCAnNjJiNTAzOTItNTRlMi00NDkwLWFkOTQtOGRlMDc3MzVhNTg0JywgNDAsICdLYXZhbmdvIEVhc3QnLCAncmVnaW9uJywgJ1ExNDgyNDAzMicsIDE4LjI3MTA0ODAwLCAxOC40Mjc2MDQ3MCwgJycsICcnLCAnJywgJycsIDEsICcnLCAnMjAyNS0wMy0yOCAwODo0NDozOScsICcnLCAxLCAnJywgJ2Q1M2NmNDE3LTg0YmMtNGE3Mi04YWNiLTI4MzY3ZjQxYmZiYicsICdLRScpLA0KKDE0LCAnNjJiNTAzOTItNTRlMi00NDkwLWFkOTQtOGRlMDc3MzVhNTg0JywgMzIsICdLdW5lbmUnLCAncmVnaW9uJywgJ1E4MzQ1MTMnLCAtMTkuNDA4NjMxNzAsIDEzLjkxNDM5OTAwLCAnJywgJycsICcnLCAnJywgMSwgJycsICcyMDI1LTAzLTI4IDA4OjQ3OjU3JywgJycsIDEsICcnLCAnYTU1ZjhkNWEtZjQxZi00YjBkLWI2YTQtNjk3MjY0NzdmYzUyJywgJ0tVJyksDQooMTUsICc2MmI1MDM5Mi01NGUyLTQ0OTAtYWQ5NC04ZGUwNzczNWE1ODQnLCAzMywgJ09oYW5nd2VuYScsICdyZWdpb24nLCAnUTg0NTcwMicsIC0xNy41OTc5MjkxMCwgMTYuODE3ODM3NzAsICcnLCAnJywgJycsICcnLCAxLCAnJywgJzIwMjUtMDMtMjggMDg6NTM6NTknLCAnJywgMSwgJycsICczZWU1YjEwZS02MGQ0LTRlYjAtYTVlYS1hZTk4ZGI0NWJlYmUnLCAnT1cnKSwNCigxNiwgJzYyYjUwMzkyLTU0ZTItNDQ5MC1hZDk0LThkZTA3NzM1YTU4NCcsIDM1LCAnT21haGVrZScsICdyZWdpb24nLCAnUTgzODc3NScsIDE5LjE4ODAwNDcwLCAtMjEuODQ2NjY1MTAsICcnLCAnJywgJ3tcInJvYm90c1wiOlwiXCIsXCJhdXRob3JcIjpcIlwiLFwicmlnaHRzXCI6XCJcIn0nLCA3LCAxLCAnMjAyNS0wMy0yOCAwODo1OTo0NicsICcyMDI1LTAzLTI4IDA4OjU4OjA3JywgJycsIDMsICcnLCAnYWI4ODg0MmYtMGU2Ni00N2NkLTk3MTItNmQ1YWFkM2IxNzliJywgJ09IJyksDQooMTcsICc2MmI1MDM5Mi01NGUyLTQ0OTAtYWQ5NC04ZGUwNzczNWE1ODQnLCAzNiwgJ09tdXNhdGknLCAncmVnaW9uJywgJ1E3NjQzODUnLCAxNC44NDU0NjE5MCwgLTE4LjQwNzAyOTQwLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgOCwgMSwgJzIwMjUtMDMtMjggMDk6MDE6NTgnLCAnMjAyNS0wMy0yOCAwOTowMTowMicsICcnLCAyLCAnJywgJ2RkMDE1ZmU3LTUwYjktNGExZS1iZTY2LTJlNWRlYjZlYTA1ZScsICdPUycpLA0KKDE4LCAnNjJiNTAzOTItNTRlMi00NDkwLWFkOTQtOGRlMDc3MzVhNTg0JywgMzcsICdPc2hhbmEnLCAncmVnaW9uJywgJ1E1MzQ1MjgnLCAxNS42ODgxNzg4MCwgLTE4LjQzMDUwNjQwLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgOSwgMSwgJzIwMjUtMDMtMjggMDk6MDU6NTUnLCAnMjAyNS0wMy0yOCAwOTowNDoyMScsICcnLCAzLCAnJywgJzZmMTE0ZDEzLWNlN2YtNDc1MS04MDI5LWZmNzcyM2E5MzJhMicsICdPTicpLA0KKDE5LCAnNjJiNTAzOTItNTRlMi00NDkwLWFkOTQtOGRlMDc3MzVhNTg0JywgMzgsICdPc2hpa290bycsICdyZWdpb24nLCAnUTg3NjUxMicsIDE2LjkxMjI1MTAwLCAtMTguNDE1MjU3NTAsICcnLCAnJywgJ3tcInJvYm90c1wiOlwiXCIsXCJhdXRob3JcIjpcIlwiLFwicmlnaHRzXCI6XCJcIn0nLCAxMCwgMSwgJzIwMjUtMDMtMjggMDk6MDk6MjMnLCAnMjAyNS0wMy0yOCAwOTowODowOCcsICcnLCAyLCAnJywgJ2IwNjUwYTZkLTU2ZDgtNDc2NS1iNTY2LWY2YjkzMjU1ZjdmNCcsICdPVCcpLA0KKDIwLCAnNjJiNTAzOTItNTRlMi00NDkwLWFkOTQtOGRlMDc3MzVhNTg0JywgMjgsICdaYW1iZXppJywgJ3JlZ2lvbicsICdRNDczMTkwJywgMjMuOTUzNjQ2NjAsIC0xNy44MTkzNDE5MCwgJycsICcnLCAne1wicm9ib3RzXCI6XCJcIixcImF1dGhvclwiOlwiXCIsXCJyaWdodHNcIjpcIlwifScsIDExLCAxLCAnMjAyNS0wMy0yOCAwOToxMzozMScsICcyMDI1LTAzLTI4IDA5OjEwOjUyJywgJycsIDIsICcnLCAnZWRjM2FkZDYtMTk3Ny00NDNlLWFmNDAtMzZmNzAwYWQzMWMwJywgJ0NBJyk7', 'States', 1, '{\"privacy\":{\"activate\":\"0\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"c31eea82-d52d-4586-9d34-c73abfebf5f3\"},\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"0\",\"direction\":\"asc\"}}},\"admin_view_headers\":{\"add_admin_view_model\":\"0\",\"admin_view_model\":\"\",\"power_admin_view_model\":[],\"add_admin_view_html\":\"0\",\"admin_view_html\":\"\",\"power_admin_view_html\":[],\"add_admin_view\":\"0\",\"admin_view\":\"\",\"power_admin_view\":[],\"add_admin_view_controller\":\"0\",\"admin_view_controller\":\"\",\"power_admin_view_controller\":[],\"add_admin_views_model\":\"0\",\"admin_views_model\":\"\",\"power_admin_views_model\":[],\"add_admin_views_html\":\"0\",\"admin_views_html\":\"\",\"power_admin_views_html\":[],\"add_admin_views\":\"0\",\"admin_views\":\"\",\"power_admin_views\":[],\"add_admin_views_controller\":\"0\",\"admin_views_controller\":\"\",\"power_admin_views_controller\":[],\"add_site_admin_view_model\":\"0\",\"site_admin_view_model\":\"\",\"power_site_admin_view_model\":[],\"add_site_admin_view_html\":\"0\",\"site_admin_view_html\":\"\",\"power_site_admin_view_html\":[],\"add_site_admin_view\":\"0\",\"site_admin_view\":\"\",\"power_site_admin_view\":[],\"add_import_custom_controller\":\"0\",\"import_custom_controller\":\"\",\"power_import_custom_controller\":[],\"add_import_custom_model\":\"0\",\"import_custom_model\":\"\",\"power_import_custom_model\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', 1, '2025-03-24 08:26:24', '2025-03-28 12:25:29', 40, '', 1, 170),
+(297, 1, '', '', 1, 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 1, '', 1, '', '', '', '', '', '', 1, '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":3},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":3},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":3},\"addpermissions3\":{\"action\":\"view.edit.access\",\"implementation\":3},\"addpermissions4\":{\"action\":\"view.edit.created_by\",\"implementation\":3},\"addpermissions5\":{\"action\":\"view.edit.created\",\"implementation\":3},\"addpermissions6\":{\"action\":\"view.create\",\"implementation\":3},\"addpermissions7\":{\"action\":\"view.delete\",\"implementation\":3},\"addpermissions8\":{\"action\":\"view.access\",\"implementation\":3}}', '{}', '{}', '{}', '', 1, '', '', '{}', '', '3dbb581b-619a-4fb0-a6f6-e4a136ea31e2', 'images/vdm/icon/city.png#joomlaImage://local-images/vdm/icon/city.png?width=128&height=128', '', '', '', '', '', '', 'utf8mb4', 'utf8mb4_unicode_ci', 'InnoDB', 'DYNAMIC', 'Cities', 'City', '', '', '', '', '', '', '', '', '', '', '', 'W0NVU1RPTUNPREU9c2F2ZUdVSURQb3dlcl0=', 'W0NVU1RPTUNPREU9Zm9ybUNvbnRyb2xsZXJFZGl0XQ==', '', '', 'W0NVU1RPTUNPREU9c2V0R1VJREZvcm1Qb3dlcl0=', '', '', '', '', '', '', '', '', 'Cities', 2, 'LS0NCi0tIER1bXBpbmcgZGF0YSBmb3IgdGFibGUgYCNfX2RlbW9fY2l0eWANCi0tDQoNCklOU0VSVCBJTlRPIGAjX19kZW1vX2NpdHlgIChgaWRgLCBgbmFtZWAsIGBsYXRpdHVkZWAsIGBsb25naXR1ZGVgLCBgZ3VpZGAsIGB3aWtpZGF0YWlkYCwgYG1ldGFrZXlgLCBgbWV0YWRlc2NgLCBgbWV0YWRhdGFgLCBgb3JkZXJpbmdgLCBgcHVibGlzaGVkYCwgYG1vZGlmaWVkYCwgYGNyZWF0ZWRgLCBgaGl0c2AsIGB2ZXJzaW9uYCwgYHBhcmFtc2AsIGBzdGF0ZWApIFZBTFVFUw0KKDEsICdXaW5kaG9laycsIC0yMi41NTk0MTAwMCwgMTcuMDgzMjMwMDAsICdiYmIwZDU2NC1jZTA2LTQ0ZDMtOGExZi1kNWU1N2Y1NmIxMTMnLCAnUTM5MzUnLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgMSwgMSwgJzIwMjUtMDMtMjcgMDY6Mjc6MzknLCAnMjAyNS0wMy0yNSAxNjoxNTowNycsICcnLCAzLCAnJywgJ2M4NDBjNWFlLWQzODQtNDg0Ny1iNTBkLWE4MmVmMjk4M2M0ZCcpLA0KKDIsICdLYXR1dHVyYScsIC0yMi41MjMwNjAwMCwgMTcuMDYwMjgwMDAsICcyNDI3NjdlMi1iNzYyLTQ5YzMtODZmMy1mMjBiMGMzMTc4MmEnLCAnUTg2NDEwMCcsICcnLCAnJywgJ3tcInJvYm90c1wiOlwiXCIsXCJhdXRob3JcIjpcIlwiLFwicmlnaHRzXCI6XCJcIn0nLCAnJywgMSwgJzIwMjUtMDMtMjcgMDY6Mjc6MzAnLCAnMjAyNS0wMy0yNiAxNDozMzozMCcsICcnLCAyLCAnJywgJ2M4NDBjNWFlLWQzODQtNDg0Ny1iNTBkLWE4MmVmMjk4M2M0ZCcpLA0KKDMsICdHcm9vdGZvbnRlaW4nLCAtMTkuNTY2NjcwMDAsIDE4LjExNjY3MDAwLCAnNmYxMzQxNDctNjI0OC00YTgwLWIzZjItOGI4ZmU1ZGFkYWY4JywgJ1E5ODYzMzYnLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgJycsIDEsICcyMDI1LTAzLTI3IDA2OjI3OjIxJywgJzIwMjUtMDMtMjYgMTU6NDQ6MTEnLCAnJywgMiwgJycsICdkZTU3NzMyNS0xZGVkLTQ2ZDktYTAyYy0yMzFiY2Q4YTQ2MWUnKSwNCig0LCAnT2thaGFuZGphJywgLTIxLjk4MzMzMDAwLCAxNi45MTY2NzAwMCwgJzMwYzRiNjA0LWE2YmItNGViYS1hMGE0LTk3NmVhMGY3MjE4MycsICdRNTk3NDkxJywgJycsICcnLCAne1wicm9ib3RzXCI6XCJcIixcImF1dGhvclwiOlwiXCIsXCJyaWdodHNcIjpcIlwifScsICcnLCAxLCAnMjAyNS0wMy0yNyAwNjoyNzoxNCcsICcyMDI1LTAzLTI2IDE1OjQ0OjExJywgJycsIDIsICcnLCAnZGU1NzczMjUtMWRlZC00NmQ5LWEwMmMtMjMxYmNkOGE0NjFlJyksDQooNSwgJ09rYWthcmFyYScsIC0yMC41ODMzMzAwMCwgMTcuNDMzMzMwMDAsICdlMTAyOTA1Ni05YjJjLTRmMjQtOGY4NS02ZDc3YWE1OWQyNDcnLCAnUTk5MjA3NycsICcnLCAnJywgJ3tcInJvYm90c1wiOlwiXCIsXCJhdXRob3JcIjpcIlwiLFwicmlnaHRzXCI6XCJcIn0nLCAnJywgMSwgJzIwMjUtMDMtMjcgMDY6Mjc6MDQnLCAnMjAyNS0wMy0yNiAxNTo0NDoxMScsICcnLCAyLCAnJywgJ2RlNTc3MzI1LTFkZWQtNDZkOS1hMDJjLTIzMWJjZDhhNDYxZScpLA0KKDYsICdPdGF2aScsIC0xOS42NTAwMDAwMCwgMTcuMzMzMzMwMDAsICc3YzYzYjU4MC00ZWUwLTQ5OWYtYjM0Yi1lZmJjNDY3NWJmZjYnLCAnUTEwMTM5NjUnLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgJycsIDEsICcyMDI1LTAzLTI3IDA2OjI2OjU2JywgJzIwMjUtMDMtMjYgMTU6NDQ6MTEnLCAnJywgMiwgJycsICdkZTU3NzMyNS0xZGVkLTQ2ZDktYTAyYy0yMzFiY2Q4YTQ2MWUnKSwNCig3LCAnT3RqaXdhcm9uZ28nLCAtMjAuNDYzNjkwMDAsIDE2LjY0NzcyMDAwLCAnNGVkNmM2MGUtNWUxMy00ZDY4LTgzZTgtNWUyZjVlNmQwYTc1JywgJ1E5OTMxNDknLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgJycsIDEsICcyMDI1LTAzLTI3IDA2OjI2OjQzJywgJzIwMjUtMDMtMjYgMTU6NDQ6MTEnLCAnJywgMiwgJycsICdkZTU3NzMyNS0xZGVkLTQ2ZDktYTAyYy0yMzFiY2Q4YTQ2MWUnKSwNCig0NiwgJ0FyYW5kaXMnLCAtMjIuNDE2NjcwMDAsIDE0Ljk2NjY3MDAwLCAnZjE3ZTU0ZjAtZTA1ZC00M2NkLTk4ZWYtNWJlZGVhYTU1NGQyJywgJ1E0Mzg4NTEnLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgJycsIDEsICcyMDI1LTAzLTI3IDA2OjI2OjA3JywgJzIwMjUtMDMtMjYgMTU6NTY6NTMnLCAnJywgMiwgJycsICcyYzAzNzdjNy1kZDMwLTRhNjctYjhiOS03Y2UxYWZmNGZmOWInKSwNCig0NywgJ0hlbnRpZXNiYWFpJywgLTIyLjExNjY3MDAwLCAxNC4yODMzMzAwMCwgJ2MyOTNlZDgzLWM2OWMtNGI3Zi1hMjcxLTdlNTBlYWNkMTM0YicsICdRMTAxMzM4OScsICcnLCAnJywgJ3tcInJvYm90c1wiOlwiXCIsXCJhdXRob3JcIjpcIlwiLFwicmlnaHRzXCI6XCJcIn0nLCAnJywgMSwgJzIwMjUtMDMtMjcgMDY6MjY6MDAnLCAnMjAyNS0wMy0yNiAxNTo1Njo1MycsICcnLCAyLCAnJywgJzJjMDM3N2M3LWRkMzAtNGE2Ny1iOGI5LTdjZTFhZmY0ZmY5YicpLA0KKDQ4LCAnS2FyaWJpYicsIC0yMS45MzMzMzAwMCwgMTUuODMzMzMwMDAsICc1M2E5ZDQ5Yi1hMGVmLTRlN2UtYWQ2Ny03ZWEwOWM1MTc5ODEnLCAnUTEzNDgxODEnLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgJycsIDEsICcyMDI1LTAzLTI3IDA2OjI1OjUxJywgJzIwMjUtMDMtMjYgMTU6NTY6NTMnLCAnJywgMiwgJycsICcyYzAzNzdjNy1kZDMwLTRhNjctYjhiOS03Y2UxYWZmNGZmOWInKSwNCig0OSwgJ09tYXJ1cnUnLCAtMjEuNDMzMzMwMDAsIDE1LjkzMzMzMDAwLCAnZGE4YjQ3YjAtODE3ZC00NDkwLTg3ZDMtNDk3NWJiNTQwNDY4JywgJ1ExODk2MTYxJywgJycsICcnLCAne1wicm9ib3RzXCI6XCJcIixcImF1dGhvclwiOlwiXCIsXCJyaWdodHNcIjpcIlwifScsICcnLCAxLCAnMjAyNS0wMy0yNyAwNjoyNTo0MScsICcyMDI1LTAzLTI2IDE1OjU2OjUzJywgJycsIDIsICcnLCAnMmMwMzc3YzctZGQzMC00YTY3LWI4YjktN2NlMWFmZjRmZjliJyksDQooNTAsICdPdGppbWJpbmd3ZScsIC0yMi4zNTAwMDAwMCwgMTYuMTMzMzMwMDAsICdiNTljNDNjMC02ZGE5LTRkMDYtODVlOC1jZWQzMzQ0MDc5N2UnLCAnUTQ2NDA1MCcsICcnLCAnJywgJ3tcInJvYm90c1wiOlwiXCIsXCJhdXRob3JcIjpcIlwiLFwicmlnaHRzXCI6XCJcIn0nLCAnJywgMSwgJzIwMjUtMDMtMjcgMDY6MjU6MzInLCAnMjAyNS0wMy0yNiAxNTo1Njo1MycsICcnLCAyLCAnJywgJzJjMDM3N2M3LWRkMzAtNGE2Ny1iOGI5LTdjZTFhZmY0ZmY5YicpLA0KKDUxLCAnU3dha29wbXVuZCcsIC0yMi42MzE5OTAwMCwgMTQuNjAxMTkwMDAsICc0YzUxMjMxNi03ZDU5LTQ2YTYtYmVmOS1iNjA5NWRlOWZkMzQnLCAnUTU5Njk4JywgJycsICcnLCAne1wicm9ib3RzXCI6XCJcIixcImF1dGhvclwiOlwiXCIsXCJyaWdodHNcIjpcIlwifScsICcnLCAxLCAnMjAyNS0wMy0yNyAwNjoyNToxNycsICcyMDI1LTAzLTI2IDE1OjU2OjUzJywgJycsIDIsICcnLCAnMmMwMzc3YzctZGQzMC00YTY3LWI4YjktN2NlMWFmZjRmZjliJyksDQooNTIsICdTd2Frb3BtdW5kIENvbnN0aXR1ZW5jeScsIC0yMi42MzE5OTAwMCwgMTQuNjAxMTkwMDAsICcyMjVkNTA2NC0xN2QzLTRjYTctOTk3MC0zZjk5YTRjZDBkNTQnLCAnUTM3MTE3MTAnLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgJycsIDEsICcyMDI1LTAzLTI3IDA2OjI1OjEwJywgJzIwMjUtMDMtMjYgMTU6NTY6NTMnLCAnJywgMiwgJycsICcyYzAzNzdjNy1kZDMwLTRhNjctYjhiOS03Y2UxYWZmNGZmOWInKSwNCig1MywgJ1VzYWtvcycsIC0yMi4wMDAwMDAwMCwgMTUuNjAwMDAwMDAsICczNjcwMGY2Yy1jYjBhLTQwNTgtYThkYy0wNmViZjA4Y2I3NzgnLCAnUTE0NTcyNjUnLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgJycsIDEsICcyMDI1LTAzLTI3IDA2OjI1OjAyJywgJzIwMjUtMDMtMjYgMTU6NTY6NTMnLCAnJywgMiwgJycsICcyYzAzNzdjNy1kZDMwLTRhNjctYjhiOS03Y2UxYWZmNGZmOWInKSwNCig1NCwgJ1dhbHZpcyBCYXknLCAtMjIuOTU3NTAwMDAsIDE0LjUwNTI4MDAwLCAnODhkODhkZjktYmVjYy00ODg5LTkyZjEtMTU4M2JmNTUyN2NjJywgJ1EyMjA4NDMnLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgJycsIDEsICcyMDI1LTAzLTI3IDA2OjI0OjU1JywgJzIwMjUtMDMtMjYgMTU6NTY6NTMnLCAnJywgMiwgJycsICcyYzAzNzdjNy1kZDMwLTRhNjctYjhiOS03Y2UxYWZmNGZmOWInKSwNCig1NSwgJ0FyYW5vcycsIC0yNC4xMzMzMzAwMCwgMTkuMTE2NjcwMDAsICdkNmYyNGY2NC1iMjUxLTQwYTYtYjc4OC1mYTYwYmVlMTlhZDAnLCAnUTYyNjA0MCcsICcnLCAnJywgJ3tcInJvYm90c1wiOlwiXCIsXCJhdXRob3JcIjpcIlwiLFwicmlnaHRzXCI6XCJcIn0nLCAnJywgMSwgJzIwMjUtMDMtMjcgMDY6MjQ6NDknLCAnMjAyNS0wMy0yNiAyMDo0MToyMScsICcnLCAyLCAnJywgJ2E2ZTdmOTYzLTUyODgtNDIzYS1iOWZiLTZlOTJiOWZiYTI0MScpLA0KKDU2LCAnSG9hY2hhbmFzJywgLTIzLjkxNjY3MDAwLCAxOC4wNTAwMDAwMCwgJ2Q3MzViMzY5LWVhYWEtNGY1MS05NDQzLWQ1ZDNkYmVmYTQwYicsICdRMTYyMTQ5OCcsICcnLCAnJywgJ3tcInJvYm90c1wiOlwiXCIsXCJhdXRob3JcIjpcIlwiLFwicmlnaHRzXCI6XCJcIn0nLCAnJywgMSwgJzIwMjUtMDMtMjcgMDY6MjQ6NDEnLCAnMjAyNS0wMy0yNiAyMDo0MToyMScsICcnLCAyLCAnJywgJ2E2ZTdmOTYzLTUyODgtNDIzYS1iOWZiLTZlOTJiOWZiYTI0MScpLA0KKDU3LCAnTWFsdGFow7ZoZScsIC0yNC44MzMzMzAwMCwgMTYuOTgzMzMwMDAsICc4MGNhOTVlNS1jYzliLTQwNmQtODRiNC1hYWZkZTAwMTg1Y2EnLCAnUTY2NjA3OScsICcnLCAnJywgJ3tcInJvYm90c1wiOlwiXCIsXCJhdXRob3JcIjpcIlwiLFwicmlnaHRzXCI6XCJcIn0nLCAnJywgMSwgJzIwMjUtMDMtMjcgMDY6MjQ6MzQnLCAnMjAyNS0wMy0yNiAyMDo0MToyMScsICcnLCAzLCAnJywgJ2E2ZTdmOTYzLTUyODgtNDIzYS1iOWZiLTZlOTJiOWZiYTI0MScpLA0KKDU4LCAnTWFyaWVudGFsJywgLTI0LjYzMzMzMDAwLCAxNy45NjY2NzAwMCwgJzU5M2QyMDcxLTBhOGQtNDEzNS04NzZmLWFjNTcxMDhhZGQ1NicsICdRODc2MTY2JywgJycsICcnLCAne1wicm9ib3RzXCI6XCJcIixcImF1dGhvclwiOlwiXCIsXCJyaWdodHNcIjpcIlwifScsICcnLCAxLCAnMjAyNS0wMy0yNyAwNjoyNDoyMycsICcyMDI1LTAzLTI2IDIwOjQxOjIxJywgJycsIDIsICcnLCAnYTZlN2Y5NjMtNTI4OC00MjNhLWI5ZmItNmU5MmI5ZmJhMjQxJyksDQooNTksICdSZWhvYm90aCcsIC0yMy4zMTcwMDAwMCwgMTcuMDkwMDAwMDAsICdlZjAyNjk2Ni1lMjVhLTQyMzctYTVmYy1mZGNkM2IxZTgwNTUnLCAnUTcwMDA1MCcsICcnLCAnJywgJ3tcInJvYm90c1wiOlwiXCIsXCJhdXRob3JcIjpcIlwiLFwicmlnaHRzXCI6XCJcIn0nLCAnJywgMSwgJzIwMjUtMDMtMjcgMDY6MjE6MDYnLCAnMjAyNS0wMy0yNiAyMDo0MToyMScsICcnLCA0LCAnJywgJ2E2ZTdmOTYzLTUyODgtNDIzYS1iOWZiLTZlOTJiOWZiYTI0MScpLA0KKDE2MywgJ0pvaGFubmVzYnVyZycsIC0yNi4yMDIyNzAwMCwgMjguMDQzNjMwMDAsICc0ODgyZGVhMC01ZmY3LTRlN2ItYTBlOC05MGQ1YmFhYjVjMDQnLCAnUTM0NjQ3JywgJycsICcnLCAnJywgJycsIDEsICcnLCAnMjAyNS0wMy0yNyAyMDowNDoyOScsICcnLCAxLCAnJywgJzlmZGNlODc1LTA2ZWQtNDQ5OC05NjRlLTBmNzIzNjMxZmUxZicpLA0KKDE2NCwgJ0JldGhhbmllJywgLTI2LjQ4MzMzMDAwLCAxNy4xNTAwMDAwMCwgJzYzOTI3YTFmLTUzMWYtNGExOC05MDEzLTQ4ZmM4OTJhYzA3ZScsICdRMjUxNjc3JywgJycsICcnLCAnJywgJycsIDEsICcnLCAnMjAyNS0wMy0yOCAwODo0MjozNycsICcnLCAxLCAnJywgJ2NjMDdjNTViLWZmZTQtNDNiMy05N2I3LTIzYjU3NDZjMDlmOScpLA0KKDE2NSwgJ0thcmFzYnVyZycsIC0yOC4wMTY2NzAwMCwgMTguNzUwMDAwMDAsICcyNWQ2N2FkOC1mMzNjLTQ0ZTItYWIxMS03YWQwNmI2YzY3YTUnLCAnUTEwMDMzMjgnLCAnJywgJycsICcnLCAnJywgMSwgJycsICcyMDI1LTAzLTI4IDA4OjQyOjM3JywgJycsIDEsICcnLCAnY2MwN2M1NWItZmZlNC00M2IzLTk3YjctMjNiNTc0NmMwOWY5JyksDQooMTY2LCAnS2VldG1hbnNob29wJywgLTI2LjU4MzMzMDAwLCAxOC4xMzMzMzAwMCwgJzgyZjNmYzZkLTBmYTUtNGQxYS05YTA2LTE1NmFkMzA4ZjkzMCcsICdRMTYwODg0JywgJycsICcnLCAnJywgJycsIDEsICcnLCAnMjAyNS0wMy0yOCAwODo0MjozNycsICcnLCAxLCAnJywgJ2NjMDdjNTViLWZmZTQtNDNiMy05N2I3LTIzYjU3NDZjMDlmOScpLA0KKDE2NywgJ0zDvGRlcml0eicsIC0yNi42NDgwNzAwMCwgMTUuMTUzODMwMDAsICdkODk0ZTIzZi1kYTI2LTRlZDEtYTRmMS01MjM0YTA4NGM1ZmQnLCAnUTE1OTMyNScsICcnLCAnJywgJycsICcnLCAxLCAnJywgJzIwMjUtMDMtMjggMDg6NDI6MzcnLCAnJywgMSwgJycsICdjYzA3YzU1Yi1mZmU0LTQzYjMtOTdiNy0yM2I1NzQ2YzA5ZjknKSwNCigxNjgsICdPcmFuamVtdW5kJywgLTI4LjU1MDAwMDAwLCAxNi40MzMzMzAwMCwgJ2ZjOTMwOWViLWJhMWEtNDI1Mi05OGMwLTQxMzZhYmVjODIxYicsICdRMTQwNDUxOCcsICcnLCAnJywgJycsICcnLCAxLCAnJywgJzIwMjUtMDMtMjggMDg6NDI6MzcnLCAnJywgMSwgJycsICdjYzA3YzU1Yi1mZmU0LTQzYjMtOTdiNy0yM2I1NzQ2YzA5ZjknKSwNCigxNjksICdUc2VzJywgLTI1Ljg4MzMzMDAwLCAxOC4wMDAwMDAwMCwgJzM0OTE3OTQxLThiYmYtNDAzNi1iYTM3LWQ5YTAxM2YyYTYxNScsICdRMTUyOTQ0NCcsICcnLCAnJywgJycsICcnLCAxLCAnJywgJzIwMjUtMDMtMjggMDg6NDI6MzcnLCAnJywgMSwgJycsICdjYzA3YzU1Yi1mZmU0LTQzYjMtOTdiNy0yM2I1NzQ2YzA5ZjknKSwNCigxNzAsICdXYXJtYmFkJywgLTI4LjQ1MDAwMDAwLCAxOC43MzMzMzAwMCwgJ2Y5NTQ5NmNjLTZlNjYtNDNjNC1hNjg5LTQ5ZTRlZTdiYTM0ZicsICdRNDc5MzEyJywgJycsICcnLCAnJywgJycsIDEsICcnLCAnMjAyNS0wMy0yOCAwODo0MjozNycsICcnLCAxLCAnJywgJ2NjMDdjNTViLWZmZTQtNDNiMy05N2I3LTIzYjU3NDZjMDlmOScpLA0KKDE3MSwgJ1J1bmR1JywgLTE3LjkzMzMzMDAwLCAxOS43NjY2NzAwMCwgJzlhNTQ0NTU3LWU5ZDUtNGJiOS04NWJiLWRjZmIxMDZmNzVjMScsICdRNjYyMjkxJywgJycsICcnLCAnJywgJycsIDEsICcnLCAnMjAyNS0wMy0yOCAwODo0NToxMicsICcnLCAxLCAnJywgJ2Q1M2NmNDE3LTg0YmMtNGE3Mi04YWNiLTI4MzY3ZjQxYmZiYicpLA0KKDE3MiwgJ0NhcGUgVG93bicsIC0zMy45MjU4NDAwMCwgMTguNDIzMjIwMDAsICc2NjFhY2RhZC05NGQ0LTRiNWEtYjE1Zi01YjZlN2ExNTc5YjEnLCAnUTU0NjUnLCAnJywgJycsICcnLCAnJywgMSwgJycsICcyMDI1LTAzLTI4IDA4OjQ2OjM4JywgJycsIDEsICcnLCAnYTIwMTVkZWQtMGZlZC00MDY0LThlNjMtODNhNDk1ZTFhMDliJyksDQooMTczLCAnRXB1cGEgQ29uc3RpdHVlbmN5JywgLTE3LjAwMzg4MDAwLCAxMy4yNDgyNTAwMCwgJ2IxNTYzZDY3LWNjNDMtNDMwYy1iMWM0LWYzYzM4ZDdjMTdmYicsICdRMTAyNjUxMScsICcnLCAnJywgJycsICcnLCAxLCAnJywgJzIwMjUtMDMtMjggMDg6NTA6NDAnLCAnJywgMSwgJycsICdhNTVmOGQ1YS1mNDFmLTRiMGQtYjZhNC02OTcyNjQ3N2ZjNTInKSwNCigxNzQsICdLaG9yaXhhcycsIC0yMC4zNjY2NzAwMCwgMTQuOTY2NjcwMDAsICdkNmEzODExNS03NzdiLTRhMzQtOWMxYy0wMmI4Y2I1NzU2MTUnLCAnUTE3NDA2ODEnLCAnJywgJycsICcnLCAnJywgMSwgJycsICcyMDI1LTAzLTI4IDA4OjUwOjQwJywgJycsIDEsICcnLCAnYTU1ZjhkNWEtZjQxZi00YjBkLWI2YTQtNjk3MjY0NzdmYzUyJyksDQooMTc1LCAnS2hvcml4YXMgQ29uc3RpdHVlbmN5JywgLTIwLjM2NzkyMDAwLCAxNC45NTk5NjAwMCwgJzk1ZGE3MzFlLTA1NmMtNGEwYy04ZTgzLTI3ZjRjZTVhZjYxZScsICdRNDEyMjM0MCcsICcnLCAnJywgJycsICcnLCAxLCAnJywgJzIwMjUtMDMtMjggMDg6NTA6NDAnLCAnJywgMSwgJycsICdhNTVmOGQ1YS1mNDFmLTRiMGQtYjZhNC02OTcyNjQ3N2ZjNTInKSwNCigxNzYsICdPcHV3bycsIC0xOC4wNjA2ODAwMCwgMTMuODM5OTgwMDAsICdlZmIxODlmNC1lYzFhLTRjMzctODdhYi1lZjg3ZThlYjFjZjQnLCAnUTEwMjQwODknLCAnJywgJycsICcnLCAnJywgMSwgJycsICcyMDI1LTAzLTI4IDA4OjUwOjQwJywgJycsIDEsICcnLCAnYTU1ZjhkNWEtZjQxZi00YjBkLWI2YTQtNjk3MjY0NzdmYzUyJyksDQooMTc3LCAnT3B1d28gQ29uc3RpdHVlbmN5JywgLTIwLjExNjY3MDAwLCAxNi4xNTAwMDAwMCwgJzhkN2MzNjFmLWU2ZmEtNGIwYy1iMDYxLTAzNTE2MDRmZjEzYScsICdRMTcwNDM0NicsICcnLCAnJywgJycsICcnLCAxLCAnJywgJzIwMjUtMDMtMjggMDg6NTE6NTYnLCAnJywgMSwgJycsICdhNTVmOGQ1YS1mNDFmLTRiMGQtYjZhNC02OTcyNjQ3N2ZjNTInKSwNCigxNzgsICdTZXNmb250ZWluIENvbnN0aXR1ZW5jeScsIC0xOS41NjEwNjAwMCwgMTMuNzY1MzAwMDAsICc1NDU4ZDYxNS1mNjc0LTQ3MTQtOWYwYi0xZTdhMzdiYzNlYTEnLCAnUTM3MTE3MDgnLCAnJywgJycsICcnLCAnJywgMSwgJycsICcyMDI1LTAzLTI4IDA4OjUxOjU2JywgJycsIDEsICcnLCAnYTU1ZjhkNWEtZjQxZi00YjBkLWI2YTQtNjk3MjY0NzdmYzUyJyksDQooMTc5LCAnT2hhbmd3ZW5hJywgLTE3LjQwMDAwMDAwLCAxNS44ODMzMzAwMCwgJ2Y1NTI3ZDU4LTVmMjMtNDFjZi05ZmUwLTRlZjliOTFiY2VjZicsICdRMjAzMzMxOScsICcnLCAnJywgJycsICcnLCAxLCAnJywgJzIwMjUtMDMtMjggMDg6NTU6MDgnLCAnJywgMSwgJycsICczZWU1YjEwZS02MGQ0LTRlYjAtYTVlYS1hZTk4ZGI0NWJlYmUnKSwNCigxODAsICdHb2JhYmlzJywgLTIyLjQ1MDAwMDAwLCAxOC45NjY2NzAwMCwgJzAwYzUwMDBhLTM3NDItNDUwYy1hNTJiLTliYTM4OTEzZTk0NScsICdRMTAwMDYwOScsICcnLCAnJywgJycsICcnLCAxLCAnJywgJzIwMjUtMDMtMjggMDg6NTk6MzMnLCAnJywgMSwgJycsICdhYjg4ODQyZi0wZTY2LTQ3Y2QtOTcxMi02ZDVhYWQzYjE3OWInKSwNCigxODEsICdPbmdhbmRqZXJhJywgLTE3Ljg4MzMzMDAwLCAxNS4wNjY2NzAwMCwgJzJmMTM2ODNhLTk4NjMtNDgzYy1iYTg4LTE3MGQ1YTc4YjlkOCcsICdRMzM1MjcyMScsICcnLCAnJywgJycsICcnLCAxLCAnJywgJzIwMjUtMDMtMjggMDk6MDE6NTgnLCAnJywgMSwgJycsICdkZDAxNWZlNy01MGI5LTRhMWUtYmU2Ni0yZTVkZWI2ZWEwNWUnKSwNCigxODIsICdPdXRhcGknLCAtMTcuNTAwMDAwMDAsIDE0Ljk4MzMzMDAwLCAnY2QyMmUxZTktZWI2Zi00MmUxLTkwZDYtZWE4YWEwN2UyNzUzJywgJ1ExNzU4MjE1JywgJycsICcnLCAnJywgJycsIDEsICcnLCAnMjAyNS0wMy0yOCAwOTowMTo1OCcsICcnLCAxLCAnJywgJ2RkMDE1ZmU3LTUwYjktNGExZS1iZTY2LTJlNWRlYjZlYTA1ZScpLA0KKDE4MywgJ09uZGFuZ3dhJywgLTE3LjkxNjY3MDAwLCAxNS45NTAwMDAwMCwgJzU4OWNiY2JjLTlkYzUtNDg4MC05NjhkLWMzODBmZDQzMTZlZicsICdRMjAyMzc3MycsICcnLCAnJywgJycsICcnLCAxLCAnJywgJzIwMjUtMDMtMjggMDk6MDU6NTMnLCAnJywgMSwgJycsICc2ZjExNGQxMy1jZTdmLTQ3NTEtODAyOS1mZjc3MjNhOTMyYTInKSwNCigxODQsICdPbmd3ZWRpdmEnLCAtMTcuNzgzMzMwMDAsIDE1Ljc2NjY3MDAwLCAnNmFlNGYzNTEtNTVlMi00ZTY5LWEzMWUtMjllNzZhYzdmN2M1JywgJ1E4NDE1NTcnLCAnJywgJycsICcnLCAnJywgMSwgJycsICcyMDI1LTAzLTI4IDA5OjA1OjUzJywgJycsIDEsICcnLCAnNmYxMTRkMTMtY2U3Zi00NzUxLTgwMjktZmY3NzIzYTkzMmEyJyksDQooMTg1LCAnT3NoYWthdGknLCAtMTcuNzg4MzMwMDAsIDE1LjcwNDM2MDAwLCAnNWViZTIwYjUtMjQ2OC00ZWY5LWFiODItMzdlNTU0ZDM5ZDVmJywgJ1E5ODU2MjInLCAnJywgJycsICcnLCAnJywgMSwgJycsICcyMDI1LTAzLTI4IDA5OjA1OjUzJywgJycsIDEsICcnLCAnNmYxMTRkMTMtY2U3Zi00NzUxLTgwMjktZmY3NzIzYTkzMmEyJyksDQooMTg2LCAnT211dGhpeWEnLCAtMTguMzY0NjMwMDAsIDE2LjU4MTQ2MDAwLCAnZDg4OGI0ZDItYWY4Ni00ZTM0LThiZWUtNDU1NGUwYjE5MjEzJywgJ1ExMDA1NTg0JywgJycsICcnLCAnJywgJycsIDEsICcnLCAnMjAyNS0wMy0yOCAwOTowOToyMycsICcnLCAxLCAnJywgJ2IwNjUwYTZkLTU2ZDgtNDc2NS1iNTY2LWY2YjkzMjU1ZjdmNCcpLA0KKDE4NywgJ1RzdW1lYicsIC0xOS4yMzMzMzAwMCwgMTcuNzE2NjcwMDAsICc5NmI1MTUwNy0xYjY2LTRiNWMtYWIzNy05MDkxNTlkNTMyNjEnLCAnUTYzOTQ2NycsICcnLCAnJywgJycsICcnLCAxLCAnJywgJzIwMjUtMDMtMjggMDk6MDk6MjMnLCAnJywgMSwgJycsICdiMDY1MGE2ZC01NmQ4LTQ3NjUtYjU2Ni1mNmI5MzI1NWY3ZjQnKSwNCigxODgsICdCYWdhbmknLCAtMTguMTEwNjUwMDAsIDIxLjYxNjQ1MDAwLCAnYjI4MTk5YjgtYzFkOS00N2M1LTgzNmEtZmFiMjgyM2E3MjZiJywgJ1E3OTk4MzAnLCAnJywgJycsICcnLCAnJywgMSwgJycsICcyMDI1LTAzLTI4IDA5OjEzOjMxJywgJycsIDEsICcnLCAnZWRjM2FkZDYtMTk3Ny00NDNlLWFmNDAtMzZmNzAwYWQzMWMwJyksDQooMTg5LCAnS2F0aW1hIE11bGlsbycsIC0xNy41MDAwMDAwMCwgMjQuMjY2NjcwMDAsICdhYTcyMDMwNC1iODliLTQxNzAtODUzOS0wZjQ3NmQ3NzAyODQnLCAnUTg2NDEwMCcsICcnLCAnJywgJycsICcnLCAxLCAnJywgJzIwMjUtMDMtMjggMDk6MTM6MzEnLCAnJywgMSwgJycsICdlZGMzYWRkNi0xOTc3LTQ0M2UtYWY0MC0zNmY3MDBhZDMxYzAnKTs=', 'Cities', 1, '{\"privacy\":{\"activate\":\"0\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"2c74c3f5-2bfc-4916-b105-4f5d5e2bea25\"},\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"0\",\"direction\":\"asc\"}}},\"admin_view_headers\":{\"add_admin_view_model\":\"0\",\"admin_view_model\":\"\",\"power_admin_view_model\":[],\"add_admin_view_html\":\"0\",\"admin_view_html\":\"\",\"power_admin_view_html\":[],\"add_admin_view\":\"0\",\"admin_view\":\"\",\"power_admin_view\":[],\"add_admin_view_controller\":\"0\",\"admin_view_controller\":\"\",\"power_admin_view_controller\":[],\"add_admin_views_model\":\"0\",\"admin_views_model\":\"\",\"power_admin_views_model\":[],\"add_admin_views_html\":\"0\",\"admin_views_html\":\"\",\"power_admin_views_html\":[],\"add_admin_views\":\"0\",\"admin_views\":\"\",\"power_admin_views\":[],\"add_admin_views_controller\":\"0\",\"admin_views_controller\":\"\",\"power_admin_views_controller\":[],\"add_site_admin_view_model\":\"0\",\"site_admin_view_model\":\"\",\"power_site_admin_view_model\":[],\"add_site_admin_view_html\":\"0\",\"site_admin_view_html\":\"\",\"power_site_admin_view_html\":[],\"add_site_admin_view\":\"0\",\"site_admin_view\":\"\",\"power_site_admin_view\":[],\"add_import_custom_controller\":\"0\",\"import_custom_controller\":\"\",\"power_import_custom_controller\":[],\"add_import_custom_model\":\"0\",\"import_custom_model\":\"\",\"power_import_custom_model\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', 1, '2025-03-24 10:21:08', '2025-03-28 12:25:19', 30, '', 1, 251),
+(298, 1, '', '', '', 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 1, '', 1, '', '', '', '', '', '', 1, '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":3},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":3},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":3},\"addpermissions3\":{\"action\":\"view.create\",\"implementation\":3},\"addpermissions4\":{\"action\":\"view.delete\",\"implementation\":3},\"addpermissions5\":{\"action\":\"view.access\",\"implementation\":3}}', '{}', '{}', '{}', '', 1, '', '', '{}', '', '75061367-79c2-4d5b-a75d-eca6d33507df', '', '', '', '', '', '', '', 'utf8mb4', 'utf8mb4_unicode_ci', 'InnoDB', 'DYNAMIC', 'Timezones', 'Timezone', '', '', '', '', '', '', '', '', '', '', '', 'W0NVU1RPTUNPREU9c2F2ZUdVSURQb3dlcl0=', '', '', '', 'W0NVU1RPTUNPREU9c2V0R1VJREZvcm1Qb3dlcl0=', '', '', '', '', '', '', '', '', 'Timezones.', 2, 'LS0NCi0tIER1bXBpbmcgZGF0YSBmb3IgdGFibGUgYCNfX2RlbW9fdGltZXpvbmVgDQotLQ0KDQpJTlNFUlQgSU5UTyBgI19fZGVtb190aW1lem9uZWAgKGBpZGAsIGB0aW1lem9uZV9uYW1lYCwgYHRpbWV6b25lX2lkZW50aWZpZXJgLCBgZ210X29mZnNldF9uYW1lYCwgYGd1aWRgLCBgZ210X29mZnNldF9zZWNgLCBgYWJicmV2aWF0aW9uYCwgYG1ldGFrZXlgLCBgbWV0YWRlc2NgLCBgbWV0YWRhdGFgLCBgb3JkZXJpbmdgLCBgcHVibGlzaGVkYCwgYG1vZGlmaWVkYCwgYGNyZWF0ZWRgLCBgaGl0c2AsIGB2ZXJzaW9uYCwgYHBhcmFtc2AsIGBjb3VudHJ5YCkgVkFMVUVTDQooMSwgJ1NvdXRoIEFmcmljYW4gU3RhbmRhcmQgVGltZScsICdBZnJpY2FcXC9Kb2hhbm5lc2J1cmcnLCAnVVRDKzAyOjAwJywgJ2RlYjdkOTM4LWEzODUtNDU0ZC1iNmM3LWZhNTlkMjNmOTc2YicsIDcyMDAsICdTQVNUJywgJycsICcnLCAne1wicm9ib3RzXCI6XCJcIixcImF1dGhvclwiOlwiXCIsXCJyaWdodHNcIjpcIlwifScsICcnLCAxLCAnMjAyNS0wMy0yNyAxMzo0OToxMScsICcyMDI1LTAzLTI2IDE0OjU4OjU0JywgJycsIDIsICcnLCAnMmZjYTllNzktYzhjOS00NTdmLWEyYTItOTNiZTc5MjA3ZWRlJyksDQooMiwgJ1dlc3QgQWZyaWNhIFN1bW1lciBUaW1lJywgJ0FmcmljYS9XaW5kaG9laycsICdVVEMrMDI6MDAnLCAnMzViYmM5MmYtNTE2MS00ZDEzLWEyMGYtNTg0YzIzMTE2YjEyJywgNzIwMCwgJ1dBU1QnLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgJycsIDEsICcyMDI1LTAzLTI3IDEzOjQ5OjAyJywgJzIwMjUtMDMtMjYgMTU6MzM6MzgnLCAnJywgMiwgJycsICc2MmI1MDM5Mi01NGUyLTQ0OTAtYWQ5NC04ZGUwNzczNWE1ODQnKTs=', 'Timezone', 1, '{\"privacy\":{\"activate\":\"0\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"da82cdf5-15f0-45b2-b5e7-0678780a50f0\"},\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"0\",\"direction\":\"asc\"}}},\"admin_view_headers\":{\"add_admin_view_model\":\"0\",\"admin_view_model\":\"\",\"power_admin_view_model\":[],\"add_admin_view_html\":\"0\",\"admin_view_html\":\"\",\"power_admin_view_html\":[],\"add_admin_view\":\"0\",\"admin_view\":\"\",\"power_admin_view\":[],\"add_admin_view_controller\":\"0\",\"admin_view_controller\":\"\",\"power_admin_view_controller\":[],\"add_admin_views_model\":\"0\",\"admin_views_model\":\"\",\"power_admin_views_model\":[],\"add_admin_views_html\":\"0\",\"admin_views_html\":\"\",\"power_admin_views_html\":[],\"add_admin_views\":\"0\",\"admin_views\":\"\",\"power_admin_views\":[],\"add_admin_views_controller\":\"0\",\"admin_views_controller\":\"\",\"power_admin_views_controller\":[],\"add_site_admin_view_model\":\"0\",\"site_admin_view_model\":\"\",\"power_site_admin_view_model\":[],\"add_site_admin_view_html\":\"0\",\"site_admin_view_html\":\"\",\"power_site_admin_view_html\":[],\"add_site_admin_view\":\"0\",\"site_admin_view\":\"\",\"power_site_admin_view\":[],\"add_import_custom_controller\":\"0\",\"import_custom_controller\":\"\",\"power_import_custom_controller\":[],\"add_import_custom_model\":\"0\",\"import_custom_model\":\"\",\"power_import_custom_model\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', 1, '2025-03-24 10:48:37', '2025-03-28 12:25:03', 23, '', 1, 52),
+(299, 1, '', '', 1, 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 1, '', 1, '', '', '', '', '', '', 1, '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":3},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":3},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":3},\"addpermissions3\":{\"action\":\"view.create\",\"implementation\":3},\"addpermissions4\":{\"action\":\"view.delete\",\"implementation\":3},\"addpermissions5\":{\"action\":\"view.access\",\"implementation\":3}}', '{}', '{\"addtabs0\":{\"name\":\"Details\"},\"addtabs1\":{\"name\":\"States\"}}', '{}', '', 1, '', '', '{}', '', '6acc4069-1c33-4470-85a6-07bc9bb16d10', 'images/vdm/icon/country.png#joomlaImage://local-images/vdm/icon/country.png?width=128&height=128', '', '', '', '', '', '', 'utf8mb4', 'utf8mb4_unicode_ci', 'InnoDB', 'DYNAMIC', 'Countries', 'Country', '', '', '', '', '', '', '', '', '', '', '', 'W0NVU1RPTUNPREU9c2F2ZUdVSURQb3dlcl0=', 'W0NVU1RPTUNPREU9Zm9ybUNvbnRyb2xsZXJFZGl0XQ==', '', '', 'W0NVU1RPTUNPREU9c2V0R1VJREZvcm1Qb3dlcl0=', '', '', '', '', '', '', '', '', 'A list of countries.', 2, 'LS0NCi0tIER1bXBpbmcgZGF0YSBmb3IgdGFibGUgYCNfX2RlbW9fY291bnRyeWANCi0tDQoNCklOU0VSVCBJTlRPIGAjX19kZW1vX2NvdW50cnlgIChgaWRgLCBgbmFtZWAsIGBzdWJyZWdpb25gLCBgY2FwaXRhbGAsIGBsb25naXR1ZGVgLCBgbGF0aXR1ZGVgLCBgZW1vaml1YCwgYGVtb2ppYCwgYHRsZGAsIGBuYXRpb25hbGl0eWAsIGBuYXRpdmVgLCBgbnVtZXJpY19jb2RlYCwgYHBob25lY29kZWAsIGB3aWtpZGF0YWlkYCwgYG1ldGFrZXlgLCBgbWV0YWRlc2NgLCBgbWV0YWRhdGFgLCBgb3JkZXJpbmdgLCBgcHVibGlzaGVkYCwgYG1vZGlmaWVkYCwgYGNyZWF0ZWRgLCBgaGl0c2AsIGB2ZXJzaW9uYCwgYHBhcmFtc2AsIGBjdXJyZW5jeV9uYW1lYCwgYGNvZGV0aHJlZWAsIGBzeW1ib2xgLCBgZ3VpZGAsIGBpc28yYCwgYGlzbzNgKSBWQUxVRVMNCigxLCAnTmFtaWJpYScsICdjMWNjZTkzMC01MmFhLTQ4ZmMtYjVkNC1mZDVjOTcyOWE3MzUnLCAnYmJiMGQ1NjQtY2UwNi00NGQzLThhMWYtZDVlNTdmNTZiMTEzJywgMTcuMDAwMDAwMDAsIC0yMi4wMDAwMDAwMCwgJ1UrMUYxRjMgVSsxRjFFNicsICfwn4ez8J+HpicsICcubmEnLCAnTmFtaWJpYW4nLCAnTmFtaWJpYScsIDUxNiwgMjY0LCAnUTEwMzAnLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgMSwgMSwgJzIwMjUtMDMtMjggMDg6NTU6MTEnLCAnMjAyNS0wMy0yNSAxNjoxMDo0MycsICcnLCAyNiwgJycsICdOYW1pYmlhbiBEb2xsYXInLCAnTkFEJywgJyQnLCAnNjJiNTAzOTItNTRlMi00NDkwLWFkOTQtOGRlMDc3MzVhNTg0JywgJ05BJywgJ05BTScpLA0KKDIsICdTb3V0aCBBZnJpY2EnLCAnYzFjY2U5MzAtNTJhYS00OGZjLWI1ZDQtZmQ1Yzk3MjlhNzM1JywgJzQ4ODJkZWEwLTVmZjctNGU3Yi1hMGU4LTkwZDViYWFiNWMwNCcsIDI0LjAwMDAwMDAwLCAtMjkuMDAwMDAwMDAsICdVKzFGMUZGIFUrMUYxRTYnLCAn8J+Hv/Cfh6YnLCAnLnphJywgJ1NvdXRoIEFmcmljYW4nLCAnU291dGggQWZyaWNhJywgNzEwLCAyNywgJ1EyNTgnLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgMiwgMSwgJzIwMjUtMDMtMjggMDg6NDY6NTgnLCAnMjAyNS0wMy0yNiAxNDo1ODo1NCcsICcnLCA3LCAnJywgJ1NvdXRoIEFmcmljYW4gcmFuZCcsICdaQVInLCAnUicsICcyZmNhOWU3OS1jOGM5LTQ1N2YtYTJhMi05M2JlNzkyMDdlZGUnLCAnWkEnLCAnWkFGJyk7', 'Country', 1, '{\"privacy\":{\"activate\":\"0\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"335866ce-b81b-4329-901d-c20254135c9c\"},\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"0\",\"direction\":\"asc\"}}},\"admin_view_headers\":{\"add_admin_view_model\":\"0\",\"admin_view_model\":\"\",\"power_admin_view_model\":[],\"add_admin_view_html\":\"0\",\"admin_view_html\":\"\",\"power_admin_view_html\":[],\"add_admin_view\":\"0\",\"admin_view\":\"\",\"power_admin_view\":[],\"add_admin_view_controller\":\"0\",\"admin_view_controller\":\"\",\"power_admin_view_controller\":[],\"add_admin_views_model\":\"0\",\"admin_views_model\":\"\",\"power_admin_views_model\":[],\"add_admin_views_html\":\"0\",\"admin_views_html\":\"\",\"power_admin_views_html\":[],\"add_admin_views\":\"0\",\"admin_views\":\"\",\"power_admin_views\":[],\"add_admin_views_controller\":\"0\",\"admin_views_controller\":\"\",\"power_admin_views_controller\":[],\"add_site_admin_view_model\":\"0\",\"site_admin_view_model\":\"\",\"power_site_admin_view_model\":[],\"add_site_admin_view_html\":\"0\",\"site_admin_view_html\":\"\",\"power_site_admin_view_html\":[],\"add_site_admin_view\":\"0\",\"site_admin_view\":\"\",\"power_site_admin_view\":[],\"add_import_custom_controller\":\"0\",\"import_custom_controller\":\"\",\"power_import_custom_controller\":[],\"add_import_custom_model\":\"0\",\"import_custom_model\":\"\",\"power_import_custom_model\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', 1, '2025-03-24 12:36:05', '2025-03-28 12:25:09', 44, '', 1, 36),
+(301, 1, '', '', 1, 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 1, '', 1, '', '', '', '', '', '', 1, '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":3},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":3},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":3},\"addpermissions3\":{\"action\":\"view.edit.access\",\"implementation\":3},\"addpermissions4\":{\"action\":\"view.edit.created_by\",\"implementation\":3},\"addpermissions5\":{\"action\":\"view.edit.created\",\"implementation\":3},\"addpermissions6\":{\"action\":\"view.create\",\"implementation\":3},\"addpermissions7\":{\"action\":\"view.delete\",\"implementation\":3},\"addpermissions8\":{\"action\":\"view.access\",\"implementation\":3}}', '{}', '{}', '{}', '', '', '', '', '{}', '', '9eefa86b-6294-4512-8d62-979abf16c00d', 'images/vdm/icon/region.png#joomlaImage://local-images/vdm/icon/region.png?width=128&height=128', '', '', '', '', '', '', 'utf8mb4', 'utf8mb4_unicode_ci', 'InnoDB', 'DYNAMIC', 'Regions', 'Region', '', '', '', '', '', '', '', '', '', '', '', 'W0NVU1RPTUNPREU9c2F2ZUdVSURQb3dlcl0=', 'W0NVU1RPTUNPREU9Zm9ybUNvbnRyb2xsZXJFZGl0XQ==', '', '', 'W0NVU1RPTUNPREU9c2V0R1VJREZvcm1Qb3dlcl0=', '', '', '', '', '', '', '', '', 'Regions', 2, 'LS0NCi0tIER1bXBpbmcgZGF0YSBmb3IgdGFibGUgYCNfX2RlbW9fcmVnaW9uYA0KLS0NCg0KSU5TRVJUIElOVE8gYCNfX2RlbW9fcmVnaW9uYCAoYGlkYCwgYG5hbWVgLCBgd2lraWRhdGFpZGAsIGBtZXRha2V5YCwgYG1ldGFkZXNjYCwgYG1ldGFkYXRhYCwgYG9yZGVyaW5nYCwgYHB1Ymxpc2hlZGAsIGBtb2RpZmllZGAsIGBjcmVhdGVkYCwgYGhpdHNgLCBgdmVyc2lvbmAsIGBwYXJhbXNgLCBgZ3VpZGApIFZBTFVFUw0KKDEsICdBZnJpY2EnLCAnUTE1JywgJycsICcnLCAne1wicm9ib3RzXCI6XCJcIixcImF1dGhvclwiOlwiXCIsXCJyaWdodHNcIjpcIlwifScsIDEsIDEsICcyMDI1LTAzLTI2IDEzOjEwOjMyJywgJzIwMjUtMDMtMjUgMTU6Mzg6MTMnLCAnJywgNSwgJycsICcyZTQ4NzM0Yi05OTc4LTRmZTEtYWU5MC1iNzVlM2RlOTA1M2QnKSwNCigyLCAnQXNpYScsICdRNDgnLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgMiwgMSwgJzIwMjUtMDMtMjggMDk6NDc6NTMnLCAnMjAyNS0wMy0yNiAxMzoyMjoxOScsICcnLCAyLCAnJywgJ2ZlYTg1MDM2LTg4MjItNGQ5Ni1iOGM3LTViZjQ1MTE0YzQwYScpOw==', 'Regions', 1, '{\"privacy\":{\"activate\":\"0\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"2c74c3f5-2bfc-4916-b105-4f5d5e2bea25\"},\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"0\",\"direction\":\"asc\"}}},\"admin_view_headers\":{\"add_admin_view_model\":\"0\",\"admin_view_model\":\"\",\"power_admin_view_model\":[],\"add_admin_view_html\":\"0\",\"admin_view_html\":\"\",\"power_admin_view_html\":[],\"add_admin_view\":\"0\",\"admin_view\":\"\",\"power_admin_view\":[],\"add_admin_view_controller\":\"0\",\"admin_view_controller\":\"\",\"power_admin_view_controller\":[],\"add_admin_views_model\":\"0\",\"admin_views_model\":\"\",\"power_admin_views_model\":[],\"add_admin_views_html\":\"0\",\"admin_views_html\":\"\",\"power_admin_views_html\":[],\"add_admin_views\":\"0\",\"admin_views\":\"\",\"power_admin_views\":[],\"add_admin_views_controller\":\"0\",\"admin_views_controller\":\"\",\"power_admin_views_controller\":[],\"add_site_admin_view_model\":\"0\",\"site_admin_view_model\":\"\",\"power_site_admin_view_model\":[],\"add_site_admin_view_html\":\"0\",\"site_admin_view_html\":\"\",\"power_site_admin_view_html\":[],\"add_site_admin_view\":\"0\",\"site_admin_view\":\"\",\"power_site_admin_view\":[],\"add_import_custom_controller\":\"0\",\"import_custom_controller\":\"\",\"power_import_custom_controller\":[],\"add_import_custom_model\":\"0\",\"import_custom_model\":\"\",\"power_import_custom_model\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', 1, '2025-03-25 09:11:11', '2025-03-28 12:24:23', 21, '', 1, 252),
+(302, 1, '', '', 1, 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 1, '', 1, '', '', '', '', '', '', 1, '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":3},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":3},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":3},\"addpermissions3\":{\"action\":\"view.edit.access\",\"implementation\":3},\"addpermissions4\":{\"action\":\"view.edit.created_by\",\"implementation\":3},\"addpermissions5\":{\"action\":\"view.edit.created\",\"implementation\":3},\"addpermissions6\":{\"action\":\"view.create\",\"implementation\":3},\"addpermissions7\":{\"action\":\"view.delete\",\"implementation\":3},\"addpermissions8\":{\"action\":\"view.access\",\"implementation\":3}}', '{}', '{}', '{}', '', '', '', '', '{}', '', '2e451812-45af-4015-aa0c-f5912702c9af', 'images/vdm/icon/subregion.png#joomlaImage://local-images/vdm/icon/subregion.png?width=128&height=128', '', '', '', '', '', '', 'utf8mb4', 'utf8mb4_unicode_ci', 'InnoDB', 'DYNAMIC', 'Subregions', 'Subregion', '', '', '', '', '', '', '', '', '', '', '', 'W0NVU1RPTUNPREU9c2F2ZUdVSURQb3dlcl0=', 'W0NVU1RPTUNPREU9Zm9ybUNvbnRyb2xsZXJFZGl0XQ==', '', '', 'W0NVU1RPTUNPREU9c2V0R1VJREZvcm1Qb3dlcl0=', '', '', '', '', '', '', '', '', 'Subregions', 2, 'LS0NCi0tIER1bXBpbmcgZGF0YSBmb3IgdGFibGUgYCNfX2RlbW9fc3VicmVnaW9uYA0KLS0NCg0KSU5TRVJUIElOVE8gYCNfX2RlbW9fc3VicmVnaW9uYCAoYGlkYCwgYG5hbWVgLCBgcmVnaW9uYCwgYHdpa2lkYXRhaWRgLCBgbWV0YWtleWAsIGBtZXRhZGVzY2AsIGBtZXRhZGF0YWAsIGBvcmRlcmluZ2AsIGBwdWJsaXNoZWRgLCBgbW9kaWZpZWRgLCBgY3JlYXRlZGAsIGBoaXRzYCwgYHZlcnNpb25gLCBgcGFyYW1zYCwgYGd1aWRgKSBWQUxVRVMNCigxLCAnU291dGhlcm4gQWZyaWNhJywgJzJlNDg3MzRiLTk5NzgtNGZlMS1hZTkwLWI3NWUzZGU5MDUzZCcsICdRMjczOTQnLCAnJywgJycsICd7XCJyb2JvdHNcIjpcIlwiLFwiYXV0aG9yXCI6XCJcIixcInJpZ2h0c1wiOlwiXCJ9JywgMSwgMSwgJzIwMjUtMDMtMjcgMTQ6MTI6NTknLCAnMjAyNS0wMy0yNSAxNTo0MDoxMycsICcnLCAyNSwgJycsICdjMWNjZTkzMC01MmFhLTQ4ZmMtYjVkNC1mZDVjOTcyOWE3MzUnKSwNCigyLCAnQ2VudHJhbCBBc2lhJywgJ2ZlYTg1MDM2LTg4MjItNGQ5Ni1iOGM3LTViZjQ1MTE0YzQwYScsICdRMjcyNzUnLCAnJywgJycsICcnLCAnJywgMSwgJycsICcyMDI1LTAzLTI4IDA5OjQ3OjUzJywgJycsIDEsICcnLCAnMmNjY2IwNzgtYTIzYi00NWIyLWJmYTUtYWVmNGVmZTk1ZWM0Jyk7', 'Sub-Regions', 1, '{\"privacy\":{\"activate\":\"0\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"2c74c3f5-2bfc-4916-b105-4f5d5e2bea25\"},\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"0\",\"direction\":\"asc\"}}},\"admin_view_headers\":{\"add_admin_view_model\":\"0\",\"admin_view_model\":\"\",\"power_admin_view_model\":[],\"add_admin_view_html\":\"0\",\"admin_view_html\":\"\",\"power_admin_view_html\":[],\"add_admin_view\":\"0\",\"admin_view\":\"\",\"power_admin_view\":[],\"add_admin_view_controller\":\"0\",\"admin_view_controller\":\"\",\"power_admin_view_controller\":[],\"add_admin_views_model\":\"0\",\"admin_views_model\":\"\",\"power_admin_views_model\":[],\"add_admin_views_html\":\"0\",\"admin_views_html\":\"\",\"power_admin_views_html\":[],\"add_admin_views\":\"0\",\"admin_views\":\"\",\"power_admin_views\":[],\"add_admin_views_controller\":\"0\",\"admin_views_controller\":\"\",\"power_admin_views_controller\":[],\"add_site_admin_view_model\":\"0\",\"site_admin_view_model\":\"\",\"power_site_admin_view_model\":[],\"add_site_admin_view_html\":\"0\",\"site_admin_view_html\":\"\",\"power_site_admin_view_html\":[],\"add_site_admin_view\":\"0\",\"site_admin_view\":\"\",\"power_site_admin_view\":[],\"add_import_custom_controller\":\"0\",\"import_custom_controller\":\"\",\"power_import_custom_controller\":[],\"add_import_custom_model\":\"0\",\"import_custom_model\":\"\",\"power_import_custom_model\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', 1, '2025-03-25 13:19:47', '2025-03-28 12:24:16', 25, '', 1, 253);
--
-- Dumping data for table `#__componentbuilder_custom_admin_view`
@@ -2205,7 +2211,8 @@ INSERT INTO `#__componentbuilder_custom_code` (`id`, `code`, `component`, `comme
(397, 'CQkvKiogQHZhciBKb29tbGFcQ01TXFdlYkFzc2V0XFdlYkFzc2V0TWFuYWdlciAkd2EgKi8NCgkJJHdhID0gJHRoaXMtPmdldERvY3VtZW50KCktPmdldFdlYkFzc2V0TWFuYWdlcigpOw0KDQoJCS8vIHNldCB0aGUgdXJsIGFzIG5lZWRlZA0KCQkkYXBwID0gSm9vbWxhX19fMzk0MDMwNjJfODRmYl80NmUwX2JhYzRfMDAyM2Y3NjZlODI3X19fUG93ZXI6OmdldEFwcGxpY2F0aW9uKCk7DQoJCSR1cmwgPSAnJzsNCgkJaWYgKCRhcHAtPmlzQ2xpZW50KCdzaXRlJykpDQoJCXsNCgkJCSR1cmwgPSBKb29tbGFfX19lZWNjMTQzZV9iNWNmXzRjMzNfYmE0ZF85N2RhMWRmNjE0MjJfX19Qb3dlcjo6cm9vdCgpOw0KCQl9DQoNCgkJLy8gZ2V0IHRoZSBmb3JtIHRva2VuDQoJCSR0b2tlbiA9IEpvb21sYV9fXzViYTM4NTEzXzVjNGZfNGIwZF85MzVlXzQ5ZTk4NmE2YmNlOF9fX1Bvd2VyOjpnZXRGb3JtVG9rZW4oKTsNCgkJJGVudGl0eSA/Pz0gJHRoaXMtPml0ZW0tPmd1aWQgPz8gMDsNCgkJJHRhcmdldCA/Pz0gYmFzZTY0X2VuY29kZSgnW1tbdmlld11dXScpOw0KDQoJCS8vIERlZmluZSB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHVwbG9hZGVyDQoJCSR1cGxvYWRlckNvbmZpZyA9IFsNCgkJCSJlbmRwb2ludF90eXBlIiA9PiAieyR1cmx9aW5kZXgucGhwP29wdGlvbj1jb21fW1tbY29tcG9uZW50XV1dJnRhc2s9YWpheC5bW1thcmcyXV1dJmZvcm1hdD1qc29uJnJhdz10cnVlJnskdG9rZW59PTEmdGFyZ2V0PXskdGFyZ2V0fSIsDQoJCQkidGFyZ2V0X2NsYXNzIiA9PiAiW1tbYXJnMF1dXSIsDQoJCQkiW1tbYXJnMV1dXSIgPT4gWw0KCQkJCSJlbmRwb2ludF91cGxvYWQiID0+ICJ7JHVybH1pbmRleC5waHA/b3B0aW9uPWNvbV9bW1tjb21wb25lbnRdXV0mdGFzaz1hamF4LltbW2FyZzNdXV0mZm9ybWF0PWpzb24mcmF3PXRydWUmeyR0b2tlbn09MSZlbnRpdHk9eyRlbnRpdHl9JnRhcmdldD17JHRhcmdldH0iLA0KCQkJCSJlbmRwb2ludF9kaXNwbGF5IiA9PiAieyR1cmx9aW5kZXgucGhwP29wdGlvbj1jb21fW1tbY29tcG9uZW50XV1dJnRhc2s9YWpheC5bW1thcmc0XV1dJmZvcm1hdD1qc29uJnJhdz10cnVlJnskdG9rZW59PTEmZW50aXR5PXskZW50aXR5fSZ0YXJnZXQ9eyR0YXJnZXR9IiwNCgkJCQkiZW5kcG9pbnRfZGVsZXRlIiA9PiAieyR1cmx9aW5kZXgucGhwP29wdGlvbj1jb21fW1tbY29tcG9uZW50XV1dJnRhc2s9YWpheC5bW1thcmc1XV1dJmZvcm1hdD1qc29uJnJhdz10cnVlJnskdG9rZW59PTEiLA0KCQkJXSwNCgkJXTsNCg0KCQkvLyBDb252ZXJ0IHRoZSBQSFAgYXJyYXkgdG8gYSBKYXZhU2NyaXB0IG9iamVjdA0KCQkkdXBsb2FkZXJDb25maWdKc29uID0ganNvbl9lbmNvZGUoJHVwbG9hZGVyQ29uZmlnKTsNCg0KCQkvLyBBZGQgdGhlIGlubGluZSBzY3JpcHQgd2l0aCB0aGUgdXBsb2FkZXIgY29uZmlndXJhdGlvbg0KCQkkd2EtPmFkZElubGluZVNjcmlwdCgiDQoJCQl3aW5kb3cuVkRNID0gd2luZG93LlZETSB8fCB7fTsNCgkJCXdpbmRvdy5WRE0udWlraXQgPSB3aW5kb3cuVkRNLnVpa2l0IHx8IHt9Ow0KCQkJd2luZG93LlZETS51aWtpdC5jb25maWcgPSAkdXBsb2FkZXJDb25maWdKc29uOw0KCQkiKTs=', '', 1, '', 'vdmUploaderConfig', '', '', '', 'vdmUploaderConfig', 2, '', '', '', 1, '2024-09-10 01:01:26', '2024-10-08 00:54:26', 12, '', 215),
(398, 'CQlIdG1sOjpfKCdzY3JpcHQnLCAnbWVkaWEvY29tX1tbW2NvbXBvbmVudF1dXS91aWtpdC12My9qcy91aWtpdC5taW4uanMnLCBbJ3ZlcnNpb24nID0+ICdhdXRvJ10pOw0KCQlIdG1sOjpfKCdzY3JpcHQnLCAnbWVkaWEvY29tX1tbW2NvbXBvbmVudF1dXS91aWtpdC12My9qcy91aWtpdC1pY29ucy5taW4uanMnLCBbJ3ZlcnNpb24nID0+ICdhdXRvJ10pOw0KCQlIdG1sOjpfKCdzY3JpcHQnLCAnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL3ZkbS1pby91aWtpdEAzLjAuMC9kaXN0L2pzL3ZkbS5taW4uanMnLCBbJ3ZlcnNpb24nID0+ICdhdXRvJ10pOw0KCQlIdG1sOjpfKCdzdHlsZXNoZWV0JywgJ21lZGlhL2NvbV9bW1tjb21wb25lbnRdXV0vdWlraXQtdjMvY3NzL3Vpa2l0Lm1pbi5jc3MnLCBbJ3ZlcnNpb24nID0+ICdhdXRvJ10pOw==', '', 1, '', 'addUikitThreeToAdminViews', '', '', '', 'addUikitThreeToAdminViews', 2, '', '', '', 1, '2024-09-10 01:03:38', '2024-09-16 18:12:10', 3, '', 216),
(400, 'CQkJLy8gR2V0IEFwcGxpY2F0aW9uIG9iamVjdA0KCQkJJHRoaXMtPmFwcCA/Pz0gSm9vbWxhX19fMzk0MDMwNjJfODRmYl80NmUwX2JhYzRfMDAyM2Y3NjZlODI3X19fUG93ZXI6OmdldEFwcGxpY2F0aW9uKCk7DQoJCQkkdGhpcy0+YXBwLT5lbnF1ZXVlTWVzc2FnZSgnPGgzPlVubG9jayB0aGUgUG93ZXIgb2YgSm9vbWxhISBEZXZlbG9wbWVudDwvaDM+PHA+Q3VyaW91cyBhYm91dCBob3cgdGhpcyA8Yj5bW1thcmcwXV1dPC9iPiBjb21wb25lbnQgd2FzIGJ1aWx0PyBEaXNjb3ZlciB0aGUgcG93ZXJmdWwgSm9vbWxhISBDb21wb25lbnQgQnVpbGRlciAoPGEgaHJlZj0iaHR0cDovL3ZkbS5iei9jb21wb25lbnQtYnVpbGRlciIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJKb29tbGEhIENvbXBvbmVudCBCdWlsZGVyIj5KQ0I8L2E+KSwgYSB0b29sIHRoYXQgc2ltcGxpZmllcyBhbmQgZW5oYW5jZXMgY29tcG9uZW50IGRldmVsb3BtZW50LiBKb2luIHVzIG9uIDxhIGhyZWY9Imh0dHBzOi8vZ2l0LnZkbS5kZXYvam9vbWxhIiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9Ikpvb21sYSEgQ29tcG9uZW50IEJ1aWxkZXIiPkdJVkVEPC9hPiB0byBleHBsb3JlIG1vcmUgYW5kIHNlZSBob3cgeW91IGNhbiBjcmVhdGUgeW91ciBvd24gY3VzdG9tIGNvbXBvbmVudHMuIFRoZSBmdXR1cmUgb2YgPGEgaHJlZj0iaHR0cDovL3ZkbS5iei9jb21wb25lbnQtYnVpbGRlciIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJKb29tbGEgQ29tcG9uZW50IEJ1aWxkZXIiPkpvb21sYSEgRGV2ZWxvcG1lbnQ8L2E+IHN0YXJ0cyBoZXJlITwvcD4nLCAnSW5mbycpOw0K', '', 1, '', 'unlockThePowerOfJoomlaDevelopment', '', '', '', 'Unlock the Power of Joomla! Development', 2, '', '', '', 1, '2024-09-16 00:00:42', '2024-09-16 16:17:20', 5, '', 218),
-(411, 'CS8qKg0KCSAqIFRoZSBTcHJlYWRzaGVldCBIZWFkZXJzDQoJICoNCgkgKiBAdmFyICAgYXJyYXkNCgkgKiBAc2luY2UgNS4wLjINCgkgKi8NCglwcm90ZWN0ZWQgc3RhdGljIGFycmF5ICRTcHJlYWRzaGVldEhlYWRlcnMgPSBbXTsNCg0KCS8qKg0KCSAqIFRoZSBJdGVtIEltcG9ydCBGaWVsZHMNCgkgKg0KCSAqIEB2YXIgICBhcnJheQ0KCSAqIEBzaW5jZSA1LjAuMg0KCSAqLw0KCXByb3RlY3RlZCBzdGF0aWMgYXJyYXkgJEl0ZW1JbXBvcnRGaWVsZHMgPSBbXTsNCg0KCS8qKg0KCSAqIEdldCB0aGUgbGlzdCBvZiBoZWFkZXJzIHRvIHNob3cgaW4gY29sdW1uIGZpZWxkDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheSAgVGhlIGxpc3Qgb2YgaGVhZGVycw0KCSAqIEBzaW5jZSAgIDUuMC4yDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRTcHJlYWRzaGVldEhlYWRlcnMoKTogYXJyYXkNCgl7DQoJCSRlbmRDb2x1bW4gPSAnREEnOw0KCQkkY29sdW1uID0gJ0EnOw0KCQkkb3B0aW9ucyA9IFtdOw0KCQl3aGlsZSAoJGNvbHVtbiAhPT0gJGVuZENvbHVtbikNCgkJew0KCQkJJG9wdGlvbnNbJGNvbHVtbl0gPSBzZWxmOjpnZXRTcHJlYWRzaGVldEhlYWRlcigkY29sdW1uKTsNCgkJCSRjb2x1bW4gPSArKyRjb2x1bW47DQoJCX0NCgkJcmV0dXJuICRvcHRpb25zOw0KCX0NCg0KCS8qKg0KCSAqIEdldCB0aGUgaGVhZGVyIGNvbHVtbiB2YWx1ZSAobmFtZSkNCgkgKg0KCSAqIEByZXR1cm4gIHN0cmluZyAgVGhlIGhlYWRlciB2YWx1ZQ0KCSAqIEBzaW5jZSAgIDUuMC4yDQoJICovDQoJcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBnZXRTcHJlYWRzaGVldEhlYWRlcihzdHJpbmcgJGNvbHVtbik6IHN0cmluZw0KCXsNCgkJcmV0dXJuIHNlbGY6OiRTcHJlYWRzaGVldEhlYWRlcnNbJGNvbHVtbl0gPz8gJGNvbHVtbjsNCgl9DQoNCgkvKioNCgkgKiBTZXQgdGhlIGhlYWRlciBjb2x1bW4gdmFsdWVzDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICogQHNpbmNlICAgNS4wLjINCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNldFNwcmVhZHNoZWV0SGVhZGVycyhhcnJheSAkaGVhZGVycyk6IHZvaWQNCgl7DQoJCXNlbGY6OiRTcHJlYWRzaGVldEhlYWRlcnMgPSAkaGVhZGVyczsNCgl9DQoNCgkvKioNCgkgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGltcG9ydCBmaWVsZHMgZnJvbSB0aGUgaXRlbSBlbnRpdHkuDQoJICoNCgkgKiBAcGFyYW0gYm9vbCAgJHNpbXBsZSBUaGUgc3dpdGNoIHRvIHJldHVybiBzaW1wbGUgbGlzdCAodG8gbGVhdmUgb3V0IHRoZSBsaW5rIGRhdGEpDQoJICoNCgkgKiBAcmV0dXJuIGFycmF5IFJldHVybnMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgd2hlcmUgdGhlIGtleSBpcyB0aGUgdGFibGUuY29sdW1uIG5hbWUgYW5kIHRoZSB2YWx1ZSANCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHRoZSBsYWJlbCBvZiB0aGUgY29sdW1uIChwb3RlbnRpYWxseSBpbmNsdWRpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbikuDQoJICogQHNpbmNlICA1LjAuMg0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0SXRlbUltcG9ydEZpZWxkcyhib29sICRzaW1wbGUgPSBmYWxzZSk6IGFycmF5DQoJew0KCQlpZiAoIWVtcHR5KHNlbGY6OiRJdGVtSW1wb3J0RmllbGRzKSkNCgkJew0KCQkJcmV0dXJuIHNlbGY6OiRJdGVtSW1wb3J0RmllbGRzOw0KCQl9DQpbW1thcmcwXV1dDQoJCXNlbGY6OiRJdGVtSW1wb3J0RmllbGRzID0gc2VsZjo6Z2V0SW1wb3J0RmllbGRzKCRwYXJlbnQsICR0YWJsZXMsICRzaW1wbGUpOw0KDQoJCXJldHVybiBzZWxmOjokSXRlbUltcG9ydEZpZWxkczsNCgl9DQoNCgkvKioNCgkgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIHRhcmdldCBmaWVsZHMgZnJvbSB0aGUgc3BlY2lmaWVkIHRhYmxlcywgd2l0aCBhcHByb3ByaWF0ZSBmaWx0ZXJpbmcgYmFzZWQgb24NCgkgKiBydWxlcyBsaWtlIGlnbm9yaW5nIGNlcnRhaW4gY29sdW1ucywgbGlua2luZyBydWxlcywgYW5kIHVzZXIgcm9sZXMuDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nICRwYXJlbnQgVGhlIHBhcmVudCBlbnRpdHkgdG8gY2hlY2sgZm9yIHVwc3RyZWFtIGxpbmtpbmcuDQoJICogQHBhcmFtIGFycmF5ICAkdGFibGVzIEFuIGFzc29jaWF0aXZlIGFycmF5IG9mIHRhYmxlcyBhbmQgd2hldGhlciB0byBhZGQgR1VJRCBmb3IgZWFjaCB0YWJsZS4gDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUga2V5cyByZXByZXNlbnQgdGFibGUgbmFtZXMsIGFuZCB0aGUgdmFsdWVzIGFyZSBib29sZWFucyB0byBpbmRpY2F0ZQ0KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hldGhlciB0byBpbmNsdWRlIHRoZSAnZ3VpZCcgY29sdW1uLg0KCSAqIEBwYXJhbSBib29sICAkc2ltcGxlIFRoZSBzd2l0Y2ggdG8gcmV0dXJuIHNpbXBsZSBsaXN0ICh0byBsZWF2ZSBvdXQgdGhlIGxpbmsgZGF0YSkNCgkgKg0KCSAqIEByZXR1cm4gYXJyYXkgUmV0dXJucyBhbiBhc3NvY2lhdGl2ZSBhcnJheSB3aGVyZSB0aGUga2V5IGlzIHRoZSB0YWJsZS5jb2x1bW4gbmFtZSBhbmQgdGhlIHZhbHVlIA0KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgdGhlIGxhYmVsIG9mIHRoZSBjb2x1bW4gKHBvdGVudGlhbGx5IGluY2x1ZGluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uKS4NCgkgKiBAc2luY2UgIDUuMC4yDQoJICovDQoJcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBnZXRJbXBvcnRGaWVsZHMoc3RyaW5nICRwYXJlbnQsIGFycmF5ICR0YWJsZXMsIGJvb2wgJHNpbXBsZSA9IGZhbHNlKTogYXJyYXkNCgl7DQoJCS8vIEdldCB0aGUgY3VycmVudCB1c2VyIG9iamVjdC4NCgkJJHVzZXIgPSBKb29tbGFfX18zOTQwMzA2Ml84NGZiXzQ2ZTBfYmFjNF8wMDIzZjc2NmU4MjdfX19Qb3dlcjo6Z2V0VXNlcigpOw0KDQoJCSRpZ25vcmUgPSBbXTsNCgkJJHRhcmdldF9maWVsZHMgPSBbXTsNCg0KCQkvLyBMb29wIHRocm91Z2ggZWFjaCB0YWJsZSBwcm92aWRlZC4NCgkJZm9yZWFjaCAoJHRhYmxlcyBhcyAkdGFibGUgPT4gJGFkZF9ndWlkKQ0KCQl7DQoJCQkvLyBSZXRyaWV2ZSB0aGUgZmllbGRzIGZvciB0aGUgdGFibGUuIElmIG5vIGZpZWxkcywgZGVmYXVsdCB0byBhbiBlbXB0eSBhcnJheS4NCgkJCSRpdGVtcyA9IFN1cGVyX19fZmY4ZDVmZGJfMmQxZl80MTc4X2JkMThfYTQzYjhlZmQxMDY4X19fUG93ZXI6Ol8oJ1RhYmxlJyktPmZpZWxkcygkdGFibGUsIGZhbHNlLCB0cnVlKSA/PyBbXTsNCg0KCQkJLy8gUHJvY2VzcyBlYWNoIGZpZWxkIGlmIHRoZSB0YWJsZSBjb250YWlucyBhbnkgZmllbGRzLg0KCQkJZm9yZWFjaCAoJGl0ZW1zIGFzICRpdGVtKQ0KCQkJew0KCQkJCSRmaWVsZF9uYW1lID0gJGl0ZW1bJ25hbWUnXTsNCg0KCQkJCS8vIElnbm9yZSBkb3duc3RyZWFtIGxpbmtpbmcgY29sdW1ucy4NCgkJCQlpZiAoaXNzZXQoJGlnbm9yZVskdGFibGVdWyRmaWVsZF9uYW1lXSkpDQoJCQkJew0KCQkJCQljb250aW51ZTsNCgkJCQl9DQoNCgkJCQkvLyBTa2lwIGFkZGluZyB0aGUgJ2d1aWQnIGZpZWxkIGlmIHRoZSB0YWJsZSBkb2Vzbid0IHJlcXVpcmUgaXQuDQoJCQkJaWYgKCRmaWVsZF9uYW1lID09PSAnZ3VpZCcgJiYgISRhZGRfZ3VpZCkNCgkJCQl7DQoJCQkJCWNvbnRpbnVlOw0KCQkJCX0NCg0KCQkJCS8vIFNraXAgZmllbGRzIFsgYWRkIG1vcmUgZmllbGQgeW91IHdvdWxkIGxpa2UgdG8gc2tpcCBpbiBhbGwgdGFyZ2V0ZWQgdGFibGVzIF0NCgkJCQlpZiAoW1tbYXJnMV1dXSRmaWVsZF9uYW1lID09PSAnYWNjZXNzJyB8fA0KCQkJCQkkZmllbGRfbmFtZSA9PT0gJ21ldGFkYXRhJyB8fA0KCQkJCQkkZmllbGRfbmFtZSA9PT0gJ21ldGFrZXknIHx8DQoJCQkJCSRmaWVsZF9uYW1lID09PSAnbWV0YWRlc2MnICkNCgkJCQl7DQoJCQkJCWNvbnRpbnVlOw0KCQkJCX0NCg0KCQkJCS8vIEluaXRpYWxpemUgYWRkaXRpb25hbCBpbmZvIHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBmaWVsZCBsYWJlbC4NCgkJCQkkaW5mbyA9ICcgLSAnIC4gJHRhYmxlIC4gJy0+JyAuICRmaWVsZF9uYW1lIC4gJzonIC4gc3RydG9sb3dlcigkaXRlbVsnZGInXVsndHlwZSddKTsNCg0KCQkJCS8vIEhhbmRsZSBsaW5raW5nIGluZm9ybWF0aW9uIGlmIGF2YWlsYWJsZS4NCgkJCQlpZiAoIWVtcHR5KCRpdGVtWydsaW5rJ11bJ2VudGl0eSddKSAmJg0KCQkJCQkhZW1wdHkoJGl0ZW1bJ2xpbmsnXVsndmFsdWUnXSkgJiYNCgkJCQkJIWVtcHR5KCRpdGVtWydsaW5rJ11bJ2tleSddKSkNCgkJCQl7DQoJCQkJCQ0KCQkJCQkvLyBJZ25vcmUgdXBzdHJlYW0gbGlua2luZyBjb2x1bW5zLg0KCQkJCQlpZiAoaXNzZXQoJGlnbm9yZVskaXRlbVsnbGluayddWydlbnRpdHknXV1bJGl0ZW1bJ2xpbmsnXVsna2V5J11dKSkNCgkJCQkJew0KCQkJCQkJY29udGludWU7DQoJCQkJCX0NCg0KCQkJCQkvLyBTa2lwIHBhcmVudCBsaW5rZXJzIGZvciBub24tcGFyZW50IHRhYmxlcy4NCgkJCQkJaWYgKCR0YWJsZSAhPT0gJHBhcmVudCAmJiAkaXRlbVsnbGluayddWydlbnRpdHknXSA9PT0gJHBhcmVudCkNCgkJCQkJew0KCQkJCQkJY29udGludWU7DQoJCQkJCX0NCg0KCQkJCQkkaW5mbyAuPSAnID4+PiAnIC4gJGl0ZW1bJ2xpbmsnXVsnZW50aXR5J10gLiAnLT5bJyAuICRpdGVtWydsaW5rJ11bJ3ZhbHVlJ10gLiAnXS0+JyAuICRpdGVtWydsaW5rJ11bJ2tleSddOw0KCQkJCQkkaWdub3JlWyRpdGVtWydsaW5rJ11bJ2VudGl0eSddXSA9ICRpdGVtWydsaW5rJ11bJ2tleSddOw0KCQkJCX0NCg0KCQkJCWlmICgkc2ltcGxlKQ0KCQkJCXsNCgkJCQkJJHRhcmdldF9maWVsZHNbJHRhYmxlIC4gJy4nIC4gJGZpZWxkX25hbWVdID0gVGV4dDo6XygkaXRlbVsnbGFiZWwnXSk7DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCS8vIEZvciBvdGhlciB1c2VycywgYXBwZW5kIHRoZSBhZGRpdGlvbmFsIGZpZWxkIGluZm8uDQoJCQkJCSR0YXJnZXRfZmllbGRzWyR0YWJsZSAuICcuJyAuICRmaWVsZF9uYW1lXSA9IFRleHQ6Ol8oJGl0ZW1bJ2xhYmVsJ10pIC4gJGluZm87DQoJCQkJfQ0KDQoJCQkJLy8gTWFyayB0aGUgY3VycmVudCBmaWVsZCBhcyBpZ25vcmVkIGZvciBmdXR1cmUgY2hlY2tzLg0KCQkJCSRpZ25vcmVbJHRhYmxlXVskZmllbGRfbmFtZV0gPSB0cnVlOw0KCQkJfQ0KCQl9DQoNCgkJcmV0dXJuICR0YXJnZXRfZmllbGRzOw0KCX0NCg0KCS8qKg0KCSAqIFJldHJpZXZlcyBhIGR5bmFtaWMgdmFsdWVzIG9mIHRoZSBpbXBvcnQgc3ViZm9ybSBmb3IgaXRlbSBtYXBwaW5nDQoJICoNCgkgKiBAcmV0dXJuIGFycmF5fG51bGwgdGhlIHZhbHVlcw0KCSAqIEBzaW5jZSAgNS4wLjINCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEl0ZW1JbXBvcnRTdWJmb3JtVmFsdWVzKCk6ID9hcnJheQ0KCXsNCgkJJHN1YmZvcm1fbmFtZSA9ICdtYXBzJzsNCgkJJHZhbHVlcyA9IFtdOw0KCQkkaGVhZGVycyA9IHNlbGY6OmdldFNwcmVhZHNoZWV0SGVhZGVycygpOw0KCQkkdGFyZ2V0X2ZpZWxkcyA9IHNlbGY6OmdldEl0ZW1JbXBvcnRGaWVsZHMoKTsNCgkJJG51bWJlciA9IDA7DQoJCWZvcmVhY2ggKCRoZWFkZXJzIGFzICRoZWFkZXIgPT4gJHRleHQpDQoJCXsNCgkJCSR2YWx1ZXNbInskc3ViZm9ybV9uYW1lfXskbnVtYmVyfSJdID0gWydjb2x1bW4nID0+ICRoZWFkZXIsICd0YXJnZXQnID0+IHNlbGY6OmdldEltcG9ydEZpZWxkTWF0Y2goJHRleHQsICR0YXJnZXRfZmllbGRzKV07DQoJCQkkbnVtYmVyKys7DQoJCX0NCgkJcmV0dXJuICR2YWx1ZXM7DQoJfQ0KDQoJLyoqDQoJICogTWF0Y2hlcyBhIG5hbWUgdmFsdWUgYWdhaW5zdCB0aGUga2V5cyBhbmQgdmFsdWVzIG9mIGEgZ2l2ZW4gYXJyYXkuDQoJICogVGhlIGtleSBtdXN0IG1hdGNoIHN0cmljdGx5ICg9PT0pIGFuZCB0aGUgdmFsdWUgbXVzdCBzdGFydCB3aXRoIHRoZSBuYW1lIChjYXNlLWluc2Vuc2l0aXZlKS4NCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgICBUaGUgbmFtZSB0byBzZWFyY2ggZm9yLg0KCSAqIEBwYXJhbSBhcnJheSAgJGZpZWxkcyBUaGUgYXJyYXkgb2YgZmllbGRzIHRvIG1hdGNoIGFnYWluc3QuIFRoZSBhcnJheSBzaG91bGQgaGF2ZSBrZXlzIGFuZCB2YWx1ZXMuDQoJICoNCgkgKiBAcmV0dXJuIHN0cmluZ3xudWxsIFJldHVybnMgdGhlIGtleSBpZiBhIG1hdGNoIGlzIGZvdW5kLCBvciBudWxsIGlmIG5vIG1hdGNoIGlzIGZvdW5kLg0KCSAqIEBzaW5jZSAgNS4wLjINCgkgKi8NCglwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGdldEltcG9ydEZpZWxkTWF0Y2goc3RyaW5nICRuYW1lLCBhcnJheSAkZmllbGRzKTogc3RyaW5nDQoJew0KCQlmb3JlYWNoICgkZmllbGRzIGFzICRrZXkgPT4gJHZhbHVlKQ0KCQl7DQoJCQkvLyBDaGVjayBpZiB0aGUgbmFtZSBzdHJpY3RseSBtYXRjaGVzIHRoZSBrZXkNCgkJCWlmICgka2V5ID09PSAkbmFtZSkNCgkJCXsNCgkJCQlyZXR1cm4gJGtleTsNCgkJCX0NCg0KCQkJLy8gQ2hlY2sgaWYgdGhlIG5hbWUgc3RhcnRzIHdpdGggdGhlIHZhbHVlIChjYXNlLWluc2Vuc2l0aXZlKQ0KCQkJaWYgKHNlbGY6OnN0YXJ0c1dpdGhJZ25vcmVDYXNlKCR2YWx1ZSwgJG5hbWUgLiAnICcpKQ0KCQkJew0KCQkJCXJldHVybiAka2V5Ow0KCQkJfQ0KCQl9DQoNCgkJLy8gUmV0dXJuIG51bGwgaWYgbm8gbWF0Y2ggaXMgZm91bmQNCgkJcmV0dXJuICcnOw0KCX0NCg0KCS8qKg0KCSAqIEhlbHBlciBmdW5jdGlvbiB0byBjaGVjayBpZiBhIHN0cmluZyBzdGFydHMgd2l0aCBhbm90aGVyIHN0cmluZyAoY2FzZS1pbnNlbnNpdGl2ZSkuDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nICRoYXlzdGFjayAgVGhlIHN0cmluZyB0byBjaGVjay4NCgkgKiBAcGFyYW0gc3RyaW5nICRuZWVkbGUgICAgVGhlIHN0cmluZyB0byBtYXRjaCB0aGUgYmVnaW5uaW5nLg0KCSAqDQoJICogQHJldHVybiBib29sIFJldHVybnMgdHJ1ZSBpZiAkbmVlZGxlIG1hdGNoZXMgdGhlIHN0YXJ0IG9mICRoYXlzdGFjaywgZmFsc2Ugb3RoZXJ3aXNlLg0KCSAqIEBzaW5jZSAgNS4wLjINCgkgKi8NCglwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIHN0YXJ0c1dpdGhJZ25vcmVDYXNlKHN0cmluZyAkaGF5c3RhY2ssIHN0cmluZyAkbmVlZGxlKTogYm9vbA0KCXsNCgkJcmV0dXJuIHN0cmlwb3MoJGhheXN0YWNrLCAkbmVlZGxlKSA9PT0gMDsNCgl9', '', 1, '', 'getItemImportFields', '', '', '', 'helper::getItemImportFields', 2, '', '', '', 1, '2025-02-17 10:49:13', '2025-02-21 14:30:41', 9, '', 227);
+(411, 'CS8qKg0KCSAqIFRoZSBTcHJlYWRzaGVldCBIZWFkZXJzDQoJICoNCgkgKiBAdmFyICAgYXJyYXkNCgkgKiBAc2luY2UgNS4wLjINCgkgKi8NCglwcm90ZWN0ZWQgc3RhdGljIGFycmF5ICRTcHJlYWRzaGVldEhlYWRlcnMgPSBbXTsNCg0KCS8qKg0KCSAqIFRoZSBJdGVtIEltcG9ydCBGaWVsZHMNCgkgKg0KCSAqIEB2YXIgICBhcnJheQ0KCSAqIEBzaW5jZSA1LjAuMg0KCSAqLw0KCXByb3RlY3RlZCBzdGF0aWMgYXJyYXkgJEl0ZW1JbXBvcnRGaWVsZHMgPSBbXTsNCg0KCS8qKg0KCSAqIEdldCB0aGUgbGlzdCBvZiBoZWFkZXJzIHRvIHNob3cgaW4gY29sdW1uIGZpZWxkDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheSAgVGhlIGxpc3Qgb2YgaGVhZGVycw0KCSAqIEBzaW5jZSAgIDUuMC4yDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRTcHJlYWRzaGVldEhlYWRlcnMoKTogYXJyYXkNCgl7DQoJCSRlbmRDb2x1bW4gPSAnREEnOw0KCQkkY29sdW1uID0gJ0EnOw0KCQkkb3B0aW9ucyA9IFtdOw0KCQl3aGlsZSAoJGNvbHVtbiAhPT0gJGVuZENvbHVtbikNCgkJew0KCQkJJG9wdGlvbnNbJGNvbHVtbl0gPSBzZWxmOjpnZXRTcHJlYWRzaGVldEhlYWRlcigkY29sdW1uKTsNCgkJCSRjb2x1bW4gPSArKyRjb2x1bW47DQoJCX0NCgkJcmV0dXJuICRvcHRpb25zOw0KCX0NCg0KCS8qKg0KCSAqIEdldCB0aGUgaGVhZGVyIGNvbHVtbiB2YWx1ZSAobmFtZSkNCgkgKg0KCSAqIEByZXR1cm4gIHN0cmluZyAgVGhlIGhlYWRlciB2YWx1ZQ0KCSAqIEBzaW5jZSAgIDUuMC4yDQoJICovDQoJcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBnZXRTcHJlYWRzaGVldEhlYWRlcihzdHJpbmcgJGNvbHVtbik6IHN0cmluZw0KCXsNCgkJcmV0dXJuIHNlbGY6OiRTcHJlYWRzaGVldEhlYWRlcnNbJGNvbHVtbl0gPz8gJGNvbHVtbjsNCgl9DQoNCgkvKioNCgkgKiBTZXQgdGhlIGhlYWRlciBjb2x1bW4gdmFsdWVzDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICogQHNpbmNlICAgNS4wLjINCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNldFNwcmVhZHNoZWV0SGVhZGVycyhhcnJheSAkaGVhZGVycyk6IHZvaWQNCgl7DQoJCXNlbGY6OiRTcHJlYWRzaGVldEhlYWRlcnMgPSAkaGVhZGVyczsNCgl9DQoNCgkvKioNCgkgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGltcG9ydCBmaWVsZHMgZnJvbSB0aGUgaXRlbSBlbnRpdHkuDQoJICoNCgkgKiBAcGFyYW0gYm9vbCAgJHNpbXBsZSBUaGUgc3dpdGNoIHRvIHJldHVybiBzaW1wbGUgbGlzdCAodG8gbGVhdmUgb3V0IHRoZSBsaW5rIGRhdGEpDQoJICoNCgkgKiBAcmV0dXJuIGFycmF5IFJldHVybnMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgd2hlcmUgdGhlIGtleSBpcyB0aGUgdGFibGUuY29sdW1uIG5hbWUgYW5kIHRoZSB2YWx1ZSANCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHRoZSBsYWJlbCBvZiB0aGUgY29sdW1uIChwb3RlbnRpYWxseSBpbmNsdWRpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbikuDQoJICogQHNpbmNlICA1LjAuMg0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0SXRlbUltcG9ydEZpZWxkcyhib29sICRzaW1wbGUgPSBmYWxzZSk6IGFycmF5DQoJew0KCQlpZiAoIWVtcHR5KHNlbGY6OiRJdGVtSW1wb3J0RmllbGRzKSkNCgkJew0KCQkJcmV0dXJuIHNlbGY6OiRJdGVtSW1wb3J0RmllbGRzOw0KCQl9DQpbW1thcmcwXV1dDQoJCXNlbGY6OiRJdGVtSW1wb3J0RmllbGRzID0gc2VsZjo6Z2V0SW1wb3J0RmllbGRzKCRwYXJlbnQsICR0YWJsZXMsICRzaW1wbGUpOw0KDQoJCXJldHVybiBzZWxmOjokSXRlbUltcG9ydEZpZWxkczsNCgl9DQoNCgkvKioNCgkgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIHRhcmdldCBmaWVsZHMgZnJvbSB0aGUgc3BlY2lmaWVkIHRhYmxlcywgd2l0aCBhcHByb3ByaWF0ZSBmaWx0ZXJpbmcgYmFzZWQgb24NCgkgKiBydWxlcyBsaWtlIGlnbm9yaW5nIGNlcnRhaW4gY29sdW1ucywgbGlua2luZyBydWxlcywgYW5kIHVzZXIgcm9sZXMuDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nICRwYXJlbnQgVGhlIHBhcmVudCBlbnRpdHkgdG8gY2hlY2sgZm9yIHVwc3RyZWFtIGxpbmtpbmcuDQoJICogQHBhcmFtIGFycmF5ICAkdGFibGVzIEFuIGFzc29jaWF0aXZlIGFycmF5IG9mIHRhYmxlcyBhbmQgd2hldGhlciB0byBhZGQgR1VJRCBmb3IgZWFjaCB0YWJsZS4gDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUga2V5cyByZXByZXNlbnQgdGFibGUgbmFtZXMsIGFuZCB0aGUgdmFsdWVzIGFyZSBib29sZWFucyB0byBpbmRpY2F0ZQ0KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hldGhlciB0byBpbmNsdWRlIHRoZSAnZ3VpZCcgY29sdW1uLg0KCSAqIEBwYXJhbSBib29sICAkc2ltcGxlIFRoZSBzd2l0Y2ggdG8gcmV0dXJuIHNpbXBsZSBsaXN0ICh0byBsZWF2ZSBvdXQgdGhlIGxpbmsgZGF0YSkNCgkgKg0KCSAqIEByZXR1cm4gYXJyYXkgUmV0dXJucyBhbiBhc3NvY2lhdGl2ZSBhcnJheSB3aGVyZSB0aGUga2V5IGlzIHRoZSB0YWJsZS5jb2x1bW4gbmFtZSBhbmQgdGhlIHZhbHVlIA0KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgdGhlIGxhYmVsIG9mIHRoZSBjb2x1bW4gKHBvdGVudGlhbGx5IGluY2x1ZGluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uKS4NCgkgKiBAc2luY2UgIDUuMC4yDQoJICovDQoJcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBnZXRJbXBvcnRGaWVsZHMoc3RyaW5nICRwYXJlbnQsIGFycmF5ICR0YWJsZXMsIGJvb2wgJHNpbXBsZSA9IGZhbHNlKTogYXJyYXkNCgl7DQoJCS8vIEdldCB0aGUgY3VycmVudCB1c2VyIG9iamVjdC4NCgkJJHVzZXIgPSBKb29tbGFfX18zOTQwMzA2Ml84NGZiXzQ2ZTBfYmFjNF8wMDIzZjc2NmU4MjdfX19Qb3dlcjo6Z2V0VXNlcigpOw0KDQoJCSRpZ25vcmUgPSBbXTsNCgkJJHRhcmdldF9maWVsZHMgPSBbXTsNCg0KCQkvLyBMb29wIHRocm91Z2ggZWFjaCB0YWJsZSBwcm92aWRlZC4NCgkJZm9yZWFjaCAoJHRhYmxlcyBhcyAkdGFibGUgPT4gJGFkZF9ndWlkKQ0KCQl7DQoJCQkvLyBSZXRyaWV2ZSB0aGUgZmllbGRzIGZvciB0aGUgdGFibGUuIElmIG5vIGZpZWxkcywgZGVmYXVsdCB0byBhbiBlbXB0eSBhcnJheS4NCgkJCSRpdGVtcyA9IFN1cGVyX19fZmY4ZDVmZGJfMmQxZl80MTc4X2JkMThfYTQzYjhlZmQxMDY4X19fUG93ZXI6Ol8oJ1RhYmxlJyktPmZpZWxkcygkdGFibGUsIGZhbHNlLCB0cnVlKSA/PyBbXTsNCg0KCQkJLy8gUHJvY2VzcyBlYWNoIGZpZWxkIGlmIHRoZSB0YWJsZSBjb250YWlucyBhbnkgZmllbGRzLg0KCQkJZm9yZWFjaCAoJGl0ZW1zIGFzICRpdGVtKQ0KCQkJew0KCQkJCSRmaWVsZF9uYW1lID0gJGl0ZW1bJ25hbWUnXTsNCg0KCQkJCS8vIElnbm9yZSBkb3duc3RyZWFtIGxpbmtpbmcgY29sdW1ucy4NCgkJCQlpZiAoaXNzZXQoJGlnbm9yZVskdGFibGVdWyRmaWVsZF9uYW1lXSkpDQoJCQkJew0KCQkJCQljb250aW51ZTsNCgkJCQl9DQoNCgkJCQkvLyBTa2lwIGFkZGluZyB0aGUgJ2d1aWQnIGZpZWxkIGlmIHRoZSB0YWJsZSBkb2Vzbid0IHJlcXVpcmUgaXQuDQoJCQkJaWYgKCRmaWVsZF9uYW1lID09PSAnZ3VpZCcgJiYgISRhZGRfZ3VpZCkNCgkJCQl7DQoJCQkJCWNvbnRpbnVlOw0KCQkJCX0NCg0KCQkJCS8vIFNraXAgZmllbGRzIFsgYWRkIG1vcmUgZmllbGQgeW91IHdvdWxkIGxpa2UgdG8gc2tpcCBpbiBhbGwgdGFyZ2V0ZWQgdGFibGVzIF0NCgkJCQlpZiAoW1tbYXJnMV1dXSRmaWVsZF9uYW1lID09PSAnYWNjZXNzJyB8fA0KCQkJCQkkZmllbGRfbmFtZSA9PT0gJ21ldGFkYXRhJyB8fA0KCQkJCQkkZmllbGRfbmFtZSA9PT0gJ21ldGFrZXknIHx8DQoJCQkJCSRmaWVsZF9uYW1lID09PSAnbWV0YWRlc2MnICkNCgkJCQl7DQoJCQkJCWNvbnRpbnVlOw0KCQkJCX0NCg0KCQkJCS8vIEluaXRpYWxpemUgYWRkaXRpb25hbCBpbmZvIHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBmaWVsZCBsYWJlbC4NCgkJCQkkaW5mbyA9ICcgLSAnIC4gJHRhYmxlIC4gJy0+JyAuICRmaWVsZF9uYW1lIC4gJzonIC4gc3RydG9sb3dlcigkaXRlbVsnZGInXVsndHlwZSddKTsNCg0KCQkJCS8vIEhhbmRsZSBsaW5raW5nIGluZm9ybWF0aW9uIGlmIGF2YWlsYWJsZS4NCgkJCQlpZiAoIWVtcHR5KCRpdGVtWydsaW5rJ11bJ2VudGl0eSddKSAmJg0KCQkJCQkhZW1wdHkoJGl0ZW1bJ2xpbmsnXVsndmFsdWUnXSkgJiYNCgkJCQkJIWVtcHR5KCRpdGVtWydsaW5rJ11bJ2tleSddKSkNCgkJCQl7DQoJCQkJCQ0KCQkJCQkvLyBJZ25vcmUgdXBzdHJlYW0gbGlua2luZyBjb2x1bW5zLg0KCQkJCQlpZiAoaXNzZXQoJGlnbm9yZVskaXRlbVsnbGluayddWydlbnRpdHknXV1bJGl0ZW1bJ2xpbmsnXVsna2V5J11dKSkNCgkJCQkJew0KCQkJCQkJY29udGludWU7DQoJCQkJCX0NCg0KCQkJCQkvLyBTa2lwIHBhcmVudCBsaW5rZXJzIGZvciBub24tcGFyZW50IHRhYmxlcy4NCgkJCQkJaWYgKCR0YWJsZSAhPT0gJHBhcmVudCAmJiAkaXRlbVsnbGluayddWydlbnRpdHknXSA9PT0gJHBhcmVudCkNCgkJCQkJew0KCQkJCQkJY29udGludWU7DQoJCQkJCX0NCg0KCQkJCQkkaW5mbyAuPSAnID4+PiAnIC4gJGl0ZW1bJ2xpbmsnXVsnZW50aXR5J10gLiAnLT5bJyAuICRpdGVtWydsaW5rJ11bJ3ZhbHVlJ10gLiAnXS0+JyAuICRpdGVtWydsaW5rJ11bJ2tleSddOw0KCQkJCQkkaWdub3JlWyRpdGVtWydsaW5rJ11bJ2VudGl0eSddXSA9ICRpdGVtWydsaW5rJ11bJ2tleSddOw0KCQkJCX0NCg0KCQkJCWlmICgkc2ltcGxlKQ0KCQkJCXsNCgkJCQkJJHRhcmdldF9maWVsZHNbJHRhYmxlIC4gJy4nIC4gJGZpZWxkX25hbWVdID0gVGV4dDo6XygkaXRlbVsnbGFiZWwnXSk7DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCS8vIEZvciBvdGhlciB1c2VycywgYXBwZW5kIHRoZSBhZGRpdGlvbmFsIGZpZWxkIGluZm8uDQoJCQkJCSR0YXJnZXRfZmllbGRzWyR0YWJsZSAuICcuJyAuICRmaWVsZF9uYW1lXSA9IFRleHQ6Ol8oJGl0ZW1bJ2xhYmVsJ10pIC4gJGluZm87DQoJCQkJfQ0KDQoJCQkJLy8gTWFyayB0aGUgY3VycmVudCBmaWVsZCBhcyBpZ25vcmVkIGZvciBmdXR1cmUgY2hlY2tzLg0KCQkJCSRpZ25vcmVbJHRhYmxlXVskZmllbGRfbmFtZV0gPSB0cnVlOw0KCQkJfQ0KCQl9DQoNCgkJcmV0dXJuICR0YXJnZXRfZmllbGRzOw0KCX0NCg0KCS8qKg0KCSAqIFJldHJpZXZlcyBhIGR5bmFtaWMgdmFsdWVzIG9mIHRoZSBpbXBvcnQgc3ViZm9ybSBmb3IgaXRlbSBtYXBwaW5nDQoJICoNCgkgKiBAcmV0dXJuIGFycmF5fG51bGwgdGhlIHZhbHVlcw0KCSAqIEBzaW5jZSAgNS4wLjINCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEl0ZW1JbXBvcnRTdWJmb3JtVmFsdWVzKCk6ID9hcnJheQ0KCXsNCgkJJHN1YmZvcm1fbmFtZSA9ICdtYXBzJzsNCgkJJHZhbHVlcyA9IFtdOw0KCQkkaGVhZGVycyA9IHNlbGY6OmdldFNwcmVhZHNoZWV0SGVhZGVycygpOw0KCQkkdGFyZ2V0X2ZpZWxkcyA9IHNlbGY6OmdldEl0ZW1JbXBvcnRGaWVsZHMoKTsNCgkJJG51bWJlciA9IDA7DQoJCWZvcmVhY2ggKCRoZWFkZXJzIGFzICRoZWFkZXIgPT4gJHRleHQpDQoJCXsNCgkJCSR2YWx1ZXNbInskc3ViZm9ybV9uYW1lfXskbnVtYmVyfSJdID0gWydjb2x1bW4nID0+ICRoZWFkZXIsICd0YXJnZXQnID0+IHNlbGY6OmdldEltcG9ydEZpZWxkTWF0Y2goJHRleHQsICR0YXJnZXRfZmllbGRzKV07DQoJCQkkbnVtYmVyKys7DQoJCX0NCgkJcmV0dXJuICR2YWx1ZXM7DQoJfQ0KDQoJLyoqDQoJICogTWF0Y2hlcyBhIG5hbWUgdmFsdWUgYWdhaW5zdCB0aGUga2V5cyBhbmQgdmFsdWVzIG9mIGEgZ2l2ZW4gYXJyYXkuDQoJICogVGhlIGtleSBtdXN0IG1hdGNoIHN0cmljdGx5ICg9PT0pIGFuZCB0aGUgdmFsdWUgbXVzdCBzdGFydCB3aXRoIHRoZSBuYW1lIChjYXNlLWluc2Vuc2l0aXZlKS4NCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgICBUaGUgbmFtZSB0byBzZWFyY2ggZm9yLg0KCSAqIEBwYXJhbSBhcnJheSAgJGZpZWxkcyBUaGUgYXJyYXkgb2YgZmllbGRzIHRvIG1hdGNoIGFnYWluc3QuIFRoZSBhcnJheSBzaG91bGQgaGF2ZSBrZXlzIGFuZCB2YWx1ZXMuDQoJICoNCgkgKiBAcmV0dXJuIHN0cmluZ3xudWxsIFJldHVybnMgdGhlIGtleSBpZiBhIG1hdGNoIGlzIGZvdW5kLCBvciBudWxsIGlmIG5vIG1hdGNoIGlzIGZvdW5kLg0KCSAqIEBzaW5jZSAgNS4wLjINCgkgKi8NCglwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGdldEltcG9ydEZpZWxkTWF0Y2goc3RyaW5nICRuYW1lLCBhcnJheSAkZmllbGRzKTogc3RyaW5nDQoJew0KCQlmb3JlYWNoICgkZmllbGRzIGFzICRrZXkgPT4gJHZhbHVlKQ0KCQl7DQoJCQkvLyBDaGVjayBpZiB0aGUgbmFtZSBzdHJpY3RseSBtYXRjaGVzIHRoZSBrZXkNCgkJCWlmICgka2V5ID09PSAkbmFtZSkNCgkJCXsNCgkJCQlyZXR1cm4gJGtleTsNCgkJCX0NCg0KCQkJLy8gQ2hlY2sgaWYgdGhlIG5hbWUgc3RhcnRzIHdpdGggdGhlIHZhbHVlIChjYXNlLWluc2Vuc2l0aXZlKQ0KCQkJaWYgKHNlbGY6OnN0YXJ0c1dpdGhJZ25vcmVDYXNlKCR2YWx1ZSwgJG5hbWUgLiAnICcpKQ0KCQkJew0KCQkJCXJldHVybiAka2V5Ow0KCQkJfQ0KCQl9DQoNCgkJLy8gUmV0dXJuIG51bGwgaWYgbm8gbWF0Y2ggaXMgZm91bmQNCgkJcmV0dXJuICcnOw0KCX0NCg0KCS8qKg0KCSAqIEhlbHBlciBmdW5jdGlvbiB0byBjaGVjayBpZiBhIHN0cmluZyBzdGFydHMgd2l0aCBhbm90aGVyIHN0cmluZyAoY2FzZS1pbnNlbnNpdGl2ZSkuDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nICRoYXlzdGFjayAgVGhlIHN0cmluZyB0byBjaGVjay4NCgkgKiBAcGFyYW0gc3RyaW5nICRuZWVkbGUgICAgVGhlIHN0cmluZyB0byBtYXRjaCB0aGUgYmVnaW5uaW5nLg0KCSAqDQoJICogQHJldHVybiBib29sIFJldHVybnMgdHJ1ZSBpZiAkbmVlZGxlIG1hdGNoZXMgdGhlIHN0YXJ0IG9mICRoYXlzdGFjaywgZmFsc2Ugb3RoZXJ3aXNlLg0KCSAqIEBzaW5jZSAgNS4wLjINCgkgKi8NCglwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIHN0YXJ0c1dpdGhJZ25vcmVDYXNlKHN0cmluZyAkaGF5c3RhY2ssIHN0cmluZyAkbmVlZGxlKTogYm9vbA0KCXsNCgkJcmV0dXJuIHN0cmlwb3MoJGhheXN0YWNrLCAkbmVlZGxlKSA9PT0gMDsNCgl9', '', 1, '', 'getItemImportFields', '', '', '', 'helper::getItemImportFields', 2, '', '', '', 1, '2025-02-17 10:49:13', '2025-02-21 14:30:41', 9, '', 227),
+(412, 'CS8qKg0KCSAqIE1ldGhvZCB0byBlZGl0IGFuIGV4aXN0aW5nIHJlY29yZC4NCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJGtleSAgICAgVGhlIG5hbWUgb2YgdGhlIHByaW1hcnkga2V5IG9mIHRoZSBVUkwgdmFyaWFibGUuDQoJICogQHBhcmFtICAgc3RyaW5nICAkdXJsVmFyICBUaGUgbmFtZSBvZiB0aGUgVVJMIHZhcmlhYmxlIGlmIGRpZmZlcmVudCBmcm9tIHRoZSBwcmltYXJ5IGtleQ0KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvbWV0aW1lcyByZXF1aXJlZCB0byBhdm9pZCByb3V0ZXIgY29sbGlzaW9ucykuDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIGFjY2VzcyBsZXZlbCBjaGVjayBhbmQgY2hlY2tvdXQgcGFzc2VzLCBmYWxzZSBvdGhlcndpc2UuDQoJICoNCgkgKiBAc2luY2UgICAxLjYNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gZWRpdCgka2V5ID0gbnVsbCwgJHVybFZhciA9IG51bGwpDQoJew0KCQkvLyBmb3IgbW9kYWwgdGl0bGUga2V5IHNlbGVjdGlvbiAodW5pcXVlIGtleSB0byBkbyBtYXBwaW5nKQ0KCQkkdGl0bGVLZXkgPSAkdGhpcy0+aW5wdXQtPmdldCgndGl0bGVLZXknLCAnaWQnLCAnd29yZCcpOw0KCQkkZ3VpZCA9IG51bGw7DQoJCSR2YWx1ZSA9IG51bGw7DQoNCiAJCS8vIERldGVybWluZSB0aGUgbmFtZSBvZiB0aGUgcHJpbWFyeSBrZXkgZm9yIHRoZSBkYXRhLg0KCQlpZiAoZW1wdHkoJGtleSkpDQoJCXsNCgkJCSRtb2RlbCA9ICR0aGlzLT5nZXRNb2RlbCgpOw0KCQkJJHRhYmxlID0gJG1vZGVsLT5nZXRUYWJsZSgpOw0KCQkJJGtleSA9ICR0YWJsZS0+Z2V0S2V5TmFtZSgpOw0KCQl9DQoNCgkJaWYgKCR0aXRsZUtleSA9PT0gJ2d1aWQnKQ0KCQl7DQoJCQkkZ3VpZCA9ICR0aGlzLT5pbnB1dC0+Z2V0KCdndWlkJywgbnVsbCwgJ3N0cmluZycpOw0KCQl9DQoNCgkJaWYgKCRndWlkICE9PSBudWxsICYmIFN1cGVyX19fOWM1MTNiYWZfYjI3OV80M2ZkX2FlMjlfYTU4NWM4Y2JjNGYwX19fUG93ZXI6OnZhbGlkKCRndWlkKSkNCgkJew0KCQkJJHZhbHVlID0gU3VwZXJfX185YzUxM2JhZl9iMjc5XzQzZmRfYWUyOV9hNTg1YzhjYmM0ZjBfX19Qb3dlcjo6aXRlbSgkZ3VpZCwgJyMjI3ZpZXcjIyMnLCAnYS4nIC4gJGtleSwgJyMjI2NvbXBvbmVudCMjIycpOw0KCQl9DQoNCgkJaWYgKCR2YWx1ZSAhPT0gbnVsbCkNCgkJew0KCQkJJHRoaXMtPmlucHV0LT5zZXQoJGtleSwgJHZhbHVlKTsNCgkJfQ0KDQoJCXJldHVybiBwYXJlbnQ6OmVkaXQoJGtleSwgJHVybFZhcik7DQoJfQ==', '', 1, '', 'formControllerEdit', '', '', '', 'FormController Edit Method', 2, '', '', '', 1, '2025-03-26 18:02:02', '2025-03-26 19:31:58', 5, '', 228);
--
-- Dumping data for table `#__componentbuilder_class_property`
@@ -2588,10 +2595,15 @@ INSERT INTO `#__componentbuilder_field` (`id`, `add_css_view`, `add_css_views`,
(100, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Email (required)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2015-05-05 23:44:32', '2024-09-15 22:24:59', 5, '', 285, '10c1eccb-b3c3-4325-a056-45a72d116fd8', '', '', '', '', ''),
(158, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', '', '', '', 'Image', 'NOT NULL', '', '69957007-e3d4-4976-a32b-611d02dbad71', '\"\"', 1, '2015-04-29 14:00:56', '2020-06-07 02:17:46', 2, '', 45, '0d6970af-b361-4f65-84f6-0eb0c5f09bad', '', '', '', '', ''),
(196, '', '', '', '', '', '', '', '', 64, '', 'VARCHAR', '', '', '', 'Mobile Phone (required)', 'NOT NULL', '', '1c6c519c-3bc8-4914-8940-3e9591b0bce6', '\"\"', 1, '2015-04-07 22:12:58', '2024-09-16 23:27:41', 5, '', 7, '65933a19-243a-48b2-aae9-34e2da710051', '', '', '', '', ''),
-(199, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Name (Key - Required)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2015-03-19 17:30:59', '2024-10-10 22:13:01', 11, '', 4, '5d3d34dd-4876-4c6a-86ab-b4e162f22c08', '', '', '', '', ''),
+(199, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Name (Key - Required)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2015-03-19 17:30:59', '2025-03-26 11:23:23', 12, '', 4, '5d3d34dd-4876-4c6a-86ab-b4e162f22c08', '', '', '', '', ''),
(203, '', '', '', '', '', '', '', '', 1, '', 'INT', '', '', '', 'Not Required', 'NOT NULL', '', '82f1b5ca-bb9b-44d7-9a7a-9a03fb2a31dd', '\"\"', 1, '2015-05-08 16:19:16', '2023-09-27 07:57:19', 16, '', 19, 'da5e6901-6958-40e5-a4f5-6822d6fe57ac', '', '', '', '', ''),
(280, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', '', '', '', 'Website (no required)', 'NOT NULL', '', '8df6e07e-2b16-43ed-a18d-2059fa44cdf1', '\"\"', 1, '2015-04-08 00:36:16', '2024-09-16 23:30:59', 3, '', 105, '6c3a6983-d1bf-4e5e-9e99-deea00b0cefd', '', '', '', '', ''),
(324, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', '', '', '', 'URL', 'NOT NULL', '', '8df6e07e-2b16-43ed-a18d-2059fa44cdf1', '\"\"', 1, '2015-05-19 16:08:22', '2022-06-18 10:23:24', 4, '', 378, 'd29d6854-bb4a-4fa2-83a1-5a1b9c9a0eaf', '', '', '', '', ''),
+(583, '', '', '', '', '', '', '', '', 7, '', 'CHAR', 2, '', '', 'ISO Three (country)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2015-07-09 14:03:26', '2025-03-26 20:35:45', 12, '', 561, '95f46f99-0909-4a47-879b-ede06ef35fb8', '', '', '', '', ''),
+(584, '', '', '', '', '', '', '', '', 7, '', 'CHAR', 2, '', '', 'ISO Two (country)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2015-07-09 14:05:40', '2025-03-27 13:10:32', 13, '', 560, '2039d1c3-162c-401c-96fe-f127683ee3fe', '', '', '', '', ''),
+(586, '', '', '', '', '', '', '', '', 7, '', 'CHAR', 1, '', '', 'Code Three (currency)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2015-07-09 14:33:44', '2025-03-27 13:14:31', 3, '', 558, '59f0d051-768e-41de-87a0-f47551f7d0d1', '', '', '', '', ''),
+(587, '', '', '', '', '', '', '', '', 10, '', 'INT', 2, '', '', 'Numeric Code (currency)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2015-07-09 14:40:52', '2025-03-27 13:15:41', 7, '', 557, '40da896f-5054-4bb2-aa58-1cdfb391f544', '', '', '', '', ''),
+(588, '', '', '', '', '', '', '', '', 11, '', 'CHAR', '', '', '', 'Symbol (currency)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2015-07-09 14:44:24', '2024-10-10 22:11:16', 2, '', 556, 'c9a4c765-a0f9-42da-8fa9-df41ab70c448', '', '', '', '', ''),
(599, '', '', '', '', '', '', '', '', '', '', 'TEXT', '', '', '', 'Groups (multi)', 'NULL', 1, 'e2f31181-fbb3-4c3a-859d-72b6b0cff308', '\"\"', 1, '2015-07-13 23:10:19', '2025-01-15 13:11:22', 10, '', 50, '59a0cad6-26cc-43b6-8af8-2242eb595d76', '', '', '', '', ''),
(682, '', '', '', '', '', '', '', '', 1, '', 'TINYINT', 2, '', '', 'Add More', 'NULL', '', 'b868ed59-4208-4206-8504-95a35a74a11c', '\"\"', 1, '2015-08-05 01:18:20', '2024-09-07 02:20:13', 8, '', 196, 'a66389aa-2323-4f44-8c23-ff44969639be', '', '', '', '', ''),
(691, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', '', '', '', 'Email (not required)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2015-08-16 17:21:15', '2025-02-21 11:20:53', 5, '', 285, '976f7e2d-68e3-497e-b4d1-6326d5b95078', '', '', '', '', ''),
@@ -2636,7 +2648,7 @@ INSERT INTO `#__componentbuilder_field` (`id`, `add_css_view`, `add_css_views`,
(3401, '', '', '', '', '', '', '', '', 64, '', 'VARCHAR', 2, '', '', 'File Extension', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2020-09-07 22:21:14', '2024-09-15 23:37:40', 6, '', 1063, '080b92dc-a4b4-46b2-83d4-3430284f5e06', '', '', '', '', ''),
(3402, '', '', '', '', '', '', '', '', 1024, '', 'VARCHAR', 2, '', '', 'File Path', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2020-09-07 22:29:12', '2024-09-15 23:36:05', 12, '', 1063, 'ed28e30c-30c3-4830-afdc-5a61bf25cd49', '', '', '', '', ''),
(3403, '', '', '', '', '', '', '', '', 'Other', 36, 'VARCHAR', 2, '', '', 'GUID ENTITY', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2020-09-07 22:32:35', '2024-09-17 02:03:47', 5, '', 1064, '3f1fedeb-b943-42a7-88e7-c4f1eb1fd8a4', '', '', '', '', ''),
-(3404, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Entity Type (demo)', 'NULL', '', 'a51dfc06-1b9b-4d0a-86ba-f705bcd40d4d', '\"\"', 1, '2020-09-07 22:37:18', '2024-09-17 02:04:20', 8, '', 1065, '2e24a9fe-5793-46be-b071-631c0b18d8f4', '', '', '', '', ''),
+(3404, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Entity Type (demo)', 'NULL', '', 'a51dfc06-1b9b-4d0a-86ba-f705bcd40d4d', '\"\"', 1, '2020-09-07 22:37:18', '2025-03-28 10:18:55', 11, '', 1065, '2e24a9fe-5793-46be-b071-631c0b18d8f4', '', '', '', '', ''),
(3405, '', '', '', '', '', '', '', '', 11, '', 'INT', 2, '', '', 'User ID', 'NULL', '', 'b0641980-5e78-42f6-972f-86aa607db23e', '\"\"', 1, '2020-09-07 22:46:31', '2024-09-16 23:34:12', 4, '', 1066, '3dfab308-41de-4d11-9c94-4ba330a202ac', '', '', '', '', ''),
(3406, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Username (User Map)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', -2, '2024-09-06 22:58:59', '0000-00-00 00:00:00', 1, '', 1067, '78a39c78-2432-4c95-bbac-e482a0f4aed9', '', '', '', '', ''),
(3407, '', '', '', '', '', '', '', '', 11, '', 'INT', 2, '', '', 'User ID (Hidden)', 'NULL', '', '82f1b5ca-bb9b-44d7-9a7a-9a03fb2a31dd', '\"\"', 1, '2020-09-07 23:11:49', '2024-09-07 02:29:24', 2, '', 1068, 'a0d7c091-1781-45fb-a71f-1447bad69614', '', '', '', '', ''),
@@ -2668,7 +2680,34 @@ INSERT INTO `#__componentbuilder_field` (`id`, `add_css_view`, `add_css_views`,
(3433, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Column', 'NULL', '', 'dd2e1f4b-f5db-45e8-85fa-efd27bae7b6a', '\"\"', 1, '2025-02-16 18:41:54', '2025-02-16 18:47:04', 2, '', 1084, '6a17f5e4-d21e-47f1-9b92-493ab725d55f', '', '', '', '', ''),
(3434, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Target Field', 'NULL', '', 'dd2e1f4b-f5db-45e8-85fa-efd27bae7b6a', '\"\"', 1, '2025-02-16 18:50:25', '2025-02-21 14:26:33', 2, '', 1085, '7d613846-8f1e-43f4-8bb9-1fcdbb473fa5', '', '', '', '', ''),
(3435, '', '', '', '', '', '', '', '', 'Other', 36, 'VARCHAR', 2, '', '', 'File (Importer)', 'NULL', '', 'dd2e1f4b-f5db-45e8-85fa-efd27bae7b6a', '\"\"', 1, '2025-02-16 18:54:56', '2025-02-16 19:17:19', 3, '', 1086, '91939b1a-c4d6-4531-8356-63bc4ca243fb', '', '', '', '', ''),
-(3436, '', '', '', '', '', '', '', '', 11, '', 'INT', 2, '', '', 'Import Status', 'NULL', '', 'a51dfc06-1b9b-4d0a-86ba-f705bcd40d4d', '\"\"', 1, '2025-02-16 19:00:55', '2025-02-16 19:01:01', 2, '', 1087, '11698dc6-8ff6-4662-b3b7-e47494463a08', '', '', '', '', '');
+(3436, '', '', '', '', '', '', '', '', 11, '', 'INT', 2, '', '', 'Import Status', 'NULL', '', 'a51dfc06-1b9b-4d0a-86ba-f705bcd40d4d', '\"\"', 1, '2025-02-16 19:00:55', '2025-02-16 19:01:01', 2, '', 1087, '11698dc6-8ff6-4662-b3b7-e47494463a08', '', '', '', '', ''),
+(3438, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Country (modal)', 'NULL', '', 'a1cdb0a5-517c-425c-998a-333e92af3e32', '\"\"', 1, '2025-03-24 09:02:54', '2025-03-26 21:20:35', 11, '', 242, '8d1b9d7e-77c1-43d9-bc97-0dd021bfe779', '', '', '', '', ''),
+(3439, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Region (modal)', 'NULL', '', 'a1cdb0a5-517c-425c-998a-333e92af3e32', '\"\"', 1, '2025-03-24 10:06:43', '2025-03-26 21:20:41', 13, '', 667, '7f3ccb20-7c57-433a-987b-b53d801004f3', '', '', '', '', ''),
+(3441, '', '', '', '', '', '', '', '', '', '', 'TEXT', '', '', '', 'Countries (multisubform)', 'NULL', 6, '7139f2c8-a70a-46a6-bbe3-4eefe54ca515', '\"\"', 1, '2025-03-24 12:57:22', '2025-03-27 13:44:53', 8, '', 1088, '4d96ceea-7dd1-45c3-86fd-0d73d66332a8', 'JGdldE1hcCA9ICBbDQoJCSdfY29yZScgPT4gWw0KCQkJJ3RhYmxlJyA9Pidjb3VudHJ5JywNCgkJCSdsaW5rVmFsdWUnID0+ICRpdGVtLT5ndWlkID8/ICcnLA0KCQkJJ2xpbmtLZXknID0+ICdzdWJyZWdpb24nLA0KCQkJJ2ZpZWxkJyA9PiAnY291bnRyeScsDQoJCQknZ2V0JyA9PiBbJ2d1aWQnLCduYW1lJywnaXNvMycsJ2lzbzInLCdjYXBpdGFsJywnbmF0aXZlJywnbmF0aW9uYWxpdHknLCdjdXJyZW5jeV9uYW1lJywnY29kZXRocmVlJywnc3ltYm9sJywnbnVtZXJpY19jb2RlJywncGhvbmVjb2RlJywndGxkJywnZW1vamknLCdlbW9qaXUnLCdsYXRpdHVkZScsJ2xvbmdpdHVkZScsJ3dpa2lkYXRhaWQnXQ0KCQldLA0KCQkndGltZXpvbmVzJyA9PiBbDQoJCQkndGFibGUnID0+J3RpbWV6b25lJywNCgkJCSdsaW5rVmFsdWUnID0+ICdjb3VudHJ5Omd1aWQnLCAvLyBjb3JldGFibGU6ZmllbGRuYW1lDQoJCQknbGlua0tleScgPT4gJ2NvdW50cnknLA0KCQkJJ2dldCcgPT4gWydndWlkJywndGltZXpvbmVfbmFtZScsJ3RpbWV6b25lX2lkZW50aWZpZXInLCdnbXRfb2Zmc2V0X25hbWUnLCdnbXRfb2Zmc2V0X3NlYycsJ2FiYnJldmlhdGlvbiddDQoJCV0NCgldOw0KW1tbZmllbGRdXV0gPSBTdXBlcl9fXzlkNzZiOGRjXzM4ODNfNDc1NV9iMTFjXzEzMWQxOWNhOGE1M19fX1Bvd2VyOjpfKCdEYXRhLk11bHRpU3ViZm9ybScpLT5nZXQoJGdldE1hcCk7', 'JHNldE1hcCA9ICBbDQoJJ19jb3JlJyA9PiBbDQoJCSd0YWJsZScgPT4nY291bnRyeScsDQoJCSdpbmRleEtleScgPT4gJ2d1aWQnLA0KCQknbGlua0tleScgPT4gJ3N1YnJlZ2lvbicsDQoJCSdsaW5rVmFsdWUnID0+ICRkYXRhWydndWlkJ10gPz8gJycNCgldLA0KCSd0aW1lem9uZXMnID0+IFsNCgkJJ3RhYmxlJyA9Pid0aW1lem9uZScsDQoJCSdpbmRleEtleScgPT4gJ2d1aWQnLA0KCQknbGlua0tleScgPT4gJ2NvdW50cnknLA0KCQknbGlua1ZhbHVlJyA9PiAnY291bnRyeTpndWlkJyAvLyBjb3JldGFibGU6ZmllbGRuYW1lDQoJXQ0KXTsNClN1cGVyX19fOWQ3NmI4ZGNfMzg4M180NzU1X2IxMWNfMTMxZDE5Y2E4YTUzX19fUG93ZXI6Ol8oJ0RhdGEuTXVsdGlTdWJmb3JtJyktPnNldChbW1tmaWVsZF1dXSA/PyBbXSwgICRzZXRNYXApOw==', '', '', ''),
+(3442, '', '', '', '', '', '', '', '', '', '', 'TEXT', '', '', '', 'State/cities (multisubform)', 'NULL', 6, '7139f2c8-a70a-46a6-bbe3-4eefe54ca515', '\"\"', 1, '2025-03-24 14:27:41', '2025-03-27 08:28:49', 8, '', 1088, '9a21f28b-b818-4cc5-b18a-c3fa33a5876d', 'JGdldE1hcCA9ICBbDQoJCSdfY29yZScgPT4gWw0KCQkJJ3RhYmxlJyA9PidzdGF0ZScsDQoJCQknbGlua1ZhbHVlJyA9PiAkaXRlbS0+Z3VpZCA/PyAnJywNCgkJCSdsaW5rS2V5JyA9PiAnY291bnRyeScsDQoJCQknZmllbGQnID0+ICdzdGF0ZScsDQoJCQknZ2V0JyA9PiBbJ2d1aWQnLCduYW1lJywndHlwZScsJ2xhdGl0dWRlJywnbG9uZ2l0dWRlJywnaXNvMicsJ2ZpcHNfY29kZScsJ3dpa2lkYXRhaWQnXQ0KCQldLA0KCQknY2l0aWVzJyA9PiBbDQoJCQkndGFibGUnID0+J2NpdHknLA0KCQkJJ2xpbmtWYWx1ZScgPT4gJ3N0YXRlOmd1aWQnLCAvLyBjb3JldGFibGU6ZmllbGRuYW1lDQoJCQknbGlua0tleScgPT4gJ3N0YXRlJywNCgkJCSdnZXQnID0+IFsnZ3VpZCcsJ25hbWUnLCdsYXRpdHVkZScsJ2xvbmdpdHVkZScsJ3dpa2lkYXRhaWQnXQ0KCQldDQoJXTsNCltbW2ZpZWxkXV1dID0gU3VwZXJfX185ZDc2YjhkY18zODgzXzQ3NTVfYjExY18xMzFkMTljYThhNTNfX19Qb3dlcjo6XygnRGF0YS5NdWx0aVN1YmZvcm0nKS0+Z2V0KCRnZXRNYXApOw==', 'JHNldE1hcCA9ICBbDQoJJ19jb3JlJyA9PiBbDQoJCSd0YWJsZScgPT4nc3RhdGUnLA0KCQknaW5kZXhLZXknID0+ICdndWlkJywNCgkJJ2xpbmtLZXknID0+ICdjb3VudHJ5JywNCgkJJ2xpbmtWYWx1ZScgPT4gJGRhdGFbJ2d1aWQnXSA/PyAnJw0KCV0sDQoJJ2NpdGllcycgPT4gWw0KCQkndGFibGUnID0+J2NpdHknLA0KCQknaW5kZXhLZXknID0+ICdndWlkJywNCgkJJ2xpbmtLZXknID0+ICdzdGF0ZScsDQoJCSdsaW5rVmFsdWUnID0+ICdzdGF0ZTpndWlkJyAvLyBjb3JldGFibGU6ZmllbGRuYW1lDQoJXQ0KXTsNClN1cGVyX19fOWQ3NmI4ZGNfMzg4M180NzU1X2IxMWNfMTMxZDE5Y2E4YTUzX19fUG93ZXI6Ol8oJ0RhdGEuTXVsdGlTdWJmb3JtJyktPnNldChbW1tmaWVsZF1dXSA/PyBbXSwgICRzZXRNYXApOw==', '', '', ''),
+(3443, '', '', '', '', '', '', '', '', 'Other', '10,8', 'DECIMAL', 2, '', '', 'Latitude (decimal)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2025-03-25 09:14:48', '2025-03-26 10:09:50', 4, '', 1089, 'f7d3d78e-2d35-4884-a997-d073f853d095', '', '', '', '', ''),
+(3444, '', '', '', '', '', '', '', '', 'Other', '11,8', 'DECIMAL', 2, '', '', 'Longitude (decimal)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2025-03-25 09:18:39', '2025-03-26 10:10:13', 4, '', 1089, '09c22738-6c6f-48ca-a24d-d439757e8619', '', '', '', '', ''),
+(3446, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'WikiDataId', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2025-03-25 09:40:33', '2025-03-25 09:41:37', 2, '', 1090, 'af59b3ac-6a00-42c0-bbe2-edf90dec6081', '', '', '', '', ''),
+(3447, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', '', '', '', 'State (modal)', 'NULL', '', 'a1cdb0a5-517c-425c-998a-333e92af3e32', '\"\"', 1, '2025-03-25 10:19:19', '2025-03-27 16:06:51', 10, '', 667, '1e666136-800a-486d-a8e8-13a054b7acde', '', '', '', '', ''),
+(3448, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Phone Code (country)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2025-03-25 10:30:37', '2025-03-25 15:00:22', 4, '', 557, '149140a8-d0a6-4b62-a880-bb796e2145d8', '', '', '', '', ''),
+(3449, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Capital (citites-modal)', 'NULL', '', 'a1cdb0a5-517c-425c-998a-333e92af3e32', '\"\"', 1, '2025-03-25 10:43:17', '2025-03-27 13:10:58', 13, '', 667, 'baeaf484-f61b-4688-8b8a-e3ace669b7a7', '', '', '', '', ''),
+(3450, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'TLD (country)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2025-03-25 10:44:32', '2025-03-27 13:17:00', 4, '', 557, 'c4c23fad-fd03-41cc-b5db-25f60b8ee11f', '', '', '', '', ''),
+(3451, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'FIPS code', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2025-03-25 10:50:46', '2025-03-25 13:40:03', 5, '', 1089, 'fa0ead84-06c8-4f18-89ae-4cdf646fd961', '', '', '', '', ''),
+(3452, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Native (country)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2025-03-25 10:51:13', '2025-03-25 10:51:17', 2, '', 557, '2aad92a4-895d-46cb-b0df-751da1bdd703', '', '', '', '', ''),
+(3453, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Nationality (country)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2025-03-25 12:36:37', '2025-03-27 13:13:40', 3, '', 557, '8ba72283-32fa-4a34-8c0d-d52adfed1aa5', '', '', '', '', ''),
+(3454, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Type (of state)', 'NULL', '', 'a51dfc06-1b9b-4d0a-86ba-f705bcd40d4d', '\"\"', 1, '2025-03-25 12:36:39', '2025-03-26 12:35:37', 4, '', 1089, '4321fa80-702d-4ff5-ab3c-05507d3007a9', '', '', '', '', ''),
+(3455, '', '', '', '', '', '', '', '', 'Other', 191, 'VARCHAR', 2, '', '', 'Flag emoji (country flag)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2025-03-25 12:45:10', '2025-03-25 12:38:41', 1, '', 557, '962ec39f-78d4-42ee-9626-7b778d2eea25', '', '', '', '', ''),
+(3456, '', '', '', '', '', '', '', '', 'Other', 191, 'VARCHAR', 2, '', '', 'Flag emojiU (unicode for flag)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2025-03-25 12:48:26', '2025-03-27 13:21:02', 4, '', 557, 'b71ee1ab-78ea-4cc7-aa2e-490a4d01a03f', '', '', '', '', ''),
+(3457, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Sub-Region (modal)', 'NULL', '', 'a1cdb0a5-517c-425c-998a-333e92af3e32', '\"\"', 1, '2025-03-25 13:03:40', '2025-03-26 21:21:09', 12, '', 667, '19b4a840-cf4e-4012-8fae-b1439af74f5a', '', '', '', '', ''),
+(3458, '', '', '', '', '', '', '', '', '', '', 'TEXT', '', '', '', 'Subregions (subform)', 'NULL', 6, '7139f2c8-a70a-46a6-bbe3-4eefe54ca515', '\"\"', 1, '2025-03-25 13:54:46', '2025-03-27 14:00:17', 10, '', 1091, 'cb04e362-61c0-4a07-8d80-d13b6939a72c', 'W1tbZmllbGRdXV0gPSBTdXBlcl9fXzlkNzZiOGRjXzM4ODNfNDc1NV9iMTFjXzEzMWQxOWNhOGE1M19fX1Bvd2VyOjpfKCdEYXRhLlN1YmZvcm0nKS0+dGFibGUoJ3N1YnJlZ2lvbicpLT5nZXQoJGl0ZW0tPmd1aWQgPz8gJycgLCdyZWdpb24nLCAnc3VicmVnaW9ucycsIFsnZ3VpZCcsJ25hbWUnLCd3aWtpZGF0YWlkJ10pOw==', 'U3VwZXJfX185ZDc2YjhkY18zODgzXzQ3NTVfYjExY18xMzFkMTljYThhNTNfX19Qb3dlcjo6XygnRGF0YS5TdWJmb3JtJyktPnRhYmxlKCdzdWJyZWdpb24nKS0+c2V0KFtbW2ZpZWxkXV1dID8/IFtdLCAnZ3VpZCcsICdyZWdpb24nLCAkZGF0YVsnZ3VpZCddID8/ICcnKTs=', '', '', ''),
+(3459, '', '', '', '', '', '', '', '', 64, '', 'VARCHAR', 2, '', '', 'Abbreviation (demo)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2025-03-25 13:59:37', '2025-03-26 11:09:19', 8, '', 1035, 'c35e18fa-cade-48b8-b067-6289cc7a0f60', '', '', '', '', ''),
+(3460, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Timezone Identifier (timezone)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2025-03-25 14:18:16', '2025-03-26 11:07:44', 4, '', 1092, 'c20d4692-6e97-4441-83bd-561b73730407', '', '', '', '', ''),
+(3461, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'GMT Offset Seconds (timezone)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2025-03-25 14:19:12', '2025-03-26 11:08:45', 3, '', 1092, '17788601-b3f8-439e-8ad7-11c7f8109e22', '', '', '', '', ''),
+(3462, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'GMT Offset Name (timezone)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2025-03-25 14:22:17', '2025-03-26 11:08:16', 4, '', 1092, '480c9734-2820-4a61-afea-75b1db3fadc9', '', '', '', '', ''),
+(3463, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Timezone Name (timezone)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2025-03-25 14:25:31', '2025-03-26 11:07:00', 4, '', 1092, 'f921d762-f5f1-4811-b1f5-71840c003a4e', '', '', '', '', ''),
+(3464, '', '', '', '', '', '', '', '', '', '', 'TEXT', '', '', '', 'Timezones (country)', 'NULL', 6, '7139f2c8-a70a-46a6-bbe3-4eefe54ca515', '\"\"', 1, '2025-03-25 14:28:44', '2025-03-27 13:41:44', 10, '', 1091, 'c803e176-923f-43a8-a542-12e27619a5f2', 'W1tbZmllbGRdXV0gPSBTdXBlcl9fXzlkNzZiOGRjXzM4ODNfNDc1NV9iMTFjXzEzMWQxOWNhOGE1M19fX1Bvd2VyOjpfKCdEYXRhLlN1YmZvcm0nKS0+dGFibGUoJ3RpbWV6b25lJyktPmdldCgkaXRlbS0+Z3VpZCA/PyAnJyAsJ2NvdW50cnknLCAndGltZXpvbmVzJywgWydndWlkJywndGltZXpvbmVfbmFtZScsJ3RpbWV6b25lX2lkZW50aWZpZXInLCdnbXRfb2Zmc2V0X25hbWUnLCdnbXRfb2Zmc2V0X3NlYycsJ2FiYnJldmlhdGlvbiddKTs=', 'U3VwZXJfX185ZDc2YjhkY18zODgzXzQ3NTVfYjExY18xMzFkMTljYThhNTNfX19Qb3dlcjo6XygnRGF0YS5TdWJmb3JtJyktPnRhYmxlKCd0aW1lem9uZScpLT5zZXQoW1tbZmllbGRdXV0gPz8gW10sICdndWlkJywgJ2NvdW50cnknLCAkZGF0YVsnZ3VpZCddID8/ICcnKTs=', '', '', ''),
+(3467, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Currency Name (country)', 'NULL', '', '201327fe-3067-4316-a155-3fe2a52e05c0', '\"\"', 1, '2025-03-26 08:24:47', '2025-03-27 13:14:04', 3, '', 4, '4b964b88-36b4-4f26-a828-0e798ce9af38', '', '', '', '', ''),
+(3468, '', '', '', '', '', '', '', '', '', '', 'TEXT', '', '', '', 'Cities (state)', 'NULL', 6, '7139f2c8-a70a-46a6-bbe3-4eefe54ca515', '\"\"', 1, '2025-03-26 11:14:54', '2025-03-27 06:12:57', 7, '', 1091, '6630c034-f87f-4c5c-ab72-e5ae0e4c0e5b', 'W1tbZmllbGRdXV0gPSBTdXBlcl9fXzlkNzZiOGRjXzM4ODNfNDc1NV9iMTFjXzEzMWQxOWNhOGE1M19fX1Bvd2VyOjpfKCdEYXRhLlN1YmZvcm0nKS0+dGFibGUoJ2NpdHknKS0+Z2V0KCRpdGVtLT5ndWlkID8/ICcnICwnc3RhdGUnLCAnY2l0aWVzJywgWydndWlkJywnbmFtZScsJ2xhdGl0dWRlJywnbG9uZ2l0dWRlJywnd2lraWRhdGFpZCddKTs=', 'U3VwZXJfX185ZDc2YjhkY18zODgzXzQ3NTVfYjExY18xMzFkMTljYThhNTNfX19Qb3dlcjo6XygnRGF0YS5TdWJmb3JtJyktPnRhYmxlKCdjaXR5JyktPnNldChbW1tmaWVsZF1dXSA/PyBbXSwgJ2d1aWQnLCAnc3RhdGUnLCAkZGF0YVsnZ3VpZCddID8/ICcnKTs=', '', '', '');
--
-- Dumping data for table `#__componentbuilder_fieldtype`
@@ -2680,7 +2719,7 @@ INSERT INTO `#__componentbuilder_fieldtype` (`id`, `description`, `name`, `prope
(3, 'The checkbox form field type provides a single checkbox. If the parameter has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected.', 'Checkbox', '{\"properties0\":{\"name\":\"type\",\"example\":\"checkbox\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be checkbox\"},\"properties1\":{\"name\":\"name\",\"example\":\"show_title\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the parameter.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Show title\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"value\",\"example\":\"1\",\"adjustable\":\"1\",\"description\":\"(optional) is the value of the parameter if this checkbox is set (usually 1).\"},\"properties4\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default value (usually 0 or 1).\"},\"properties5\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties6\":{\"name\":\"description\",\"example\":\"Show the title of the item\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the label.\"},\"properties7\":{\"name\":\"class\",\"example\":\"inputbox\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'inputbox\'.\"},\"properties8\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties9\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (JavaScript use)\"}}', 'provides a single checkbox to be checked or unchecked', '', 1, 7, '', '', '10066262-b6e3-4f82-941e-cbe4f61ddd6c'),
(4, 'The checkboxes form field type provides a set of checkboxes. Note: unlike most standard form field types, such as textfield or checkbox, this field is not an \"out of the box\" solution. It will create checkboxes for you, and submit their values in form of ', 'Checkboxes', '{\"properties0\":{\"name\":\"type\",\"example\":\"checkboxes\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be checkboxs\"},\"properties1\":{\"name\":\"name\",\"example\":\"toppings\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the parameter.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select Toppings\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"option\",\"example\":\"anch|Anchovies,chor|Chorizo,on|Onions,mush|Mushrooms\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) set the options of this radio. Separate options with commas and use the pipe symbol to separate value from text.\"},\"properties4\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default value.\"},\"properties5\":{\"name\":\"description\",\"example\":\"Select the topping of your choice\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the label.\"},\"properties6\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties7\":{\"name\":\"class\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'inputbox\'.\"},\"properties8\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'provides unlimited checkboxes that can be used for multi-select.', '', 1, 4, '', '', 'ac10859b-58da-4584-9682-36a6c2c8d04d'),
(5, 'Provides a color picker. Enter the color as #ff00ff or pick it from the palet.', 'Color', '{\"properties0\":{\"name\":\"type\",\"example\":\"color\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be color.\"},\"properties1\":{\"name\":\"name\",\"example\":\"backgroundcolor\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the parameter.\"},\"properties2\":{\"name\":\"default\",\"example\":\"#FFFFFF\",\"adjustable\":\"1\",\"description\":\"(optional) provides a color when not set.\"},\"properties3\":{\"name\":\"label\",\"example\":\"Background\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties4\":{\"name\":\"description\",\"example\":\"Select the background color here.\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) tooltip for the form field.\"},\"properties5\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties6\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'provides a color picker when clicking the input box.', '', 1, 5, '', '', '7f60f198-53e7-4fe9-813f-d1b6c553680e'),
-(6, 'The list form field type provides a drop down list or a list box of other current component table entries. If the field has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected.', 'Custom', '{\"properties0\":{\"name\":\"type\",\"example\":\"subjects\",\"mandatory\":\"1\",\"description\":\"(mandatory) can be anything, just not the same as any other default Joomla field type. You can also not use the \\\"_\\\" (underscore) or \\\"-\\\" (hyphen) in the type name, and no spaces.\"},\"properties1\":{\"name\":\"name\",\"example\":\"subject\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select a Subject\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"message\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as error on validation.\"},\"properties5\":{\"name\":\"class\",\"example\":\"list_class\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'inputbox\'.\"},\"properties6\":{\"name\":\"layout\",\"example\":\"joomla.form.field.list-fancy-select\",\"adjustable\":\"1\",\"description\":\"(optional) New layout field added in Joomla 4\"},\"properties7\":{\"name\":\"multiple\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) is whether multiple items can be selected at the same time (true or false).\"},\"properties8\":{\"name\":\"default\",\"example\":\"0\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value.\"},\"properties9\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties10\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field. This value will determine which method is used to validate the value for a field.\"},\"properties11\":{\"name\":\"readonly\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value\"},\"properties12\":{\"name\":\"disabled\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\"},\"properties13\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties14\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"},\"properties15\":{\"name\":\"extends\",\"example\":\"list\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"The JFormField sub class that should be extended. The options are (\'list\',\'radio\',\'checkboxes\')\"},\"properties16\":{\"name\":\"button\",\"example\":\"true\",\"adjustable\":\"1\",\"description\":\"(optional) to add new button next to field in edit view\"},\"properties17\":{\"name\":\"table\",\"example\":\"#__###component###_subject\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The table being linked to. The ###TABLE### placeholder holds the table in the php.\"},\"properties18\":{\"name\":\"component\",\"example\":\"com_###component###\",\"mandatory\":\"1\",\"description\":\"(mandatory) The name of the component where this table is found. Must be com_users\"},\"properties25\":{\"name\":\"entity\",\"example\":\"fieldtype\",\"adjustable\":\"1\",\"description\":\"(optional) The area\\/entity this custom field is loaded. This value can be used in the field custom code.\"},\"properties19\":{\"name\":\"view\",\"example\":\"subject\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The single view name if the place this field is added.\"},\"properties20\":{\"name\":\"views\",\"example\":\"subjects\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The list view name if the place this field is added.\"},\"properties21\":{\"name\":\"value_field\",\"example\":\"name\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The name of the text field in table linked to. The ###TEXT### placeholder holds the value_field in the php.\"},\"properties22\":{\"name\":\"key_field\",\"example\":\"id\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The field from the linked table to save in this table as the unique key. The ###ID### placeholder holds the key_field in the php.\"},\"properties23\":{\"name\":\"prime_php\",\"example\":\"1\",\"adjustable\":\"1\",\"description\":\"This field makes sure that the PHP used here is used to build the field type, and other are custom fields with the same field type are ignored. So to avoid that they over write the PHP added here. You should only have one prime per\\/type. To disable remove the field or set to 0\"},\"properties24\":{\"name\":\"type_php_1\",\"example\":\"\\/\\/ Get the user object.\\r\\n\\t\\t$user = Factory::getUser();\\r\\n\\t\\t\\/\\/ Get the databse object.\\r\\n\\t\\t$db = Factory::getDBO();\\r\\n\\t\\t$query = $db->getQuery(true);\\r\\n\\t\\t$query->select($db->quoteName(array(\'a.###ID###\',\'a.###TEXT###\'),array(\'###ID###\',\'###CODE_TEXT###\')));\\r\\n\\t\\t$query->from($db->quoteName(\'###TABLE###\', \'a\'));\\r\\n\\t\\t$query->where($db->quoteName(\'a.published\') . \' = 1\');\\r\\n\\t\\t$query->order(\'a.###TEXT### ASC\');\\r\\n\\t\\t\\/\\/ Implement View Level Access (if set in table)\\r\\n\\t\\tif (!$user->authorise(\'core.options\', \'[[[com_component]]]\'))\\r\\n\\t\\t{\\r\\n\\t\\t\\t$columns = $db->getTableColumns(\'###TABLE###\');\\r\\n\\t\\t\\tif(isset($columns[\'access\']))\\r\\n\\t\\t\\t{\\r\\n\\t\\t\\t\\t$groups = implode(\',\', $user->getAuthorisedViewLevels());\\r\\n\\t\\t\\t\\t$query->where(\'a.access IN (\' . $groups . \')\');\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\t\\t$db->setQuery((string)$query);\\r\\n\\t\\t$items = $db->loadObjectList();\\r\\n\\t\\t$options = [];\\r\\n\\t\\tif ($items)\\r\\n\\t\\t{\\r\\n\\t\\t\\tif ($this->multiple === false)\\r\\n\\t\\t\\t{\\r\\n\\t\\t\\t\\t$options[] = Html::_(\'select.option\', \'\', Text::_(\'Select an option\'));\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\tforeach($items as $item)\\r\\n\\t\\t\\t{\\r\\n\\t\\t\\t\\t$options[] = Html::_(\'select.option\', $item->###ID###, $item->###CODE_TEXT###);\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\t\\treturn $options;\",\"adjustable\":\"1\",\"description\":\"The php for the getOptions method.\"}}', 'provides a drop down list of items entries.', '', 1, 31, '', '', 'dd2e1f4b-f5db-45e8-85fa-efd27bae7b6a'),
+(6, 'The list form field type provides a drop down list or a list box of other current component table entries. If the field has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected.', 'Custom', '{\"properties0\":{\"name\":\"type\",\"example\":\"subjects\",\"mandatory\":\"1\",\"description\":\"(mandatory) can be anything, just not the same as any other default Joomla field type. You can also not use the \\\"_\\\" (underscore) or \\\"-\\\" (hyphen) in the type name, and no spaces.\"},\"properties1\":{\"name\":\"name\",\"example\":\"subject\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select a Subject\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"message\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as error on validation.\"},\"properties5\":{\"name\":\"class\",\"example\":\"list_class\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'inputbox\'.\"},\"properties6\":{\"name\":\"layout\",\"example\":\"joomla.form.field.list-fancy-select\",\"adjustable\":\"1\",\"description\":\"(optional) New layout field added in Joomla 4\"},\"properties7\":{\"name\":\"multiple\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) is whether multiple items can be selected at the same time (true or false).\"},\"properties8\":{\"name\":\"default\",\"example\":\"0\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value.\"},\"properties9\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties10\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field. This value will determine which method is used to validate the value for a field.\"},\"properties11\":{\"name\":\"readonly\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value\"},\"properties12\":{\"name\":\"disabled\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\"},\"properties13\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties14\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"},\"properties15\":{\"name\":\"extends\",\"example\":\"list\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"The JFormField sub class that should be extended. The options are (\'list\',\'radio\',\'checkboxes\')\"},\"properties16\":{\"name\":\"button\",\"example\":\"true\",\"adjustable\":\"1\",\"description\":\"(optional) to add new button next to field in edit view\"},\"properties17\":{\"name\":\"table\",\"example\":\"#__###component###_subject\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The table being linked to. The ###TABLE### placeholder holds the table in the php.\"},\"properties18\":{\"name\":\"component\",\"example\":\"com_###component###\",\"mandatory\":\"1\",\"description\":\"(mandatory) The name of the component where this table is found. Must be com_users\"},\"properties19\":{\"name\":\"entity\",\"example\":\"###view###\",\"adjustable\":\"1\",\"description\":\"(optional) The area\\/entity this custom field is loaded. This value can be used in the field custom code.\"},\"properties20\":{\"name\":\"view\",\"example\":\"subject\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The single view name if the place this field is added.\"},\"properties21\":{\"name\":\"views\",\"example\":\"subjects\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The list view name if the place this field is added.\"},\"properties22\":{\"name\":\"value_field\",\"example\":\"name\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The name of the text field in table linked to. The ###TEXT### placeholder holds the value_field in the php.\"},\"properties23\":{\"name\":\"key_field\",\"example\":\"id\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The field from the linked table to save in this table as the unique key. The ###ID### placeholder holds the key_field in the php.\"},\"properties24\":{\"name\":\"prime_php\",\"example\":\"1\",\"adjustable\":\"1\",\"description\":\"This field makes sure that the PHP used here is used to build the field type, and other are custom fields with the same field type are ignored. So to avoid that they over write the PHP added here. You should only have one prime per\\/type. To disable remove the field or set to 0\"},\"properties25\":{\"name\":\"type_php_1\",\"example\":\"\\/\\/ Get the user object.\\r\\n\\t\\t$user = Factory::getUser();\\r\\n\\t\\t\\/\\/ Get the databse object.\\r\\n\\t\\t$db = Factory::getDBO();\\r\\n\\t\\t$query = $db->getQuery(true);\\r\\n\\t\\t$query->select($db->quoteName(array(\'a.###ID###\',\'a.###TEXT###\'),array(\'###ID###\',\'###CODE_TEXT###\')));\\r\\n\\t\\t$query->from($db->quoteName(\'###TABLE###\', \'a\'));\\r\\n\\t\\t$query->where($db->quoteName(\'a.published\') . \' = 1\');\\r\\n\\t\\t$query->order(\'a.###TEXT### ASC\');\\r\\n\\t\\t\\/\\/ Implement View Level Access (if set in table)\\r\\n\\t\\tif (!$user->authorise(\'core.options\', \'[[[com_component]]]\'))\\r\\n\\t\\t{\\r\\n\\t\\t\\t$columns = $db->getTableColumns(\'###TABLE###\');\\r\\n\\t\\t\\tif(isset($columns[\'access\']))\\r\\n\\t\\t\\t{\\r\\n\\t\\t\\t\\t$groups = implode(\',\', $user->getAuthorisedViewLevels());\\r\\n\\t\\t\\t\\t$query->where(\'a.access IN (\' . $groups . \')\');\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\t\\t$db->setQuery((string)$query);\\r\\n\\t\\t$items = $db->loadObjectList();\\r\\n\\t\\t$options = [];\\r\\n\\t\\tif ($items)\\r\\n\\t\\t{\\r\\n\\t\\t\\tif ($this->multiple === false)\\r\\n\\t\\t\\t{\\r\\n\\t\\t\\t\\t$options[] = Html::_(\'select.option\', \'\', Text::_(\'Select an option\'));\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\tforeach($items as $item)\\r\\n\\t\\t\\t{\\r\\n\\t\\t\\t\\t$options[] = Html::_(\'select.option\', $item->###ID###, $item->###CODE_TEXT###);\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\t\\treturn $options;\",\"adjustable\":\"1\",\"description\":\"The php for the getOptions method.\"}}', 'provides a drop down list of items entries.', '', 1, 32, '', '', 'dd2e1f4b-f5db-45e8-85fa-efd27bae7b6a'),
(7, 'The a list of users that can be targeting one or more groups and excluded users that already belongs to an item in a view.', 'CustomUser', '{\"properties0\":{\"name\":\"type\",\"example\":\"staffusers\",\"mandatory\":\"1\",\"description\":\"(mandatory) can be anything, just not the same as any other default Joomla field type.\"},\"properties1\":{\"name\":\"name\",\"example\":\"staff\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Staff\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"class\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'inputbox\'.\"},\"properties5\":{\"name\":\"multiple\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) is whether multiple items can be selected at the same time (true or false).\"},\"properties6\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties7\":{\"name\":\"readonly\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value\"},\"properties8\":{\"name\":\"disabled\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\"},\"properties9\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"\"},\"properties10\":{\"name\":\"hint\",\"example\":\"select a user\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"\"},\"properties11\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties12\":{\"name\":\"extends\",\"example\":\"user\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"The JFormField sub class that should be extended. The options are (\'list\',\'radio\',\'checkboxes\')\"},\"properties13\":{\"name\":\"table\",\"example\":\"#__users\",\"mandatory\":\"1\",\"description\":\"(mandatory) The table being linked to. Must be #__users\"},\"properties14\":{\"name\":\"component\",\"example\":\"com_users\",\"mandatory\":\"1\",\"description\":\"(mandatory) The name of the component where this table is found. Must be com_users\"},\"properties15\":{\"name\":\"view\",\"example\":\"###view###\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The single view name if the place this field is added.\"},\"properties16\":{\"name\":\"views\",\"example\":\"###views###\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The list view name if the place this field is added.\"},\"properties17\":{\"name\":\"value_field\",\"example\":\"name\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The name of the text field in table linked to.\"},\"properties18\":{\"name\":\"key_field\",\"example\":\"id\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The field from the linked table to save in this table as the unique key.\"},\"properties19\":{\"name\":\"type_php_1\",\"example\":\"\\t\\t\\/\\/ set the groups array\\r\\n\\t\\treturn ComponentHelper::getParams(\'com_###component###\')->get(\'###type###\');\",\"adjustable\":\"1\",\"description\":\"The php for the getGroups method.\"},\"properties22\":{\"name\":\"type_phpx_1\",\"example\":\"\\t\\t\\/\\/ To ensure that there is only one record per user\\r\\n\\t\\t\\/\\/ Get a db connection.\\r\\n\\t\\t$db = Factory::getDbo();\\r\\n\\t\\t\\/\\/ Create a new query object.\\r\\n\\t\\t$query = $db->getQuery(true);\\r\\n\\t\\t\\/\\/ Select all records from the #__###component###_###view### table from ###CODE### column\\\".\\r\\n\\t\\t$query->select($db->quoteName(\'###CODE###\'));\\r\\n\\t\\t$query->from($db->quoteName(\'#__###component###_###view###\'));\\r\\n\\t\\t$db->setQuery($query);\\r\\n\\t\\t$db->execute();\\r\\n\\t\\t$found = $db->getNumRows();\\r\\n\\t\\tif ($found)\\r\\n\\t\\t{\\r\\n\\t\\t\\t\\/\\/ return all users already used\\r\\n\\t\\t\\treturn array_unique($db->loadColumn());\\r\\n\\t\\t}\\r\\n\\t\\treturn null;\",\"adjustable\":\"1\",\"description\":\"The php for the getExcluded method.\"}}', 'Provides list of users.', '', 1, 6, '', '', 'a4a39f70-070f-459c-be4b-0ac103a29b9a'),
(8, 'The Editor field type provides a WYSIWYG editor.', 'Editor', '{\"properties0\":{\"name\":\"type\",\"example\":\"editor\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be editor.\"},\"properties1\":{\"name\":\"name\",\"example\":\"mytextblock\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the parameter.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Test Field\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"default\",\"example\":\"Some text\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value.\"},\"properties4\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the label.\"},\"properties5\":{\"name\":\"message\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as error on validation.\"},\"properties6\":{\"name\":\"width\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) defines the width (in pixels) of the wysiwyg editor and defaults to 100%.\"},\"properties7\":{\"name\":\"height\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) defines the height (in pixels) of the wysiwyg editor and defaults to 250px.\"},\"properties8\":{\"name\":\"cols\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) defines the width of the editor (in columns).\"},\"properties9\":{\"name\":\"rows\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) defines the height of the editor (in rows).\"},\"properties10\":{\"name\":\"buttons\",\"example\":\"no\",\"adjustable\":\"1\",\"description\":\"(optional) can be an array of plugin buttons to be excluded or set to false. The default editors-xtd are: article, image, pagebreak and readmore.\"},\"properties11\":{\"name\":\"syntax\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) can be used to set the code syntax matching for this field.\"},\"properties12\":{\"name\":\"hide\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) array of plugin buttons to be hidden. eg... set buttons=\\\"true\\\" hide=\\\"readmore,pagebreak\\\"\"},\"properties13\":{\"name\":\"editor\",\"example\":\"codemirror|none\",\"adjustable\":\"1\",\"description\":\"specifies the editor to be used and can include two options (editor=\\\"desired|alternative\\\")\"},\"properties14\":{\"name\":\"filter\",\"example\":\"safehtml\",\"adjustable\":\"1\",\"description\":\"(optional) allow the system to save certain html tags or raw data.\"},\"properties15\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties16\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field. This value will determine which method is used to validate the value for a field.\"},\"properties17\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'provides an editor area field.', '', 1, 12, '', '', '51f288d2-6eaa-42bc-a182-a6f69b3032b8'),
(9, 'The hidden form field type provides a hidden field for saving a field whose value cannot be altered directly by a user in the Administrator (it can be altered in code or by editing the params.ini file). If the parameter has a saved value this is entered i', 'Hidden', '{\"properties0\":{\"name\":\"type\",\"example\":\"hidden\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be hidden.\"},\"properties1\":{\"name\":\"name\",\"example\":\"mysecretvariable\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"default\",\"example\":\"1\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the data which needs to be collected.\"},\"properties5\":{\"name\":\"filter\",\"example\":\"STRING\",\"adjustable\":\"1\",\"description\":\"(optional) allow the system to save certain html tags or raw data.\"},\"properties4\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field. This value will determine which method is used to validate the value for a field.\"}}', 'provides a hidden field for saving a form field whose value cannot be altered directly by a user.', '', 1, 2, '', '', '82f1b5ca-bb9b-44d7-9a7a-9a03fb2a31dd'),
@@ -2707,7 +2746,7 @@ INSERT INTO `#__componentbuilder_fieldtype` (`id`, `description`, `name`, `prope
(30, 'The filelist form field type provides a drop down list of files from a specified directory. If the field has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected.\r\n\r\nBy default, the first item on the', 'Filelist', '{\"properties0\":{\"name\":\"type\",\"example\":\"filelist\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be filelist.\"},\"properties1\":{\"name\":\"name\",\"example\":\"myfile\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select a file\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"directory\",\"example\":\"images\\/stories\",\"adjustable\":\"1\",\"description\":\"(optional) is the filesystem path to the directory containing the files to be listed. If omitted the directory given by JPATH_ROOT is assumed.\"},\"properties4\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default file name.\"},\"properties5\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties6\":{\"name\":\"filter\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a regular expression string which is used to filter the list of files selected for inclusion in the drop-down list. If omitted, all files in the directory are included. The filter argument expression is applied before the exclude argument expression. For information on constructing regular expressions see Regular expressions in parameter arguments.\"},\"properties7\":{\"name\":\"exclude\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a regular expression string which is used to exclude files from the list. The exclude argument expression is applied after the filter argument expression. For information on constructing regular expressions see Regular expressions in parameter arguments.\"},\"properties8\":{\"name\":\"stripext\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true then file name extensions will be stripped from the file names listed. Also note that the file name will be saved without the extension too.\"},\"properties9\":{\"name\":\"hide_none\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true, the \'- Do not use -\' item is omitted from the drop-down list.\"},\"properties10\":{\"name\":\"hide_default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true, the \'- Use default -\' item is omitted from the drop-down list.\"},\"properties11\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'Provides a drop down list of files from a specified directory.', '', 1, 4, '', 1, '0c80df15-52c6-4647-983b-4bb4888a2edf'),
(31, 'The folderlist form field type provides a drop down list of folders from a specfied directory. If the field has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected.\r\n\r\nBy default, the first item on ', 'Folderlist', '{\"properties0\":{\"name\":\"type\",\"example\":\"folderlist\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be folderlist.\"},\"properties1\":{\"name\":\"name\",\"example\":\"myfolder\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select a folder\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"directory\",\"example\":\"images\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the filesystem path to the directory containing the folders to be listed.\"},\"properties4\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default folder name.\"},\"properties5\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties6\":{\"name\":\"filter\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a regular expression string which is used to filter the list of folders selected for inclusion in the drop-down list. If omitted, all folders in the directory are included. The filter argument expression is applied before the exclude argument expression. For information on constructing regular expressions see Regular expressions in parameter arguments.\"},\"properties7\":{\"name\":\"exclude\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a regular expression string which is used to exclude folders from the list. The exclude argument expression is applied after the filter argument expression. For information on constructing regular expressions see Regular expressions in parameter arguments.\"},\"properties8\":{\"name\":\"hide_none\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true, the \'- Do not use -\' item is omitted from the drop-down list.\"},\"properties9\":{\"name\":\"hide_default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true, the \'- Use default -\' item is omitted from the drop-down list.\"},\"properties10\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'Provides a drop down list of folders from a specified directory.', '', 1, 4, '', 2, 'd3ab2ae4-9370-4497-ae6d-dee2e0b74b7a'),
(32, 'Note: When using the file input type you should always add the attribute enctype=\"multipart/form-data\" to your form tag. Otherwise, the uploaded files will not be attached correctly.\r\n\r\nNote 2: You can put a soft limit file size by adding a hidden field with name=\"MAX_FILE_SIZE\" and value the maximum allowed bytes which is handled by php, but you must also handle it in your code with or without it.', 'File', '{\"properties0\":{\"name\":\"type\",\"example\":\"file\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be file.\"},\"properties1\":{\"name\":\"name\",\"example\":\"myfilevalue\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Enter some text\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"Choose an image from your computer with maximum 100KB\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value, but doesn\'t mean much for a file.\"},\"properties5\":{\"name\":\"size\",\"example\":\"10\",\"adjustable\":\"1\",\"description\":\"(optional) is the width of the file box in characters.\"},\"properties6\":{\"name\":\"accept\",\"example\":\"image\\/*\",\"adjustable\":\"1\",\"description\":\"(optional) Tells the browser what MIME types your form will allow to be uploaded.\"},\"properties7\":{\"name\":\"class\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field.\"},\"properties8\":{\"name\":\"labelclass\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) adds a CSS class for form field\'s label; for Joomla 2.5.4+\"},\"properties9\":{\"name\":\"disabled\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute\"},\"properties10\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"},\"properties11\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) For Joomla form validating it to be filled in\"},\"properties12\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Whether to Joomla validate the field according to rules\"},\"properties13\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'Provides an input field for files', '', 1, 9, '', 3, '6da71c1e-119c-4e0d-a309-f3e52ecfa1d1'),
-(33, 'The menuitem form field type provides a drop down grouped list of the available menu items from your Joomla site.', 'menuitem', '{\"properties0\":{\"name\":\"type\",\"example\":\"menuitem\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be menuitem.\"},\"properties1\":{\"name\":\"name\",\"example\":\"mymenuitem\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select a menu item\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default menu item. Note that this is the ItemID number of the menu item.\"},\"properties4\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties5\":{\"name\":\"published\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) determines whether all menu items are listed or only published menu items. If state is \'0\' then all menu items will be listed. If state is \'1\' then only published menu items will be listed.\"},\"properties6\":{\"name\":\"filter\",\"example\":\"int\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(optional) allow the system to save certain html tags or raw data.\"},\"properties7\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'provides a drop down list of the available menu items from your Joomla site.', '', 1, 5, '', 4, 'f183b0e2-017f-48bd-8dba-d332ce1b8d9e'),
+(33, 'The menuitem form field type provides a drop down grouped list of the available menu items from your Joomla site.', 'Menuitem', '{\"properties0\":{\"name\":\"type\",\"example\":\"menuitem\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be menuitem.\"},\"properties1\":{\"name\":\"name\",\"example\":\"mymenuitem\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select a menu item\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default menu item. Note that this is the ItemID number of the menu item.\"},\"properties4\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties5\":{\"name\":\"published\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) determines whether all menu items are listed or only published menu items. If state is \'0\' then all menu items will be listed. If state is \'1\' then only published menu items will be listed.\"},\"properties6\":{\"name\":\"filter\",\"example\":\"int\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(optional) allow the system to save certain html tags or raw data.\"},\"properties7\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'provides a drop down list of the available menu items from your Joomla site.', '', 1, 6, '', 4, 'f183b0e2-017f-48bd-8dba-d332ce1b8d9e'),
(34, 'Remember all views already have [accesslevel] added by default, only add this if you need more custom access selection! Provides a dropdown list of accesslevel options with the current option selected.', 'Accesslevel', '{\"properties0\":{\"name\":\"type\",\"example\":\"accesslevel\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be accesslevel\"},\"properties1\":{\"name\":\"name\",\"example\":\"accesstwo\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field. This must match the name of the query results column that contains the values that will be shown to the user in the drop-down list, unless a different name is specified in the value_field attribute. \"},\"properties2\":{\"name\":\"label\",\"example\":\"Access Two\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"Select an access level to this concept.\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"class\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field.\"},\"properties5\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the field required true if yes.\"},\"properties6\":{\"name\":\"multiple\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) If set to multiple then allows more than one usergroup to be selected.\"},\"properties7\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'List of accesslevels', '', 1, 4, '', 5, '913ed2ce-836c-48e8-97af-e482441f47df'),
(35, 'Provides a form with rows of fields that you specify. As many options can be added as desired. Note this form field has a jQuery based javascript file as a dependency.', 'Subform', '{\"properties0\":{\"name\":\"type\",\"example\":\"subform\",\"description\":\"(mandatory) must be subform.\"},\"properties1\":{\"name\":\"name\",\"example\":\"options\",\"adjustable\":\"1\",\"description\":\"(mandatory) is the unique name of the parameter\"},\"properties2\":{\"name\":\"label\",\"example\":\"The Option List\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"layout\",\"example\":\"joomla.form.field.subform.repeatable-table\",\"adjustable\":\"1\",\"description\":\"(mandatory) The layout for the repeatable table.\"},\"properties4\":{\"name\":\"component\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) To change the component where it should search for layout\"},\"properties5\":{\"name\":\"client\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Function to initialise the application clientFrontend: site or 0Backend: admin or 1\"},\"properties6\":{\"name\":\"multiple\",\"example\":\"true\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The rows to be multiple.\"},\"properties7\":{\"name\":\"buttons\",\"example\":\"add,remove,move\",\"adjustable\":\"1\",\"description\":\"(optional) Which buttons to show if multiple mode is true.Options: add,remove,move\"},\"properties8\":{\"name\":\"fields\",\"example\":\"1,2,3\",\"adjustable\":\"1\",\"description\":\"(mandatory) The fields to add to the modal. All fields must first be created in component builder as a field before you can add them here, since you must use the id of the field. Separate the field ids with commas. Do not add custom fields that are not also used in this component.\"},\"properties9\":{\"name\":\"formsource\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) you can add a path to a xml file containing the fields.\"},\"properties10\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) description text for the form field. Displays at the top of the modal with the name as well as in the usual position in the form\"},\"properties11\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The default value for the form field if the field is left empty. Note this has to be a json string compatible with the contents of the form field.\"},\"properties12\":{\"name\":\"icon\",\"example\":\"list\",\"adjustable\":\"1\",\"description\":\"(optional) The icon to show on the select button (is prefixed with \\\"icon-\\\").\"},\"properties13\":{\"name\":\"max\",\"example\":\"50\",\"adjustable\":\"1\",\"description\":\"(optional) The maximum number of rows of fields allowed (by default 999 to be effectively infinite)\"},\"properties14\":{\"name\":\"min\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The minimum number of rows of fields required\"},\"properties15\":{\"name\":\"filter\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Use only if you would like to save raw data, since the default is best.\"},\"properties16\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'Allows form fields which can have as many options as the user desires.', '', 1, 14, '', 6, '7139f2c8-a70a-46a6-bbe3-4eefe54ca515'),
(36, 'Provides an input field for an email address.', 'Email', '{\"properties0\":{\"name\":\"type\",\"example\":\"email\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be email.\"},\"properties1\":{\"name\":\"name\",\"example\":\"email\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Email Address\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"size\",\"example\":\"10\",\"adjustable\":\"1\",\"description\":\"(optional) is the width of the text box in characters. If omitted the width is determined by the browser. The value of size does not limit the number of characters that may be entered.\"},\"properties4\":{\"name\":\"maxlength\",\"example\":\"50\",\"adjustable\":\"1\",\"description\":\"(optional) limits the number of characters that may be entered.\"},\"properties5\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value.\"},\"properties6\":{\"name\":\"description\",\"example\":\"Enter some description\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties7\":{\"name\":\"class\",\"example\":\"inputbox\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'text_area\'.\"},\"properties8\":{\"name\":\"readonly\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value\"},\"properties9\":{\"name\":\"disabled\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\"},\"properties10\":{\"name\":\"required\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties11\":{\"name\":\"filter\",\"example\":\"STRING\",\"adjustable\":\"1\",\"description\":\"(optional) allow the system to save certain html tags or raw data.\"},\"properties12\":{\"name\":\"validate\",\"example\":\"email\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field. This value will determine which method is used to validate the value for a field.\"},\"properties13\":{\"name\":\"unique\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) Used in validation, to check if we should test for uniqueness, to insure that this email does not already belong to another user. Check line 99 in \\/libraries\\/src\\/Form\\/Rule\\/EmailRule.php\"},\"properties14\":{\"name\":\"field\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) used in validation of \\\"equals\\\" to link the field to match.\"},\"properties15\":{\"name\":\"message\",\"example\":\"Error! Please add some text here.\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) The error message that will be displayed instead of the default message.\"},\"properties16\":{\"name\":\"hint\",\"example\":\"your@email.com\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) The placeholder to display inside the text box.\"},\"properties17\":{\"name\":\"autocomplete\",\"example\":\"on\",\"adjustable\":\"1\",\"description\":\"(optional) The autocomplete state for the form field. If \'off\' element will not be automatically completed by browser.\"},\"properties18\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties19\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"}}', 'Email form field type', '', 1, 7, '', 7, '35948af5-9e79-4454-8dfa-682ee4fdf650'),
@@ -2721,7 +2760,8 @@ INSERT INTO `#__componentbuilder_fieldtype` (`id`, `description`, `name`, `prope
(44, 'The imagelist form field type provides a drop down list of image files in a specified directory. Only files with .png, .gif, .jpg, .bmp, .ico extensions are listed. If the field has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected.\r\n\r\nBy default, the first item on the list is \'- Do not use -\' (which is translatable) and is given the value \'-1\' and this is followed by \'- Use default -\' (also translatable) given the value \'0\'.', 'Imagelist', '{\"properties0\":{\"name\":\"type\",\"example\":\"imagelist\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be imagelist.\"},\"properties1\":{\"name\":\"name\",\"example\":\"myimagelist\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select an image\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"directory\",\"example\":\"images\\/stories\",\"adjustable\":\"1\",\"description\":\"(optional) is the filesystem path to the directory containing the image files to be listed. If omitted the directory given by JPATH_ROOT is assumed.\"},\"properties4\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default image file name.\"},\"properties5\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties6\":{\"name\":\"filter\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a regular expression string which is used to filter the list of image files selected for inclusion in the drop-down list. If omitted, all image files in the directory are included. The filter argument expression is applied before the exclude argument expression. For information on constructing regular expressions see Regular expressions in parameter arguments.\"},\"properties7\":{\"name\":\"exclude\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a regular expression string which is used to exclude image files from the list. The exclude argument expression is applied after the filter argument expression. For information on constructing regular expressions see Regular expressions in parameter arguments.\"},\"properties8\":{\"name\":\"stripext\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true then file name extensions will be stripped from the image file names listed. Also note that the file name will be saved without the extension too.\"},\"properties9\":{\"name\":\"hide_none\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true, the \'- Do not use -\' item is omitted from the drop-down list.\"},\"properties10\":{\"name\":\"hide_default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true, the \'- Use default -\' item is omitted from the drop-down list.\"},\"properties11\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'Provides a drop down list of image files from a specified directory.', '', 1, 3, '', 14, '72680e92-2859-49c6-ad92-c2329c52f9f8'),
(45, '', 'Modal Menu', '{\"properties0\":{\"name\":\"type\",\"example\":\"modal_menu\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be modal_menu.\"},\"properties1\":{\"name\":\"name\",\"example\":\"base\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Base Item\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"option\",\"example\":\"Current\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) set the options of this radio. Separate options with commas and use the pipe symbol to separate value from text.\"},\"properties4\":{\"name\":\"select\",\"example\":\"true\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) show select options\"},\"properties5\":{\"name\":\"new\",\"example\":\"true\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory)\"},\"properties6\":{\"name\":\"edit\",\"example\":\"true\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory)\"},\"properties7\":{\"name\":\"description\",\"example\":\"Select a menu item to always be used as the base for the menu display. You must set the Start Level to the same level or higher than the level of the base item. This will cause the module to be displayed on all assigned pages. If Current is selected the active item is used as the base. This causes the module to only display when the parent menu item is active.\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties8\":{\"name\":\"clear\",\"example\":\"true\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory)\"},\"properties9\":{\"name\":\"disable\",\"example\":\"separator,alias,heading,url\",\"adjustable\":\"1\",\"description\":\"(optional)\"},\"properties10\":{\"name\":\"filter\",\"example\":\"integer\",\"adjustable\":\"1\",\"description\":\"(optional) is a regular expression string which is used to filter the list of image files selected for inclusion in the drop-down list. If omitted, all image files in the directory are included. The filter argument expression is applied before the exclude argument expression. For information on constructing regular expressions see Regular expressions in parameter arguments.\"},\"properties11\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\\r\\n\"}}', 'Modal Menu', '', 1, 7, '', 15, '715256a4-8cc2-4d66-9d08-31e58ca5b036'),
(46, 'The menu form field type provides a drop down list of the available menus from your Joomla! site. If the field has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected. ', 'Menu', '{\"properties0\":{\"name\":\"type\",\"example\":\"menu\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be menu.\"},\"properties1\":{\"name\":\"name\",\"example\":\"menutype\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the filed.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Menu to Show\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"Choose which menu should be rendered with this instance of module.\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) tooltip for the form field.\"},\"properties4\":{\"name\":\"clientid\",\"example\":\"0\",\"adjustable\":\"1\",\"description\":\"\"},\"properties5\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default menu. Note that this is the name of the menu shown in the Type column on the Menu Manager screen and not the menu ID number.\"},\"properties6\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties7\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"}}', 'Menu Type', '', 1, 4, '', 16, '6349f152-8ef5-43bd-a89b-ce18f33ac5e5'),
-(47, 'Dynamic Checkboxes', 'DynamicCheckboxes@', '{\"properties0\":{\"name\":\"type\",\"example\":\"change_this\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) can be anything, just not the same as any other default Joomla field type. You can also not use the \\\"_\\\" (underscore) or \\\"-\\\" (hyphen) in the type name, and no spaces.\"},\"properties1\":{\"name\":\"name\",\"example\":\"dynamic_checkboxes\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Dynamic Checkboxes\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"The checkbox linked to global subform of the same name\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"option\",\"example\":\"1|Default\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) set the options of this checkboxes. Separate options with commas and use the pipe symbol to separate value from text.\"},\"properties5\":{\"name\":\"default\",\"example\":\"1\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value.\"},\"properties6\":{\"name\":\"required\",\"example\":\"true\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties7\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties8\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"},\"properties9\":{\"name\":\"extends\",\"example\":\"checkboxes\",\"mandatory\":\"1\",\"description\":\"Must be checkboxes\"},\"properties10\":{\"name\":\"type_phpHEADER_1\",\"example\":\"\\\\JFormHelper::loadFieldClass(\'checkboxes\');\\r\\nuse VDM\\\\Joomla\\\\Utilities\\\\Component\\\\Helper;\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"The Header USE options\"},\"properties11\":{\"name\":\"type_php_1\",\"example\":\"\\t\\/**\\r\\n\\t * Method to get the data to be passed to the layout for rendering.\\r\\n\\t *\\r\\n\\t * @return array\\r\\n\\t *\\r\\n\\t * @since 3.5\\r\\n\\t *\\/\\r\\n\\tprotected function getLayoutData()\\r\\n\\t{\\r\\n\\t\\t$data = parent::getLayoutData();\\r\\n\\r\\n\\t\\t\\/\\/ True if the field has \'value\' set. In other words, it has been stored, don\'t use the default values.\\r\\n\\t\\t$hasValue = (isset($this->value) && !empty($this->value));\\r\\n\\r\\n\\t\\t\\/\\/ If a value has been stored, use it. Otherwise, use the defaults.\\r\\n\\t\\t$checkedOptions = $hasValue ? $this->value : $this->checkedOptions;\\r\\n\\r\\n\\t\\t\\/\\/ get the form options\\r\\n\\t\\t$options = $this->getOptions();\\r\\n\\r\\n\\t\\t\\/\\/ get the component params\\r\\n\\t\\t$params = Helper::getParams();\\r\\n\\t\\t$subform = $params->get($this->fieldname);\\r\\n\\r\\n\\t\\t\\/\\/ add the paths found in global settings\\r\\n\\t\\tif (is_array($subform) && $subform !== [])\\r\\n\\t\\t{\\r\\n\\t\\t\\tforeach ($subform as $value)\\r\\n\\t\\t\\t{\\r\\n\\t\\t\\t\\tif (isset($value->path) && strlen($value->path) > 3)\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t$tmp = new \\\\stdClass;\\r\\n\\t\\t\\t\\t\\t$tmp->value = $value->set_me;\\r\\n\\t\\t\\t\\t\\t$tmp->text = $value->set_me;\\r\\n\\t\\t\\t\\t\\t$tmp->checked = false;\\r\\n\\r\\n\\t\\t\\t\\t\\t$options[] = $tmp;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\r\\n\\t\\t$extraData = array(\\r\\n\\t\\t\\t\'checkedOptions\' => is_array($checkedOptions) ? $checkedOptions : explode(\',\', (string) $checkedOptions),\\r\\n\\t\\t\\t\'hasValue\' => $hasValue,\\r\\n\\t\\t\\t\'options\' => $options\\r\\n\\t\\t);\\r\\n\\r\\n\\t\\treturn array_merge($data, $extraData);\\r\\n\\t}\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"The php for the getLayoutData method.\"}}', 'Super Power Repository Paths', '', 1, 14, '', 12, '7ed21e79-cbc5-48e3-9ed0-ca72b0f2f1a1');
+(47, 'Dynamic Checkboxes', 'DynamicCheckboxes@', '{\"properties0\":{\"name\":\"type\",\"example\":\"change_this\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) can be anything, just not the same as any other default Joomla field type. You can also not use the \\\"_\\\" (underscore) or \\\"-\\\" (hyphen) in the type name, and no spaces.\"},\"properties1\":{\"name\":\"name\",\"example\":\"dynamic_checkboxes\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Dynamic Checkboxes\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"The checkbox linked to global subform of the same name\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"option\",\"example\":\"1|Default\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) set the options of this checkboxes. Separate options with commas and use the pipe symbol to separate value from text.\"},\"properties5\":{\"name\":\"default\",\"example\":\"1\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value.\"},\"properties6\":{\"name\":\"required\",\"example\":\"true\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties7\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties8\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"},\"properties9\":{\"name\":\"extends\",\"example\":\"checkboxes\",\"mandatory\":\"1\",\"description\":\"Must be checkboxes\"},\"properties10\":{\"name\":\"type_phpHEADER_1\",\"example\":\"\\\\JFormHelper::loadFieldClass(\'checkboxes\');\\r\\nuse VDM\\\\Joomla\\\\Utilities\\\\Component\\\\Helper;\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"The Header USE options\"},\"properties11\":{\"name\":\"type_php_1\",\"example\":\"\\t\\/**\\r\\n\\t * Method to get the data to be passed to the layout for rendering.\\r\\n\\t *\\r\\n\\t * @return array\\r\\n\\t *\\r\\n\\t * @since 3.5\\r\\n\\t *\\/\\r\\n\\tprotected function getLayoutData()\\r\\n\\t{\\r\\n\\t\\t$data = parent::getLayoutData();\\r\\n\\r\\n\\t\\t\\/\\/ True if the field has \'value\' set. In other words, it has been stored, don\'t use the default values.\\r\\n\\t\\t$hasValue = (isset($this->value) && !empty($this->value));\\r\\n\\r\\n\\t\\t\\/\\/ If a value has been stored, use it. Otherwise, use the defaults.\\r\\n\\t\\t$checkedOptions = $hasValue ? $this->value : $this->checkedOptions;\\r\\n\\r\\n\\t\\t\\/\\/ get the form options\\r\\n\\t\\t$options = $this->getOptions();\\r\\n\\r\\n\\t\\t\\/\\/ get the component params\\r\\n\\t\\t$params = Helper::getParams();\\r\\n\\t\\t$subform = $params->get($this->fieldname);\\r\\n\\r\\n\\t\\t\\/\\/ add the paths found in global settings\\r\\n\\t\\tif (is_array($subform) && $subform !== [])\\r\\n\\t\\t{\\r\\n\\t\\t\\tforeach ($subform as $value)\\r\\n\\t\\t\\t{\\r\\n\\t\\t\\t\\tif (isset($value->path) && strlen($value->path) > 3)\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t$tmp = new \\\\stdClass;\\r\\n\\t\\t\\t\\t\\t$tmp->value = $value->set_me;\\r\\n\\t\\t\\t\\t\\t$tmp->text = $value->set_me;\\r\\n\\t\\t\\t\\t\\t$tmp->checked = false;\\r\\n\\r\\n\\t\\t\\t\\t\\t$options[] = $tmp;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\r\\n\\t\\t$extraData = array(\\r\\n\\t\\t\\t\'checkedOptions\' => is_array($checkedOptions) ? $checkedOptions : explode(\',\', (string) $checkedOptions),\\r\\n\\t\\t\\t\'hasValue\' => $hasValue,\\r\\n\\t\\t\\t\'options\' => $options\\r\\n\\t\\t);\\r\\n\\r\\n\\t\\treturn array_merge($data, $extraData);\\r\\n\\t}\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"The php for the getLayoutData method.\"}}', 'Super Power Repository Paths', '', 1, 14, '', 12, '7ed21e79-cbc5-48e3-9ed0-ca72b0f2f1a1'),
+(48, 'The ModalSelectField offers an intuitive, user-friendly modal popup interface within Joomla\'s administrator forms. It enables users to select existing records, create new records, edit existing records, or clear selected records directly from within the form. The field retrieves and displays the selected record\'s title dynamically, based on configurable database parameters. It simplifies relational data handling, enhancing the user experience by minimizing page transitions and streamlining record management tasks in Joomla administration interfaces.', 'ModalSelect', '{\"properties0\":{\"name\":\"type\",\"example\":\"ModalSelect\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be ModalSelect.\"},\"properties1\":{\"name\":\"name\",\"example\":\"targetview\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Enter some text\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"sql_title_table\",\"example\":\"#__###component###_targetview\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"Database table (with prefix) used for retrieving title.\"},\"properties4\":{\"name\":\"sql_title_column\",\"example\":\"title\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"Column used for the title display in the modal input field.\"},\"properties5\":{\"name\":\"sql_title_key\",\"example\":\"id\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"Primary key column name of the selected item (usually id).\"},\"properties6\":{\"name\":\"urlSelect\",\"example\":\"index.php?option=com_###component###&view=targetviews&layout=modal&tmpl=component&titleKey=id\",\"adjustable\":\"1\",\"description\":\"URL for opening modal to select an existing record. Important note, the [titleKey] in the url must be equal to [sql_title_key]\"},\"properties7\":{\"name\":\"urlNew\",\"example\":\"index.php?option=com_###component###&task=targetview.add&layout=modal&tmpl=component\",\"adjustable\":\"1\",\"description\":\"URL for opening modal to create a new record.\"},\"properties8\":{\"name\":\"urlEdit\",\"example\":\"index.php?option=com_###component###&task=targetview.edit&id={id}&layout=modal&tmpl=component\",\"adjustable\":\"1\",\"description\":\"URL for editing selected record. {id} dynamically replaced with the [sql_title_key] valiue.\"},\"properties9\":{\"name\":\"titleSelect\",\"example\":\"Select Targetview\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"Modal title for the record selection window.\"},\"properties10\":{\"name\":\"titleNew\",\"example\":\"New Targetview\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"Modal title displayed when creating a new record.\"},\"properties11\":{\"name\":\"titleEdit\",\"example\":\"Edit Targetview\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"Modal title displayed when editing existing record.\"},\"properties12\":{\"name\":\"iconSelect\",\"example\":\"icon-copy\",\"adjustable\":\"1\",\"description\":\"CSS icon class from Icomoon or FontAwesome for select button.\"},\"properties13\":{\"name\":\"select\",\"example\":\"true\",\"adjustable\":\"1\",\"description\":\"Allow users to select a record (true\\/false). Default: true.\"},\"properties14\":{\"name\":\"new\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"Allow users to create a new record (true\\/false). Default: false.\"},\"properties15\":{\"name\":\"edit\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"Allow editing of selected record (true\\/false). Default: false.\"},\"properties16\":{\"name\":\"clear\",\"example\":\"true\",\"adjustable\":\"1\",\"description\":\"Allow clearing of the current selection (true\\/false). Default: true.\"},\"properties17\":{\"name\":\"required\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties18\":{\"name\":\"class\",\"example\":\"input-large\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'input-large\'.\"},\"properties19\":{\"name\":\"description\",\"example\":\"Enter some description\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties20\":{\"name\":\"hint\",\"example\":\"Select a Targetview\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) The placeholder to display inside the text box.\"},\"properties21\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value of the field (item ID).\"},\"properties22\":{\"name\":\"readonly\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value\"},\"properties23\":{\"name\":\"disabled\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\"},\"properties24\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'Provides a modal popup to select, create, edit, or clear a database record. (J5+ only)', '', 1, 28, '', 17, 'a1cdb0a5-517c-425c-998a-333e92af3e32');
--
-- Dumping data for table `#__componentbuilder_language`
@@ -2847,14 +2887,21 @@ INSERT INTO `#__componentbuilder_admin_fields` (`id`, `addfields`, `admin_view`,
(284, '{\"0\":{\"field\":\"725e856a-b8cc-4590-90e3-3eed6fd0873c\",\"list\":\"1\",\"order_list\":\"1\",\"title\":\"1\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"1\"},\"1\":{\"field\":\"77a1711b-ad1f-4379-921b-5e4ef5c31a42\",\"list\":\"1\",\"order_list\":\"3\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"2\"},\"2\":{\"field\":\"68c1e141-fb2e-49a6-bf56-1da6d8a058e8\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"3\"},\"3\":{\"field\":\"c2f884f9-31a0-4bb9-8310-64b5d9132d32\",\"list\":\"1\",\"order_list\":\"2\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"1\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"1\"},\"4\":{\"field\":\"080b92dc-a4b4-46b2-83d4-3430284f5e06\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"2\"},\"5\":{\"field\":\"ed28e30c-30c3-4830-afdc-5a61bf25cd49\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"3\"},\"6\":{\"field\":\"2e24a9fe-5793-46be-b071-631c0b18d8f4\",\"list\":\"1\",\"order_list\":\"4\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"1\",\"tab\":\"1\",\"alignment\":4,\"order_edit\":\"1\"},\"7\":{\"field\":\"3f1fedeb-b943-42a7-88e7-c4f1eb1fd8a4\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":4,\"order_edit\":\"2\"},\"8\":{\"field\":\"5aa57bbe-7b19-4db9-915c-561863458d2b\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"15\",\"alignment\":1,\"order_edit\":\"0\"}}', '224eb9c7-8b40-48cf-bf77-2afa291fd54a', 1, '2024-09-06 22:48:18', '2024-09-17 22:00:38', 9, '', 45, ''),
(285, '{\"0\":{\"field\":\"3dfab308-41de-4d11-9c94-4ba330a202ac\",\"list\":\"1\",\"order_list\":\"2\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"1\"},\"1\":{\"field\":\"2e24a9fe-5793-46be-b071-631c0b18d8f4\",\"list\":\"\",\"order_list\":\"0\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"1\",\"tab\":\"1\",\"alignment\":4,\"order_edit\":\"1\"},\"2\":{\"field\":\"3f1fedeb-b943-42a7-88e7-c4f1eb1fd8a4\",\"list\":\"1\",\"order_list\":\"1\",\"title\":\"1\",\"search\":\"1\",\"filter\":\"\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":4,\"order_edit\":\"2\"},\"3\":{\"field\":\"5aa57bbe-7b19-4db9-915c-561863458d2b\",\"list\":\"\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"15\",\"alignment\":1,\"order_edit\":\"0\"}}', '60b7b30d-9229-4ce2-b055-9efbb7ac4cea', 1, '2024-09-06 22:53:19', '0000-00-00 00:00:00', 1, '', 46, ''),
(288, '{\"0\":{\"field\":\"c6e1e451-99b8-4e1b-aa19-c48c3513bf4f\",\"list\":\"\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":3,\"order_edit\":\"0\",\"permission\":[\"1\",\"2\",\"3\"]},\"1\":{\"field\":\"2e24a9fe-5793-46be-b071-631c0b18d8f4\",\"list\":\"1\",\"order_list\":\"1\",\"title\":\"1\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":4,\"order_edit\":\"1\",\"permission\":[\"1\",\"2\",\"3\"]},\"2\":{\"field\":\"3f1fedeb-b943-42a7-88e7-c4f1eb1fd8a4\",\"list\":\"\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":4,\"order_edit\":\"2\",\"permission\":[\"3\"]},\"3\":{\"field\":\"0f4fa86e-25a8-4bbf-91a3-7ea9790b4df8\",\"list\":\"1\",\"order_list\":\"2\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":4,\"order_edit\":\"3\",\"permission\":[\"1\",\"2\",\"3\"]},\"4\":{\"field\":\"5aa57bbe-7b19-4db9-915c-561863458d2b\",\"list\":\"\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"15\",\"alignment\":1,\"order_edit\":\"0\",\"permission\":[\"3\"]}}', 'ab2bbdfc-c0a0-4ffc-9556-67d5af8bec64', 1, '2025-02-16 17:37:08', '', 1, '', 48, ''),
-(289, '{\"0\":{\"field\":\"2d0566ab-cfbe-4ca2-8d05-8e2c70eda191\",\"list\":\"\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":3,\"order_edit\":\"2\",\"permission\":[\"1\",\"2\",\"3\"]},\"1\":{\"field\":\"91939b1a-c4d6-4531-8356-63bc4ca243fb\",\"list\":\"1\",\"order_list\":\"1\",\"title\":\"1\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":4,\"order_edit\":\"1\",\"permission\":[\"1\",\"2\",\"3\"]},\"2\":{\"field\":\"11698dc6-8ff6-4662-b3b7-e47494463a08\",\"list\":\"1\",\"order_list\":\"2\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":4,\"order_edit\":\"2\",\"permission\":[\"1\",\"2\",\"3\"]},\"3\":{\"field\":\"5aa57bbe-7b19-4db9-915c-561863458d2b\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"15\",\"alignment\":1,\"order_edit\":\"0\",\"permission\":[\"3\"]}}', 'a9f19a16-fadb-44ea-a9b6-41130aad05ec', 1, '2025-02-16 19:16:27', '2025-02-16 19:16:59', 2, '', 49, '');
+(289, '{\"0\":{\"field\":\"2d0566ab-cfbe-4ca2-8d05-8e2c70eda191\",\"list\":\"\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":3,\"order_edit\":\"2\",\"permission\":[\"1\",\"2\",\"3\"]},\"1\":{\"field\":\"91939b1a-c4d6-4531-8356-63bc4ca243fb\",\"list\":\"1\",\"order_list\":\"1\",\"title\":\"1\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":4,\"order_edit\":\"1\",\"permission\":[\"1\",\"2\",\"3\"]},\"2\":{\"field\":\"11698dc6-8ff6-4662-b3b7-e47494463a08\",\"list\":\"1\",\"order_list\":\"2\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":4,\"order_edit\":\"2\",\"permission\":[\"1\",\"2\",\"3\"]},\"3\":{\"field\":\"5aa57bbe-7b19-4db9-915c-561863458d2b\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"15\",\"alignment\":1,\"order_edit\":\"0\",\"permission\":[\"3\"]}}', 'a9f19a16-fadb-44ea-a9b6-41130aad05ec', 1, '2025-02-16 19:16:27', '2025-02-16 19:16:59', 2, '', 49, ''),
+(291, '{\"0\":{\"field\":\"8d1b9d7e-77c1-43d9-bc97-0dd021bfe779\",\"list\":\"1\",\"order_list\":\"2\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"1\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"2\",\"permission\":[\"1\"]},\"1\":{\"field\":\"4321fa80-702d-4ff5-ab3c-05507d3007a9\",\"list\":\"1\",\"order_list\":\"2\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"2\",\"permission\":[\"1\"]},\"2\":{\"field\":\"f7d3d78e-2d35-4884-a997-d073f853d095\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"3\",\"permission\":[\"1\"]},\"3\":{\"field\":\"09c22738-6c6f-48ca-a24d-d439757e8619\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"4\",\"permission\":[\"1\"]},\"4\":{\"field\":\"2039d1c3-162c-401c-96fe-f127683ee3fe\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"1\",\"permission\":[\"1\"]},\"5\":{\"field\":\"fa0ead84-06c8-4f18-89ae-4cdf646fd961\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"2\",\"permission\":[\"1\"]},\"6\":{\"field\":\"5d3d34dd-4876-4c6a-86ab-b4e162f22c08\",\"list\":\"1\",\"order_list\":\"1\",\"title\":\"1\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":4,\"order_edit\":\"1\",\"permission\":[\"1\",\"2\",\"3\"]},\"7\":{\"field\":\"af59b3ac-6a00-42c0-bbe2-edf90dec6081\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":4,\"order_edit\":\"2\",\"permission\":[\"1\"]},\"8\":{\"field\":\"6630c034-f87f-4c5c-ab72-e5ae0e4c0e5b\",\"list\":\"2\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"2\",\"alignment\":3,\"order_edit\":\"0\",\"permission\":[\"1\"]},\"9\":{\"field\":\"5aa57bbe-7b19-4db9-915c-561863458d2b\",\"list\":\"\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"15\",\"alignment\":1,\"order_edit\":\"0\"}}', '6c6345a1-e3e4-4840-8918-831034e95b19', 1, '2025-03-24 08:26:24', '2025-03-27 06:14:35', 20, '', 51, ''),
+(292, '{\"0\":{\"field\":\"5d3d34dd-4876-4c6a-86ab-b4e162f22c08\",\"list\":\"1\",\"order_list\":\"1\",\"title\":\"1\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"1\",\"permission\":[\"1\",\"2\",\"3\"]},\"1\":{\"field\":\"1e666136-800a-486d-a8e8-13a054b7acde\",\"list\":\"1\",\"order_list\":\"2\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"1\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"2\",\"permission\":[\"1\",\"2\",\"3\"]},\"2\":{\"field\":\"f7d3d78e-2d35-4884-a997-d073f853d095\",\"list\":\"1\",\"order_list\":\"3\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"1\",\"permission\":[\"1\",\"2\",\"3\"]},\"3\":{\"field\":\"09c22738-6c6f-48ca-a24d-d439757e8619\",\"list\":\"1\",\"order_list\":\"5\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"2\",\"permission\":[\"1\",\"2\",\"3\"]},\"4\":{\"field\":\"af59b3ac-6a00-42c0-bbe2-edf90dec6081\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"3\",\"permission\":[\"1\"]},\"5\":{\"field\":\"5aa57bbe-7b19-4db9-915c-561863458d2b\",\"list\":\"\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"15\",\"alignment\":1,\"order_edit\":\"0\"}}', '3dbb581b-619a-4fb0-a6f6-e4a136ea31e2', 1, '2025-03-24 10:26:17', '2025-03-27 06:13:54', 10, '', 52, ''),
+(293, '{\"0\":{\"field\":\"f921d762-f5f1-4811-b1f5-71840c003a4e\",\"list\":\"1\",\"order_list\":\"1\",\"title\":\"1\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"1\",\"permission\":[\"1\",\"2\",\"3\"]},\"1\":{\"field\":\"c20d4692-6e97-4441-83bd-561b73730407\",\"list\":\"1\",\"order_list\":\"2\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"2\",\"permission\":[\"1\"]},\"2\":{\"field\":\"c35e18fa-cade-48b8-b067-6289cc7a0f60\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"3\",\"permission\":[\"1\"]},\"3\":{\"field\":\"480c9734-2820-4a61-afea-75b1db3fadc9\",\"list\":\"1\",\"order_list\":\"3\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"1\",\"permission\":[\"1\"]},\"4\":{\"field\":\"17788601-b3f8-439e-8ad7-11c7f8109e22\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"2\",\"permission\":[\"1\"]},\"5\":{\"field\":\"8d1b9d7e-77c1-43d9-bc97-0dd021bfe779\",\"list\":\"1\",\"order_list\":\"4\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"1\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":3,\"order_edit\":\"1\",\"permission\":[\"1\"]},\"6\":{\"field\":\"5aa57bbe-7b19-4db9-915c-561863458d2b\",\"list\":\"\",\"order_list\":\"0\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"link\":\"1\",\"tab\":\"15\",\"alignment\":1,\"order_edit\":\"0\",\"permission\":[\"1\"]}}', '75061367-79c2-4d5b-a75d-eca6d33507df', 1, '2025-03-24 10:48:37', '2025-03-27 13:40:19', 9, '', 53, ''),
+(294, '{\"0\":{\"field\":\"95f46f99-0909-4a47-879b-ede06ef35fb8\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"1\",\"permission\":[\"1\"]},\"1\":{\"field\":\"2039d1c3-162c-401c-96fe-f127683ee3fe\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"2\",\"permission\":[\"1\"]},\"2\":{\"field\":\"19b4a840-cf4e-4012-8fae-b1439af74f5a\",\"list\":\"1\",\"order_list\":\"3\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"1\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"3\",\"permission\":[\"1\"]},\"3\":{\"field\":\"baeaf484-f61b-4688-8b8a-e3ace669b7a7\",\"list\":\"1\",\"order_list\":\"4\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"1\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"4\",\"permission\":[\"1\"]},\"4\":{\"field\":\"2aad92a4-895d-46cb-b0df-751da1bdd703\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"5\",\"permission\":[\"1\"]},\"5\":{\"field\":\"8ba72283-32fa-4a34-8c0d-d52adfed1aa5\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"6\",\"permission\":[\"1\"]},\"6\":{\"field\":\"4b964b88-36b4-4f26-a828-0e798ce9af38\",\"list\":\"1\",\"order_list\":\"5\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"7\",\"permission\":[\"1\"]},\"7\":{\"field\":\"59f0d051-768e-41de-87a0-f47551f7d0d1\",\"list\":\"\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"8\",\"permission\":[\"1\"]},\"8\":{\"field\":\"c9a4c765-a0f9-42da-8fa9-df41ab70c448\",\"list\":\"\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"9\",\"permission\":[\"1\"]},\"9\":{\"field\":\"40da896f-5054-4bb2-aa58-1cdfb391f544\",\"list\":\"\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"1\",\"permission\":[\"1\"]},\"10\":{\"field\":\"149140a8-d0a6-4b62-a880-bb796e2145d8\",\"list\":\"\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"2\",\"permission\":[\"1\"]},\"11\":{\"field\":\"c4c23fad-fd03-41cc-b5db-25f60b8ee11f\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"3\",\"permission\":[\"1\"]},\"12\":{\"field\":\"962ec39f-78d4-42ee-9626-7b778d2eea25\",\"list\":\"\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"4\",\"permission\":[\"1\"]},\"13\":{\"field\":\"b71ee1ab-78ea-4cc7-aa2e-490a4d01a03f\",\"list\":\"\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"5\",\"permission\":[\"1\"]},\"14\":{\"field\":\"f7d3d78e-2d35-4884-a997-d073f853d095\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"6\",\"permission\":[\"1\"]},\"15\":{\"field\":\"09c22738-6c6f-48ca-a24d-d439757e8619\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"7\",\"permission\":[\"1\"]},\"16\":{\"field\":\"c803e176-923f-43a8-a542-12e27619a5f2\",\"list\":\"2\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"8\",\"permission\":[\"1\"]},\"17\":{\"field\":\"5d3d34dd-4876-4c6a-86ab-b4e162f22c08\",\"list\":\"1\",\"order_list\":\"1\",\"title\":\"1\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":4,\"order_edit\":\"1\",\"permission\":[\"1\",\"2\",\"3\"]},\"18\":{\"field\":\"af59b3ac-6a00-42c0-bbe2-edf90dec6081\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":4,\"order_edit\":\"2\",\"permission\":[\"1\"]},\"19\":{\"field\":\"9a21f28b-b818-4cc5-b18a-c3fa33a5876d\",\"list\":\"2\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"2\",\"alignment\":3,\"order_edit\":\"0\",\"permission\":[\"1\"]},\"20\":{\"field\":\"5aa57bbe-7b19-4db9-915c-561863458d2b\",\"list\":\"\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"15\",\"alignment\":1,\"order_edit\":\"0\"}}', '6acc4069-1c33-4470-85a6-07bc9bb16d10', 1, '2025-03-24 12:36:05', '2025-03-27 08:09:05', 24, '', 54, ''),
+(295, '{\"0\":{\"field\":\"8d1b9d7e-77c1-43d9-bc97-0dd021bfe779\",\"list\":\"1\",\"order_list\":\"2\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"1\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"1\",\"permission\":[\"1\",\"2\",\"3\"]},\"1\":{\"field\":\"7f3ccb20-7c57-433a-987b-b53d801004f3\",\"list\":\"1\",\"order_list\":\"3\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"1\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"1\",\"permission\":[\"1\",\"2\",\"3\"]},\"2\":{\"field\":\"5d3d34dd-4876-4c6a-86ab-b4e162f22c08\",\"list\":\"1\",\"order_list\":\"1\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":4,\"order_edit\":\"1\",\"permission\":[\"1\",\"2\",\"3\"]},\"3\":{\"field\":\"335866ce-b81b-4329-901d-c20254135c9c\",\"list\":\"\",\"order_list\":\"0\",\"alias\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":4,\"order_edit\":\"2\"},\"4\":{\"field\":\"3f1fedeb-b943-42a7-88e7-c4f1eb1fd8a4\",\"list\":\"\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":4,\"order_edit\":\"3\"},\"5\":{\"field\":\"5aa57bbe-7b19-4db9-915c-561863458d2b\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"15\",\"alignment\":1,\"order_edit\":\"0\"}}', 'dfcee97f-e5c6-43a0-bd18-3f2c50830b37', -2, '2025-03-25 07:24:00', '2025-03-24 14:08:29', 1, '', 52, ''),
+(296, '{\"0\":{\"field\":\"5d3d34dd-4876-4c6a-86ab-b4e162f22c08\",\"list\":\"1\",\"order_list\":\"1\",\"title\":\"1\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"1\",\"permission\":[\"1\",\"2\",\"3\"]},\"1\":{\"field\":\"af59b3ac-6a00-42c0-bbe2-edf90dec6081\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"1\",\"permission\":[\"1\"]},\"2\":{\"field\":\"cb04e362-61c0-4a07-8d80-d13b6939a72c\",\"list\":\"2\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":3,\"order_edit\":\"1\",\"permission\":[\"1\"]},\"3\":{\"field\":\"5aa57bbe-7b19-4db9-915c-561863458d2b\",\"list\":\"\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"15\",\"alignment\":1,\"order_edit\":\"0\"}}', '9eefa86b-6294-4512-8d62-979abf16c00d', 1, '2025-03-25 09:14:22', '2025-03-27 13:56:42', 9, '', 55, ''),
+(297, '{\"0\":{\"field\":\"5d3d34dd-4876-4c6a-86ab-b4e162f22c08\",\"list\":\"1\",\"order_list\":\"1\",\"title\":\"1\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":1,\"order_edit\":\"1\",\"permission\":[\"1\",\"2\",\"3\"]},\"1\":{\"field\":\"af59b3ac-6a00-42c0-bbe2-edf90dec6081\",\"list\":\"\",\"order_list\":\"0\",\"search\":\"1\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":2,\"order_edit\":\"1\",\"permission\":[\"1\"]},\"2\":{\"field\":\"7f3ccb20-7c57-433a-987b-b53d801004f3\",\"list\":\"1\",\"order_list\":\"2\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"1\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":3,\"order_edit\":\"1\",\"permission\":[\"1\"]},\"3\":{\"field\":\"4d96ceea-7dd1-45c3-86fd-0d73d66332a8\",\"list\":\"2\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"1\",\"alignment\":3,\"order_edit\":\"2\",\"permission\":[\"1\"]},\"4\":{\"field\":\"5aa57bbe-7b19-4db9-915c-561863458d2b\",\"list\":\"\",\"order_list\":\"0\",\"filter\":\"\",\"tab\":\"15\",\"alignment\":1,\"order_edit\":\"0\"}}', '2e451812-45af-4015-aa0c-f5912702c9af', 1, '2025-03-25 13:22:01', '2025-03-27 14:57:31', 7, '', 56, '');
--
-- Dumping data for table `#__componentbuilder_component_admin_views`
--
INSERT INTO `#__componentbuilder_component_admin_views` (`id`, `addadmin_views`, `joomla_component`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES
-(27, '{\"addadmin_views0\":{\"adminview\":\"c1053952-8a84-4398-aef1-41726f7c0043\",\"icomoon\":\"eye-open\",\"mainmenu\":\"1\",\"dashboard_add\":\"1\",\"dashboard_list\":\"1\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"joomla_fields\":\"1\",\"metadata\":\"1\",\"access\":\"1\",\"add_api\":\"2\",\"filter\":\"2\",\"edit_create_site_view\":\"1\",\"order\":\"1\"},\"addadmin_views1\":{\"adminview\":\"595ba2c9-21fa-43a4-9af7-93c9cfb21b82\",\"icomoon\":\"plus\",\"mainmenu\":\"1\",\"dashboard_list\":\"1\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"metadata\":\"1\",\"access\":\"1\",\"add_api\":\"0\",\"filter\":\"2\",\"edit_create_site_view\":\"\",\"order\":\"2\"},\"addadmin_views2\":{\"adminview\":\"224eb9c7-8b40-48cf-bf77-2afa291fd54a\",\"icomoon\":\"file\",\"mainmenu\":\"1\",\"dashboard_list\":\"1\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"metadata\":\"1\",\"access\":\"1\",\"add_api\":\"0\",\"filter\":\"2\",\"edit_create_site_view\":\"\",\"order\":\"3\"},\"addadmin_views3\":{\"adminview\":\"19a973ea-cdfa-4c79-bbbd-1b8a37286b27\",\"icomoon\":\"file-check\",\"mainmenu\":\"1\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"metadata\":\"1\",\"access\":\"1\",\"add_api\":\"0\",\"filter\":\"2\",\"edit_create_site_view\":\"\",\"order\":\"4\"},\"addadmin_views4\":{\"adminview\":\"60b7b30d-9229-4ce2-b055-9efbb7ac4cea\",\"icomoon\":\"users\",\"mainmenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"metadata\":\"1\",\"access\":\"1\",\"add_api\":\"0\",\"filter\":\"2\",\"edit_create_site_view\":\"\",\"order\":\"5\"},\"addadmin_views5\":{\"adminview\":\"a9f19a16-fadb-44ea-a9b6-41130aad05ec\",\"icomoon\":\"upload\",\"mainmenu\":\"1\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"access\":\"1\",\"add_api\":\"0\",\"filter\":\"2\",\"edit_create_site_view\":\"\",\"order\":\"6\"},\"addadmin_views6\":{\"adminview\":\"ab2bbdfc-c0a0-4ffc-9556-67d5af8bec64\",\"icomoon\":\"envelope\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"access\":\"1\",\"add_api\":\"0\",\"filter\":\"2\",\"edit_create_site_view\":\"\",\"order\":\"7\"}}', 'efde995e-60aa-4b39-b644-44349dfb660d', 1, '2017-10-28 03:56:26', '2025-02-19 09:21:34', 13, '', '', '');
+(27, '{\"addadmin_views0\":{\"adminview\":\"c1053952-8a84-4398-aef1-41726f7c0043\",\"icomoon\":\"eye-open\",\"mainmenu\":\"1\",\"dashboard_add\":\"1\",\"dashboard_list\":\"1\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"joomla_fields\":\"1\",\"metadata\":\"1\",\"access\":\"1\",\"add_api\":\"2\",\"filter\":\"2\",\"edit_create_site_view\":\"1\",\"order\":\"1\"},\"addadmin_views1\":{\"adminview\":\"595ba2c9-21fa-43a4-9af7-93c9cfb21b82\",\"icomoon\":\"plus\",\"mainmenu\":\"1\",\"dashboard_list\":\"1\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"metadata\":\"1\",\"access\":\"1\",\"add_api\":\"0\",\"filter\":\"2\",\"edit_create_site_view\":\"\",\"order\":\"2\"},\"addadmin_views2\":{\"adminview\":\"9eefa86b-6294-4512-8d62-979abf16c00d\",\"icomoon\":\"shield\",\"mainmenu\":\"1\",\"dashboard_list\":\"1\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"metadata\":\"1\",\"access\":\"1\",\"add_api\":\"0\",\"filter\":\"2\",\"edit_create_site_view\":\"\",\"order\":\"3\"},\"addadmin_views3\":{\"adminview\":\"2e451812-45af-4015-aa0c-f5912702c9af\",\"icomoon\":\"pie\",\"mainmenu\":\"1\",\"dashboard_list\":\"1\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"metadata\":\"1\",\"access\":\"1\",\"add_api\":\"0\",\"filter\":\"2\",\"edit_create_site_view\":\"\",\"order\":\"4\"},\"addadmin_views4\":{\"adminview\":\"6acc4069-1c33-4470-85a6-07bc9bb16d10\",\"icomoon\":\"camera\",\"mainmenu\":\"1\",\"dashboard_list\":\"1\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"metadata\":\"1\",\"access\":\"1\",\"add_api\":\"0\",\"filter\":\"2\",\"edit_create_site_view\":\"\",\"order\":\"5\"},\"addadmin_views5\":{\"adminview\":\"6c6345a1-e3e4-4840-8918-831034e95b19\",\"icomoon\":\"pin\",\"mainmenu\":\"1\",\"dashboard_list\":\"1\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"metadata\":\"1\",\"access\":\"1\",\"add_api\":\"0\",\"filter\":\"2\",\"edit_create_site_view\":\"\",\"order\":\"6\"},\"addadmin_views6\":{\"adminview\":\"3dbb581b-619a-4fb0-a6f6-e4a136ea31e2\",\"icomoon\":\"cart\",\"mainmenu\":\"1\",\"dashboard_list\":\"1\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"metadata\":\"1\",\"access\":\"1\",\"add_api\":\"0\",\"filter\":\"2\",\"edit_create_site_view\":\"\",\"order\":\"7\"},\"addadmin_views7\":{\"adminview\":\"224eb9c7-8b40-48cf-bf77-2afa291fd54a\",\"icomoon\":\"file\",\"mainmenu\":\"1\",\"dashboard_list\":\"1\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"metadata\":\"1\",\"access\":\"1\",\"add_api\":\"0\",\"filter\":\"2\",\"edit_create_site_view\":\"\",\"order\":\"8\"},\"addadmin_views12\":{\"adminview\":\"75061367-79c2-4d5b-a75d-eca6d33507df\",\"icomoon\":\"clock\",\"mainmenu\":\"1\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"metadata\":\"1\",\"access\":\"1\",\"add_api\":\"0\",\"filter\":\"2\",\"edit_create_site_view\":\"\",\"order\":\"9\"},\"addadmin_views8\":{\"adminview\":\"19a973ea-cdfa-4c79-bbbd-1b8a37286b27\",\"icomoon\":\"file-check\",\"mainmenu\":\"1\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"metadata\":\"1\",\"access\":\"1\",\"add_api\":\"0\",\"filter\":\"2\",\"edit_create_site_view\":\"\",\"order\":\"10\"},\"addadmin_views9\":{\"adminview\":\"60b7b30d-9229-4ce2-b055-9efbb7ac4cea\",\"icomoon\":\"users\",\"mainmenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"metadata\":\"1\",\"access\":\"1\",\"add_api\":\"0\",\"filter\":\"2\",\"edit_create_site_view\":\"\",\"order\":\"11\"},\"addadmin_views10\":{\"adminview\":\"a9f19a16-fadb-44ea-a9b6-41130aad05ec\",\"icomoon\":\"upload\",\"mainmenu\":\"1\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"access\":\"1\",\"add_api\":\"0\",\"filter\":\"2\",\"edit_create_site_view\":\"\",\"order\":\"12\"},\"addadmin_views11\":{\"adminview\":\"ab2bbdfc-c0a0-4ffc-9556-67d5af8bec64\",\"icomoon\":\"envelope\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"access\":\"1\",\"add_api\":\"0\",\"filter\":\"2\",\"edit_create_site_view\":\"\",\"order\":\"13\"}}', 'efde995e-60aa-4b39-b644-44349dfb660d', 1, '2017-10-28 03:56:26', '2025-03-26 12:21:46', 20, '', '', '');
--
-- Dumping data for table `#__componentbuilder_component_site_views`
@@ -2875,14 +2922,14 @@ INSERT INTO `#__componentbuilder_component_custom_admin_views` (`id`, `addcustom
--
INSERT INTO `#__componentbuilder_component_updates` (`id`, `joomla_component`, `version_update`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES
-(27, 'efde995e-60aa-4b39-b644-44349dfb660d', '{\"version_update0\":{\"version\":\"5.0.1\",\"mysql\":\"\",\"url\":\"https:\\/\\/git.vdm.dev\\/joomla\\/Demo-Component\\/archive\\/v5.0.1.zip\",\"update_server_adv\":\"0\",\"update_server_type\":\"component\",\"update_element\":\"\",\"update_state\":\"stable\",\"update_target_version\":\"5\\\\.[012]\",\"change_log\":\"\",\"update_client\":\"site\"}}', 1, '2017-10-28 03:56:26', '2025-02-19 09:06:07', 14, '', '', '');
+(27, 'efde995e-60aa-4b39-b644-44349dfb660d', '{\"version_update0\":{\"version\":\"5.0.1\",\"mysql\":\"\",\"url\":\"https:\\/\\/git.vdm.dev\\/joomla\\/Demo-Component\\/archive\\/v5.0.1.zip\",\"update_server_adv\":\"0\",\"update_server_type\":\"component\",\"update_element\":\"\",\"update_state\":\"stable\",\"update_target_version\":\"5\\\\.[012]\",\"change_log\":\"\",\"update_client\":\"site\"}}', 1, '2017-10-28 03:56:26', '2025-03-27 13:48:22', 25, '', '', '');
--
-- Dumping data for table `#__componentbuilder_component_mysql_tweaks`
--
INSERT INTO `#__componentbuilder_component_mysql_tweaks` (`id`, `joomla_component`, `sql_tweak`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES
-(27, 'efde995e-60aa-4b39-b644-44349dfb660d', '{}', 1, '2017-10-28 03:56:26', '2024-09-07 03:00:20', 3, '', '', '');
+(27, 'efde995e-60aa-4b39-b644-44349dfb660d', '{}', 1, '2017-10-28 03:56:26', '2025-03-28 12:19:32', 9, '', '', '');
--
-- Dumping data for table `#__componentbuilder_component_custom_admin_menus`
diff --git a/admin/sql/updates/mysql/3.2.5.sql b/admin/sql/updates/mysql/3_2_5.sql
similarity index 100%
rename from admin/sql/updates/mysql/3.2.5.sql
rename to admin/sql/updates/mysql/3_2_5.sql
diff --git a/admin/sql/updates/mysql/4.1.0.sql b/admin/sql/updates/mysql/4_1_0.sql
similarity index 100%
rename from admin/sql/updates/mysql/4.1.0.sql
rename to admin/sql/updates/mysql/4_1_0.sql
diff --git a/admin/sql/updates/mysql/5.0.0.sql b/admin/sql/updates/mysql/5_0_0.sql
similarity index 100%
rename from admin/sql/updates/mysql/5.0.0.sql
rename to admin/sql/updates/mysql/5_0_0.sql
diff --git a/admin/sql/updates/mysql/5.0.1.sql b/admin/sql/updates/mysql/5_0_1.sql
similarity index 100%
rename from admin/sql/updates/mysql/5.0.1.sql
rename to admin/sql/updates/mysql/5_0_1.sql
diff --git a/admin/sql/updates/mysql/5.0.2.sql b/admin/sql/updates/mysql/5_0_2.sql
similarity index 100%
rename from admin/sql/updates/mysql/5.0.2.sql
rename to admin/sql/updates/mysql/5_0_2.sql
diff --git a/admin/sql/updates/mysql/5.0.3.sql b/admin/sql/updates/mysql/5_0_3.sql
similarity index 100%
rename from admin/sql/updates/mysql/5.0.3.sql
rename to admin/sql/updates/mysql/5_0_3.sql
diff --git a/admin/sql/updates/mysql/5.1.0.sql b/admin/sql/updates/mysql/5_1_0.sql
similarity index 100%
rename from admin/sql/updates/mysql/5.1.0.sql
rename to admin/sql/updates/mysql/5_1_0.sql
diff --git a/admin/sql/updates/mysql/5_1_1-alpha.sql b/admin/sql/updates/mysql/5_1_1-alpha.sql
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/admin/sql/updates/mysql/5_1_1-alpha.sql
@@ -0,0 +1 @@
+
diff --git a/admin/src/Controller/Admin_custom_tabsController.php b/admin/src/Controller/Admin_custom_tabsController.php
index 7de7d87c7..b5f3899ae 100644
--- a/admin/src/Controller/Admin_custom_tabsController.php
+++ b/admin/src/Controller/Admin_custom_tabsController.php
@@ -217,7 +217,7 @@ class Admin_custom_tabsController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Admin_custom_tabs', '', []);
diff --git a/admin/src/Controller/Admin_fieldsController.php b/admin/src/Controller/Admin_fieldsController.php
index b560a05da..76a6198a7 100644
--- a/admin/src/Controller/Admin_fieldsController.php
+++ b/admin/src/Controller/Admin_fieldsController.php
@@ -217,7 +217,7 @@ class Admin_fieldsController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Admin_fields', '', []);
diff --git a/admin/src/Controller/Admin_fields_conditionsController.php b/admin/src/Controller/Admin_fields_conditionsController.php
index b64fad2a4..1d2fad1cc 100644
--- a/admin/src/Controller/Admin_fields_conditionsController.php
+++ b/admin/src/Controller/Admin_fields_conditionsController.php
@@ -217,7 +217,7 @@ class Admin_fields_conditionsController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Admin_fields_conditions', '', []);
diff --git a/admin/src/Controller/Admin_fields_relationsController.php b/admin/src/Controller/Admin_fields_relationsController.php
index cd2947d51..866fbb591 100644
--- a/admin/src/Controller/Admin_fields_relationsController.php
+++ b/admin/src/Controller/Admin_fields_relationsController.php
@@ -217,7 +217,7 @@ class Admin_fields_relationsController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Admin_fields_relations', '', []);
diff --git a/admin/src/Controller/Admin_viewController.php b/admin/src/Controller/Admin_viewController.php
index bce92de1d..9ce1f5235 100644
--- a/admin/src/Controller/Admin_viewController.php
+++ b/admin/src/Controller/Admin_viewController.php
@@ -219,7 +219,7 @@ class Admin_viewController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Admin_view', '', []);
diff --git a/admin/src/Controller/Class_extendsController.php b/admin/src/Controller/Class_extendsController.php
index d02753f63..550a8c6e4 100644
--- a/admin/src/Controller/Class_extendsController.php
+++ b/admin/src/Controller/Class_extendsController.php
@@ -217,7 +217,7 @@ class Class_extendsController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Class_extends', '', []);
diff --git a/admin/src/Controller/Class_methodController.php b/admin/src/Controller/Class_methodController.php
index 884091bd9..d7bafe77e 100644
--- a/admin/src/Controller/Class_methodController.php
+++ b/admin/src/Controller/Class_methodController.php
@@ -217,7 +217,7 @@ class Class_methodController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Class_method', '', []);
diff --git a/admin/src/Controller/Class_propertyController.php b/admin/src/Controller/Class_propertyController.php
index 75164ff4d..d7827677c 100644
--- a/admin/src/Controller/Class_propertyController.php
+++ b/admin/src/Controller/Class_propertyController.php
@@ -217,7 +217,7 @@ class Class_propertyController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Class_property', '', []);
diff --git a/admin/src/Controller/Component_admin_viewsController.php b/admin/src/Controller/Component_admin_viewsController.php
index eaae33ba3..e526e3149 100644
--- a/admin/src/Controller/Component_admin_viewsController.php
+++ b/admin/src/Controller/Component_admin_viewsController.php
@@ -217,7 +217,7 @@ class Component_admin_viewsController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Component_admin_views', '', []);
diff --git a/admin/src/Controller/Component_configController.php b/admin/src/Controller/Component_configController.php
index e2fa146c8..5ec9d88b2 100644
--- a/admin/src/Controller/Component_configController.php
+++ b/admin/src/Controller/Component_configController.php
@@ -217,7 +217,7 @@ class Component_configController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Component_config', '', []);
diff --git a/admin/src/Controller/Component_custom_admin_menusController.php b/admin/src/Controller/Component_custom_admin_menusController.php
index 94563c494..c429cd1fe 100644
--- a/admin/src/Controller/Component_custom_admin_menusController.php
+++ b/admin/src/Controller/Component_custom_admin_menusController.php
@@ -217,7 +217,7 @@ class Component_custom_admin_menusController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Component_custom_admin_menus', '', []);
diff --git a/admin/src/Controller/Component_custom_admin_viewsController.php b/admin/src/Controller/Component_custom_admin_viewsController.php
index 07db19a02..360d25594 100644
--- a/admin/src/Controller/Component_custom_admin_viewsController.php
+++ b/admin/src/Controller/Component_custom_admin_viewsController.php
@@ -217,7 +217,7 @@ class Component_custom_admin_viewsController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Component_custom_admin_views', '', []);
diff --git a/admin/src/Controller/Component_dashboardController.php b/admin/src/Controller/Component_dashboardController.php
index 312720827..4377d23ab 100644
--- a/admin/src/Controller/Component_dashboardController.php
+++ b/admin/src/Controller/Component_dashboardController.php
@@ -217,7 +217,7 @@ class Component_dashboardController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Component_dashboard', '', []);
diff --git a/admin/src/Controller/Component_files_foldersController.php b/admin/src/Controller/Component_files_foldersController.php
index 5f100fde1..2e47946c0 100644
--- a/admin/src/Controller/Component_files_foldersController.php
+++ b/admin/src/Controller/Component_files_foldersController.php
@@ -217,7 +217,7 @@ class Component_files_foldersController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Component_files_folders', '', []);
diff --git a/admin/src/Controller/Component_modulesController.php b/admin/src/Controller/Component_modulesController.php
index 6de33ee47..d87cce7a7 100644
--- a/admin/src/Controller/Component_modulesController.php
+++ b/admin/src/Controller/Component_modulesController.php
@@ -217,7 +217,7 @@ class Component_modulesController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Component_modules', '', []);
diff --git a/admin/src/Controller/Component_mysql_tweaksController.php b/admin/src/Controller/Component_mysql_tweaksController.php
index bb4730173..1743b0165 100644
--- a/admin/src/Controller/Component_mysql_tweaksController.php
+++ b/admin/src/Controller/Component_mysql_tweaksController.php
@@ -217,7 +217,7 @@ class Component_mysql_tweaksController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Component_mysql_tweaks', '', []);
diff --git a/admin/src/Controller/Component_placeholdersController.php b/admin/src/Controller/Component_placeholdersController.php
index 2a1d4ce0e..240190eba 100644
--- a/admin/src/Controller/Component_placeholdersController.php
+++ b/admin/src/Controller/Component_placeholdersController.php
@@ -217,7 +217,7 @@ class Component_placeholdersController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Component_placeholders', '', []);
diff --git a/admin/src/Controller/Component_pluginsController.php b/admin/src/Controller/Component_pluginsController.php
index 176e1fc69..1a213eb7d 100644
--- a/admin/src/Controller/Component_pluginsController.php
+++ b/admin/src/Controller/Component_pluginsController.php
@@ -217,7 +217,7 @@ class Component_pluginsController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Component_plugins', '', []);
diff --git a/admin/src/Controller/Component_routerController.php b/admin/src/Controller/Component_routerController.php
index b8c479edf..a373323f7 100644
--- a/admin/src/Controller/Component_routerController.php
+++ b/admin/src/Controller/Component_routerController.php
@@ -217,7 +217,7 @@ class Component_routerController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Component_router', '', []);
diff --git a/admin/src/Controller/Component_site_viewsController.php b/admin/src/Controller/Component_site_viewsController.php
index 9a8889671..d0440411e 100644
--- a/admin/src/Controller/Component_site_viewsController.php
+++ b/admin/src/Controller/Component_site_viewsController.php
@@ -217,7 +217,7 @@ class Component_site_viewsController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Component_site_views', '', []);
diff --git a/admin/src/Controller/Component_updatesController.php b/admin/src/Controller/Component_updatesController.php
index 62b4415cc..88d66337e 100644
--- a/admin/src/Controller/Component_updatesController.php
+++ b/admin/src/Controller/Component_updatesController.php
@@ -221,7 +221,7 @@ class Component_updatesController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Component_updates', '', []);
diff --git a/admin/src/Controller/Custom_admin_viewController.php b/admin/src/Controller/Custom_admin_viewController.php
index ad4ac2da7..73056e45c 100644
--- a/admin/src/Controller/Custom_admin_viewController.php
+++ b/admin/src/Controller/Custom_admin_viewController.php
@@ -217,7 +217,7 @@ class Custom_admin_viewController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Custom_admin_view', '', []);
diff --git a/admin/src/Controller/Custom_codeController.php b/admin/src/Controller/Custom_codeController.php
index c4f0bd5cf..26d1f71bb 100644
--- a/admin/src/Controller/Custom_codeController.php
+++ b/admin/src/Controller/Custom_codeController.php
@@ -217,7 +217,7 @@ class Custom_codeController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Custom_code', '', []);
diff --git a/admin/src/Controller/Dynamic_getController.php b/admin/src/Controller/Dynamic_getController.php
index 11eca111e..35bb54693 100644
--- a/admin/src/Controller/Dynamic_getController.php
+++ b/admin/src/Controller/Dynamic_getController.php
@@ -217,7 +217,7 @@ class Dynamic_getController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Dynamic_get', '', []);
diff --git a/admin/src/Controller/FieldController.php b/admin/src/Controller/FieldController.php
index acbfae439..b2f41d87e 100644
--- a/admin/src/Controller/FieldController.php
+++ b/admin/src/Controller/FieldController.php
@@ -216,7 +216,7 @@ class FieldController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Field', '', []);
diff --git a/admin/src/Controller/FieldtypeController.php b/admin/src/Controller/FieldtypeController.php
index df9596c02..f9d96f9cd 100644
--- a/admin/src/Controller/FieldtypeController.php
+++ b/admin/src/Controller/FieldtypeController.php
@@ -368,7 +368,7 @@ class FieldtypeController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Fieldtype', '', []);
diff --git a/admin/src/Controller/Help_documentController.php b/admin/src/Controller/Help_documentController.php
index 1df9b54b9..051db2abe 100644
--- a/admin/src/Controller/Help_documentController.php
+++ b/admin/src/Controller/Help_documentController.php
@@ -217,7 +217,7 @@ class Help_documentController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Help_document', '', []);
diff --git a/admin/src/Controller/Joomla_componentController.php b/admin/src/Controller/Joomla_componentController.php
index fc1669e70..715d42621 100644
--- a/admin/src/Controller/Joomla_componentController.php
+++ b/admin/src/Controller/Joomla_componentController.php
@@ -219,7 +219,7 @@ class Joomla_componentController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Joomla_component', '', []);
diff --git a/admin/src/Controller/Joomla_moduleController.php b/admin/src/Controller/Joomla_moduleController.php
index 9ddb03860..9cbbe0674 100644
--- a/admin/src/Controller/Joomla_moduleController.php
+++ b/admin/src/Controller/Joomla_moduleController.php
@@ -219,7 +219,7 @@ class Joomla_moduleController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Joomla_module', '', []);
diff --git a/admin/src/Controller/Joomla_module_files_folders_urlsController.php b/admin/src/Controller/Joomla_module_files_folders_urlsController.php
index 3f9653eb8..51730ade8 100644
--- a/admin/src/Controller/Joomla_module_files_folders_urlsController.php
+++ b/admin/src/Controller/Joomla_module_files_folders_urlsController.php
@@ -217,7 +217,7 @@ class Joomla_module_files_folders_urlsController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Joomla_module_files_folders_urls', '', []);
diff --git a/admin/src/Controller/Joomla_module_updatesController.php b/admin/src/Controller/Joomla_module_updatesController.php
index 13861ccf4..7c0a9cca8 100644
--- a/admin/src/Controller/Joomla_module_updatesController.php
+++ b/admin/src/Controller/Joomla_module_updatesController.php
@@ -220,7 +220,7 @@ class Joomla_module_updatesController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Joomla_module_updates', '', []);
diff --git a/admin/src/Controller/Joomla_pluginController.php b/admin/src/Controller/Joomla_pluginController.php
index 4b5aaee95..e466decb9 100644
--- a/admin/src/Controller/Joomla_pluginController.php
+++ b/admin/src/Controller/Joomla_pluginController.php
@@ -219,7 +219,7 @@ class Joomla_pluginController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Joomla_plugin', '', []);
diff --git a/admin/src/Controller/Joomla_plugin_files_folders_urlsController.php b/admin/src/Controller/Joomla_plugin_files_folders_urlsController.php
index f68428065..9c901aa35 100644
--- a/admin/src/Controller/Joomla_plugin_files_folders_urlsController.php
+++ b/admin/src/Controller/Joomla_plugin_files_folders_urlsController.php
@@ -217,7 +217,7 @@ class Joomla_plugin_files_folders_urlsController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Joomla_plugin_files_folders_urls', '', []);
diff --git a/admin/src/Controller/Joomla_plugin_groupController.php b/admin/src/Controller/Joomla_plugin_groupController.php
index 10e337ec7..e3c99a29e 100644
--- a/admin/src/Controller/Joomla_plugin_groupController.php
+++ b/admin/src/Controller/Joomla_plugin_groupController.php
@@ -210,7 +210,7 @@ class Joomla_plugin_groupController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Joomla_plugin_group', '', []);
diff --git a/admin/src/Controller/Joomla_plugin_updatesController.php b/admin/src/Controller/Joomla_plugin_updatesController.php
index c6cc0165a..512cf6043 100644
--- a/admin/src/Controller/Joomla_plugin_updatesController.php
+++ b/admin/src/Controller/Joomla_plugin_updatesController.php
@@ -219,7 +219,7 @@ class Joomla_plugin_updatesController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Joomla_plugin_updates', '', []);
diff --git a/admin/src/Controller/Joomla_powerController.php b/admin/src/Controller/Joomla_powerController.php
index 27acd0a48..24360152f 100644
--- a/admin/src/Controller/Joomla_powerController.php
+++ b/admin/src/Controller/Joomla_powerController.php
@@ -369,7 +369,7 @@ class Joomla_powerController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Joomla_power', '', []);
diff --git a/admin/src/Controller/LanguageController.php b/admin/src/Controller/LanguageController.php
index 48f337e5a..71a1d938d 100644
--- a/admin/src/Controller/LanguageController.php
+++ b/admin/src/Controller/LanguageController.php
@@ -217,7 +217,7 @@ class LanguageController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Language', '', []);
diff --git a/admin/src/Controller/Language_translationController.php b/admin/src/Controller/Language_translationController.php
index 18bd4d593..9c84dea70 100644
--- a/admin/src/Controller/Language_translationController.php
+++ b/admin/src/Controller/Language_translationController.php
@@ -217,7 +217,7 @@ class Language_translationController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Language_translation', '', []);
diff --git a/admin/src/Controller/LayoutController.php b/admin/src/Controller/LayoutController.php
index 3a4c9adb5..e4797a4ef 100644
--- a/admin/src/Controller/LayoutController.php
+++ b/admin/src/Controller/LayoutController.php
@@ -217,7 +217,7 @@ class LayoutController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Layout', '', []);
diff --git a/admin/src/Controller/LibraryController.php b/admin/src/Controller/LibraryController.php
index 66318fc50..a456a26e8 100644
--- a/admin/src/Controller/LibraryController.php
+++ b/admin/src/Controller/LibraryController.php
@@ -219,7 +219,7 @@ class LibraryController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Library', '', []);
diff --git a/admin/src/Controller/Library_configController.php b/admin/src/Controller/Library_configController.php
index 0d463e9b3..711da70cc 100644
--- a/admin/src/Controller/Library_configController.php
+++ b/admin/src/Controller/Library_configController.php
@@ -217,7 +217,7 @@ class Library_configController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Library_config', '', []);
diff --git a/admin/src/Controller/Library_files_folders_urlsController.php b/admin/src/Controller/Library_files_folders_urlsController.php
index 3cc9ca66b..dcf8bb9c4 100644
--- a/admin/src/Controller/Library_files_folders_urlsController.php
+++ b/admin/src/Controller/Library_files_folders_urlsController.php
@@ -217,7 +217,7 @@ class Library_files_folders_urlsController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Library_files_folders_urls', '', []);
diff --git a/admin/src/Controller/PlaceholderController.php b/admin/src/Controller/PlaceholderController.php
index 636b69ab3..b23ed8ae5 100644
--- a/admin/src/Controller/PlaceholderController.php
+++ b/admin/src/Controller/PlaceholderController.php
@@ -217,7 +217,7 @@ class PlaceholderController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Placeholder', '', []);
diff --git a/admin/src/Controller/PowerController.php b/admin/src/Controller/PowerController.php
index d7c7c8bae..4b7e5c96c 100644
--- a/admin/src/Controller/PowerController.php
+++ b/admin/src/Controller/PowerController.php
@@ -24,6 +24,7 @@ use Joomla\CMS\Router\Route;
use Joomla\CMS\Session\Session;
use Joomla\CMS\Uri\Uri;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
+use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Componentbuilder\Power\Factory as PowerFactory;
// No direct access to this file
@@ -80,6 +81,50 @@ class PowerController extends FormController
protected int $refid;
+ /**
+ * Method to edit an existing record.
+ *
+ * @param string $key The name of the primary key of the URL variable.
+ * @param string $urlVar The name of the URL variable if different from the primary key
+ * (sometimes required to avoid router collisions).
+ *
+ * @return boolean True if access level check and checkout passes, false otherwise.
+ *
+ * @since 1.6
+ */
+ public function edit($key = null, $urlVar = null)
+ {
+ // for modal title key selection (unique key to do mapping)
+ $titleKey = $this->input->get('titleKey', 'id', 'word');
+ $guid = null;
+ $value = null;
+
+ // Determine the name of the primary key for the data.
+ if (empty($key))
+ {
+ $model = $this->getModel();
+ $table = $model->getTable();
+ $key = $table->getKeyName();
+ }
+
+ if ($titleKey === 'guid')
+ {
+ $guid = $this->input->get('guid', null, 'string');
+ }
+
+ if ($guid !== null && GuidHelper::valid($guid))
+ {
+ $value = GuidHelper::item($guid, 'power', 'a.' . $key, 'componentbuilder');
+ }
+
+ if ($value !== null)
+ {
+ $this->input->set($key, $value);
+ }
+
+ return parent::edit($key, $urlVar);
+ }
+
/**
* Resets the specified power.
*
@@ -369,7 +414,7 @@ class PowerController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Power', '', []);
diff --git a/admin/src/Controller/RepositoryController.php b/admin/src/Controller/RepositoryController.php
index 812a4e5c8..2f01e58fa 100644
--- a/admin/src/Controller/RepositoryController.php
+++ b/admin/src/Controller/RepositoryController.php
@@ -217,7 +217,7 @@ class RepositoryController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Repository', '', []);
diff --git a/admin/src/Controller/ServerController.php b/admin/src/Controller/ServerController.php
index 36e368f4d..3cc781e4d 100644
--- a/admin/src/Controller/ServerController.php
+++ b/admin/src/Controller/ServerController.php
@@ -217,7 +217,7 @@ class ServerController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Server', '', []);
diff --git a/admin/src/Controller/Site_viewController.php b/admin/src/Controller/Site_viewController.php
index a23946ac2..3279008c9 100644
--- a/admin/src/Controller/Site_viewController.php
+++ b/admin/src/Controller/Site_viewController.php
@@ -217,7 +217,7 @@ class Site_viewController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Site_view', '', []);
diff --git a/admin/src/Controller/SnippetController.php b/admin/src/Controller/SnippetController.php
index 9179d2bdd..e6db90ae5 100644
--- a/admin/src/Controller/SnippetController.php
+++ b/admin/src/Controller/SnippetController.php
@@ -217,7 +217,7 @@ class SnippetController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Snippet', '', []);
diff --git a/admin/src/Controller/Snippet_typeController.php b/admin/src/Controller/Snippet_typeController.php
index 11ab43e80..be39dc5be 100644
--- a/admin/src/Controller/Snippet_typeController.php
+++ b/admin/src/Controller/Snippet_typeController.php
@@ -217,7 +217,7 @@ class Snippet_typeController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Snippet_type', '', []);
diff --git a/admin/src/Controller/TemplateController.php b/admin/src/Controller/TemplateController.php
index 1c1499a14..85bf33487 100644
--- a/admin/src/Controller/TemplateController.php
+++ b/admin/src/Controller/TemplateController.php
@@ -217,7 +217,7 @@ class TemplateController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Template', '', []);
diff --git a/admin/src/Controller/Validation_ruleController.php b/admin/src/Controller/Validation_ruleController.php
index 05488d584..f4dcb2ed8 100644
--- a/admin/src/Controller/Validation_ruleController.php
+++ b/admin/src/Controller/Validation_ruleController.php
@@ -217,7 +217,7 @@ class Validation_ruleController extends FormController
*/
public function batch($model = null)
{
- Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
+ Session::checkToken() or exit(Text::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Validation_rule', '', []);
diff --git a/admin/src/Field/AdminviewsField.php b/admin/src/Field/AdminviewsField.php
index a0729d31e..5e1fbf9a6 100644
--- a/admin/src/Field/AdminviewsField.php
+++ b/admin/src/Field/AdminviewsField.php
@@ -42,27 +42,24 @@ class AdminviewsField extends ListField
*/
protected function getOptions()
{
- // Get the database object.
- $db = Factory::getDBO();
- $query = $db->getQuery(true);
- $query->select($db->quoteName(array('a.guid','a.system_name'),array('guid','adminview_system_name')));
- $query->from($db->quoteName('#__componentbuilder_admin_view', 'a'));
- $query->where($db->quoteName('a.published') . ' >= 1');
- $query->order('a.system_name ASC');
- $db->setQuery((string)$query);
- $items = $db->loadObjectList();
- $options = [];
- if ($items)
+ $db = Factory::getDBO();
+ $query = $db->getQuery(true);
+ $query->select($db->quoteName(array('a.guid','a.system_name'),array('guid','view_table_system_name')));
+ $query->from($db->quoteName('#__componentbuilder_admin_view', 'a'));
+ $query->where($db->quoteName('a.published') . ' >= 1');
+ $query->order('a.system_name ASC');
+ $db->setQuery((string)$query);
+ $items = $db->loadObjectList();
+ $options = array();
+ if ($items)
+ {
+ $options[] = Html::_('select.option', '', 'Select an option');
+ foreach($items as $item)
{
- if ($this->multiple === false)
- {
- $options[] = Html::_('select.option', '', Text::_('COM_COMPONENTBUILDER_SELECT_AN_OPTION'));
- }
- foreach($items as $item)
- {
- $options[] = Html::_('select.option', $item->guid, $item->adminview_system_name);
- }
+ $options[] = Html::_('select.option', $item->guid, $item->view_table_system_name);
}
- return $options;
+ }
+
+ return $options;
}
}
diff --git a/admin/src/Field/CustomadminviewsField.php b/admin/src/Field/CustomadminviewsField.php
deleted file mode 100644
index 67ec93451..000000000
--- a/admin/src/Field/CustomadminviewsField.php
+++ /dev/null
@@ -1,68 +0,0 @@
-
- * @git Joomla Component Builder
- * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
- * @license GNU General Public License version 2 or later; see LICENSE.txt
- */
-namespace VDM\Component\Componentbuilder\Administrator\Field;
-
-use Joomla\CMS\Factory;
-use Joomla\CMS\Form\Field\ListField;
-use Joomla\CMS\Language\Text;
-use Joomla\CMS\HTML\HTMLHelper as Html;
-use Joomla\CMS\Component\ComponentHelper;
-use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
-
-// No direct access to this file
-\defined('_JEXEC') or die;
-
-/**
- * Customadminviews Form Field class for the Componentbuilder component
- *
- * @since 1.6
- */
-class CustomadminviewsField extends ListField
-{
- /**
- * The customadminviews field type.
- *
- * @var string
- */
- public $type = 'Customadminviews';
-
- /**
- * Method to get a list of options for a list input.
- *
- * @return array An array of Html options.
- * @since 1.6
- */
- protected function getOptions()
- {
- // Get the databse object.
- $db = Factory::getDBO();
- $query = $db->getQuery(true);
- $query->select($db->quoteName(array('a.guid','a.system_name'),array('guid','customadminview_system_name')));
- $query->from($db->quoteName('#__componentbuilder_custom_admin_view', 'a'));
- $query->where($db->quoteName('a.published') . ' >= 1');
- $query->order('a.system_name ASC');
- $db->setQuery((string)$query);
- $items = $db->loadObjectList();
- $options = [];
- if ($items)
- {
- if ($this->multiple === false)
- {
- $options[] = Html::_('select.option', '', Text::_('COM_COMPONENTBUILDER_SELECT_AN_OPTION'));
- }
- foreach($items as $item)
- {
- $options[] = Html::_('select.option', $item->guid, $item->customadminview_system_name);
- }
- }
- return $options;
- }
-}
diff --git a/admin/src/Field/FieldsField.php b/admin/src/Field/FieldsField.php
deleted file mode 100644
index 9e158ad5c..000000000
--- a/admin/src/Field/FieldsField.php
+++ /dev/null
@@ -1,77 +0,0 @@
-
- * @git Joomla Component Builder
- * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
- * @license GNU General Public License version 2 or later; see LICENSE.txt
- */
-namespace VDM\Component\Componentbuilder\Administrator\Field;
-
-use Joomla\CMS\Factory;
-use Joomla\CMS\Form\Field\ListField;
-use Joomla\CMS\Language\Text;
-use Joomla\CMS\HTML\HTMLHelper as Html;
-use Joomla\CMS\Component\ComponentHelper;
-use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
-
-// No direct access to this file
-\defined('_JEXEC') or die;
-
-/**
- * Fields Form Field class for the Componentbuilder component
- *
- * @since 1.6
- */
-class FieldsField extends ListField
-{
- /**
- * The fields field type.
- *
- * @var string
- */
- public $type = 'Fields';
-
- /**
- * Method to get a list of options for a list input.
- *
- * @return array An array of Html options.
- * @since 1.6
- */
- protected function getOptions()
- {
- $db = Factory::getDBO();
- $query = $db->getQuery(true);
- $query->select($db->quoteName(['a.guid', 'a.name', 'a.xml', 'b.name'], ['guid', 'field_name', 'xml', 'type']));
- $query->from($db->quoteName('#__componentbuilder_field', 'a'));
- $query->join('LEFT', '#__componentbuilder_fieldtype AS b ON b.guid = a.fieldtype');
- $query->where($db->quoteName('a.published') . ' >= 1');
- $query->order('a.name ASC');
- $db->setQuery((string) $query);
- $items = $db->loadObjectList();
- $options = array();
- if ($items)
- {
- $options[] = Html::_('select.option', '', 'Select an option');
- foreach($items as $item)
- {
- // get the field name (TODO this could slow down the system so we will need to improve on this)
- if (isset($item->xml) && ComponentbuilderHelper::checkJson($item->xml))
- {
- $field_xml = json_decode($item->xml);
- $field_name = ComponentbuilderHelper::getBetween($field_xml,'name="','"');
- $field_name = ComponentbuilderHelper::safeFieldName($field_name);
- $options[] = Html::_('select.option', $item->guid, $item->field_name . ' [ ' . $field_name . ' - ' . $item->type . ' ]');
- }
- else
- {
- $options[] = Html::_('select.option', $item->guid, $item->field_name . ' [ empty - ' . $item->type . ' ]');
- }
- }
- }
-
- return $options;
- }
-}
diff --git a/admin/src/Field/ModalSelectField.php b/admin/src/Field/ModalSelectField.php
new file mode 100644
index 000000000..921d71c92
--- /dev/null
+++ b/admin/src/Field/ModalSelectField.php
@@ -0,0 +1,69 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+namespace VDM\Component\Componentbuilder\Administrator\Field;
+
+use Joomla\CMS\Factory;
+use Joomla\CMS\Form\Field\ModalSelectField as ModalSelectFieldCore;
+use Joomla\Database\ParameterType;
+
+// No direct access to this file
+\defined('_JEXEC') or die;
+
+/**
+ * A modal content selection field, now with the radical ability to handle string-based GUIDs.
+ * Because, apparently, assuming everything is an integer was the hill to die on.
+ *
+ * This override exists solely to bypass a hardcoded constraint that shouldn't have been there in the first place.
+ * But hey, at least we get another class extension to maintain!
+ *
+ * @since 5.0.0
+ */
+class ModalSelectField extends ModalSelectFieldCore
+{
+ /**
+ * Method to retrieve the title of selected item.
+ *
+ * @return string
+ *
+ * @since 5.0.0
+ */
+ protected function getValueTitle()
+ {
+ // Selecting the title for the field value, when required info were given
+ if ($this->value && $this->sql_title_table && $this->sql_title_column && $this->sql_title_key) {
+ try {
+ $db = $this->getDatabase();
+ $query = $db->getQuery(true)
+ ->select($db->quoteName($this->sql_title_column))
+ ->from($db->quoteName($this->sql_title_table))
+ ->where($db->quoteName($this->sql_title_key) . ' = :value')
+ ->bind(':value', $this->value, is_numeric($this->value) ? ParameterType::INTEGER : ParameterType::STRING);
+
+ /**
+ * All this—just because someone decided to hardcode [ParameterType::INTEGER] in the core.
+ * We could have just handle it dynamically, but no...
+ *
+ * Polymorphic behavior isn't the enemy. Hardcoded constraints that force class extensions?
+ * Now *that's* the real problem. But sure, let's keep pretending that integers are the
+ * only valid identifiers in a database.
+ */
+
+ $db->setQuery($query);
+
+ return $db->loadResult() ?: $this->value;
+ } catch (\Throwable $e) {
+ Factory::getApplication()->enqueueMessage($e->getMessage(), 'error');
+ }
+ }
+
+ return $this->value;
+ }
+}
\ No newline at end of file
diff --git a/admin/src/Field/NamespacesField.php b/admin/src/Field/NamespacesField.php
deleted file mode 100644
index bc7bca1ec..000000000
--- a/admin/src/Field/NamespacesField.php
+++ /dev/null
@@ -1,96 +0,0 @@
-
- * @git Joomla Component Builder
- * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
- * @license GNU General Public License version 2 or later; see LICENSE.txt
- */
-namespace VDM\Component\Componentbuilder\Administrator\Field;
-
-use Joomla\CMS\Factory;
-use Joomla\CMS\Form\Field\ListField;
-use Joomla\CMS\Language\Text;
-use Joomla\CMS\HTML\HTMLHelper as Html;
-use Joomla\CMS\Component\ComponentHelper;
-use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
-
-// No direct access to this file
-\defined('_JEXEC') or die;
-
-/**
- * Namespaces Form Field class for the Componentbuilder component
- *
- * @since 1.6
- */
-class NamespacesField extends ListField
-{
- /**
- * The namespaces field type.
- *
- * @var string
- */
- public $type = 'Namespaces';
-
- /**
- * Method to get a list of options for a list input.
- *
- * @return array An array of Html options.
- * @since 1.6
- */
- protected function getOptions()
- {
- // Get the user object.
- $user = Factory::getApplication()->getIdentity();
- // Get the databse object.
- $db = Factory::getDBO();
- $query = $db->getQuery(true);
- $query->select($db->quoteName(array('a.guid','a.name','a.namespace','a.type','a.power_version'),array('guid','use_name','namespace','type','version')));
- $query->from($db->quoteName('#__componentbuilder_power', 'a'));
- $query->where($db->quoteName('a.published') . ' >= 1');
- $query->order('a.name ASC');
- $query->order('a.type ASC');
- // Implement View Level Access (if set in table)
- if (!$user->authorise('core.options', 'com_componentbuilder'))
- {
- $columns = $db->getTableColumns('#__componentbuilder_power');
- if(isset($columns['access']))
- {
- $groups = implode(',', $user->getAuthorisedViewLevels());
- $query->where('a.access IN (' . $groups . ')');
- }
- }
- // get the input
- $jinput = Factory::getApplication()->input;
- // get the id
- $power_id = $jinput->getInt('id', 0);
- // if we have an id we remove all classes of the same namespace and name
- if ($power_id > 0 && ($exclude_powers = ComponentbuilderHelper::excludePowers($power_id)) !== false)
- {
- $query->where('a.id NOT IN (' . implode(',', $exclude_powers) . ')');
- }
- $db->setQuery((string)$query);
- $items = $db->loadObjectList();
- $options = array();
- // if none was found, we add this to set an alternative to set custom
- if (!$items)
- {
- $options[] = Html::_('select.option', '', Text::_('COM_COMPONENTBUILDER_NONE_FOUND'));
- }
- if ($items)
- {
- if ($this->multiple === false)
- {
- $options[] = Html::_('select.option', '', Text::_('COM_COMPONENTBUILDER_SELECT_AN_OPTION'));
- }
- foreach($items as $item)
- {
- $options[] = Html::_('select.option', $item->guid, str_replace('.','\\', $item->namespace) . ' [' . $item->use_name . '] (v' . $item->version . ' - ' . $item->type . ')');
- }
- }
- return $options;
-
- }
-}
diff --git a/admin/src/Model/Custom_codesModel.php b/admin/src/Model/Custom_codesModel.php
index 80b0f9d38..bb91182a7 100644
--- a/admin/src/Model/Custom_codesModel.php
+++ b/admin/src/Model/Custom_codesModel.php
@@ -218,6 +218,7 @@ class Custom_codesModel extends ListModel
$item->target_code = $item->target;
// making sure we have the component details
+
}
}
diff --git a/admin/src/Model/FieldModel.php b/admin/src/Model/FieldModel.php
index 48afe8e64..013521948 100644
--- a/admin/src/Model/FieldModel.php
+++ b/admin/src/Model/FieldModel.php
@@ -1189,7 +1189,7 @@ class FieldModel extends AdminModel
}
break;
case 'type':
- $property['value'] = TypeHelper::safe($property['value']);
+ $property['value'] = TypeHelper::safe($property['value'], 'com_componentbuilder');
break;
}
// load the property
diff --git a/admin/src/View/Admin_custom_tabs/HtmlView.php b/admin/src/View/Admin_custom_tabs/HtmlView.php
index 661b90c44..dec8baef5 100644
--- a/admin/src/View/Admin_custom_tabs/HtmlView.php
+++ b/admin/src/View/Admin_custom_tabs/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Admin_custom_tabs view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('admin_custom_tabs', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_ADMIN_CUSTOM_TABS_NEW' : 'COM_COMPONENTBUILDER_ADMIN_CUSTOM_TABS_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('admin_custom_tabs.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('admin_custom_tabs.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('admin_custom_tabs.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('admin_custom_tabs.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('admin_custom_tabs.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('admin_custom_tabs.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('admin_custom_tabs.create'))
+ {
+ ToolbarHelper::apply('admin_custom_tabs.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('admin_custom_tabs.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('admin_custom_tabs.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('admin_custom_tabs.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('admin_custom_tabs.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('admin_custom_tabs.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('admin_custom_tabs.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('admin_custom_tabs.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Admin_fields/HtmlView.php b/admin/src/View/Admin_fields/HtmlView.php
index 53fe34305..f03dec9b5 100644
--- a/admin/src/View/Admin_fields/HtmlView.php
+++ b/admin/src/View/Admin_fields/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Admin_fields view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('admin_fields', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_ADMIN_FIELDS_NEW' : 'COM_COMPONENTBUILDER_ADMIN_FIELDS_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('admin_fields.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('admin_fields.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('admin_fields.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('admin_fields.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('admin_fields.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('admin_fields.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('admin_fields.create'))
+ {
+ ToolbarHelper::apply('admin_fields.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('admin_fields.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('admin_fields.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('admin_fields.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('admin_fields.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('admin_fields.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('admin_fields.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('admin_fields.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Admin_fields_conditions/HtmlView.php b/admin/src/View/Admin_fields_conditions/HtmlView.php
index cbcfa83c0..9e3d935a5 100644
--- a/admin/src/View/Admin_fields_conditions/HtmlView.php
+++ b/admin/src/View/Admin_fields_conditions/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Admin_fields_conditions view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('admin_fields_conditions', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_ADMIN_FIELDS_CONDITIONS_NEW' : 'COM_COMPONENTBUILDER_ADMIN_FIELDS_CONDITIONS_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('admin_fields_conditions.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('admin_fields_conditions.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('admin_fields_conditions.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('admin_fields_conditions.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('admin_fields_conditions.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('admin_fields_conditions.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('admin_fields_conditions.create'))
+ {
+ ToolbarHelper::apply('admin_fields_conditions.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('admin_fields_conditions.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('admin_fields_conditions.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('admin_fields_conditions.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('admin_fields_conditions.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('admin_fields_conditions.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('admin_fields_conditions.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('admin_fields_conditions.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Admin_fields_relations/HtmlView.php b/admin/src/View/Admin_fields_relations/HtmlView.php
index 352fa2821..20cfe8fb4 100644
--- a/admin/src/View/Admin_fields_relations/HtmlView.php
+++ b/admin/src/View/Admin_fields_relations/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Admin_fields_relations view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('admin_fields_relations', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_ADMIN_FIELDS_RELATIONS_NEW' : 'COM_COMPONENTBUILDER_ADMIN_FIELDS_RELATIONS_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('admin_fields_relations.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('admin_fields_relations.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('admin_fields_relations.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('admin_fields_relations.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('admin_fields_relations.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('admin_fields_relations.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('admin_fields_relations.create'))
+ {
+ ToolbarHelper::apply('admin_fields_relations.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('admin_fields_relations.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('admin_fields_relations.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('admin_fields_relations.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('admin_fields_relations.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('admin_fields_relations.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('admin_fields_relations.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('admin_fields_relations.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Admin_view/HtmlView.php b/admin/src/View/Admin_view/HtmlView.php
index 3a1263da6..3711ed40f 100644
--- a/admin/src/View/Admin_view/HtmlView.php
+++ b/admin/src/View/Admin_view/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Admin_view view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('admin_view', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_ADMIN_VIEW_NEW' : 'COM_COMPONENTBUILDER_ADMIN_VIEW_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('admin_view.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('admin_view.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('admin_view.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('admin_view.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('admin_view.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('admin_view.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('admin_view.create'))
+ {
+ ToolbarHelper::apply('admin_view.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('admin_view.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('admin_view.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('admin_view.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('admin_view.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('admin_view.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('admin_view.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('admin_view.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Admin_views/HtmlView.php b/admin/src/View/Admin_views/HtmlView.php
index 8dc9628d3..47983b057 100644
--- a/admin/src/View/Admin_views/HtmlView.php
+++ b/admin/src/View/Admin_views/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Admins_custom_tabs/HtmlView.php b/admin/src/View/Admins_custom_tabs/HtmlView.php
index 8de77027e..58df48ea9 100644
--- a/admin/src/View/Admins_custom_tabs/HtmlView.php
+++ b/admin/src/View/Admins_custom_tabs/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Admins_fields/HtmlView.php b/admin/src/View/Admins_fields/HtmlView.php
index e30312a8b..17366d14d 100644
--- a/admin/src/View/Admins_fields/HtmlView.php
+++ b/admin/src/View/Admins_fields/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Admins_fields_conditions/HtmlView.php b/admin/src/View/Admins_fields_conditions/HtmlView.php
index 114bf193d..061f723ec 100644
--- a/admin/src/View/Admins_fields_conditions/HtmlView.php
+++ b/admin/src/View/Admins_fields_conditions/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Admins_fields_relations/HtmlView.php b/admin/src/View/Admins_fields_relations/HtmlView.php
index 2b8264544..51befddb1 100644
--- a/admin/src/View/Admins_fields_relations/HtmlView.php
+++ b/admin/src/View/Admins_fields_relations/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Class_extendings/HtmlView.php b/admin/src/View/Class_extendings/HtmlView.php
index 8386af059..cf5fe91f7 100644
--- a/admin/src/View/Class_extendings/HtmlView.php
+++ b/admin/src/View/Class_extendings/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Class_extends/HtmlView.php b/admin/src/View/Class_extends/HtmlView.php
index 33d82329a..8c6ef6702 100644
--- a/admin/src/View/Class_extends/HtmlView.php
+++ b/admin/src/View/Class_extends/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Class_extends view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('class_extends', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_CLASS_EXTENDS_NEW' : 'COM_COMPONENTBUILDER_CLASS_EXTENDS_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('class_extends.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('class_extends.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('class_extends.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('class_extends.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('class_extends.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('class_extends.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('class_extends.create'))
+ {
+ ToolbarHelper::apply('class_extends.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('class_extends.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('class_extends.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('class_extends.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('class_extends.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('class_extends.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('class_extends.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('class_extends.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Class_method/HtmlView.php b/admin/src/View/Class_method/HtmlView.php
index 31fbbcd74..8fd61df4d 100644
--- a/admin/src/View/Class_method/HtmlView.php
+++ b/admin/src/View/Class_method/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Class_method view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('class_method', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_CLASS_METHOD_NEW' : 'COM_COMPONENTBUILDER_CLASS_METHOD_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('class_method.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('class_method.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('class_method.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('class_method.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('class_method.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('class_method.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('class_method.create'))
+ {
+ ToolbarHelper::apply('class_method.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('class_method.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('class_method.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('class_method.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('class_method.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('class_method.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('class_method.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('class_method.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Class_methods/HtmlView.php b/admin/src/View/Class_methods/HtmlView.php
index ee7db4a3e..7d31956b8 100644
--- a/admin/src/View/Class_methods/HtmlView.php
+++ b/admin/src/View/Class_methods/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Class_properties/HtmlView.php b/admin/src/View/Class_properties/HtmlView.php
index 897489f67..ba8860d41 100644
--- a/admin/src/View/Class_properties/HtmlView.php
+++ b/admin/src/View/Class_properties/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Class_property/HtmlView.php b/admin/src/View/Class_property/HtmlView.php
index a70dd4356..68568d166 100644
--- a/admin/src/View/Class_property/HtmlView.php
+++ b/admin/src/View/Class_property/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Class_property view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('class_property', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_CLASS_PROPERTY_NEW' : 'COM_COMPONENTBUILDER_CLASS_PROPERTY_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('class_property.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('class_property.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('class_property.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('class_property.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('class_property.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('class_property.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('class_property.create'))
+ {
+ ToolbarHelper::apply('class_property.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('class_property.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('class_property.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('class_property.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('class_property.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('class_property.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('class_property.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('class_property.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Component_admin_views/HtmlView.php b/admin/src/View/Component_admin_views/HtmlView.php
index 3485454ef..857b115c0 100644
--- a/admin/src/View/Component_admin_views/HtmlView.php
+++ b/admin/src/View/Component_admin_views/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Component_admin_views view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('component_admin_views', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_COMPONENT_ADMIN_VIEWS_NEW' : 'COM_COMPONENTBUILDER_COMPONENT_ADMIN_VIEWS_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('component_admin_views.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('component_admin_views.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('component_admin_views.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('component_admin_views.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('component_admin_views.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('component_admin_views.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('component_admin_views.create'))
+ {
+ ToolbarHelper::apply('component_admin_views.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_admin_views.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('component_admin_views.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('component_admin_views.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('component_admin_views.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('component_admin_views.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_admin_views.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('component_admin_views.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Component_config/HtmlView.php b/admin/src/View/Component_config/HtmlView.php
index 7853905f7..0d1316e34 100644
--- a/admin/src/View/Component_config/HtmlView.php
+++ b/admin/src/View/Component_config/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Component_config view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('component_config', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_COMPONENT_CONFIG_NEW' : 'COM_COMPONENTBUILDER_COMPONENT_CONFIG_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('component_config.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('component_config.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('component_config.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('component_config.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('component_config.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('component_config.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('component_config.create'))
+ {
+ ToolbarHelper::apply('component_config.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_config.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('component_config.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('component_config.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('component_config.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('component_config.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_config.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('component_config.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Component_custom_admin_menus/HtmlView.php b/admin/src/View/Component_custom_admin_menus/HtmlView.php
index 8369dabfd..006f96b17 100644
--- a/admin/src/View/Component_custom_admin_menus/HtmlView.php
+++ b/admin/src/View/Component_custom_admin_menus/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Component_custom_admin_menus view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('component_custom_admin_menus', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_COMPONENT_CUSTOM_ADMIN_MENUS_NEW' : 'COM_COMPONENTBUILDER_COMPONENT_CUSTOM_ADMIN_MENUS_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('component_custom_admin_menus.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('component_custom_admin_menus.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('component_custom_admin_menus.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('component_custom_admin_menus.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('component_custom_admin_menus.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('component_custom_admin_menus.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('component_custom_admin_menus.create'))
+ {
+ ToolbarHelper::apply('component_custom_admin_menus.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_custom_admin_menus.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('component_custom_admin_menus.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('component_custom_admin_menus.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('component_custom_admin_menus.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('component_custom_admin_menus.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_custom_admin_menus.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('component_custom_admin_menus.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Component_custom_admin_views/HtmlView.php b/admin/src/View/Component_custom_admin_views/HtmlView.php
index a67f0f3bc..dd8d6aac7 100644
--- a/admin/src/View/Component_custom_admin_views/HtmlView.php
+++ b/admin/src/View/Component_custom_admin_views/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Component_custom_admin_views view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('component_custom_admin_views', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_COMPONENT_CUSTOM_ADMIN_VIEWS_NEW' : 'COM_COMPONENTBUILDER_COMPONENT_CUSTOM_ADMIN_VIEWS_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('component_custom_admin_views.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('component_custom_admin_views.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('component_custom_admin_views.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('component_custom_admin_views.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('component_custom_admin_views.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('component_custom_admin_views.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('component_custom_admin_views.create'))
+ {
+ ToolbarHelper::apply('component_custom_admin_views.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_custom_admin_views.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('component_custom_admin_views.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('component_custom_admin_views.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('component_custom_admin_views.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('component_custom_admin_views.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_custom_admin_views.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('component_custom_admin_views.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Component_dashboard/HtmlView.php b/admin/src/View/Component_dashboard/HtmlView.php
index 95c53b645..2f9a767ca 100644
--- a/admin/src/View/Component_dashboard/HtmlView.php
+++ b/admin/src/View/Component_dashboard/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Component_dashboard view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('component_dashboard', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_COMPONENT_DASHBOARD_NEW' : 'COM_COMPONENTBUILDER_COMPONENT_DASHBOARD_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('component_dashboard.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('component_dashboard.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('component_dashboard.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('component_dashboard.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('component_dashboard.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('component_dashboard.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('component_dashboard.create'))
+ {
+ ToolbarHelper::apply('component_dashboard.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_dashboard.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('component_dashboard.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('component_dashboard.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('component_dashboard.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('component_dashboard.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_dashboard.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('component_dashboard.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Component_files_folders/HtmlView.php b/admin/src/View/Component_files_folders/HtmlView.php
index 9c2ddc95e..64cb9841e 100644
--- a/admin/src/View/Component_files_folders/HtmlView.php
+++ b/admin/src/View/Component_files_folders/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Component_files_folders view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('component_files_folders', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_COMPONENT_FILES_FOLDERS_NEW' : 'COM_COMPONENTBUILDER_COMPONENT_FILES_FOLDERS_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('component_files_folders.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('component_files_folders.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('component_files_folders.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('component_files_folders.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('component_files_folders.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('component_files_folders.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('component_files_folders.create'))
+ {
+ ToolbarHelper::apply('component_files_folders.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_files_folders.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('component_files_folders.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('component_files_folders.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('component_files_folders.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('component_files_folders.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_files_folders.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('component_files_folders.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Component_modules/HtmlView.php b/admin/src/View/Component_modules/HtmlView.php
index fd0f2a7c6..ba35c62a1 100644
--- a/admin/src/View/Component_modules/HtmlView.php
+++ b/admin/src/View/Component_modules/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Component_modules view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('component_modules', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_COMPONENT_MODULES_NEW' : 'COM_COMPONENTBUILDER_COMPONENT_MODULES_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('component_modules.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('component_modules.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('component_modules.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('component_modules.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('component_modules.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('component_modules.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('component_modules.create'))
+ {
+ ToolbarHelper::apply('component_modules.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_modules.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('component_modules.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('component_modules.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('component_modules.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('component_modules.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_modules.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('component_modules.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Component_mysql_tweaks/HtmlView.php b/admin/src/View/Component_mysql_tweaks/HtmlView.php
index 2cd557139..939ca8257 100644
--- a/admin/src/View/Component_mysql_tweaks/HtmlView.php
+++ b/admin/src/View/Component_mysql_tweaks/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Component_mysql_tweaks view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('component_mysql_tweaks', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_COMPONENT_MYSQL_TWEAKS_NEW' : 'COM_COMPONENTBUILDER_COMPONENT_MYSQL_TWEAKS_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('component_mysql_tweaks.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('component_mysql_tweaks.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('component_mysql_tweaks.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('component_mysql_tweaks.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('component_mysql_tweaks.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('component_mysql_tweaks.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('component_mysql_tweaks.create'))
+ {
+ ToolbarHelper::apply('component_mysql_tweaks.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_mysql_tweaks.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('component_mysql_tweaks.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('component_mysql_tweaks.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('component_mysql_tweaks.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('component_mysql_tweaks.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_mysql_tweaks.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('component_mysql_tweaks.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Component_placeholders/HtmlView.php b/admin/src/View/Component_placeholders/HtmlView.php
index 2ca037603..4c67ee71c 100644
--- a/admin/src/View/Component_placeholders/HtmlView.php
+++ b/admin/src/View/Component_placeholders/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Component_placeholders view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('component_placeholders', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_COMPONENT_PLACEHOLDERS_NEW' : 'COM_COMPONENTBUILDER_COMPONENT_PLACEHOLDERS_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('component_placeholders.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('component_placeholders.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('component_placeholders.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('component_placeholders.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('component_placeholders.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('component_placeholders.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('component_placeholders.create'))
+ {
+ ToolbarHelper::apply('component_placeholders.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_placeholders.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('component_placeholders.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('component_placeholders.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('component_placeholders.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('component_placeholders.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_placeholders.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('component_placeholders.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Component_plugins/HtmlView.php b/admin/src/View/Component_plugins/HtmlView.php
index 758bffa58..d9a588661 100644
--- a/admin/src/View/Component_plugins/HtmlView.php
+++ b/admin/src/View/Component_plugins/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Component_plugins view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('component_plugins', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_COMPONENT_PLUGINS_NEW' : 'COM_COMPONENTBUILDER_COMPONENT_PLUGINS_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('component_plugins.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('component_plugins.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('component_plugins.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('component_plugins.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('component_plugins.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('component_plugins.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('component_plugins.create'))
+ {
+ ToolbarHelper::apply('component_plugins.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_plugins.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('component_plugins.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('component_plugins.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('component_plugins.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('component_plugins.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_plugins.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('component_plugins.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Component_router/HtmlView.php b/admin/src/View/Component_router/HtmlView.php
index f748e8ce8..0df32aa54 100644
--- a/admin/src/View/Component_router/HtmlView.php
+++ b/admin/src/View/Component_router/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Component_router view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('component_router', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_COMPONENT_ROUTER_NEW' : 'COM_COMPONENTBUILDER_COMPONENT_ROUTER_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('component_router.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('component_router.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('component_router.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('component_router.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('component_router.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('component_router.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('component_router.create'))
+ {
+ ToolbarHelper::apply('component_router.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_router.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('component_router.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('component_router.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('component_router.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('component_router.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_router.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('component_router.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Component_site_views/HtmlView.php b/admin/src/View/Component_site_views/HtmlView.php
index 17f7cad06..94ab51726 100644
--- a/admin/src/View/Component_site_views/HtmlView.php
+++ b/admin/src/View/Component_site_views/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Component_site_views view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('component_site_views', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_COMPONENT_SITE_VIEWS_NEW' : 'COM_COMPONENTBUILDER_COMPONENT_SITE_VIEWS_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('component_site_views.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('component_site_views.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('component_site_views.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('component_site_views.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('component_site_views.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('component_site_views.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('component_site_views.create'))
+ {
+ ToolbarHelper::apply('component_site_views.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_site_views.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('component_site_views.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('component_site_views.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('component_site_views.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('component_site_views.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_site_views.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('component_site_views.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Component_updates/HtmlView.php b/admin/src/View/Component_updates/HtmlView.php
index b1f0a6358..0680bbc94 100644
--- a/admin/src/View/Component_updates/HtmlView.php
+++ b/admin/src/View/Component_updates/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Component_updates view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('component_updates', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_COMPONENT_UPDATES_NEW' : 'COM_COMPONENTBUILDER_COMPONENT_UPDATES_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('component_updates.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('component_updates.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('component_updates.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('component_updates.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('component_updates.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('component_updates.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('component_updates.create'))
+ {
+ ToolbarHelper::apply('component_updates.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_updates.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('component_updates.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('component_updates.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('component_updates.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('component_updates.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('component_updates.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('component_updates.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Components_admin_views/HtmlView.php b/admin/src/View/Components_admin_views/HtmlView.php
index f1383486f..374c088e5 100644
--- a/admin/src/View/Components_admin_views/HtmlView.php
+++ b/admin/src/View/Components_admin_views/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Components_config/HtmlView.php b/admin/src/View/Components_config/HtmlView.php
index fafa2fc43..0d2037173 100644
--- a/admin/src/View/Components_config/HtmlView.php
+++ b/admin/src/View/Components_config/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Components_custom_admin_menus/HtmlView.php b/admin/src/View/Components_custom_admin_menus/HtmlView.php
index 3818492c6..edb19f336 100644
--- a/admin/src/View/Components_custom_admin_menus/HtmlView.php
+++ b/admin/src/View/Components_custom_admin_menus/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Components_custom_admin_views/HtmlView.php b/admin/src/View/Components_custom_admin_views/HtmlView.php
index 2f570315a..a6f3ce074 100644
--- a/admin/src/View/Components_custom_admin_views/HtmlView.php
+++ b/admin/src/View/Components_custom_admin_views/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Components_dashboard/HtmlView.php b/admin/src/View/Components_dashboard/HtmlView.php
index c6fa187f1..4a95f81f9 100644
--- a/admin/src/View/Components_dashboard/HtmlView.php
+++ b/admin/src/View/Components_dashboard/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Components_files_folders/HtmlView.php b/admin/src/View/Components_files_folders/HtmlView.php
index 0064ab913..8e0673ff2 100644
--- a/admin/src/View/Components_files_folders/HtmlView.php
+++ b/admin/src/View/Components_files_folders/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Components_modules/HtmlView.php b/admin/src/View/Components_modules/HtmlView.php
index 128bcd6cc..abd3b9e99 100644
--- a/admin/src/View/Components_modules/HtmlView.php
+++ b/admin/src/View/Components_modules/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Components_mysql_tweaks/HtmlView.php b/admin/src/View/Components_mysql_tweaks/HtmlView.php
index d516b0c7a..3a3d02b92 100644
--- a/admin/src/View/Components_mysql_tweaks/HtmlView.php
+++ b/admin/src/View/Components_mysql_tweaks/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Components_placeholders/HtmlView.php b/admin/src/View/Components_placeholders/HtmlView.php
index 6923846ca..efff7d923 100644
--- a/admin/src/View/Components_placeholders/HtmlView.php
+++ b/admin/src/View/Components_placeholders/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Components_plugins/HtmlView.php b/admin/src/View/Components_plugins/HtmlView.php
index 895055334..55c7378d0 100644
--- a/admin/src/View/Components_plugins/HtmlView.php
+++ b/admin/src/View/Components_plugins/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Components_routers/HtmlView.php b/admin/src/View/Components_routers/HtmlView.php
index 38c5431a8..fc6de9f30 100644
--- a/admin/src/View/Components_routers/HtmlView.php
+++ b/admin/src/View/Components_routers/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Components_site_views/HtmlView.php b/admin/src/View/Components_site_views/HtmlView.php
index 79d3b8e4a..459be667c 100644
--- a/admin/src/View/Components_site_views/HtmlView.php
+++ b/admin/src/View/Components_site_views/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Components_updates/HtmlView.php b/admin/src/View/Components_updates/HtmlView.php
index c5e62adf2..c2e8da057 100644
--- a/admin/src/View/Components_updates/HtmlView.php
+++ b/admin/src/View/Components_updates/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Custom_admin_view/HtmlView.php b/admin/src/View/Custom_admin_view/HtmlView.php
index ee1a08e04..6e11f8216 100644
--- a/admin/src/View/Custom_admin_view/HtmlView.php
+++ b/admin/src/View/Custom_admin_view/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Custom_admin_view view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('custom_admin_view', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_NEW' : 'COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('core.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('custom_admin_view.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('core.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('custom_admin_view.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('custom_admin_view.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('custom_admin_view.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('core.create'))
+ {
+ ToolbarHelper::apply('custom_admin_view.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('custom_admin_view.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('custom_admin_view.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('custom_admin_view.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('core.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('custom_admin_view.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('custom_admin_view.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('custom_admin_view.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Custom_admin_views/HtmlView.php b/admin/src/View/Custom_admin_views/HtmlView.php
index f241baa75..3425f24c0 100644
--- a/admin/src/View/Custom_admin_views/HtmlView.php
+++ b/admin/src/View/Custom_admin_views/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -263,6 +281,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Custom_code/HtmlView.php b/admin/src/View/Custom_code/HtmlView.php
index 0c08e2059..012990a19 100644
--- a/admin/src/View/Custom_code/HtmlView.php
+++ b/admin/src/View/Custom_code/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Custom_code view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('custom_code', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_CUSTOM_CODE_NEW' : 'COM_COMPONENTBUILDER_CUSTOM_CODE_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('custom_code.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('custom_code.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('custom_code.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('custom_code.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('custom_code.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('custom_code.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('custom_code.create'))
+ {
+ ToolbarHelper::apply('custom_code.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('custom_code.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('custom_code.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('custom_code.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('custom_code.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('custom_code.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('custom_code.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('custom_code.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Custom_codes/HtmlView.php b/admin/src/View/Custom_codes/HtmlView.php
index 3c2a3bfb6..5453b6641 100644
--- a/admin/src/View/Custom_codes/HtmlView.php
+++ b/admin/src/View/Custom_codes/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -263,6 +281,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Dynamic_get/HtmlView.php b/admin/src/View/Dynamic_get/HtmlView.php
index 8b91f8cbb..bcce341af 100644
--- a/admin/src/View/Dynamic_get/HtmlView.php
+++ b/admin/src/View/Dynamic_get/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Dynamic_get view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('dynamic_get', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_DYNAMIC_GET_NEW' : 'COM_COMPONENTBUILDER_DYNAMIC_GET_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('dynamic_get.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('dynamic_get.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('dynamic_get.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('dynamic_get.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('dynamic_get.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('dynamic_get.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('dynamic_get.create'))
+ {
+ ToolbarHelper::apply('dynamic_get.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('dynamic_get.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('dynamic_get.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('dynamic_get.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('dynamic_get.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('dynamic_get.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('dynamic_get.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('dynamic_get.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Dynamic_gets/HtmlView.php b/admin/src/View/Dynamic_gets/HtmlView.php
index 16df5eb4b..c65199437 100644
--- a/admin/src/View/Dynamic_gets/HtmlView.php
+++ b/admin/src/View/Dynamic_gets/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Field/HtmlView.php b/admin/src/View/Field/HtmlView.php
index d18d249e8..9eee56597 100644
--- a/admin/src/View/Field/HtmlView.php
+++ b/admin/src/View/Field/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Field view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('field', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_FIELD_NEW' : 'COM_COMPONENTBUILDER_FIELD_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('field.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('field.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('field.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('field.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('field.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('field.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('field.create'))
+ {
+ ToolbarHelper::apply('field.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('field.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('field.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('field.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('field.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('field.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('field.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('field.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Fields/HtmlView.php b/admin/src/View/Fields/HtmlView.php
index 05d32eef5..facb3e7aa 100644
--- a/admin/src/View/Fields/HtmlView.php
+++ b/admin/src/View/Fields/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Fieldtype/HtmlView.php b/admin/src/View/Fieldtype/HtmlView.php
index 74430f6b6..8223cce14 100644
--- a/admin/src/View/Fieldtype/HtmlView.php
+++ b/admin/src/View/Fieldtype/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Fieldtype view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('fieldtype', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -168,7 +185,16 @@ class HtmlView extends BaseHtmlView
$this->vxlfields = $this->get('Vxlfields');
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -183,17 +209,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -281,6 +307,81 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_FIELDTYPE_NEW' : 'COM_COMPONENTBUILDER_FIELDTYPE_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('fieldtype.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('fieldtype.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('fieldtype.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('fieldtype.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('fieldtype.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('fieldtype.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('fieldtype.create'))
+ {
+ ToolbarHelper::apply('fieldtype.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('fieldtype.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('fieldtype.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('fieldtype.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('fieldtype.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('fieldtype.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('fieldtype.save', 'JTOOLBAR_SAVE');
+ }
+ if ($this->canDo->get('fieldtype.reset'))
+ {
+ // add Reset button.
+ ToolbarHelper::custom('fieldtype.resetPowers', 'joomla custom-button-resetpowers', '', 'COM_COMPONENTBUILDER_RESET', false);
+ }
+ if ($this->canDo->get('fieldtype.push'))
+ {
+ // add Push button.
+ ToolbarHelper::custom('fieldtype.pushPowers', 'joomla custom-button-pushpowers', '', 'COM_COMPONENTBUILDER_PUSH', false);
+ }
+ ToolbarHelper::cancel('fieldtype.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Fieldtypes/HtmlView.php b/admin/src/View/Fieldtypes/HtmlView.php
index 196445505..52a82054d 100644
--- a/admin/src/View/Fieldtypes/HtmlView.php
+++ b/admin/src/View/Fieldtypes/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -273,6 +291,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Help_document/HtmlView.php b/admin/src/View/Help_document/HtmlView.php
index 989170ab0..414e41427 100644
--- a/admin/src/View/Help_document/HtmlView.php
+++ b/admin/src/View/Help_document/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Help_document view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('help_document', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_HELP_DOCUMENT_NEW' : 'COM_COMPONENTBUILDER_HELP_DOCUMENT_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('help_document.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('help_document.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('help_document.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('help_document.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('help_document.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('help_document.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('help_document.create'))
+ {
+ ToolbarHelper::apply('help_document.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('help_document.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('help_document.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('help_document.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('help_document.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('help_document.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('help_document.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('help_document.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Help_documents/HtmlView.php b/admin/src/View/Help_documents/HtmlView.php
index 1d9868b22..b3f79a61e 100644
--- a/admin/src/View/Help_documents/HtmlView.php
+++ b/admin/src/View/Help_documents/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Joomla_component/HtmlView.php b/admin/src/View/Joomla_component/HtmlView.php
index 194611756..8900d5d56 100644
--- a/admin/src/View/Joomla_component/HtmlView.php
+++ b/admin/src/View/Joomla_component/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Joomla_component view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('joomla_component', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_NEW' : 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('joomla_component.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('joomla_component.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('joomla_component.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('joomla_component.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('joomla_component.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('joomla_component.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('joomla_component.create'))
+ {
+ ToolbarHelper::apply('joomla_component.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('joomla_component.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('joomla_component.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('joomla_component.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('joomla_component.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('joomla_component.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('joomla_component.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('joomla_component.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Joomla_components/HtmlView.php b/admin/src/View/Joomla_components/HtmlView.php
index 114081126..196aa1d1d 100644
--- a/admin/src/View/Joomla_components/HtmlView.php
+++ b/admin/src/View/Joomla_components/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -263,6 +281,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Joomla_module/HtmlView.php b/admin/src/View/Joomla_module/HtmlView.php
index eae2f5039..ff815ab28 100644
--- a/admin/src/View/Joomla_module/HtmlView.php
+++ b/admin/src/View/Joomla_module/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Joomla_module view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('joomla_module', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_JOOMLA_MODULE_NEW' : 'COM_COMPONENTBUILDER_JOOMLA_MODULE_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('joomla_module.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('joomla_module.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('joomla_module.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('joomla_module.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('joomla_module.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('joomla_module.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('joomla_module.create'))
+ {
+ ToolbarHelper::apply('joomla_module.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('joomla_module.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('joomla_module.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('joomla_module.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('joomla_module.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('joomla_module.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('joomla_module.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('joomla_module.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Joomla_module_files_folders_urls/HtmlView.php b/admin/src/View/Joomla_module_files_folders_urls/HtmlView.php
index 8f9cf7bc5..7ca65028a 100644
--- a/admin/src/View/Joomla_module_files_folders_urls/HtmlView.php
+++ b/admin/src/View/Joomla_module_files_folders_urls/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Joomla_module_files_folders_urls view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('joomla_module_files_folders_urls', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_JOOMLA_MODULE_FILES_FOLDERS_URLS_NEW' : 'COM_COMPONENTBUILDER_JOOMLA_MODULE_FILES_FOLDERS_URLS_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('joomla_module_files_folders_urls.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('joomla_module_files_folders_urls.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('joomla_module_files_folders_urls.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('joomla_module_files_folders_urls.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('joomla_module_files_folders_urls.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('joomla_module_files_folders_urls.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('joomla_module_files_folders_urls.create'))
+ {
+ ToolbarHelper::apply('joomla_module_files_folders_urls.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('joomla_module_files_folders_urls.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('joomla_module_files_folders_urls.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('joomla_module_files_folders_urls.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('joomla_module_files_folders_urls.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('joomla_module_files_folders_urls.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('joomla_module_files_folders_urls.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('joomla_module_files_folders_urls.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Joomla_module_updates/HtmlView.php b/admin/src/View/Joomla_module_updates/HtmlView.php
index cb2a30f49..27c53a3fe 100644
--- a/admin/src/View/Joomla_module_updates/HtmlView.php
+++ b/admin/src/View/Joomla_module_updates/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Joomla_module_updates view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('joomla_module_updates', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_JOOMLA_MODULE_UPDATES_NEW' : 'COM_COMPONENTBUILDER_JOOMLA_MODULE_UPDATES_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('joomla_module_updates.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('joomla_module_updates.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('joomla_module_updates.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('joomla_module_updates.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('joomla_module_updates.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('joomla_module_updates.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('joomla_module_updates.create'))
+ {
+ ToolbarHelper::apply('joomla_module_updates.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('joomla_module_updates.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('joomla_module_updates.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('joomla_module_updates.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('joomla_module_updates.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('joomla_module_updates.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('joomla_module_updates.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('joomla_module_updates.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Joomla_modules/HtmlView.php b/admin/src/View/Joomla_modules/HtmlView.php
index 088176548..7f0ac6832 100644
--- a/admin/src/View/Joomla_modules/HtmlView.php
+++ b/admin/src/View/Joomla_modules/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Joomla_modules_files_folders_urls/HtmlView.php b/admin/src/View/Joomla_modules_files_folders_urls/HtmlView.php
index 12dd6f19c..c261b7bca 100644
--- a/admin/src/View/Joomla_modules_files_folders_urls/HtmlView.php
+++ b/admin/src/View/Joomla_modules_files_folders_urls/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Joomla_modules_updates/HtmlView.php b/admin/src/View/Joomla_modules_updates/HtmlView.php
index 4daaf2534..b6c23e87f 100644
--- a/admin/src/View/Joomla_modules_updates/HtmlView.php
+++ b/admin/src/View/Joomla_modules_updates/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Joomla_plugin/HtmlView.php b/admin/src/View/Joomla_plugin/HtmlView.php
index ce9110def..9a567e1a6 100644
--- a/admin/src/View/Joomla_plugin/HtmlView.php
+++ b/admin/src/View/Joomla_plugin/HtmlView.php
@@ -27,6 +27,7 @@ use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
use VDM\Joomla\Utilities\ArrayHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -47,6 +48,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -119,6 +128,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Joomla_plugin view display method
*
@@ -142,10 +159,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('joomla_plugin', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -166,7 +183,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -181,17 +207,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -269,6 +295,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_JOOMLA_PLUGIN_NEW' : 'COM_COMPONENTBUILDER_JOOMLA_PLUGIN_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('joomla_plugin.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('joomla_plugin.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('joomla_plugin.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('joomla_plugin.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('joomla_plugin.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('joomla_plugin.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('joomla_plugin.create'))
+ {
+ ToolbarHelper::apply('joomla_plugin.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('joomla_plugin.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('joomla_plugin.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('joomla_plugin.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('joomla_plugin.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('joomla_plugin.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('joomla_plugin.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('joomla_plugin.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Joomla_plugin_files_folders_urls/HtmlView.php b/admin/src/View/Joomla_plugin_files_folders_urls/HtmlView.php
index 60725552b..25638036b 100644
--- a/admin/src/View/Joomla_plugin_files_folders_urls/HtmlView.php
+++ b/admin/src/View/Joomla_plugin_files_folders_urls/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Joomla_plugin_files_folders_urls view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('joomla_plugin_files_folders_urls', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_JOOMLA_PLUGIN_FILES_FOLDERS_URLS_NEW' : 'COM_COMPONENTBUILDER_JOOMLA_PLUGIN_FILES_FOLDERS_URLS_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('joomla_plugin_files_folders_urls.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('joomla_plugin_files_folders_urls.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('joomla_plugin_files_folders_urls.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('joomla_plugin_files_folders_urls.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('joomla_plugin_files_folders_urls.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('joomla_plugin_files_folders_urls.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('joomla_plugin_files_folders_urls.create'))
+ {
+ ToolbarHelper::apply('joomla_plugin_files_folders_urls.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('joomla_plugin_files_folders_urls.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('joomla_plugin_files_folders_urls.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('joomla_plugin_files_folders_urls.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('joomla_plugin_files_folders_urls.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('joomla_plugin_files_folders_urls.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('joomla_plugin_files_folders_urls.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('joomla_plugin_files_folders_urls.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Joomla_plugin_group/HtmlView.php b/admin/src/View/Joomla_plugin_group/HtmlView.php
index 02bf674d9..92a628614 100644
--- a/admin/src/View/Joomla_plugin_group/HtmlView.php
+++ b/admin/src/View/Joomla_plugin_group/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Joomla_plugin_group view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('joomla_plugin_group', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_JOOMLA_PLUGIN_GROUP_NEW' : 'COM_COMPONENTBUILDER_JOOMLA_PLUGIN_GROUP_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('core.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('joomla_plugin_group.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('core.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('joomla_plugin_group.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('joomla_plugin_group.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('joomla_plugin_group.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('core.create'))
+ {
+ ToolbarHelper::apply('joomla_plugin_group.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('joomla_plugin_group.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('joomla_plugin_group.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('joomla_plugin_group.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('core.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('joomla_plugin_group.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('joomla_plugin_group.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('joomla_plugin_group.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Joomla_plugin_groups/HtmlView.php b/admin/src/View/Joomla_plugin_groups/HtmlView.php
index 6e986ae11..4267bf576 100644
--- a/admin/src/View/Joomla_plugin_groups/HtmlView.php
+++ b/admin/src/View/Joomla_plugin_groups/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Joomla_plugin_updates/HtmlView.php b/admin/src/View/Joomla_plugin_updates/HtmlView.php
index c3900d0ca..c3d3d0bd5 100644
--- a/admin/src/View/Joomla_plugin_updates/HtmlView.php
+++ b/admin/src/View/Joomla_plugin_updates/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Joomla_plugin_updates view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('joomla_plugin_updates', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_JOOMLA_PLUGIN_UPDATES_NEW' : 'COM_COMPONENTBUILDER_JOOMLA_PLUGIN_UPDATES_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('joomla_plugin_updates.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('joomla_plugin_updates.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('joomla_plugin_updates.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('joomla_plugin_updates.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('joomla_plugin_updates.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('joomla_plugin_updates.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('joomla_plugin_updates.create'))
+ {
+ ToolbarHelper::apply('joomla_plugin_updates.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('joomla_plugin_updates.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('joomla_plugin_updates.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('joomla_plugin_updates.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('joomla_plugin_updates.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('joomla_plugin_updates.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('joomla_plugin_updates.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('joomla_plugin_updates.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Joomla_plugins/HtmlView.php b/admin/src/View/Joomla_plugins/HtmlView.php
index 72af49ff3..fb6e9822d 100644
--- a/admin/src/View/Joomla_plugins/HtmlView.php
+++ b/admin/src/View/Joomla_plugins/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -273,6 +291,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Joomla_plugins_files_folders_urls/HtmlView.php b/admin/src/View/Joomla_plugins_files_folders_urls/HtmlView.php
index 0c3d6a308..2a57f81a0 100644
--- a/admin/src/View/Joomla_plugins_files_folders_urls/HtmlView.php
+++ b/admin/src/View/Joomla_plugins_files_folders_urls/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Joomla_plugins_updates/HtmlView.php b/admin/src/View/Joomla_plugins_updates/HtmlView.php
index 1b3ea8113..9e940020b 100644
--- a/admin/src/View/Joomla_plugins_updates/HtmlView.php
+++ b/admin/src/View/Joomla_plugins_updates/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Joomla_power/HtmlView.php b/admin/src/View/Joomla_power/HtmlView.php
index 875d25775..8b7f0da30 100644
--- a/admin/src/View/Joomla_power/HtmlView.php
+++ b/admin/src/View/Joomla_power/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Joomla_power view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('joomla_power', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -278,6 +304,81 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_JOOMLA_POWER_NEW' : 'COM_COMPONENTBUILDER_JOOMLA_POWER_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('joomla_power.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('joomla_power.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('joomla_power.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('joomla_power.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('joomla_power.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('joomla_power.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('joomla_power.create'))
+ {
+ ToolbarHelper::apply('joomla_power.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('joomla_power.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('joomla_power.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('joomla_power.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('joomla_power.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('joomla_power.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('joomla_power.save', 'JTOOLBAR_SAVE');
+ }
+ if ($this->canDo->get('joomla_power.reset'))
+ {
+ // add Reset button.
+ ToolbarHelper::custom('joomla_power.resetPowers', 'joomla custom-button-resetpowers', '', 'COM_COMPONENTBUILDER_RESET', false);
+ }
+ if ($this->canDo->get('joomla_power.push'))
+ {
+ // add Push button.
+ ToolbarHelper::custom('joomla_power.pushPowers', 'share custom-button-pushpowers', '', 'COM_COMPONENTBUILDER_PUSH', false);
+ }
+ ToolbarHelper::cancel('joomla_power.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Joomla_powers/HtmlView.php b/admin/src/View/Joomla_powers/HtmlView.php
index 17633b1bd..f1a94cbf0 100644
--- a/admin/src/View/Joomla_powers/HtmlView.php
+++ b/admin/src/View/Joomla_powers/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -273,6 +291,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Language/HtmlView.php b/admin/src/View/Language/HtmlView.php
index b8d4032f3..8eda47a00 100644
--- a/admin/src/View/Language/HtmlView.php
+++ b/admin/src/View/Language/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Language view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('language', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_LANGUAGE_NEW' : 'COM_COMPONENTBUILDER_LANGUAGE_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('language.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('language.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('language.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('language.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('language.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('language.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('language.create'))
+ {
+ ToolbarHelper::apply('language.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('language.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('language.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('language.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('language.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('language.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('language.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('language.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Language_translation/HtmlView.php b/admin/src/View/Language_translation/HtmlView.php
index 5aa6e9b65..eefa92582 100644
--- a/admin/src/View/Language_translation/HtmlView.php
+++ b/admin/src/View/Language_translation/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Language_translation view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('language_translation', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_NEW' : 'COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('language_translation.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('language_translation.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('language_translation.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('language_translation.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('language_translation.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('language_translation.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('language_translation.create'))
+ {
+ ToolbarHelper::apply('language_translation.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('language_translation.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('language_translation.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('language_translation.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('language_translation.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('language_translation.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('language_translation.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('language_translation.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Language_translations/HtmlView.php b/admin/src/View/Language_translations/HtmlView.php
index 30ab76831..b646bd6b7 100644
--- a/admin/src/View/Language_translations/HtmlView.php
+++ b/admin/src/View/Language_translations/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Languages/HtmlView.php b/admin/src/View/Languages/HtmlView.php
index 85c7e75e7..35e8fff26 100644
--- a/admin/src/View/Languages/HtmlView.php
+++ b/admin/src/View/Languages/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -263,6 +281,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Layout/HtmlView.php b/admin/src/View/Layout/HtmlView.php
index 00119a845..f84fd289e 100644
--- a/admin/src/View/Layout/HtmlView.php
+++ b/admin/src/View/Layout/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Layout view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('layout', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_LAYOUT_NEW' : 'COM_COMPONENTBUILDER_LAYOUT_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('core.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('layout.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('core.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('layout.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('layout.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('layout.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('core.create'))
+ {
+ ToolbarHelper::apply('layout.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('layout.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('layout.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('layout.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('core.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('layout.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('layout.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('layout.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Layouts/HtmlView.php b/admin/src/View/Layouts/HtmlView.php
index 2dc349d99..eb5b877d8 100644
--- a/admin/src/View/Layouts/HtmlView.php
+++ b/admin/src/View/Layouts/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -263,6 +281,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Libraries/HtmlView.php b/admin/src/View/Libraries/HtmlView.php
index 0432d2305..a697fe285 100644
--- a/admin/src/View/Libraries/HtmlView.php
+++ b/admin/src/View/Libraries/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -263,6 +281,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Libraries_config/HtmlView.php b/admin/src/View/Libraries_config/HtmlView.php
index adf45fb2d..fd73ee8a8 100644
--- a/admin/src/View/Libraries_config/HtmlView.php
+++ b/admin/src/View/Libraries_config/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Libraries_files_folders_urls/HtmlView.php b/admin/src/View/Libraries_files_folders_urls/HtmlView.php
index f0194d31f..243eeca89 100644
--- a/admin/src/View/Libraries_files_folders_urls/HtmlView.php
+++ b/admin/src/View/Libraries_files_folders_urls/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Library/HtmlView.php b/admin/src/View/Library/HtmlView.php
index 5f3211518..36d9c2329 100644
--- a/admin/src/View/Library/HtmlView.php
+++ b/admin/src/View/Library/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Library view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('library', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_LIBRARY_NEW' : 'COM_COMPONENTBUILDER_LIBRARY_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('library.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('library.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('library.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('library.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('library.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('library.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('library.create'))
+ {
+ ToolbarHelper::apply('library.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('library.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('library.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('library.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('library.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('library.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('library.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('library.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Library_config/HtmlView.php b/admin/src/View/Library_config/HtmlView.php
index dfd13cda5..103aa93e4 100644
--- a/admin/src/View/Library_config/HtmlView.php
+++ b/admin/src/View/Library_config/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Library_config view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('library_config', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_LIBRARY_CONFIG_NEW' : 'COM_COMPONENTBUILDER_LIBRARY_CONFIG_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('library_config.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('library_config.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('library_config.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('library_config.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('library_config.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('library_config.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('library_config.create'))
+ {
+ ToolbarHelper::apply('library_config.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('library_config.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('library_config.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('library_config.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('library_config.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('library_config.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('library_config.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('library_config.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Library_files_folders_urls/HtmlView.php b/admin/src/View/Library_files_folders_urls/HtmlView.php
index 5a9136035..f4c794064 100644
--- a/admin/src/View/Library_files_folders_urls/HtmlView.php
+++ b/admin/src/View/Library_files_folders_urls/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Library_files_folders_urls view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('library_files_folders_urls', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_LIBRARY_FILES_FOLDERS_URLS_NEW' : 'COM_COMPONENTBUILDER_LIBRARY_FILES_FOLDERS_URLS_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('library_files_folders_urls.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('library_files_folders_urls.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('library_files_folders_urls.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('library_files_folders_urls.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('library_files_folders_urls.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('library_files_folders_urls.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('library_files_folders_urls.create'))
+ {
+ ToolbarHelper::apply('library_files_folders_urls.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('library_files_folders_urls.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('library_files_folders_urls.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('library_files_folders_urls.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('library_files_folders_urls.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('library_files_folders_urls.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('library_files_folders_urls.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('library_files_folders_urls.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Placeholder/HtmlView.php b/admin/src/View/Placeholder/HtmlView.php
index 06636252a..cca77f0d9 100644
--- a/admin/src/View/Placeholder/HtmlView.php
+++ b/admin/src/View/Placeholder/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Placeholder view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('placeholder', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_PLACEHOLDER_NEW' : 'COM_COMPONENTBUILDER_PLACEHOLDER_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('placeholder.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('placeholder.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('placeholder.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('placeholder.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('placeholder.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('placeholder.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('placeholder.create'))
+ {
+ ToolbarHelper::apply('placeholder.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('placeholder.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('placeholder.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('placeholder.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('placeholder.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('placeholder.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('placeholder.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('placeholder.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Placeholders/HtmlView.php b/admin/src/View/Placeholders/HtmlView.php
index dbedcd111..562efa0d7 100644
--- a/admin/src/View/Placeholders/HtmlView.php
+++ b/admin/src/View/Placeholders/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Power/HtmlView.php b/admin/src/View/Power/HtmlView.php
index 49c5e32ac..f9de19a2b 100644
--- a/admin/src/View/Power/HtmlView.php
+++ b/admin/src/View/Power/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Power view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('power', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -278,6 +304,81 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_POWER_NEW' : 'COM_COMPONENTBUILDER_POWER_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('power.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('power.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('power.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('power.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('power.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('power.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('power.create'))
+ {
+ ToolbarHelper::apply('power.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('power.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('power.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('power.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('power.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('power.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('power.save', 'JTOOLBAR_SAVE');
+ }
+ if ($this->canDo->get('power.reset'))
+ {
+ // add Reset button.
+ ToolbarHelper::custom('power.resetPowers', 'joomla custom-button-resetpowers', '', 'COM_COMPONENTBUILDER_RESET', false);
+ }
+ if ($this->canDo->get('power.push'))
+ {
+ // add Push button.
+ ToolbarHelper::custom('power.pushPowers', 'share custom-button-pushpowers', '', 'COM_COMPONENTBUILDER_PUSH', false);
+ }
+ ToolbarHelper::cancel('power.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Powers/HtmlView.php b/admin/src/View/Powers/HtmlView.php
index f517340b7..b6c5d9bcc 100644
--- a/admin/src/View/Powers/HtmlView.php
+++ b/admin/src/View/Powers/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -273,6 +291,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Repositories/HtmlView.php b/admin/src/View/Repositories/HtmlView.php
index e702d08af..40806093d 100644
--- a/admin/src/View/Repositories/HtmlView.php
+++ b/admin/src/View/Repositories/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Repository/HtmlView.php b/admin/src/View/Repository/HtmlView.php
index a61ab5b7f..1e92e6999 100644
--- a/admin/src/View/Repository/HtmlView.php
+++ b/admin/src/View/Repository/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Repository view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('repository', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_REPOSITORY_NEW' : 'COM_COMPONENTBUILDER_REPOSITORY_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('repository.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('repository.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('repository.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('repository.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('repository.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('repository.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('repository.create'))
+ {
+ ToolbarHelper::apply('repository.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('repository.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('repository.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('repository.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('repository.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('repository.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('repository.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('repository.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Server/HtmlView.php b/admin/src/View/Server/HtmlView.php
index fef2040b7..b62a3f380 100644
--- a/admin/src/View/Server/HtmlView.php
+++ b/admin/src/View/Server/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Server view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('server', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_SERVER_NEW' : 'COM_COMPONENTBUILDER_SERVER_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('server.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('server.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('server.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('server.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('server.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('server.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('server.create'))
+ {
+ ToolbarHelper::apply('server.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('server.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('server.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('server.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('server.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('server.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('server.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('server.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Servers/HtmlView.php b/admin/src/View/Servers/HtmlView.php
index 8358b8d59..40913556b 100644
--- a/admin/src/View/Servers/HtmlView.php
+++ b/admin/src/View/Servers/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Site_view/HtmlView.php b/admin/src/View/Site_view/HtmlView.php
index 9d0c4cc46..bcd586270 100644
--- a/admin/src/View/Site_view/HtmlView.php
+++ b/admin/src/View/Site_view/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Site_view view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('site_view', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_SITE_VIEW_NEW' : 'COM_COMPONENTBUILDER_SITE_VIEW_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('core.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('site_view.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('core.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('site_view.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('site_view.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('site_view.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('core.create'))
+ {
+ ToolbarHelper::apply('site_view.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('site_view.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('site_view.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('site_view.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('core.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('site_view.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('site_view.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('site_view.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Site_views/HtmlView.php b/admin/src/View/Site_views/HtmlView.php
index 3306ef1a0..5372724f9 100644
--- a/admin/src/View/Site_views/HtmlView.php
+++ b/admin/src/View/Site_views/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -263,6 +281,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Snippet/HtmlView.php b/admin/src/View/Snippet/HtmlView.php
index b03de6d2d..83fe70f35 100644
--- a/admin/src/View/Snippet/HtmlView.php
+++ b/admin/src/View/Snippet/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Snippet view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('snippet', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_SNIPPET_NEW' : 'COM_COMPONENTBUILDER_SNIPPET_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('core.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('snippet.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('core.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('snippet.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('snippet.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('snippet.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('core.create'))
+ {
+ ToolbarHelper::apply('snippet.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('snippet.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('snippet.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('snippet.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('core.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('snippet.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('snippet.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('snippet.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Snippet_type/HtmlView.php b/admin/src/View/Snippet_type/HtmlView.php
index 788ad04e4..1cb98f957 100644
--- a/admin/src/View/Snippet_type/HtmlView.php
+++ b/admin/src/View/Snippet_type/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Snippet_type view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('snippet_type', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_SNIPPET_TYPE_NEW' : 'COM_COMPONENTBUILDER_SNIPPET_TYPE_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('snippet_type.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('snippet_type.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('snippet_type.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('snippet_type.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('snippet_type.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('snippet_type.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('snippet_type.create'))
+ {
+ ToolbarHelper::apply('snippet_type.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('snippet_type.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('snippet_type.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('snippet_type.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('snippet_type.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('snippet_type.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('snippet_type.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('snippet_type.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Snippet_types/HtmlView.php b/admin/src/View/Snippet_types/HtmlView.php
index fd132c0f2..49234fa18 100644
--- a/admin/src/View/Snippet_types/HtmlView.php
+++ b/admin/src/View/Snippet_types/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Snippets/HtmlView.php b/admin/src/View/Snippets/HtmlView.php
index 44b827184..5d0ac190c 100644
--- a/admin/src/View/Snippets/HtmlView.php
+++ b/admin/src/View/Snippets/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -268,6 +286,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Template/HtmlView.php b/admin/src/View/Template/HtmlView.php
index 1d5d09270..3948f57c3 100644
--- a/admin/src/View/Template/HtmlView.php
+++ b/admin/src/View/Template/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Template view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('template', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_TEMPLATE_NEW' : 'COM_COMPONENTBUILDER_TEMPLATE_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('core.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('template.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('core.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('template.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('template.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('template.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('core.create'))
+ {
+ ToolbarHelper::apply('template.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('template.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('template.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('template.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('core.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('template.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('template.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('template.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Templates/HtmlView.php b/admin/src/View/Templates/HtmlView.php
index ac2b010d1..d4e2a9561 100644
--- a/admin/src/View/Templates/HtmlView.php
+++ b/admin/src/View/Templates/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -263,6 +281,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/src/View/Validation_rule/HtmlView.php b/admin/src/View/Validation_rule/HtmlView.php
index 8bf626849..7a9ce8ec2 100644
--- a/admin/src/View/Validation_rule/HtmlView.php
+++ b/admin/src/View/Validation_rule/HtmlView.php
@@ -26,6 +26,7 @@ use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Document\Document;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\StringHelper;
+use Joomla\Input\Input;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -46,6 +47,14 @@ class HtmlView extends BaseHtmlView
*/
public mixed $item;
+ /**
+ * The input class
+ *
+ * @var Input
+ * @since 5.2.1
+ */
+ public Input $input;
+
/**
* The state object
*
@@ -118,6 +127,14 @@ class HtmlView extends BaseHtmlView
*/
public string $referral;
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* Validation_rule view display method
*
@@ -141,10 +158,10 @@ class HtmlView extends BaseHtmlView
// get action permissions
$this->canDo = ComponentbuilderHelper::getActions('validation_rule', $this->item);
// get input
- $jinput = Factory::getApplication()->input;
- $this->ref = $jinput->get('ref', 0, 'word');
- $this->refid = $jinput->get('refid', 0, 'int');
- $return = $jinput->get('return', null, 'base64');
+ $this->input ??= Factory::getApplication()->input;
+ $this->ref = $this->input->get('ref', 0, 'word');
+ $this->refid = $this->input->get('refid', 0, 'int');
+ $return = $this->input->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
@@ -165,7 +182,16 @@ class HtmlView extends BaseHtmlView
}
// Set the toolbar
- $this->addToolBar();
+ if ($this->getLayout() !== 'modal')
+ {
+ $this->isModal = false;
+ $this->addToolbar();
+ }
+ else
+ {
+ $this->isModal = true;
+ $this->addModalToolbar();
+ }
// Check for errors.
if (count($errors = $this->get('Errors')))
@@ -180,17 +206,17 @@ class HtmlView extends BaseHtmlView
parent::display($tpl);
}
-
/**
* Add the page title and toolbar.
*
* @return void
+ * @throws \Exception
* @since 1.6
*/
protected function addToolbar(): void
{
Factory::getApplication()->input->set('hidemainmenu', true);
- $user = Factory::getApplication()->getIdentity();
+ $user = $this->getCurrentUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
@@ -268,6 +294,71 @@ class HtmlView extends BaseHtmlView
}
}
+ /**
+ * Add the modal toolbar.
+ *
+ * @return void
+ * @throws \Exception
+ * @since 5.0.0
+ */
+ protected function addModalToolbar()
+ {
+ Factory::getApplication()->input->set('hidemainmenu', true);
+ $user = $this->getCurrentUser();
+ $userId = $user->id;
+ $isNew = $this->item->id == 0;
+
+ ToolbarHelper::title( Text::_($isNew ? 'COM_COMPONENTBUILDER_VALIDATION_RULE_NEW' : 'COM_COMPONENTBUILDER_VALIDATION_RULE_EDIT'), 'pencil-2 article-add');
+ // Built the actions for new and existing records.
+ if (StringHelper::check($this->referral))
+ {
+ if ($this->canDo->get('validation_rule.create') && $isNew)
+ {
+ // We can create the record.
+ ToolbarHelper::save('validation_rule.save', 'JTOOLBAR_SAVE');
+ }
+ elseif ($this->canDo->get('validation_rule.edit'))
+ {
+ // We can save the record.
+ ToolbarHelper::save('validation_rule.save', 'JTOOLBAR_SAVE');
+ }
+ if ($isNew)
+ {
+ // Do not creat but cancel.
+ ToolbarHelper::cancel('validation_rule.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ // We can close it.
+ ToolbarHelper::cancel('validation_rule.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ else
+ {
+ if ($isNew)
+ {
+ // For new records, check the create permission.
+ if ($this->canDo->get('validation_rule.create'))
+ {
+ ToolbarHelper::apply('validation_rule.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('validation_rule.save', 'JTOOLBAR_SAVE');
+ ToolbarHelper::custom('validation_rule.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
+ };
+ ToolbarHelper::cancel('validation_rule.cancel', 'JTOOLBAR_CANCEL');
+ }
+ else
+ {
+ if ($this->canDo->get('validation_rule.edit'))
+ {
+ // We can save the new record
+ ToolbarHelper::apply('validation_rule.apply', 'JTOOLBAR_APPLY');
+ ToolbarHelper::save('validation_rule.save', 'JTOOLBAR_SAVE');
+ }
+ ToolbarHelper::cancel('validation_rule.cancel', 'JTOOLBAR_CLOSE');
+ }
+ }
+ }
+
/**
* Escapes a value for output in a view script.
*
diff --git a/admin/src/View/Validation_rules/HtmlView.php b/admin/src/View/Validation_rules/HtmlView.php
index 7069f963f..d9948186b 100644
--- a/admin/src/View/Validation_rules/HtmlView.php
+++ b/admin/src/View/Validation_rules/HtmlView.php
@@ -87,6 +87,22 @@ class HtmlView extends BaseHtmlView
*/
public string $return_here;
+ /**
+ * The title key used in modal
+ *
+ * @var string
+ * @since 5.2.1
+ */
+ public string $modalTitleKey;
+
+ /**
+ * The modal state
+ *
+ * @var bool
+ * @since 5.2.1
+ */
+ public bool $isModal;
+
/**
* The user object.
*
@@ -138,8 +154,10 @@ class HtmlView extends BaseHtmlView
}
// We don't need toolbar in the modal window.
+ $this->isModal = true;
if ($this->getLayout() !== 'modal')
{
+ $this->isModal = false;
$this->addToolbar();
}
@@ -258,6 +276,17 @@ class HtmlView extends BaseHtmlView
return StringHelper::html($var, $this->_charset ?? 'UTF-8', $shorten, $length);
}
+ /**
+ * Get the modal data/title key
+ *
+ * @return string The key value.
+ * @since 5.2.1
+ */
+ public function getModalTitleKey(): string
+ {
+ return $this->modalTitleKey ?? 'id';
+ }
+
/**
* Returns an array of fields the table can be sorted by
*
diff --git a/admin/tmpl/admin_custom_tabs/default.php b/admin/tmpl/admin_custom_tabs/default.php
index 98c9043e0..ece60c2ef 100644
--- a/admin/tmpl/admin_custom_tabs/default.php
+++ b/admin/tmpl/admin_custom_tabs/default.php
@@ -24,6 +24,9 @@ Html::_('bootstrap.tooltip');
// No direct access to this file
defined('_JEXEC') or die;
+$layout = $this->isModal ? 'modal' : 'edit';
+$tmpl = $this->input->get('tmpl');
+$tmpl = $tmpl ? '&tmpl=' . $tmpl : '';
?>
|