diff --git a/administrator/components/com_admin/sql/updates/mysql/5.4.0.2025-11.08.sql b/administrator/components/com_admin/sql/updates/mysql/5.4.0.2025-11.08.sql new file mode 100644 index 0000000000000..96b2f4bda5149 --- /dev/null +++ b/administrator/components/com_admin/sql/updates/mysql/5.4.0.2025-11.08.sql @@ -0,0 +1,11 @@ +INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `custom_data`, `ordering`, `state`) +SELECT 0, 'mod_backward', 'module', 'mod_backward', '', 1, 1, 1, 0, 1, '', '{}', '', 0, 0 +WHERE NOT EXISTS (SELECT * FROM `#__extensions` e WHERE e.`type` = 'module' AND e.`element` = 'mod_backward' AND e.`name` = 'mod_backward' AND e.`client_id` = 1); + +INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) +SELECT 'Backward Compatibility', '', '', 1, 'status', 0, NULL, NULL, NULL, 1, 'mod_backward', 1, 1, '', 1, '*' +WHERE NOT EXISTS (SELECT * FROM `#__modules` m WHERE m.`title` = 'Backward Compatibility' AND m.`position` = 'status' AND m.`module` = 'mod_backward' AND m.`client_id` = 1); + +INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) +SELECT LAST_INSERT_ID(), 0 +WHERE NOT EXISTS (SELECT 1 FROM `#__modules_menu` WHERE `moduleid` = LAST_INSERT_ID() AND `menuid` = 0); diff --git a/administrator/components/com_admin/sql/updates/postgresql/5.4.0-2025-11-08.sql b/administrator/components/com_admin/sql/updates/postgresql/5.4.0-2025-11-08.sql new file mode 100644 index 0000000000000..5426a42545107 --- /dev/null +++ b/administrator/components/com_admin/sql/updates/postgresql/5.4.0-2025-11-08.sql @@ -0,0 +1,15 @@ +INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "custom_data", "ordering", "state") +SELECT 0, 'mod_backward', 'module', 'mod_backward', '', 1, 1, 1, 0, 1, '', '{}', '', 0, 0 +WHERE NOT EXISTS (SELECT * FROM "#__extensions" e WHERE e."type" = 'module' AND e."element" = 'mod_backward' AND e."name" = 'mod_backward' AND e."client_id" = 1); + +INSERT INTO "#__modules" ("title", "note", "content", "ordering", "position", "checked_out", "checked_out_time", "publish_up", "publish_down", "published", "module", "access", "showtitle", "params", "client_id", "language") +SELECT 'Backward Compatibility', '', '', 1, 'status', 0, NULL, NULL, NULL, 1, 'mod_backward', 1, 1, '', 1, '*' +WHERE NOT EXISTS (SELECT * FROM "#__modules" m WHERE m."title" = 'Backward Compatibility' AND m."position" = 'status' AND m."module" = 'mod_backward' AND m."client_id" = 1); + +INSERT INTO "#__modules_menu" ("moduleid", "menuid") +SELECT currval(pg_get_serial_sequence('#__modules','id')), 0 +WHERE NOT EXISTS ( + SELECT 1 FROM "#__modules_menu" + WHERE "moduleid" = currval(pg_get_serial_sequence('#__modules','id')) AND "menuid" = 0 +); + diff --git a/administrator/language/en-GB/mod_backward.ini b/administrator/language/en-GB/mod_backward.ini new file mode 100644 index 0000000000000..691e8e9c05a53 --- /dev/null +++ b/administrator/language/en-GB/mod_backward.ini @@ -0,0 +1,8 @@ +; Joomla! Project +; (C) 2025 Open Source Matters, Inc. +; License GNU General Public License version 2 or later; see LICENSE.txt +; Note : All ini files need to be saved as UTF-8 + +MOD_BACKWARD="Joomla! Backward Compatibility Information" +MOD_BACKWARD_TEXT="Backward:" +MOD_BACKWARD_XML_DESCRIPTION="This module displays the which Joomla! Backward Compatibility plugins are enabled and is intended to be displayed in the 'status' position." \ No newline at end of file diff --git a/administrator/language/en-GB/mod_backward.sys.ini b/administrator/language/en-GB/mod_backward.sys.ini new file mode 100644 index 0000000000000..d5183129854e3 --- /dev/null +++ b/administrator/language/en-GB/mod_backward.sys.ini @@ -0,0 +1,7 @@ +; Joomla! Project +; (C) 2025 Open Source Matters, Inc. +; License GNU General Public License version 2 or later; see LICENSE.txt +; Note : All ini files need to be saved as UTF-8 + +MOD_BACKWARD="Joomla! Backward Compatibility Information" +MOD_BACKWARD_XML_DESCRIPTION="This module displays the which Joomla! Backward Compatibility plugins are enabled and is intended to be displayed in the 'status' position." \ No newline at end of file diff --git a/administrator/modules/mod_backward/mod_backward.xml b/administrator/modules/mod_backward/mod_backward.xml new file mode 100644 index 0000000000000..31354c3388db6 --- /dev/null +++ b/administrator/modules/mod_backward/mod_backward.xml @@ -0,0 +1,44 @@ + + + mod_backward + Joomla! Project + 2025-11 + (C) 2025 Open Source Matters, Inc. + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + 1.0.0 + MOD_BACKWARD_XML_DESCRIPTION + Joomla\Module\Backward + + services + src + tmpl + + + language/en-GB/mod_backward.ini + language/en-GB/mod_backward.sys.ini + + + + +
+ + + +
+
+
+
diff --git a/administrator/modules/mod_backward/services/provider.php b/administrator/modules/mod_backward/services/provider.php new file mode 100644 index 0000000000000..4c36247f7033c --- /dev/null +++ b/administrator/modules/mod_backward/services/provider.php @@ -0,0 +1,36 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +\defined('_JEXEC') or die; + +use Joomla\CMS\Extension\Service\Provider\HelperFactory; +use Joomla\CMS\Extension\Service\Provider\Module; +use Joomla\CMS\Extension\Service\Provider\ModuleDispatcherFactory; +use Joomla\DI\Container; +use Joomla\DI\ServiceProviderInterface; + +return new class () implements ServiceProviderInterface { + /** + * Registers the service provider with a DI container. + * + * @param Container $container The DI container. + * + * @return void + * + * @since __DEPLOY_VERSION__ + */ + public function register(Container $container) + { + $container->registerServiceProvider(new ModuleDispatcherFactory('\\Joomla\\Module\\Backward')); + $container->registerServiceProvider(new HelperFactory('\\Joomla\\Module\\Backward\\Administrator\\Helper')); + + $container->registerServiceProvider(new Module()); + } +}; diff --git a/administrator/modules/mod_backward/src/Dispatcher/Dispatcher.php b/administrator/modules/mod_backward/src/Dispatcher/Dispatcher.php new file mode 100644 index 0000000000000..d2d905e83709c --- /dev/null +++ b/administrator/modules/mod_backward/src/Dispatcher/Dispatcher.php @@ -0,0 +1,42 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +namespace Joomla\Module\Backward\Administrator\Dispatcher; + +use Joomla\CMS\Dispatcher\AbstractModuleDispatcher; +use Joomla\CMS\Plugin\PluginHelper; + +// phpcs:disable PSR1.Files.SideEffects +\defined('_JEXEC') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Dispatcher class for mod_backward + * + * @since __DEPLOY_VERSION__ + */ +class Dispatcher extends AbstractModuleDispatcher +{ + /** + * Returns the layout data. + * + * @return array + * + * @since __DEPLOY_VERSION__ + */ + protected function getLayoutData() + { + $data = parent::getLayoutData(); + $data['compat'] = PluginHelper::isEnabled('behaviour', 'compat'); + $data['compat6'] = PluginHelper::isEnabled('behaviour', 'compat6'); + + return $data; + } +} diff --git a/administrator/modules/mod_backward/tmpl/default.php b/administrator/modules/mod_backward/tmpl/default.php new file mode 100644 index 0000000000000..63fcd811a99d8 --- /dev/null +++ b/administrator/modules/mod_backward/tmpl/default.php @@ -0,0 +1,23 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Language\Text; + +?> + +
+ +
+ \ No newline at end of file diff --git a/installation/sql/mysql/base.sql b/installation/sql/mysql/base.sql index 5a3b514606ed1..f233f5a76e3f3 100644 --- a/installation/sql/mysql/base.sql +++ b/installation/sql/mysql/base.sql @@ -24,8 +24,9 @@ CREATE TABLE IF NOT EXISTS `#__assets` ( -- Dumping data for table `#__assets` -- + INSERT INTO `#__assets` (`id`, `parent_id`, `lft`, `rgt`, `level`, `name`, `title`, `rules`) VALUES -(1, 0, 0, 183, 0, 'root.1', 'Root Asset', '{"core.login.site":{"6":1,"2":1},"core.login.admin":{"6":1},"core.login.api":{"8":1},"core.login.offline":{"6":1},"core.admin":{"8":1},"core.manage":{"7":1},"core.create":{"6":1,"3":1},"core.delete":{"6":1},"core.edit":{"6":1,"4":1},"core.edit.state":{"6":1,"5":1},"core.edit.own":{"6":1,"3":1}}'), +(1, 0, 0, 185, 0, 'root.1', 'Root Asset', '{"core.login.site":{"6":1,"2":1},"core.login.admin":{"6":1},"core.login.api":{"8":1},"core.login.offline":{"6":1},"core.admin":{"8":1},"core.manage":{"7":1},"core.create":{"6":1,"3":1},"core.delete":{"6":1},"core.edit":{"6":1,"4":1},"core.edit.state":{"6":1,"5":1},"core.edit.own":{"6":1,"3":1}}'), (2, 1, 1, 2, 1, 'com_admin', 'com_admin', '{}'), (3, 1, 3, 6, 1, 'com_banners', 'com_banners', '{"core.admin":{"7":1},"core.manage":{"6":1}}'), (4, 1, 7, 8, 1, 'com_cache', 'com_cache', '{"core.admin":{"7":1},"core.manage":{"7":1}}'), @@ -42,24 +43,24 @@ INSERT INTO `#__assets` (`id`, `parent_id`, `lft`, `rgt`, `level`, `name`, `titl (15, 1, 51, 52, 1, 'com_media', 'com_media', '{"core.admin":{"7":1},"core.manage":{"6":1},"core.create":{"3":1},"core.delete":{"5":1}}'), (16, 1, 53, 56, 1, 'com_menus', 'com_menus', '{"core.admin":{"7":1}}'), (17, 1, 57, 58, 1, 'com_messages', 'com_messages', '{"core.admin":{"7":1},"core.manage":{"7":1}}'), -(18, 1, 59, 132, 1, 'com_modules', 'com_modules', '{"core.admin":{"7":1}}'), -(19, 1, 133, 136, 1, 'com_newsfeeds', 'com_newsfeeds', '{"core.admin":{"7":1},"core.manage":{"6":1}}'), -(20, 1, 137, 138, 1, 'com_plugins', 'com_plugins', '{"core.admin":{"7":1}}'), -(21, 1, 139, 140, 1, 'com_redirect', 'com_redirect', '{"core.admin":{"7":1}}'), -(23, 1, 141, 142, 1, 'com_templates', 'com_templates', '{"core.admin":{"7":1}}'), -(24, 1, 147, 150, 1, 'com_users', 'com_users', '{"core.admin":{"7":1}}'), -(26, 1, 151, 152, 1, 'com_wrapper', 'com_wrapper', '{}'), +(18, 1, 59, 134, 1, 'com_modules', 'com_modules', '{"core.admin":{"7":1}}'), +(19, 1, 135, 138, 1, 'com_newsfeeds', 'com_newsfeeds', '{"core.admin":{"7":1},"core.manage":{"6":1}}'), +(20, 1, 139, 140, 1, 'com_plugins', 'com_plugins', '{"core.admin":{"7":1}}'), +(21, 1, 141, 142, 1, 'com_redirect', 'com_redirect', '{"core.admin":{"7":1}}'), +(23, 1, 143, 144, 1, 'com_templates', 'com_templates', '{"core.admin":{"7":1}}'), +(24, 1, 149, 152, 1, 'com_users', 'com_users', '{"core.admin":{"7":1}}'), +(26, 1, 153, 154, 1, 'com_wrapper', 'com_wrapper', '{}'), (27, 8, 18, 19, 2, 'com_content.category.2', 'Uncategorised', '{}'), (28, 3, 4, 5, 2, 'com_banners.category.3', 'Uncategorised', '{}'), (29, 7, 14, 15, 2, 'com_contact.category.4', 'Uncategorised', '{}'), -(30, 19, 134, 135, 2, 'com_newsfeeds.category.5', 'Uncategorised', '{}'), -(32, 24, 148, 149, 2, 'com_users.category.7', 'Uncategorised', '{}'), -(33, 1, 153, 154, 1, 'com_finder', 'com_finder', '{"core.admin":{"7":1},"core.manage":{"6":1}}'), -(34, 1, 155, 156, 1, 'com_joomlaupdate', 'com_joomlaupdate', '{}'), -(35, 1, 157, 158, 1, 'com_tags', 'com_tags', '{}'), -(36, 1, 159, 160, 1, 'com_contenthistory', 'com_contenthistory', '{}'), -(37, 1, 161, 162, 1, 'com_ajax', 'com_ajax', '{}'), -(38, 1, 163, 164, 1, 'com_postinstall', 'com_postinstall', '{}'), +(30, 19, 136, 137, 2, 'com_newsfeeds.category.5', 'Uncategorised', '{}'), +(32, 24, 150, 151, 2, 'com_users.category.7', 'Uncategorised', '{}'), +(33, 1, 155, 156, 1, 'com_finder', 'com_finder', '{"core.admin":{"7":1},"core.manage":{"6":1}}'), +(34, 1, 157, 158, 1, 'com_joomlaupdate', 'com_joomlaupdate', '{}'), +(35, 1, 159, 160, 1, 'com_tags', 'com_tags', '{}'), +(36, 1, 161, 162, 1, 'com_contenthistory', 'com_contenthistory', '{}'), +(37, 1, 163, 164, 1, 'com_ajax', 'com_ajax', '{}'), +(38, 1, 165, 166, 1, 'com_postinstall', 'com_postinstall', '{}'), (39, 18, 60, 61, 2, 'com_modules.module.1', 'Main Menu', '{}'), (40, 18, 62, 63, 2, 'com_modules.module.2', 'Login', '{}'), (41, 18, 64, 65, 2, 'com_modules.module.3', 'Popular Articles', '{}'), @@ -84,8 +85,8 @@ INSERT INTO `#__assets` (`id`, `parent_id`, `lft`, `rgt`, `level`, `name`, `titl (62, 56, 31, 32, 3, 'com_content.transition.5', 'FEATURE', '{}'), (63, 56, 33, 34, 3, 'com_content.transition.6', 'UNFEATURE', '{}'), (64, 56, 35, 36, 3, 'com_content.transition.7', 'PUBLISH_AND_FEATURE', '{}'), -(65, 1, 143, 144, 1, 'com_privacy', 'com_privacy', '{}'), -(66, 1, 145, 146, 1, 'com_actionlogs', 'com_actionlogs', '{}'), +(65, 1, 145, 146, 1, 'com_privacy', 'com_privacy', '{}'), +(66, 1, 147, 148, 1, 'com_actionlogs', 'com_actionlogs', '{}'), (67, 18, 76, 77, 2, 'com_modules.module.88', 'Latest Actions', '{}'), (68, 18, 78, 79, 2, 'com_modules.module.89', 'Privacy Dashboard', '{}'), (70, 18, 88, 89, 2, 'com_modules.module.103', 'Site', '{}'), @@ -107,16 +108,17 @@ INSERT INTO `#__assets` (`id`, `parent_id`, `lft`, `rgt`, `level`, `name`, `titl (87, 18, 124, 125, 2, 'com_modules.module.97', 'Recently Added Articles', '{}'), (88, 18, 126, 127, 2, 'com_modules.module.98', 'Logged-in Users', '{}'), (89, 18, 128, 129, 2, 'com_modules.module.90', 'Login Support', '{}'), -(90, 1, 165, 172, 1, 'com_scheduler', 'com_scheduler', '{}'), -(91, 1, 173, 174, 1, 'com_associations', 'com_associations', '{}'), -(92, 1, 175, 176, 1, 'com_categories', 'com_categories', '{}'), -(93, 1, 177, 178, 1, 'com_fields', 'com_fields', '{}'), -(94, 1, 179, 180, 1, 'com_workflow', 'com_workflow', '{}'), -(95, 1, 181, 182, 1, 'com_guidedtours', 'com_guidedtours', '{}'), +(90, 1, 167, 174, 1, 'com_scheduler', 'com_scheduler', '{}'), +(91, 1, 175, 176, 1, 'com_associations', 'com_associations', '{}'), +(92, 1, 177, 178, 1, 'com_categories', 'com_categories', '{}'), +(93, 1, 179, 180, 1, 'com_fields', 'com_fields', '{}'), +(94, 1, 181, 182, 1, 'com_workflow', 'com_workflow', '{}'), +(95, 1, 183, 184, 1, 'com_guidedtours', 'com_guidedtours', '{}'), (96, 18, 130, 131, 2, 'com_modules.module.109', 'Guided Tours', '{}'), -(97, 90, 166, 167, 2, 'com_scheduler.task.1', 'Rotate Logs', '{}'), -(98, 90, 168, 169, 2, 'com_scheduler.task.2', 'Session GC', '{}'), -(99, 90, 170, 171, 2, 'com_scheduler.task.3', 'Update Notification', '{}'); +(97, 90, 168, 169, 2, 'com_scheduler.task.1', 'Rotate Logs', '{}'), +(98, 90, 170, 171, 2, 'com_scheduler.task.2', 'Session GC', '{}'), +(99, 90, 172, 173, 2, 'com_scheduler.task.3', 'Update Notification', '{}'), +(100, 18, 132, 133, 2, 'com_modules.module.110', 'Backward Compatibility', '{}'); -- -------------------------------------------------------- @@ -252,7 +254,8 @@ INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, (0, 'mod_privacy_dashboard', 'module', 'mod_privacy_dashboard', '', 1, 1, 1, 0, 1, '', '{}', ''), (0, 'mod_submenu', 'module', 'mod_submenu', '', 1, 1, 1, 0, 1, '', '{}', ''), (0, 'mod_privacy_status', 'module', 'mod_privacy_status', '', 1, 1, 1, 0, 1, '', '{}', ''), -(0, 'mod_guidedtours', 'module', 'mod_guidedtours', '', 1, 1, 1, 0, 1, '', '{}', ''); +(0, 'mod_guidedtours', 'module', 'mod_guidedtours', '', 1, 1, 1, 0, 1, '', '{}', ''), +(0, 'mod_backward', 'module', 'mod_backward', '', 1, 1, 1, 0, 1, '', '{}', ''); -- Plugins INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `custom_data`, `ordering`, `state`) VALUES @@ -654,7 +657,8 @@ INSERT INTO `#__modules` (`id`, `asset_id`, `title`, `note`, `content`, `orderin (106, 83, 'Help Dashboard', '', '', 1, 'cpanel-help', NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"help","layout":"_:default","moduleclass_sfx":"","style":"System-none","module_tag":"div","bootstrap_size":"12","header_tag":"h2","header_class":""}', 1, '*'), (107, 84, 'Privacy Requests', '', '', 1, 'cpanel-privacy', NULL, NULL, 1, 'mod_privacy_dashboard', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"cachemode":"static","style":"0","module_tag":"div","bootstrap_size":"12","header_tag":"h2","header_class":""}', 1, '*'), (108, 85, 'Privacy Status', '', '', 1, 'cpanel-privacy', NULL, NULL, 1, 'mod_privacy_status', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"cachemode":"static","style":"0","module_tag":"div","bootstrap_size":"12","header_tag":"h2","header_class":""}', 1, '*'), -(109, 96, 'Guided Tours', '', '', 1, 'status', NULL, NULL, 1, 'mod_guidedtours', 1, 1, '', 1, '*'); +(109, 96, 'Guided Tours', '', '', 1, 'status', NULL, NULL, 1, 'mod_guidedtours', 1, 1, '', 1, '*'), +(110, 100, 'Backward Compatibility', '', '', 1, 'status', NULL, NULL, 1, 'mod_backward', 1, 1, '', 1, '*'); -- -------------------------------------------------------- @@ -711,7 +715,8 @@ INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (106, 0), (107, 0), (108, 0), -(109, 0); +(109, 0), +(110, 0); -- -------------------------------------------------------- diff --git a/installation/sql/postgresql/base.sql b/installation/sql/postgresql/base.sql index bbff277f4c5b3..15d7d80c0aa16 100644 --- a/installation/sql/postgresql/base.sql +++ b/installation/sql/postgresql/base.sql @@ -31,7 +31,7 @@ COMMENT ON COLUMN "#__assets"."rules" IS 'JSON encoded access control.'; -- INSERT INTO "#__assets" ("id", "parent_id", "lft", "rgt", "level", "name", "title", "rules") VALUES -(1, 0, 0, 183, 0, 'root.1', 'Root Asset', '{"core.login.site":{"6":1,"2":1},"core.login.admin":{"6":1},"core.login.api":{"8":1},"core.login.offline":{"6":1},"core.admin":{"8":1},"core.manage":{"7":1},"core.create":{"6":1,"3":1},"core.delete":{"6":1},"core.edit":{"6":1,"4":1},"core.edit.state":{"6":1,"5":1},"core.edit.own":{"6":1,"3":1}}'), +(1, 0, 0, 185, 0, 'root.1', 'Root Asset', '{"core.login.site":{"6":1,"2":1},"core.login.admin":{"6":1},"core.login.api":{"8":1},"core.login.offline":{"6":1},"core.admin":{"8":1},"core.manage":{"7":1},"core.create":{"6":1,"3":1},"core.delete":{"6":1},"core.edit":{"6":1,"4":1},"core.edit.state":{"6":1,"5":1},"core.edit.own":{"6":1,"3":1}}'), (2, 1, 1, 2, 1, 'com_admin', 'com_admin', '{}'), (3, 1, 3, 6, 1, 'com_banners', 'com_banners', '{"core.admin":{"7":1},"core.manage":{"6":1}}'), (4, 1, 7, 8, 1, 'com_cache', 'com_cache', '{"core.admin":{"7":1},"core.manage":{"7":1}}'), @@ -48,24 +48,24 @@ INSERT INTO "#__assets" ("id", "parent_id", "lft", "rgt", "level", "name", "titl (15, 1, 51, 52, 1, 'com_media', 'com_media', '{"core.admin":{"7":1},"core.manage":{"6":1},"core.create":{"3":1},"core.delete":{"5":1}}'), (16, 1, 53, 56, 1, 'com_menus', 'com_menus', '{"core.admin":{"7":1}}'), (17, 1, 57, 58, 1, 'com_messages', 'com_messages', '{"core.admin":{"7":1},"core.manage":{"7":1}}'), -(18, 1, 59, 132, 1, 'com_modules', 'com_modules', '{"core.admin":{"7":1}}'), -(19, 1, 133, 136, 1, 'com_newsfeeds', 'com_newsfeeds', '{"core.admin":{"7":1},"core.manage":{"6":1}}'), -(20, 1, 137, 138, 1, 'com_plugins', 'com_plugins', '{"core.admin":{"7":1}}'), -(21, 1, 139, 140, 1, 'com_redirect', 'com_redirect', '{"core.admin":{"7":1}}'), -(23, 1, 141, 142, 1, 'com_templates', 'com_templates', '{"core.admin":{"7":1}}'), -(24, 1, 147, 150, 1, 'com_users', 'com_users', '{"core.admin":{"7":1}}'), -(26, 1, 151, 152, 1, 'com_wrapper', 'com_wrapper', '{}'), +(18, 1, 59, 134, 1, 'com_modules', 'com_modules', '{"core.admin":{"7":1}}'), +(19, 1, 135, 138, 1, 'com_newsfeeds', 'com_newsfeeds', '{"core.admin":{"7":1},"core.manage":{"6":1}}'), +(20, 1, 139, 140, 1, 'com_plugins', 'com_plugins', '{"core.admin":{"7":1}}'), +(21, 1, 141, 142, 1, 'com_redirect', 'com_redirect', '{"core.admin":{"7":1}}'), +(23, 1, 143, 144, 1, 'com_templates', 'com_templates', '{"core.admin":{"7":1}}'), +(24, 1, 149, 152, 1, 'com_users', 'com_users', '{"core.admin":{"7":1}}'), +(26, 1, 153, 154, 1, 'com_wrapper', 'com_wrapper', '{}'), (27, 8, 18, 19, 2, 'com_content.category.2', 'Uncategorised', '{}'), (28, 3, 4, 5, 2, 'com_banners.category.3', 'Uncategorised', '{}'), (29, 7, 14, 15, 2, 'com_contact.category.4', 'Uncategorised', '{}'), -(30, 19, 134, 135, 2, 'com_newsfeeds.category.5', 'Uncategorised', '{}'), -(32, 24, 148, 149, 2, 'com_users.category.7', 'Uncategorised', '{}'), -(33, 1, 153, 154, 1, 'com_finder', 'com_finder', '{"core.admin":{"7":1},"core.manage":{"6":1}}'), -(34, 1, 155, 156, 1, 'com_joomlaupdate', 'com_joomlaupdate', '{}'), -(35, 1, 157, 158, 1, 'com_tags', 'com_tags', '{}'), -(36, 1, 159, 160, 1, 'com_contenthistory', 'com_contenthistory', '{}'), -(37, 1, 161, 162, 1, 'com_ajax', 'com_ajax', '{}'), -(38, 1, 163, 164, 1, 'com_postinstall', 'com_postinstall', '{}'), +(30, 19, 136, 137, 2, 'com_newsfeeds.category.5', 'Uncategorised', '{}'), +(32, 24, 150, 151, 2, 'com_users.category.7', 'Uncategorised', '{}'), +(33, 1, 155, 156, 1, 'com_finder', 'com_finder', '{"core.admin":{"7":1},"core.manage":{"6":1}}'), +(34, 1, 157, 158, 1, 'com_joomlaupdate', 'com_joomlaupdate', '{}'), +(35, 1, 159, 160, 1, 'com_tags', 'com_tags', '{}'), +(36, 1, 161, 162, 1, 'com_contenthistory', 'com_contenthistory', '{}'), +(37, 1, 163, 164, 1, 'com_ajax', 'com_ajax', '{}'), +(38, 1, 165, 166, 1, 'com_postinstall', 'com_postinstall', '{}'), (39, 18, 60, 61, 2, 'com_modules.module.1', 'Main Menu', '{}'), (40, 18, 62, 63, 2, 'com_modules.module.2', 'Login', '{}'), (41, 18, 64, 65, 2, 'com_modules.module.3', 'Popular Articles', '{}'), @@ -90,8 +90,8 @@ INSERT INTO "#__assets" ("id", "parent_id", "lft", "rgt", "level", "name", "titl (62, 56, 31, 32, 3, 'com_content.transition.5', 'FEATURE', '{}'), (63, 56, 33, 34, 3, 'com_content.transition.6', 'UNFEATURE', '{}'), (64, 56, 35, 36, 3, 'com_content.transition.7', 'PUBLISH_AND_FEATURE', '{}'), -(65, 1, 143, 144, 1, 'com_privacy', 'com_privacy', '{}'), -(66, 1, 145, 146, 1, 'com_actionlogs', 'com_actionlogs', '{}'), +(65, 1, 145, 146, 1, 'com_privacy', 'com_privacy', '{}'), +(66, 1, 147, 148, 1, 'com_actionlogs', 'com_actionlogs', '{}'), (67, 18, 76, 77, 2, 'com_modules.module.88', 'Latest Actions', '{}'), (68, 18, 78, 79, 2, 'com_modules.module.89', 'Privacy Dashboard', '{}'), (70, 18, 88, 89, 2, 'com_modules.module.103', 'Site', '{}'), @@ -113,18 +113,19 @@ INSERT INTO "#__assets" ("id", "parent_id", "lft", "rgt", "level", "name", "titl (87, 18, 124, 125, 2, 'com_modules.module.97', 'Recently Added Articles', '{}'), (88, 18, 126, 127, 2, 'com_modules.module.98', 'Logged-in Users', '{}'), (89, 18, 128, 129, 2, 'com_modules.module.90', 'Login Support', '{}'), -(90, 1, 165, 172, 1, 'com_scheduler', 'com_scheduler', '{}'), -(91, 1, 173, 174, 1, 'com_associations', 'com_associations', '{}'), -(92, 1, 175, 176, 1, 'com_categories', 'com_categories', '{}'), -(93, 1, 177, 178, 1, 'com_fields', 'com_fields', '{}'), -(94, 1, 179, 180, 1, 'com_workflow', 'com_workflow', '{}'), -(95, 1, 181, 182, 1, 'com_guidedtours', 'com_guidedtours', '{}'), +(90, 1, 167, 174, 1, 'com_scheduler', 'com_scheduler', '{}'), +(91, 1, 175, 176, 1, 'com_associations', 'com_associations', '{}'), +(92, 1, 177, 178, 1, 'com_categories', 'com_categories', '{}'), +(93, 1, 179, 180, 1, 'com_fields', 'com_fields', '{}'), +(94, 1, 181, 182, 1, 'com_workflow', 'com_workflow', '{}'), +(95, 1, 183, 184, 1, 'com_guidedtours', 'com_guidedtours', '{}'), (96, 18, 130, 131, 2, 'com_modules.module.109', 'Guided Tours', '{}'), -(97, 90, 166, 167, 2, 'com_scheduler.task.1', 'Rotate Logs', '{}'), -(98, 90, 168, 169, 2, 'com_scheduler.task.2', 'Session GC', '{}'), -(99, 90, 170, 171, 2, 'com_scheduler.task.3', 'Update Notification', '{}'); +(97, 90, 168, 169, 2, 'com_scheduler.task.1', 'Rotate Logs', '{}'), +(98, 90, 170, 171, 2, 'com_scheduler.task.2', 'Session GC', '{}'), +(99, 90, 172, 173, 2, 'com_scheduler.task.3', 'Update Notification', '{}'), +(100, 18, 132, 133, 2, 'com_modules.module.110', 'Backward Compatibility', '{}'); -SELECT setval('#__assets_id_seq', 100, false); +SELECT setval('#__assets_id_seq', 101, false); -- -- Table structure for table `#__extensions` @@ -258,7 +259,8 @@ INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", (0, 'mod_privacy_dashboard', 'module', 'mod_privacy_dashboard', '', 1, 1, 1, 0, 1, '', '{}', '', 0, 0), (0, 'mod_submenu', 'module', 'mod_submenu', '', 1, 1, 1, 0, 1, '', '{}', '', 0, 0), (0, 'mod_privacy_status', 'module', 'mod_privacy_status', '', 1, 1, 1, 0, 1, '', '{}', '', 0, 0), -(0, 'mod_guidedtours', 'module', 'mod_guidedtours', '', 1, 1, 1, 0, 1, '', '{}', '', 0, 0); +(0, 'mod_guidedtours', 'module', 'mod_guidedtours', '', 1, 1, 1, 0, 1, '', '{}', '', 0, 0), +(0, 'mod_backward', 'module', 'mod_backward', '', 1, 1, 1, 0, 1, '', '{}', '', 0, 0); -- Plugins INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "custom_data", "ordering", "state") VALUES @@ -678,9 +680,10 @@ INSERT INTO "#__modules" ("id", "asset_id", "title", "note", "content", "orderin (106, 83, 'Help Dashboard', '', '', 1, 'cpanel-help', NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"help","layout":"_:default","moduleclass_sfx":"","style":"System-none","module_tag":"div","bootstrap_size":"12","header_tag":"h2","header_class":""}', 1, '*'), (107, 84, 'Privacy Requests', '', '', 1, 'cpanel-privacy', NULL, NULL, 1, 'mod_privacy_dashboard', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"cachemode":"static","style":"0","module_tag":"div","bootstrap_size":"12","header_tag":"h2","header_class":""}', 1, '*'), (108, 85, 'Privacy Status', '', '', 1, 'cpanel-privacy', NULL, NULL, 1, 'mod_privacy_status', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"cachemode":"static","style":"0","module_tag":"div","bootstrap_size":"12","header_tag":"h2","header_class":""}', 1, '*'), -(109, 96, 'Guided Tours', '', '', 1, 'status', NULL, NULL, 1, 'mod_guidedtours', 1, 1, '', 1, '*'); +(109, 96, 'Guided Tours', '', '', 1, 'status', NULL, NULL, 1, 'mod_guidedtours', 1, 1, '', 1, '*'), +(110, 100, 'Backward Compatibility', '', '', 1, 'status', NULL, NULL, 1, 'mod_backward', 1, 1, '', 1, '*'); -SELECT setval('#__modules_id_seq', 110, false); +SELECT setval('#__modules_id_seq', 111, false); -- -- Table structure for table `#__modules_menu` @@ -735,7 +738,8 @@ INSERT INTO "#__modules_menu" ("moduleid", "menuid") VALUES (106, 0), (107, 0), (108, 0), -(109, 0); +(109, 0), +(110, 0); -- -- Table structure for table `#__schemas` diff --git a/libraries/src/Extension/ExtensionHelper.php b/libraries/src/Extension/ExtensionHelper.php index 6182bf8008d5c..417d1ac1f712f 100644 --- a/libraries/src/Extension/ExtensionHelper.php +++ b/libraries/src/Extension/ExtensionHelper.php @@ -105,6 +105,7 @@ class ExtensionHelper ['library', 'phpass', '', 0], // Core module extensions - administrator + ['module', 'mod_backward', '', 1], ['module', 'mod_custom', '', 1], ['module', 'mod_feed', '', 1], ['module', 'mod_frontend', '', 1],