Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[5.3] Upmerge changes from 5.2-dev 2024-10-23 #602

Open
joomlapl-bot opened this issue Oct 24, 2024 · 0 comments
Open

[5.3] Upmerge changes from 5.2-dev 2024-10-23 #602

joomlapl-bot opened this issue Oct 24, 2024 · 0 comments

Comments

@joomlapl-bot
Copy link
Collaborator

PR w związku ze zmianą oryginału joomla/joomla-cms#44348 Poniżej zmiany w oryginale:

Click to expand the diff!
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index d659b92ed8779..bb3d40090994f 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -6,7 +6,6 @@ plugins/content/finder/*  @hackwar
 plugins/finder/*  @hackwar
 
 # Release Tools
-build.xml  @fancyFranci
 build/build.php  @rdeutz
 build/bump.php  @rdeutz
 build/deleted_file_check.php  @rdeutz
@@ -17,12 +16,12 @@ libraries/src/Installer/*  @rdeutz
 libraries/src/Updater/*  @rdeutz
 
 # Automated Testing
-tests/*  @hackwar @fancyFranci
-tests/Unit/*  @rdeutz @fancyFranci
-.appveyor.yml  @rdeutz @hackwar @fancyFranci
-.drone.yml  @rdeutz @hackwar @fancyFranci
-phpunit.xml.dist  @rdeutz @hackwar @fancyFranci
-phpunit-pgsql.xml.dist  @rdeutz @hackwar @fancyFranci
+tests/*  @hackwar @laoneo
+tests/Unit/*  @rdeutz @laoneo
+.appveyor.yml  @rdeutz @hackwar @laoneo
+.drone.yml  @rdeutz @hackwar @laoneo
+phpunit.xml.dist  @rdeutz @hackwar @laoneo
+phpunit-pgsql.xml.dist  @rdeutz @hackwar @laoneo
 
 # Workflow
 administrator/components/com_workflow/*	@bembelimen @hleithner
diff --git a/README.md b/README.md
index 421c03175675b..e4fa750e4bf32 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,11 @@
 Joomla! CMS™
 ====================
 
-The Joomla! 5.2 branch is under heavy development and not all links in this document are available yet
-------------------------------------------------------------------------------------------------------
-
 Build Status
 
 | Drone-CI                                                                                                                                 | AppVeyor                                                                                                                                                           | PHP                                                                           | Node                                                                                 | npm                                                                             |
 |------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|---------------------------------------------------------------------------------|
-| [![Build Status](https://ci.joomla.org/api/badges/joomla/joomla-cms/status.svg?branch=5.2-dev)](https://ci.joomla.org/joomla/joomla-cms) | [![Build status](https://ci.appveyor.com/api/projects/status/ru6sxal8jmfckvjc/branch/5.2-dev?svg=true)](https://ci.appveyor.com/project/release-joomla/joomla-cms) | [![PHP](https://img.shields.io/badge/PHP-V8.1.0-green)](https://www.php.net/) | [![node-lts](https://img.shields.io/badge/Node-V18.0-green)](https://nodejs.org/en/) | [![npm](https://img.shields.io/badge/npm-v9.6.7-green)](https://nodejs.org/en/) |
+| [![Build Status](https://ci.joomla.org/api/badges/joomla/joomla-cms/status.svg?branch=5.2-dev)](https://ci.joomla.org/joomla/joomla-cms) | [![Build status](https://ci.appveyor.com/api/projects/status/ru6sxal8jmfckvjc/branch/5.2-dev?svg=true)](https://ci.appveyor.com/project/release-joomla/joomla-cms) | [![PHP](https://img.shields.io/badge/PHP-V8.1.0-green)](https://www.php.net/) | [![node-lts](https://img.shields.io/badge/Node-V20.0-green)](https://nodejs.org/en/) | [![npm](https://img.shields.io/badge/npm-v10.1.0-green)](https://nodejs.org/en/) |
 
 Overview
 ---------------------
diff --git a/README.txt b/README.txt
index 8f117f87ea4c2..b8bc56e931a43 100644
--- a/README.txt
+++ b/README.txt
@@ -1,8 +1,5 @@
 Joomla! CMS™
 
-The Joomla! 5.2 branch is under heavy development and not all links in this document are available yet
-------------------------------------------------------------------------------------------------------
-
 1- Overview
 	* This is a Joomla! 5.x installation/upgrade package.
 	* Joomla! Official site: https://www.joomla.org
diff --git a/administrator/components/com_admin/sql/updates/mysql/5.2.0-2024-09-24.sql b/administrator/components/com_admin/sql/updates/mysql/5.2.0-2024-09-24.sql
new file mode 100644
index 0000000000000..1592aba38893f
--- /dev/null
+++ b/administrator/components/com_admin/sql/updates/mysql/5.2.0-2024-09-24.sql
@@ -0,0 +1,7 @@
+UPDATE `#__assets` SET `title` = 'PUBLISH' WHERE `name` LIKE 'com_content.transition.%' AND `title` = 'Publish';
+UPDATE `#__assets` SET `title` = 'UNPUBLISH' WHERE `name` LIKE 'com_content.transition.%' AND `title` = 'Unpublish';
+UPDATE `#__assets` SET `title` = 'TRASH' WHERE `name` LIKE 'com_content.transition.%' AND `title` = 'Trash';
+UPDATE `#__assets` SET `title` = 'ARCHIVE' WHERE `name` LIKE 'com_content.transition.%' AND `title` = 'Archive';
+UPDATE `#__assets` SET `title` = 'FEATURE' WHERE `name` LIKE 'com_content.transition.%' AND `title` = 'Feature';
+UPDATE `#__assets` SET `title` = 'UNFEATURE' WHERE `name` LIKE 'com_content.transition.%' AND `title` = 'Unfeature';
+UPDATE `#__assets` SET `title` = 'PUBLISH_AND_FEATURE' WHERE `name` LIKE 'com_content.transition.%' AND `title` = 'Publish & Feature';
diff --git a/administrator/components/com_admin/sql/updates/postgresql/5.2.0-2024-09-24.sql b/administrator/components/com_admin/sql/updates/postgresql/5.2.0-2024-09-24.sql
new file mode 100644
index 0000000000000..8da7f706d58f6
--- /dev/null
+++ b/administrator/components/com_admin/sql/updates/postgresql/5.2.0-2024-09-24.sql
@@ -0,0 +1,7 @@
+UPDATE "#__assets" SET "title" = 'PUBLISH' WHERE "name" LIKE 'com_content.transition.%' AND "title" = 'Publish';
+UPDATE "#__assets" SET "title" = 'UNPUBLISH' WHERE "name" LIKE 'com_content.transition.%' AND "title" = 'Unpublish';
+UPDATE "#__assets" SET "title" = 'TRASH' WHERE "name" LIKE 'com_content.transition.%' AND "title" = 'Trash';
+UPDATE "#__assets" SET "title" = 'ARCHIVE' WHERE "name" LIKE 'com_content.transition.%' AND "title" = 'Archive';
+UPDATE "#__assets" SET "title" = 'FEATURE' WHERE "name" LIKE 'com_content.transition.%' AND "title" = 'Feature';
+UPDATE "#__assets" SET "title" = 'UNFEATURE' WHERE "name" LIKE 'com_content.transition.%' AND "title" = 'Unfeature';
+UPDATE "#__assets" SET "title" = 'PUBLISH_AND_FEATURE' WHERE "name" LIKE 'com_content.transition.%' AND "title" = 'Publish & Feature';
diff --git a/administrator/components/com_content/src/Model/FeaturedModel.php b/administrator/components/com_content/src/Model/FeaturedModel.php
index 2f9893f99a4f1..a91926785134c 100644
--- a/administrator/components/com_content/src/Model/FeaturedModel.php
+++ b/administrator/components/com_content/src/Model/FeaturedModel.php
@@ -10,9 +10,9 @@
 
 namespace Joomla\Component\Content\Administrator\Model;
 
-// phpcs:disable PSR1.Files.SideEffects
 use Joomla\Database\QueryInterface;
 
+// phpcs:disable PSR1.Files.SideEffects
 \defined('_JEXEC') or die;
 // phpcs:enable PSR1.Files.SideEffects
 
diff --git a/administrator/components/com_menus/tmpl/items/default_batch_body.php b/administrator/components/com_menus/tmpl/items/default_batch_body.php
index 71f9df278611b..266830db1368f 100644
--- a/administrator/components/com_menus/tmpl/items/default_batch_body.php
+++ b/administrator/components/com_menus/tmpl/items/default_batch_body.php
@@ -10,7 +10,6 @@
 
 defined('_JEXEC') or die;
 
-use Joomla\CMS\Factory;
 use Joomla\CMS\HTML\HTMLHelper;
 use Joomla\CMS\Language\Multilanguage;
 use Joomla\CMS\Language\Text;
@@ -24,7 +23,6 @@
 ];
 $published = (int) $this->state->get('filter.published');
 $clientId  = (int) $this->state->get('filter.client_id');
-$menuType  = Factory::getApplication()->getUserState('com_menus.items.menutype', '');
 
 if ($clientId == 1) {
     /** @var Joomla\CMS\WebAsset\WebAssetManager $wa */
@@ -34,23 +32,22 @@
 }
 ?>
 <div class="p-3">
-    <?php if (strlen($menuType) && $menuType != '*') : ?>
-        <?php if ($clientId != 1) : ?>
-    <div class="row">
+    <?php if ($clientId != 1) : ?>
+        <div class="row">
             <?php if (Multilanguage::isEnabled()) : ?>
+                <div class="form-group col-md-6">
+                    <div class="controls">
+                        <?php echo LayoutHelper::render('joomla.html.batch.language', []); ?>
+                    </div>
+                </div>
+            <?php endif; ?>
             <div class="form-group col-md-6">
                 <div class="controls">
-                    <?php echo LayoutHelper::render('joomla.html.batch.language', []); ?>
+                    <?php echo LayoutHelper::render('joomla.html.batch.access', []); ?>
                 </div>
             </div>
-            <?php endif; ?>
-        <div class="form-group col-md-6">
-            <div class="controls">
-                <?php echo LayoutHelper::render('joomla.html.batch.access', []); ?>
-            </div>
         </div>
-    </div>
-        <?php endif; ?>
+    <?php endif; ?>
     <div class="row">
         <?php if ($published >= 0) : ?>
             <div class="form-group col-md-6">
@@ -82,17 +79,12 @@
             <p><?php echo Text::_('COM_MENUS_SELECT_MENU_FILTER_NOT_TRASHED'); ?></p>
         <?php endif; ?>
     </div>
-    <?php else : ?>
-    <div class="row">
-        <p><?php echo Text::_('COM_MENUS_SELECT_MENU_FIRST'); ?></p>
-    </div>
-    <?php endif; ?>
-</div>
-<?php if ((strlen($menuType) && $menuType != '*' && $clientId == 0) || ($published >= 0 && $clientId == 1)) : ?>
-<div class="btn-toolbar p-3">
-    <joomla-toolbar-button task="item.batch" class="ms-auto">
-        <button type="button" class="btn btn-success"><?php echo Text::_('JGLOBAL_BATCH_PROCESS'); ?></button>
-    </joomla-toolbar-button>
 </div>
+<?php if ($clientId == 0 || ($published >= 0 && $clientId == 1)) : ?>
+    <div class="btn-toolbar p-3">
+        <joomla-toolbar-button task="item.batch" class="ms-auto">
+            <button type="button" class="btn btn-success"><?php echo Text::_('JGLOBAL_BATCH_PROCESS'); ?></button>
+        </joomla-toolbar-button>
+    </div>
 <?php endif; ?>
 
diff --git a/administrator/components/com_privacy/tmpl/consents/default.php b/administrator/components/com_privacy/tmpl/consents/default.php
index 723d7ccb15c18..73d9e7fd90c28 100644
--- a/administrator/components/com_privacy/tmpl/consents/default.php
+++ b/administrator/components/com_privacy/tmpl/consents/default.php
@@ -34,6 +34,7 @@
     0 => Text::_('COM_PRIVACY_CONSENTS_STATE_OBSOLETE'),
     1 => Text::_('COM_PRIVACY_CONSENTS_STATE_VALID')
 ];
+$this->getLanguage()->load('plg_system_privacyconsent', JPATH_ADMINISTRATOR);
 
 ?>
 <form action="<?php echo Route::_('index.php?option=com_privacy&view=consents'); ?>" method="post" name="adminForm" id="adminForm">
diff --git a/administrator/language/en-GB/com_menus.ini b/administrator/language/en-GB/com_menus.ini
index c205c860eda17..05210e29cdcc2 100644
--- a/administrator/language/en-GB/com_menus.ini
+++ b/administrator/language/en-GB/com_menus.ini
@@ -176,6 +176,7 @@ COM_MENUS_SELECT_A_MENUITEM="Select a Menu Item"
 COM_MENUS_SELECT_MENU="- Select Menu -"
 COM_MENUS_SELECT_MENU_FILTER="Select Menu"
 COM_MENUS_SELECT_MENU_FILTER_NOT_TRASHED="Filter the list by a state other than trashed or clear the filter."
+; Deprecated, will be removed with 6.0
 COM_MENUS_SELECT_MENU_FIRST="To use batch processing, please first select a Menu in the manager."
 COM_MENUS_SELECT_MENU_FIRST_EXPORT="To use export, please first select a valid Menu in the manager."
 COM_MENUS_SUBMENU_ITEMS="Menu Items"
diff --git a/administrator/language/en-GB/mod_guidedtours.sys.ini b/administrator/language/en-GB/mod_guidedtours.sys.ini
index 6a10e4865429b..3a8895066d65b 100644
--- a/administrator/language/en-GB/mod_guidedtours.sys.ini
+++ b/administrator/language/en-GB/mod_guidedtours.sys.ini
@@ -4,4 +4,5 @@
 ; Note : All ini files need to be saved as UTF-8
 
 MOD_GUIDEDTOURS="Guided Tours"
+MOD_GUIDEDTOURS_LAYOUT_DEFAULT="Default"
 MOD_GUIDEDTOURS_XML_DESCRIPTION="This module shows a list of the available guided tours."
diff --git a/administrator/language/en-GB/mod_latestactions.sys.ini b/administrator/language/en-GB/mod_latestactions.sys.ini
index a2754e9250c76..8b0bcb940e5d5 100644
--- a/administrator/language/en-GB/mod_latestactions.sys.ini
+++ b/administrator/language/en-GB/mod_latestactions.sys.ini
@@ -4,4 +4,5 @@
 ; Note : All ini files need to be saved as UTF-8
 
 MOD_LATESTACTIONS="Action Logs - Latest"
+MOD_LATESTACTIONS_LAYOUT_DEFAULT="Default"
 MOD_LATESTACTIONS_XML_DESCRIPTION="This module shows a list of the most recent actions."
diff --git a/administrator/language/en-GB/mod_logged.sys.ini b/administrator/language/en-GB/mod_logged.sys.ini
index 1f5af276312fc..13fc681147dc4 100644
--- a/administrator/language/en-GB/mod_logged.sys.ini
+++ b/administrator/language/en-GB/mod_logged.sys.ini
@@ -5,4 +5,5 @@
 
 MOD_LOGGED="Logged-in Users"
 MOD_LOGGED_LAYOUT_DEFAULT="Default"
+MOD_LOGGED_LAYOUT_DISABLED="Disabled"
 MOD_LOGGED_XML_DESCRIPTION="This module shows a list of the Logged-in Users."
diff --git a/administrator/language/en-GB/mod_multilangstatus.sys.ini b/administrator/language/en-GB/mod_multilangstatus.sys.ini
index ef31269b7581e..16e87e714232f 100644
--- a/administrator/language/en-GB/mod_multilangstatus.sys.ini
+++ b/administrator/language/en-GB/mod_multilangstatus.sys.ini
@@ -4,4 +4,5 @@
 ; Note : All ini files need to be saved as UTF-8
 
 MOD_MULTILANGSTATUS="Multilingual Status"
+MOD_MULTILANGSTATUS_LAYOUT_DEFAULT="Default"
 MOD_MULTILANGSTATUS_XML_DESCRIPTION="This module shows the status of the multilingual parameters and is intended to be displayed in the 'status' position."
diff --git a/administrator/language/en-GB/mod_post_installation_messages.sys.ini b/administrator/language/en-GB/mod_post_installation_messages.sys.ini
index 1800cf5669df5..b17da23875bc9 100644
--- a/administrator/language/en-GB/mod_post_installation_messages.sys.ini
+++ b/administrator/language/en-GB/mod_post_installation_messages.sys.ini
@@ -4,4 +4,5 @@
 ; Note : All ini files need to be saved as UTF-8
 
 MOD_POST_INSTALLATION_MESSAGES="Post Installation Messages"
+MOD_POST_INSTALLATION_MESSAGES_LAYOUT_DEFAULT="Default"
 MOD_POST_INSTALLATION_MESSAGES_XML_DESCRIPTION="This module shows a counter and a link to the latest post installation messages. It is only displayed when there are messages to read."
diff --git a/administrator/language/en-GB/mod_sampledata.sys.ini b/administrator/language/en-GB/mod_sampledata.sys.ini
index 1e56687f9e2c4..b28ad7d9029b2 100644
--- a/administrator/language/en-GB/mod_sampledata.sys.ini
+++ b/administrator/language/en-GB/mod_sampledata.sys.ini
@@ -4,4 +4,5 @@
 ; Note : All ini files need to be saved as UTF-8
 
 MOD_SAMPLEDATA="Sample Data"
+MOD_SAMPLEDATA_LAYOUT_DEFAULT="Default"
 MOD_SAMPLEDATA_XML_DESCRIPTION="This module lets you install sample data."
diff --git a/administrator/language/en-GB/mod_stats_admin.sys.ini b/administrator/language/en-GB/mod_stats_admin.sys.ini
index 23bb31e390c09..38bd731fb2e93 100644
--- a/administrator/language/en-GB/mod_stats_admin.sys.ini
+++ b/administrator/language/en-GB/mod_stats_admin.sys.ini
@@ -4,5 +4,8 @@
 ; Note : All ini files need to be saved as UTF-8
 
 MOD_STATS_ADMIN="Statistics"
-MOD_STATS_LAYOUT_DEFAULT="Default"
+MOD_STATS_ADMIN_LAYOUT_DEFAULT="Default"
 MOD_STATS_XML_DESCRIPTION="The Statistics Module shows information about your server installation together with statistics on the website users and the number of Articles in your database."
+
+; Deprecated, will be removed with 6.0
+MOD_STATS_LAYOUT_DEFAULT="Default"
diff --git a/administrator/language/en-GB/mod_submenu.sys.ini b/administrator/language/en-GB/mod_submenu.sys.ini
index 4f5a580832a84..9fd781c183761 100644
--- a/administrator/language/en-GB/mod_submenu.sys.ini
+++ b/administrator/language/en-GB/mod_submenu.sys.ini
@@ -4,4 +4,5 @@
 ; Note : All ini files need to be saved as UTF-8
 
 MOD_SUBMENU="Administrator Dashboard Menu"
+MOD_SUBMENU_LAYOUT_DEFAULT="Default"
 MOD_SUBMENU_XML_DESCRIPTION="This module displays an administrator submenu module."
diff --git a/build/media_source/templates/administrator/atum/scss/vendor/bootstrap/_custom-forms.scss b/build/media_source/templates/administrator/atum/scss/vendor/bootstrap/_custom-forms.scss
index 3492f93d86a67..9c172f7913c26 100644
--- a/build/media_source/templates/administrator/atum/scss/vendor/bootstrap/_custom-forms.scss
+++ b/build/media_source/templates/administrator/atum/scss/vendor/bootstrap/_custom-forms.scss
@@ -22,7 +22,7 @@
 
       &:checked {
         color: var(--template-text-light);
-        background-color: var(--template-bg-dark) !important;
+        background-color: var(--template-contrast) !important;
       }
     }
   }
diff --git a/composer.lock b/composer.lock
index f393ad40fa9c3..5f5acb250f669 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1494,16 +1494,16 @@
         },
         {
             "name": "joomla/database",
-            "version": "3.2.0",
+            "version": "3.2.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/joomla-framework/database.git",
-                "reference": "7abff998d4e0d63c0469dae5358822e757928871"
+                "reference": "3927dea8a08927d7d1dd4254bee6c6d66994a202"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/joomla-framework/database/zipball/7abff998d4e0d63c0469dae5358822e757928871",
-                "reference": "7abff998d4e0d63c0469dae5358822e757928871",
+                "url": "https://api.github.com/repos/joomla-framework/database/zipball/3927dea8a08927d7d1dd4254bee6c6d66994a202",
+                "reference": "3927dea8a08927d7d1dd4254bee6c6d66994a202",
                 "shasum": ""
             },
             "require": {
@@ -1561,7 +1561,7 @@
             ],
             "support": {
                 "issues": "https://github.com/joomla-framework/database/issues",
-                "source": "https://github.com/joomla-framework/database/tree/3.2.0"
+                "source": "https://github.com/joomla-framework/database/tree/3.2.1"
             },
             "funding": [
                 {
@@ -1573,7 +1573,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2024-08-15T10:09:54+00:00"
+            "time": "2024-08-19T13:09:59+00:00"
         },
         {
             "name": "joomla/di",
diff --git a/installation/sql/mysql/base.sql b/installation/sql/mysql/base.sql
index 6301dfdc950c9..e8ef9f56f4ae7 100644
--- a/installation/sql/mysql/base.sql
+++ b/installation/sql/mysql/base.sql
@@ -77,13 +77,13 @@ INSERT INTO `#__assets` (`id`, `parent_id`, `lft`, `rgt`, `level`, `name`, `titl
 (55, 18, 94, 95, 2, 'com_modules.module.87', 'Sample Data', '{}'),
 (56, 8, 20, 37, 2, 'com_content.workflow.1', 'COM_WORKFLOW_BASIC_WORKFLOW', '{}'),
 (57, 56, 21, 22, 3, 'com_content.stage.1', 'COM_WORKFLOW_BASIC_STAGE', '{}'),
-(58, 56, 23, 24, 3, 'com_content.transition.1', 'Unpublish', '{}'),
-(59, 56, 25, 26, 3, 'com_content.transition.2', 'Publish', '{}'),
-(60, 56, 27, 28, 3, 'com_content.transition.3', 'Trash', '{}'),
-(61, 56, 29, 30, 3, 'com_content.transition.4', 'Archive', '{}'),
-(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 & Feature', '{}'),
+(58, 56, 23, 24, 3, 'com_content.transition.1', 'UNPUBLISH', '{}'),
+(59, 56, 25, 26, 3, 'com_content.transition.2', 'PUBLISH', '{}'),
+(60, 56, 27, 28, 3, 'com_content.transition.3', 'TRASH', '{}'),
+(61, 56, 29, 30, 3, 'com_content.transition.4', 'ARCHIVE', '{}'),
+(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', '{}'),
 (67, 18, 76, 77, 2, 'com_modules.module.88', 'Latest Actions', '{}'),
diff --git a/installation/sql/postgresql/base.sql b/installation/sql/postgresql/base.sql
index 9ade1f50e49a8..304f6de35c86e 100644
--- a/installation/sql/postgresql/base.sql
+++ b/installation/sql/postgresql/base.sql
@@ -83,13 +83,13 @@ INSERT INTO "#__assets" ("id", "parent_id", "lft", "rgt", "level", "name", "titl
 (55, 18, 94, 95, 2, 'com_modules.module.87', 'Sample Data', '{}'),
 (56, 8, 20, 37, 2, 'com_content.workflow.1', 'COM_WORKFLOW_BASIC_WORKFLOW', '{}'),
 (57, 56, 21, 22, 3, 'com_content.stage.1', 'COM_WORKFLOW_BASIC_STAGE', '{}'),
-(58, 56, 23, 24, 3, 'com_content.transition.1', 'Unpublish', '{}'),
-(59, 56, 25, 26, 3, 'com_content.transition.2', 'Publish', '{}'),
-(60, 56, 27, 28, 3, 'com_content.transition.3', 'Trash', '{}'),
-(61, 56, 29, 30, 3, 'com_content.transition.4', 'Archive', '{}'),
-(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 & Feature', '{}'),
+(58, 56, 23, 24, 3, 'com_content.transition.1', 'UNPUBLISH', '{}'),
+(59, 56, 25, 26, 3, 'com_content.transition.2', 'PUBLISH', '{}'),
+(60, 56, 27, 28, 3, 'com_content.transition.3', 'TRASH', '{}'),
+(61, 56, 29, 30, 3, 'com_content.transition.4', 'ARCHIVE', '{}'),
+(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', '{}'),
 (67, 18, 76, 77, 2, 'com_modules.module.88', 'Latest Actions', '{}'),
diff --git a/installation/src/Form/Rule/UsernameRule.php b/installation/src/Form/Rule/UsernameRule.php
index 969d638ac9003..4e12fa1177943 100644
--- a/installation/src/Form/Rule/UsernameRule.php
+++ b/installation/src/Form/Rule/UsernameRule.php
@@ -15,7 +15,7 @@
 use Joomla\Registry\Registry;
 
 // phpcs:disable PSR1.Files.SideEffects
-\defined('JPATH_BASE') or die;
+\defined('_JEXEC') or die;
 // phpcs:enable PSR1.Files.SideEffects
 
 /**
diff --git a/installation/src/Model/ConfigurationModel.php b/installation/src/Model/ConfigurationModel.php
index 24b06d836cdea..e92ea8708d532 100644
--- a/installation/src/Model/ConfigurationModel.php
+++ b/installation/src/Model/ConfigurationModel.php
@@ -560,6 +560,18 @@ private function createRootUser($options, $db)
 
         try {
             $db->execute();
+
+            // Synch the sequence if pgsql
+            if (($db->getServerType() === 'postgresql') && (!$result)) {
+                $query = $db->getQuery(true)
+                    ->select('MAX(' . $db->quoteName('id') . ') + 1 AS ' . $db->quoteName('id'))
+                    ->from($db->quoteName('#__users'));
+                $db->setQuery($query);
+                $result = $db->loadResult();
+
+                $db->setQuery('SELECT setval(' . $db->quote('#__users_id_seq') . ', ' .  $result . ', false)')
+                    ->execute();
+            }
         } catch (\RuntimeException $e) {
             Factory::getApplication()->enqueueMessage($e->getMessage(), 'error');
 
diff --git a/language/en-GB/mod_articles_news.sys.ini b/language/en-GB/mod_articles_news.sys.ini
index d618f6d886ba9..1cd060b4f36b8 100644
--- a/language/en-GB/mod_articles_news.sys.ini
+++ b/language/en-GB/mod_articles_news.sys.ini
@@ -5,4 +5,6 @@
 
 MOD_ARTICLES_NEWS="Articles - Newsflash"
 MOD_ARTICLES_NEWS_LAYOUT_DEFAULT="Default"
+MOD_ARTICLES_NEWS_LAYOUT_HORIZONTAL="Horizontal"
+MOD_ARTICLES_NEWS_LAYOUT_VERTICAL="Vertical"
 MOD_ARTICLES_NEWS_XML_DESCRIPTION="The Newsflash Module will display a fixed number of articles from a specific category."
diff --git a/language/en-GB/mod_whosonline.sys.ini b/language/en-GB/mod_whosonline.sys.ini
index ed8f0fe5e61ac..0b96e3edd7042 100644
--- a/language/en-GB/mod_whosonline.sys.ini
+++ b/language/en-GB/mod_whosonline.sys.ini
@@ -5,4 +5,5 @@
 
 MOD_WHOSONLINE="Who's Online"
 MOD_WHOSONLINE_LAYOUT_DEFAULT="Default"
+MOD_WHOSONLINE_LAYOUT_DISABLED="Disabled"
 MOD_WHOSONLINE_XML_DESCRIPTION="The Who's Online Module displays the number of Anonymous Users (Guests) and Registered Users (users logged-in) that are currently accessing the website."
diff --git a/language/en-GB/tpl_cassiopeia.sys.ini b/language/en-GB/tpl_cassiopeia.sys.ini
index be02e4c25a6f8..226990e03c946 100644
--- a/language/en-GB/tpl_cassiopeia.sys.ini
+++ b/language/en-GB/tpl_cassiopeia.sys.ini
@@ -4,7 +4,8 @@
 ; Note : All ini files need to be saved as UTF-8
 
 CASSIOPEIA="Cassiopeia Site template"
-TPL_CASSIOPEIA_MOD_MENU_LAYOUT_COLLAPSE-METISMENU="Collapsible Dropdown"
+TPL_CASSIOPEIA_MOD_CUSTOM_LAYOUT_BANNER="Banner"
+TPL_CASSIOPEIA_MOD_MENU_LAYOUT_COLLAPSE-METISMENU="Collapsible Dropdown"
 TPL_CASSIOPEIA_MOD_MENU_LAYOUT_DROPDOWN-METISMENU="Dropdown"
 TPL_CASSIOPEIA_POSITION_BANNER="Banner"
 TPL_CASSIOPEIA_POSITION_BELOW-TOP="Below Top"
diff --git a/libraries/src/Event/Application/BeforeCompileHeadEvent.php b/libraries/src/Event/Application/BeforeCompileHeadEvent.php
index 87a019dfaa1a9..b9e5a211353f3 100644
--- a/libraries/src/Event/Application/BeforeCompileHeadEvent.php
+++ b/libraries/src/Event/Application/BeforeCompileHeadEvent.php
@@ -10,7 +10,6 @@
 namespace Joomla\CMS\Event\Application;
 
 // phpcs:disable PSR1.Files.SideEffects
-
 \defined('_JEXEC') or die;
 // phpcs:enable PSR1.Files.SideEffects
 
diff --git a/libraries/src/Extension/Service/Provider/MVCFactory.php b/libraries/src/Extension/Service/Provider/MVCFactory.php
index 7eb07ef7b8f03..171cb665c3790 100644
--- a/libraries/src/Extension/Service/Provider/MVCFactory.php
+++ b/libraries/src/Extension/Service/Provider/MVCFactory.php
@@ -23,7 +23,7 @@
 
 // phpcs:disable PSR1.Files.SideEffects
 \defined('_JEXEC') or die;
-// phpcs:e_JEXECes.SideEffects
+// phpcs:enable PSR1.Files.SideEffects
 
 /**
  * Service provider for the service MVC factory.
diff --git a/libraries/src/Form/Rule/UrlRule.php b/libraries/src/Form/Rule/UrlRule.php
index 8b6c7dcce8e3e..0098b97f01d2e 100644
--- a/libraries/src/Form/Rule/UrlRule.php
+++ b/libraries/src/Form/Rule/UrlRule.php
@@ -105,7 +105,7 @@ public function test(\SimpleXMLElement $element, $value, $group = null, ?Registr
             return false;
         }
 
-        // For some schemes here must be two slashes.
+        // For some schemes there must be two slashes.
         $scheme = ['http', 'https', 'ftp', 'ftps', 'gopher', 'wais', 'prospero', 'sftp', 'telnet', 'git'];
 
         if (\in_array($urlScheme, $scheme) && substr($value, \strlen($urlScheme), 3) !== '://') {
diff --git a/libraries/src/Table/Ucm.php b/libraries/src/Table/Ucm.php
index 2018e587d9a58..c6fd09ec75445 100644
--- a/libraries/src/Table/Ucm.php
+++ b/libraries/src/Table/Ucm.php
@@ -9,10 +9,10 @@
 
 namespace Joomla\CMS\Table;
 
-// phpcs:disable PSR1.Files.SideEffects
 use Joomla\Database\DatabaseDriver;
 use Joomla\Event\DispatcherInterface;
 
+// phpcs:disable PSR1.Files.SideEffects
 \defined('_JEXEC') or die;
 // phpcs:enable PSR1.Files.SideEffects
 
diff --git a/package-lock.json b/package-lock.json
index b5e1e426399d9..1497cd7ea5b64 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -84,8 +84,8 @@
         "joomla-cypress": "^1.1.1",
         "lightningcss": "^1.27.0",
         "mysql": "^2.18.1",
+        "pg": "^8.13.0",
         "postcss-scss": "^4.0.9",
-        "postgres": "^3.4.4",
         "recursive-readdir": "^2.2.3",
         "rimraf": "^3.0.2",
         "rollup": "^2.79.2",
@@ -8813,6 +8813,103 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/pg": {
+      "version": "8.13.0",
+      "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.0.tgz",
+      "integrity": "sha512-34wkUTh3SxTClfoHB3pQ7bIMvw9dpFU1audQQeZG837fmHfHpr14n/AELVDoOYVDW2h5RDWU78tFjkD+erSBsw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "pg-connection-string": "^2.7.0",
+        "pg-pool": "^3.7.0",
+        "pg-protocol": "^1.7.0",
+        "pg-types": "^2.1.0",
+        "pgpass": "1.x"
+      },
+      "engines": {
+        "node": ">= 8.0.0"
+      },
+      "optionalDependencies": {
+        "pg-cloudflare": "^1.1.1"
+      },
+      "peerDependencies": {
+        "pg-native": ">=3.0.1"
+      },
+      "peerDependenciesMeta": {
+        "pg-native": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/pg-cloudflare": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz",
+      "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==",
+      "dev": true,
+      "license": "MIT",
+      "optional": true
+    },
+    "node_modules/pg-connection-string": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.7.0.tgz",
+      "integrity": "sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/pg-int8": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
+      "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==",
+      "dev": true,
+      "license": "ISC",
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/pg-pool": {
+      "version": "3.7.0",
+      "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.7.0.tgz",
+      "integrity": "sha512-ZOBQForurqh4zZWjrgSwwAtzJ7QiRX0ovFkZr2klsen3Nm0aoh33Ls0fzfv3imeH/nw/O27cjdz5kzYJfeGp/g==",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "pg": ">=8.0"
+      }
+    },
+    "node_modules/pg-protocol": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz",
+      "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/pg-types": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
+      "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "pg-int8": "1.0.1",
+        "postgres-array": "~2.0.0",
+        "postgres-bytea": "~1.0.0",
+        "postgres-date": "~1.0.4",
+        "postgres-interval": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pgpass": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz",
+      "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "split2": "^4.1.0"
+      }
+    },
     "node_modules/picocolors": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
@@ -8969,18 +9066,47 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/postgres": {
-      "version": "3.4.4",
-      "resolved": "https://registry.npmjs.org/postgres/-/postgres-3.4.4.tgz",
-      "integrity": "sha512-IbyN+9KslkqcXa8AO9fxpk97PA4pzewvpi2B3Dwy9u4zpV32QicaEdgmF3eSQUzdRk7ttDHQejNgAEr4XoeH4A==",
+    "node_modules/postgres-array": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
+      "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==",
       "dev": true,
-      "license": "Unlicense",
+      "license": "MIT",
       "engines": {
-        "node": ">=12"
+        "node": ">=4"
+      }
+    },
+    "node_modules/postgres-bytea": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz",
+      "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/postgres-date": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz",
+      "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/postgres-interval": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
+      "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "xtend": "^4.0.0"
       },
-      "funding": {
-        "type": "individual",
-        "url": "https://github.com/sponsors/porsager"
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
     "node_modules/prelude-ls": {
@@ -10418,6 +10544,16 @@
       "dev": true,
       "license": "CC0-1.0"
     },
+    "node_modules/split2": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
+      "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
+      "dev": true,
+      "license": "ISC",
+      "engines": {
+        "node": ">= 10.x"
+      }
+    },
     "node_modules/sqlstring": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
@@ -11684,6 +11820,16 @@
         "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
       }
     },
+    "node_modules/xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4"
+      }
+    },
     "node_modules/yallist": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
diff --git a/package.json b/package.json
index bec45262426fa..9634e8f35ed58 100644
--- a/package.json
+++ b/package.json
@@ -111,8 +111,8 @@
     "joomla-cypress": "^1.1.1",
     "lightningcss": "^1.27.0",
     "mysql": "^2.18.1",
+    "pg": "^8.13.0",
     "postcss-scss": "^4.0.9",
-    "postgres": "^3.4.4",
     "recursive-readdir": "^2.2.3",
     "rimraf": "^3.0.2",
     "rollup": "^2.79.2",
diff --git a/tests/System/integration/administrator/components/com_cache/Default.cy.js b/tests/System/integration/administrator/components/com_cache/Default.cy.js
index 74fc19891d532..4e9439461a964 100644
--- a/tests/System/integration/administrator/components/com_cache/Default.cy.js
+++ b/tests/System/integration/administrator/components/com_cache/Default.cy.js
@@ -12,7 +12,7 @@ describe('Test in backend that the cache', () => {
     cy.get('div.alert.alert-info').should('contain.text', 'Select the Clear Expired Cache button');
   });
 
-  it('can display a list of chached items', () => {
+  it('can display a list of cached items', () => {
     cy.get('tr.row0').should('contain.text', '_media_version');
   });
 
diff --git a/tests/System/integration/install/Installation.cy.js b/tests/System/integration/install/Installation.cy.js
index cc00e3b19e61c..2a5909f7c0c8a 100644
--- a/tests/System/integration/install/Installation.cy.js
+++ b/tests/System/integration/install/Installation.cy.js
@@ -8,6 +8,7 @@ describe('Install Joomla', () => {
       email: Cypress.env('email'),
       db_type: Cypress.env('db_type'),
       db_host: Cypress.env('db_host'),
+      db_port: Cypress.env('db_port'),
       db_user: Cypress.env('db_user'),
       db_password: Cypress.env('db_password'),
       db_name: Cypress.env('db_name'),
diff --git a/tests/System/plugins/db.mjs b/tests/System/plugins/db.mjs
index a92065c07e6a5..e24a176ae80e7 100644
--- a/tests/System/plugins/db.mjs
+++ b/tests/System/plugins/db.mjs
@@ -1,11 +1,12 @@
 import mysql from 'mysql';
-import postgres from 'postgres';
+import pkg from 'pg';
+
+const { Pool } = pkg; // Using Pool from pg for PostgreSQL connections
 
 // Items cache which are added by an insert statement
 let insertedItems = [];
 
-// Use of the PostgreSQL connection pool to limit the number of sessions, see
-// https://github.com/porsager/postgres?tab=readme-ov-file#connection-details
+// Use of the PostgreSQL connection pool to limit the number of sessions
 let postgresConnectionPool = null;
 
 /**
@@ -37,11 +38,11 @@ function queryTestDB(joomlaQuery, config) {
   if (config.env.db_type === 'pgsql' || config.env.db_type === 'PostgreSQL (PDO)') {
     if (postgresConnectionPool === null) {
       // Initialisation on the first call
-      postgresConnectionPool = postgres({
+      postgresConnectionPool = new Pool({
         host: config.env.db_host,
         port: config.env.db_port,
         database: config.env.db_name,
-        username: config.env.db_user,
+        user: config.env.db_user,
         password: config.env.db_password,
         max: 10, // Use only this (unchanged default) maximum number of connections in the pool
       });
@@ -55,24 +56,27 @@ function queryTestDB(joomlaQuery, config) {
     // Postgres needs double quotes
     query = query.replaceAll('`', '"');
 
-    return postgresConnectionPool.unsafe(query).then((result) => {
+    return postgresConnectionPool.query(query).then((result) => {
       // Select query should always return an array
-      if (query.indexOf('SELECT') === 0 && !Array.isArray(result)) {
-        return [result];
+      if (query.startsWith('SELECT') && !Array.isArray(result.rows)) {
+        return [result.rows];
       }
 
-      if (!insertItem || result.length === 0) {
-        return result;
+      if (!insertItem || result.rows.length === 0) {
+        return result.rows;
       }
 
       // Push the id to the cache when it is an insert operation
-      if (insertItem && result.length && result[0].id) {
-        insertItem.rows.push(result[0].id);
+      if (insertItem && result.rows.length && result.rows[0].id) {
+        insertItem.rows.push(result.rows[0].id);
       }
 
       // Normalize the object and return from PostgreSQL
-      return { insertId: result[0].id };
-    });
+      return { insertId: result.rows[0].id };
+    })
+      .catch((error) => {
+        throw new Error(`Postgres query failed: ${error.message}`);
+      });
   }
 
   // Return a promise which runs the query for MariaDB / MySQL
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants