get('updatesource', 'default')) {
- case 'testing':
- // "Testing"
- $updateURL = 'https://update.joomla.org/core/test/list_test.xml';
- break;
-
case 'custom':
// "Custom"
// @todo: check if the customurl is valid and not just "not empty".
@@ -115,6 +110,7 @@ public function applyUpdateSite()
* case 'lts':
* case 'sts': (It's shown as "Default" because that option does not exist any more)
* case 'nochange':
+ * case 'testing':
*/
$updateURL = 'https://update.joomla.org/cms/';
}
@@ -173,13 +169,9 @@ public function refreshUpdates($force = false)
}
$updater = Updater::getInstance();
- $minimumStability = Updater::STABILITY_STABLE;
$comJoomlaupdateParams = ComponentHelper::getParams('com_joomlaupdate');
- if (\in_array($comJoomlaupdateParams->get('updatesource', 'default'), ['testing', 'custom'])) {
- $minimumStability = $comJoomlaupdateParams->get('minimum_stability', Updater::STABILITY_STABLE);
- }
-
+ $minimumStability = $comJoomlaupdateParams->get('minimum_stability', Updater::STABILITY_STABLE);
$reflection = new \ReflectionObject($updater);
$reflectionMethod = $reflection->getMethod('findUpdates');
$methodParameters = $reflectionMethod->getParameters();
@@ -296,13 +288,9 @@ public function getUpdateInformation()
return $this->updateInformation;
}
- $minimumStability = Updater::STABILITY_STABLE;
$comJoomlaupdateParams = ComponentHelper::getParams('com_joomlaupdate');
$channel = $comJoomlaupdateParams->get('updatesource', 'default');
-
- if (\in_array($channel, ['testing', 'custom'])) {
- $minimumStability = $comJoomlaupdateParams->get('minimum_stability', Updater::STABILITY_STABLE);
- }
+ $minimumStability = $comJoomlaupdateParams->get('minimum_stability', Updater::STABILITY_STABLE);
$update = new Update();
diff --git a/administrator/components/com_joomlaupdate/src/View/Joomlaupdate/HtmlView.php b/administrator/components/com_joomlaupdate/src/View/Joomlaupdate/HtmlView.php
index 5147b60e20b6d..2426157f11968 100644
--- a/administrator/components/com_joomlaupdate/src/View/Joomlaupdate/HtmlView.php
+++ b/administrator/components/com_joomlaupdate/src/View/Joomlaupdate/HtmlView.php
@@ -239,12 +239,6 @@ public function display($tpl = null)
$this->updateSourceKey = Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT');
break;
- case 'testing':
- // "Testing"
- $this->langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_TESTING';
- $this->updateSourceKey = Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_TESTING');
- break;
-
case 'custom':
// "Custom"
$this->langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_CUSTOM';
@@ -259,6 +253,7 @@ public function display($tpl = null)
* case 'sts':
* case 'lts':
* case 'nochange':
+ * case 'testing':
*/
$this->langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_DEFAULT';
$this->updateSourceKey = Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT');
diff --git a/administrator/components/com_mails/src/View/Template/HtmlView.php b/administrator/components/com_mails/src/View/Template/HtmlView.php
index bb10e384681fd..5614c12cf12e5 100644
--- a/administrator/components/com_mails/src/View/Template/HtmlView.php
+++ b/administrator/components/com_mails/src/View/Template/HtmlView.php
@@ -39,7 +39,7 @@ class HtmlView extends BaseHtmlView
/**
* The active item
*
- * @var CMSObject
+ * @var \stdClass
*/
protected $item;
diff --git a/administrator/components/com_menus/src/View/Item/HtmlView.php b/administrator/components/com_menus/src/View/Item/HtmlView.php
index 7e190191311d8..028f73b052b1f 100644
--- a/administrator/components/com_menus/src/View/Item/HtmlView.php
+++ b/administrator/components/com_menus/src/View/Item/HtmlView.php
@@ -17,7 +17,6 @@
use Joomla\CMS\Language\Text;
use Joomla\CMS\MVC\View\GenericDataException;
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
-use Joomla\CMS\Object\CMSObject;
use Joomla\CMS\Toolbar\Toolbar;
use Joomla\CMS\Toolbar\ToolbarHelper;
@@ -42,7 +41,7 @@ class HtmlView extends BaseHtmlView
/**
* The active item
*
- * @var CMSObject
+ * @var \stdClass
*/
protected $item;
diff --git a/administrator/components/com_newsfeeds/src/View/Newsfeeds/HtmlView.php b/administrator/components/com_newsfeeds/src/View/Newsfeeds/HtmlView.php
index e01ebf389f075..b8ccd3ab71a68 100644
--- a/administrator/components/com_newsfeeds/src/View/Newsfeeds/HtmlView.php
+++ b/administrator/components/com_newsfeeds/src/View/Newsfeeds/HtmlView.php
@@ -16,7 +16,6 @@
use Joomla\CMS\Language\Text;
use Joomla\CMS\MVC\View\GenericDataException;
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
-use Joomla\CMS\Object\CMSObject;
use Joomla\CMS\Toolbar\Button\DropdownButton;
use Joomla\CMS\Toolbar\Toolbar;
use Joomla\CMS\Toolbar\ToolbarHelper;
@@ -35,7 +34,7 @@ class HtmlView extends BaseHtmlView
/**
* The list of newsfeeds
*
- * @var CMSObject
+ * @var array
*
* @since 1.6
*/
diff --git a/administrator/components/com_plugins/src/View/Plugin/HtmlView.php b/administrator/components/com_plugins/src/View/Plugin/HtmlView.php
index 0e35d68880042..ccaf0fffc49f2 100644
--- a/administrator/components/com_plugins/src/View/Plugin/HtmlView.php
+++ b/administrator/components/com_plugins/src/View/Plugin/HtmlView.php
@@ -15,7 +15,6 @@
use Joomla\CMS\Language\Text;
use Joomla\CMS\MVC\View\GenericDataException;
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
-use Joomla\CMS\Object\CMSObject;
use Joomla\CMS\Toolbar\Toolbar;
use Joomla\CMS\Toolbar\ToolbarHelper;
@@ -33,7 +32,7 @@ class HtmlView extends BaseHtmlView
/**
* The item object for the newsfeed
*
- * @var CMSObject
+ * @var \stdClass
*/
protected $item;
diff --git a/administrator/components/com_privacy/src/View/Request/HtmlView.php b/administrator/components/com_privacy/src/View/Request/HtmlView.php
index bfd1772ccce3b..f61360afde9e6 100644
--- a/administrator/components/com_privacy/src/View/Request/HtmlView.php
+++ b/administrator/components/com_privacy/src/View/Request/HtmlView.php
@@ -15,7 +15,6 @@
use Joomla\CMS\Language\Text;
use Joomla\CMS\MVC\View\GenericDataException;
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
-use Joomla\CMS\Object\CMSObject;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Session\Session;
use Joomla\CMS\Toolbar\Toolbar;
@@ -52,7 +51,7 @@ class HtmlView extends BaseHtmlView
/**
* The item record
*
- * @var CMSObject
+ * @var \stdClass
* @since 3.9.0
*/
protected $item;
diff --git a/administrator/components/com_tags/src/Controller/TagController.php b/administrator/components/com_tags/src/Controller/TagController.php
index 80a723fd79be0..741bc70a86b49 100644
--- a/administrator/components/com_tags/src/Controller/TagController.php
+++ b/administrator/components/com_tags/src/Controller/TagController.php
@@ -40,22 +40,6 @@ protected function allowAdd($data = [])
return $this->app->getIdentity()->authorise('core.create', 'com_tags');
}
- /**
- * Method to check if you can edit a record.
- *
- * @param array $data An array of input data.
- * @param string $key The name of the key for the primary key.
- *
- * @return boolean
- *
- * @since 3.1
- */
- protected function allowEdit($data = [], $key = 'id')
- {
- // Since there is no asset tracking and no categories, revert to the component permissions.
- return parent::allowEdit($data, $key);
- }
-
/**
* Method to run batch operations.
*
diff --git a/administrator/components/com_templates/src/View/Style/HtmlView.php b/administrator/components/com_templates/src/View/Style/HtmlView.php
index 2d6eb638a1eaa..536a46f7def9e 100644
--- a/administrator/components/com_templates/src/View/Style/HtmlView.php
+++ b/administrator/components/com_templates/src/View/Style/HtmlView.php
@@ -15,7 +15,6 @@
use Joomla\CMS\Language\Text;
use Joomla\CMS\MVC\View\GenericDataException;
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
-use Joomla\CMS\Object\CMSObject;
use Joomla\CMS\Toolbar\Toolbar;
use Joomla\CMS\Toolbar\ToolbarHelper;
@@ -31,9 +30,9 @@
class HtmlView extends BaseHtmlView
{
/**
- * The CMSObject (on success, false on failure)
+ * The item
*
- * @var CMSObject
+ * @var \stdClass
*/
protected $item;
diff --git a/administrator/components/com_templates/src/View/Style/JsonView.php b/administrator/components/com_templates/src/View/Style/JsonView.php
index e7e3460bbf77c..e4de4b1a18b1c 100644
--- a/administrator/components/com_templates/src/View/Style/JsonView.php
+++ b/administrator/components/com_templates/src/View/Style/JsonView.php
@@ -12,7 +12,6 @@
use Joomla\CMS\Factory;
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
-use Joomla\CMS\Object\CMSObject;
// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
@@ -26,9 +25,9 @@
class JsonView extends BaseHtmlView
{
/**
- * The CMSObject (on success, false on failure)
+ * The item
*
- * @var CMSObject
+ * @var \stdClass
*/
protected $item;
diff --git a/administrator/components/com_users/src/Model/DebuggroupModel.php b/administrator/components/com_users/src/Model/DebuggroupModel.php
index 238930b21364b..8859a5fead773 100644
--- a/administrator/components/com_users/src/Model/DebuggroupModel.php
+++ b/administrator/components/com_users/src/Model/DebuggroupModel.php
@@ -15,7 +15,6 @@
use Joomla\CMS\Factory;
use Joomla\CMS\MVC\Factory\MVCFactoryInterface;
use Joomla\CMS\MVC\Model\ListModel;
-use Joomla\CMS\Object\CMSObject;
use Joomla\Component\Users\Administrator\Helper\DebugHelper;
use Joomla\Database\DatabaseQuery;
use Joomla\Database\ParameterType;
@@ -170,7 +169,7 @@ protected function getStoreId($id = '')
/**
* Get the group being debugged.
*
- * @return CMSObject
+ * @return \stdClass
*
* @since 1.6
*/
diff --git a/administrator/language/en-GB/com_admin.ini b/administrator/language/en-GB/com_admin.ini
index ce7445a14db71..05e2fd1af048d 100644
--- a/administrator/language/en-GB/com_admin.ini
+++ b/administrator/language/en-GB/com_admin.ini
@@ -141,6 +141,8 @@ COM_ADMIN_POSTINSTALL_MSG_BEHIND_LOAD_BALANCER_DESCRIPTION="For Joomla sites
COM_ADMIN_POSTINSTALL_MSG_BEHIND_LOAD_BALANCER_TITLE="New Server Setting \"Behind Load Balancer\""
COM_ADMIN_POSTINSTALL_MSG_HTACCESS_AUTOINDEX_DESCRIPTION="
Before 3.9.22 the default htaccess.txt file contained erroneous code meant for disabling directory listings. The security team recommends to manually apply the necessary changes to any existing .htaccess file, as this file can not be updated automatically.
The old code:
<IfModule autoindex>\n IndexIgnore *\n</IfModule>
The new code:
<IfModule mod_autoindex.c>\n IndexIgnore *\n</IfModule>
"
COM_ADMIN_POSTINSTALL_MSG_HTACCESS_AUTOINDEX_TITLE=".htaccess Update Concerning Directory Listings"
+COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_DESCRIPTION="Before 5.1.0 the default htaccess.txt did not support Brotli compression. This could result in double compression errors when Joomla is installed on a server that uses Brotli compression. You should manually apply the necessary changes to any existing .htaccess file, as this file can not be updated automatically.
The old code:
RewriteRule \"\.css\.gz$\" \"-\" [T=text/css,E=no-gzip:1]
RewriteRule \"\.js\.gz$\" \"-\" [T=text/javascript,E=no-gzip:1]
The new code:
RewriteRule \"\.css\.gz$\" \"-\" [T=text/css,E=no-gzip:1,E=no-brotli:1]
RewriteRule \"\.js\.gz$\" \"-\" [T=text/javascript,E=no-gzip:1,E=no-brotli:1]
"
+COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_TITLE=".htaccess Update Brotli Compression"
COM_ADMIN_POSTINSTALL_MSG_HTACCESS_SETCE_DESCRIPTION="Before 4.2.9 the default htaccess.txt file contained erroneous code for appending the \"Content-Encoding\" HTTP header. This could result in double encoding errors when Joomla is installed in a subdirectory and both this directory and its parent directory contain an .htaccess file with this code. You should manually apply the necessary changes to any existing .htaccess file, as this file can not be updated automatically.
The old code:
Header append Content-Encoding gzip
The new code:
Header set Content-Encoding gzip
"
COM_ADMIN_POSTINSTALL_MSG_HTACCESS_SETCE_TITLE=".htaccess Update Concerning Setting the Content-Encoding Header"
COM_ADMIN_SAVE_SUCCESS="Profile saved."
diff --git a/administrator/language/en-GB/com_joomlaupdate.ini b/administrator/language/en-GB/com_joomlaupdate.ini
index df136e0de89f4..5902c52891851 100644
--- a/administrator/language/en-GB/com_joomlaupdate.ini
+++ b/administrator/language/en-GB/com_joomlaupdate.ini
@@ -15,6 +15,7 @@ COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_CUSTOM_ERROR="The custom URL field is empty
COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT="Default"
COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_LABEL="Update Channel"
COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT="Joomla Next"
+; Deprecated, will be removed with 6.0
COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_TESTING="Testing"
COM_JOOMLAUPDATE_CONFIG_VERSIONCHECK_DESC="Shows the checkbox in the pre–update check if any of the extensions installed on your site is potentially incompatible with the version of Joomla you are upgrading to. Note: the checkbox is displayed when upgrading to a new Joomla version family (minor or major version)."
COM_JOOMLAUPDATE_CONFIG_VERSIONCHECK_LABEL="Potentially incompatible extensions checkbox"
diff --git a/administrator/language/en-GB/install.xml b/administrator/language/en-GB/install.xml
index 33b6f2c6245de..89eb403671169 100644
--- a/administrator/language/en-GB/install.xml
+++ b/administrator/language/en-GB/install.xml
@@ -2,8 +2,8 @@
English (en-GB)
en-GB
- 5.1.0
- 2024-03
+ 5.2.0
+ 2024-04
Joomla! Project
admin@joomla.org
www.joomla.org
diff --git a/administrator/language/en-GB/langmetadata.xml b/administrator/language/en-GB/langmetadata.xml
index 232a1673a443c..c2a33bddfc798 100644
--- a/administrator/language/en-GB/langmetadata.xml
+++ b/administrator/language/en-GB/langmetadata.xml
@@ -1,8 +1,8 @@
English (en-GB)
- 5.1.0
- 2024-03
+ 5.2.0
+ 2024-04
Joomla! Project
admin@joomla.org
www.joomla.org
diff --git a/administrator/language/en-GB/plg_system_jooa11y.ini b/administrator/language/en-GB/plg_system_jooa11y.ini
index bb84139cfe29e..060e5ea903dd8 100644
--- a/administrator/language/en-GB/plg_system_jooa11y.ini
+++ b/administrator/language/en-GB/plg_system_jooa11y.ini
@@ -4,31 +4,31 @@
; Note : All ini files need to be saved as UTF-8
PLG_SYSTEM_JOOA11Y="System - Joomla Accessibility Checker"
-PLG_SYSTEM_JOOA11Y_XML_DESCRIPTION="The Joomla Accessibility Checker visually highlights common accessibility and usability issues. Geared towards content authors, the plugin identifies errors or warnings and provides guidance on how to fix them. Please be aware that this plugin does not offer an exhaustive analysis of your website, nor does it automatically ensure your website's accessibility. It's important to select a template that is inherently accessible to ensure your site meets accessibility standards."
+PLG_SYSTEM_JOOA11Y_FIELD_ADDITIONAL_CHECKS="Additional Checks Always On"
+PLG_SYSTEM_JOOA11Y_FIELD_ADDITIONAL_CHECKS_DESC="Enabling this option will visually hide the toggle switches for Form Labels, Contrast, Links (Advanced) in the Settings panel."
PLG_SYSTEM_JOOA11Y_FIELD_CHECK_ROOT="Target Area to Check"
PLG_SYSTEM_JOOA11Y_FIELD_CHECK_ROOT_DESC="Input a single selector to target a specific region of your website. The default setting is the landmark main. Alternatives to landmarks are classes, elements or ARIA roles (e.g. #main-content, .main, [role='main']). Input body to check the entire page."
+PLG_SYSTEM_JOOA11Y_FIELD_COLOUR_FILTER="Colour Filter"
+PLG_SYSTEM_JOOA11Y_FIELD_COLOUR_FILTER_DESC="Show Colour Filter toggle in Settings panel. Colour filters help identify colour combinations that may be difficult for people to distinguish."
PLG_SYSTEM_JOOA11Y_FIELD_CONTAINER_IGNORE="Ignore Regions"
PLG_SYSTEM_JOOA11Y_FIELD_CONTAINER_IGNORE_DESC="Ignore specific regions within the Content Container. Use commas to separate classes or elements (eg #ignore, .ignore)."
-PLG_SYSTEM_JOOA11Y_FIELD_READABILITY_ROOT="Readability Target Area"
-PLG_SYSTEM_JOOA11Y_FIELD_READABILITY_ROOT_DESC="Landmark on the page that will be checked for readability. The default setting is the landmark main."
-PLG_SYSTEM_JOOA11Y_FIELD_SHOW_ALWAYS="Show Always"
-PLG_SYSTEM_JOOA11Y_FIELD_SHOW_ALWAYS_DESC="Load the accessibility checker on all pages. This is useful when developing the website, but should not be left on when the website is live."
-PLG_SYSTEM_JOOA11Y_FIELD_ADDITIONAL_CHECKS="Additional Checks Always On"
-PLG_SYSTEM_JOOA11Y_FIELD_ADDITIONAL_CHECKS_DESC="Enabling this option will visually hide the toggle switches for Form Labels, Contrast, Links (Advanced) in the Settings panel."
-PLG_SYSTEM_JOOA11Y_FIELD_WEB_COMPONENTS="Web Components to Check"
-PLG_SYSTEM_JOOA11Y_FIELD_WEB_COMPONENTS_DESC="Provide a list of all known web components or containers with an open shadow DOM."
PLG_SYSTEM_JOOA11Y_FIELD_CONTRAST="Contrast"
PLG_SYSTEM_JOOA11Y_FIELD_CONTRAST_DESC="Show Contrast toggle in Settings panel. Check for WCAG 2.0 Level AA contrast issues between foreground text and background elements."
+PLG_SYSTEM_JOOA11Y_FIELD_EXTRA_PROPS="Extra Properties"
+PLG_SYSTEM_JOOA11Y_FIELD_EXTRA_PROPS_DESC="Pass additional properties to customise. Provide a valid key/value pair. Refer to documentation."
PLG_SYSTEM_JOOA11Y_FIELD_FORM_LABELS="Form Labels"
PLG_SYSTEM_JOOA11Y_FIELD_FORM_LABELS_DESC="Show Form Labels toggle in Settings panel. Check for form inputs missing a corresponding label. Not necessarily a content author issue, and usually not an issue when using a reputable, accessible forms plugin."
PLG_SYSTEM_JOOA11Y_FIELD_LINKS_ADVANCED="Links (Advanced)"
PLG_SYSTEM_JOOA11Y_FIELD_LINKS_ADVANCED_DESC="Show Links (Advanced) toggle in Settings panel. Check for additional issues such as: links that open in a new tab without warning, have identical names but different purpose, or points to a PDF and other files without warning."
-PLG_SYSTEM_JOOA11Y_FIELD_COLOUR_FILTER="Colour Filter"
-PLG_SYSTEM_JOOA11Y_FIELD_COLOUR_FILTER_DESC="Show Colour Filter toggle in Settings panel. Colour filters help identify colour combinations that may be difficult for people to distinguish."
-PLG_SYSTEM_JOOA11Y_FIELD_EXTRA_PROPS="Extra Properties"
-PLG_SYSTEM_JOOA11Y_FIELD_EXTRA_PROPS_DESC="Pass additional properties to customise. Provide a valid key/value pair. Refer to documentation."
+PLG_SYSTEM_JOOA11Y_FIELD_READABILITY_ROOT="Readability Target Area"
+PLG_SYSTEM_JOOA11Y_FIELD_READABILITY_ROOT_DESC="Landmark on the page that will be checked for readability. The default setting is the landmark main."
+PLG_SYSTEM_JOOA11Y_FIELD_SHOW_ALWAYS="Show Always"
+PLG_SYSTEM_JOOA11Y_FIELD_SHOW_ALWAYS_DESC="Load the accessibility checker on all pages. This is useful when developing the website, but should not be left on when the website is live."
+PLG_SYSTEM_JOOA11Y_FIELD_WEB_COMPONENTS="Web Components to Check"
+PLG_SYSTEM_JOOA11Y_FIELD_WEB_COMPONENTS_DESC="Provide a list of all known web components or containers with an open shadow DOM."
PLG_SYSTEM_JOOA11Y_KEY="Key"
PLG_SYSTEM_JOOA11Y_VALUE="Value"
+PLG_SYSTEM_JOOA11Y_XML_DESCRIPTION="The Joomla Accessibility Checker visually highlights common accessibility and usability issues. Geared towards content authors, the plugin identifies errors or warnings and provides guidance on how to fix them. Please be aware that this plugin does not offer an exhaustive analysis of your website, nor does it automatically ensure your website's accessibility. It's important to select a template that is inherently accessible to ensure your site meets accessibility standards."
; All the following strings are deprecated and will be removed with 6.0
PLG_SYSTEM_JOOA11Y_ALERT_CLOSE="Close"
diff --git a/administrator/manifests/files/joomla.xml b/administrator/manifests/files/joomla.xml
index d7e233965700c..0c2ba2566b9cc 100644
--- a/administrator/manifests/files/joomla.xml
+++ b/administrator/manifests/files/joomla.xml
@@ -6,8 +6,8 @@
www.joomla.org
(C) 2019 Open Source Matters, Inc.
GNU General Public License version 2 or later; see LICENSE.txt
- 5.1.0-beta3-dev
- 2024-03
+ 5.2.0-alpha1-dev
+ 2024-04
FILES_JOOMLA_XML_DESCRIPTION
administrator/components/com_admin/script.php
diff --git a/administrator/manifests/packages/pkg_en-GB.xml b/administrator/manifests/packages/pkg_en-GB.xml
index 0a4dd943808d1..51a5c47edf495 100644
--- a/administrator/manifests/packages/pkg_en-GB.xml
+++ b/administrator/manifests/packages/pkg_en-GB.xml
@@ -2,8 +2,8 @@
English (en-GB) Language Pack
en-GB
- 5.1.0.1
- 2024-03
+ 5.2.0.1
+ 2024-04
Joomla! Project
admin@joomla.org
www.joomla.org
diff --git a/api/language/en-GB/install.xml b/api/language/en-GB/install.xml
index 2ff4da9c4a04a..b0b905235db88 100644
--- a/api/language/en-GB/install.xml
+++ b/api/language/en-GB/install.xml
@@ -2,8 +2,8 @@
English (en-GB)
en-GB
- 5.1.0
- 2024-03
+ 5.2.0
+ 2024-04
Joomla! Project
admin@joomla.org
www.joomla.org
diff --git a/api/language/en-GB/langmetadata.xml b/api/language/en-GB/langmetadata.xml
index d3664586e9bc2..b5501bbab38d5 100644
--- a/api/language/en-GB/langmetadata.xml
+++ b/api/language/en-GB/langmetadata.xml
@@ -1,8 +1,8 @@
English (en-GB)
- 5.1.0
- 2024-03
+ 5.2.0
+ 2024-04
Joomla! Project
admin@joomla.org
www.joomla.org
diff --git a/build.xml b/build.xml
index d6741b8b7f2fc..63057d9d0afb6 100644
--- a/build.xml
+++ b/build.xml
@@ -85,7 +85,7 @@
-
+
diff --git a/build/build-modules-js/settings.json b/build/build-modules-js/settings.json
index a655a2e7804e2..a4b51b7ea7765 100644
--- a/build/build-modules-js/settings.json
+++ b/build/build-modules-js/settings.json
@@ -553,10 +553,6 @@
"dependencies": [],
"licenseFilename": ""
},
- "punycode": {
- "name": "punycode",
- "licenseFilename": "LICENSE-MIT.txt"
- },
"@claviska/jquery-minicolors": {
"name": "minicolors",
"js": {
@@ -886,4 +882,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/build/deleted_file_check.php b/build/deleted_file_check.php
index fed50c63fb8cf..c2d14e69f7583 100644
--- a/build/deleted_file_check.php
+++ b/build/deleted_file_check.php
@@ -65,6 +65,10 @@ function usage($command)
$options['from'] . '/components/com_search',
$options['from'] . '/images/sampledata',
$options['from'] . '/installation',
+ $options['from'] . '/media/com_cpanel/js',
+ $options['from'] . '/media/com_modules/js',
+ $options['from'] . '/media/legacy/js',
+ $options['from'] . '/media/mod_multilangstatus',
$options['from'] . '/media/plg_quickicon_eos310',
$options['from'] . '/media/system/images',
$options['from'] . '/modules/mod_search',
diff --git a/build/media_source/mod_menu/js/menu.es6.js b/build/media_source/mod_menu/js/menu.es6.js
index 50e9adebf0e7f..ce72537f1317c 100644
--- a/build/media_source/mod_menu/js/menu.es6.js
+++ b/build/media_source/mod_menu/js/menu.es6.js
@@ -38,7 +38,9 @@
}
const spanEl = topLevelEl.querySelector('span');
if (spanEl) {
- spanEl.tabIndex = '0';
+ if (spanEl.parentNode.nodeName !== 'A') {
+ spanEl.tabIndex = '0';
+ }
spanEl.addEventListener('mouseover', topLevelMouseOver(topLevelEl, settings));
spanEl.addEventListener('mouseout', topLevelMouseOut(topLevelEl, settings));
}
diff --git a/build/media_source/system/joomla.asset.json b/build/media_source/system/joomla.asset.json
index 8c45d17173a25..1eae307baedf8 100644
--- a/build/media_source/system/joomla.asset.json
+++ b/build/media_source/system/joomla.asset.json
@@ -361,7 +361,8 @@
"type": "module"
},
"dependencies": [
- "webcomponent.media-select-legacy"
+ "webcomponent.media-select-legacy",
+ "joomla.dialog"
]
},
{
diff --git a/build/media_source/templates/administrator/atum/scss/blocks/_header.scss b/build/media_source/templates/administrator/atum/scss/blocks/_header.scss
index 3da646e3b75cd..aafdf4ceaf7d3 100644
--- a/build/media_source/templates/administrator/atum/scss/blocks/_header.scss
+++ b/build/media_source/templates/administrator/atum/scss/blocks/_header.scss
@@ -231,9 +231,6 @@
@if $enable-dark-mode {
@include color-mode(dark) {
- .header-item-content:not(.joomlaversion) {
- border: map-get($atum-colors-dark, "atum-btn-primary-border");
- }
.header-item-icon > * {
background: var(--header-bg);
}
diff --git a/build/media_source/templates/administrator/atum/scss/blocks/_treeselect.scss b/build/media_source/templates/administrator/atum/scss/blocks/_treeselect.scss
index 1e1fba2245186..5f4595ac1c424 100644
--- a/build/media_source/templates/administrator/atum/scss/blocks/_treeselect.scss
+++ b/build/media_source/templates/administrator/atum/scss/blocks/_treeselect.scss
@@ -64,6 +64,7 @@
display: inline-block;
padding: 0;
margin-right: .1rem;
+ color: var(--atum-btn-bg);
text-align: center;
cursor: pointer;
}
diff --git a/build/media_source/templates/administrator/atum/scss/pages/_com_cpanel.scss b/build/media_source/templates/administrator/atum/scss/pages/_com_cpanel.scss
index d1fe5016ced97..e2f34e5846f8c 100644
--- a/build/media_source/templates/administrator/atum/scss/pages/_com_cpanel.scss
+++ b/build/media_source/templates/administrator/atum/scss/pages/_com_cpanel.scss
@@ -160,6 +160,12 @@
.mod-custom {
padding: 1rem;
}
+
+ .btn:first-child:focus-visible {
+ color: var(--btn-active-color);
+ background-color: var(--btn-active-bg);
+ border-color: var(--btn-active-border-color);
+ }
}
.sample-data {
diff --git a/components/com_contact/src/Model/ContactModel.php b/components/com_contact/src/Model/ContactModel.php
index 940f01dc59cbb..f27770be3fd12 100644
--- a/components/com_contact/src/Model/ContactModel.php
+++ b/components/com_contact/src/Model/ContactModel.php
@@ -169,7 +169,7 @@ protected function loadFormData()
*
* @param integer $pk Id for the contact
*
- * @return mixed Object or null
+ * @return mixed \stdClass or null
*
* @since 1.6.0
*/
diff --git a/components/com_contact/src/View/Contact/HtmlView.php b/components/com_contact/src/View/Contact/HtmlView.php
index ebeda332b207d..2c2d192b76d32 100644
--- a/components/com_contact/src/View/Contact/HtmlView.php
+++ b/components/com_contact/src/View/Contact/HtmlView.php
@@ -56,7 +56,7 @@ class HtmlView extends BaseHtmlView implements UserFactoryAwareInterface
/**
* The item object details
*
- * @var \Joomla\CMS\Object\CMSObject
+ * @var \stdClass
*
* @since 1.6
*/
diff --git a/components/com_contact/src/View/Contact/VcfView.php b/components/com_contact/src/View/Contact/VcfView.php
index 6f4dfefc45794..3c09c7299e292 100644
--- a/components/com_contact/src/View/Contact/VcfView.php
+++ b/components/com_contact/src/View/Contact/VcfView.php
@@ -28,7 +28,7 @@ class VcfView extends AbstractView
/**
* The contact item
*
- * @var \Joomla\CMS\Object\CMSObject
+ * @var \stdClass
*/
protected $item;
diff --git a/components/com_contact/src/View/Featured/HtmlView.php b/components/com_contact/src/View/Featured/HtmlView.php
index 9f6dfe7276b79..f7849b5de99c1 100644
--- a/components/com_contact/src/View/Featured/HtmlView.php
+++ b/components/com_contact/src/View/Featured/HtmlView.php
@@ -40,7 +40,7 @@ class HtmlView extends BaseHtmlView
/**
* The item details
*
- * @var \Joomla\CMS\Object\CMSObject
+ * @var array
*
* @since 1.6.0
*/
diff --git a/components/com_tags/src/Model/TagModel.php b/components/com_tags/src/Model/TagModel.php
index 2467f26716f1f..684500cdc98cc 100644
--- a/components/com_tags/src/Model/TagModel.php
+++ b/components/com_tags/src/Model/TagModel.php
@@ -43,7 +43,7 @@ class TagModel extends ListModel
/**
* Array of tags
*
- * @var CMSObject[]
+ * @var array
* @since 4.3.0
*/
protected $item = [];
diff --git a/components/com_tags/src/View/Tag/HtmlView.php b/components/com_tags/src/View/Tag/HtmlView.php
index 56b4b5d035bec..6789dd9b9923e 100644
--- a/components/com_tags/src/View/Tag/HtmlView.php
+++ b/components/com_tags/src/View/Tag/HtmlView.php
@@ -14,7 +14,6 @@
use Joomla\CMS\Menu\MenuItem;
use Joomla\CMS\MVC\View\GenericDataException;
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
-use Joomla\CMS\Object\CMSObject;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\CMS\Router\Route;
use Joomla\CMS\User\User;
@@ -52,7 +51,7 @@ class HtmlView extends BaseHtmlView
/**
* Tag data for the current tag or tags (on success, false on failure)
*
- * @var CMSObject[]|boolean
+ * @var array
*
* @since 3.1
*/
diff --git a/components/com_users/src/View/Profile/HtmlView.php b/components/com_users/src/View/Profile/HtmlView.php
index 6cca57149707c..e932850b39bc3 100644
--- a/components/com_users/src/View/Profile/HtmlView.php
+++ b/components/com_users/src/View/Profile/HtmlView.php
@@ -139,13 +139,14 @@ public function display($tpl = null)
unset($this->data->text);
// Check for layout from menu item.
- $query = Factory::getApplication()->getMenu()->getActive()->query;
+ $active = Factory::getApplication()->getMenu()->getActive();
if (
- isset($query['layout']) && isset($query['option']) && $query['option'] === 'com_users'
- && isset($query['view']) && $query['view'] === 'profile'
+ $active && isset($active->query['layout'])
+ && isset($active->query['option']) && $active->query['option'] === 'com_users'
+ && isset($active->query['view']) && $active->query['view'] === 'profile'
) {
- $this->setLayout($query['layout']);
+ $this->setLayout($active->query['layout']);
}
// Escape strings for HTML output
diff --git a/htaccess.txt b/htaccess.txt
index a84c35c141453..34c08a2902a51 100644
--- a/htaccess.txt
+++ b/htaccess.txt
@@ -136,7 +136,7 @@ Options -Indexes
-## GZIP
+## GZIP & BROTLI
## These directives are only enabled if the Apache mod_headers module is enabled.
## This section will check if a .gz file exists and if so will stream it
## directly or fallback to gzip any asset on the fly
@@ -157,9 +157,9 @@ Options -Indexes
RewriteCond "%{REQUEST_FILENAME}\.gz" -s
RewriteRule "^(.*)\.js" "$1\.js\.gz" [QSA]
- # Serve correct content types, and prevent mod_deflate double gzip.
- RewriteRule "\.css\.gz$" "-" [T=text/css,E=no-gzip:1]
- RewriteRule "\.js\.gz$" "-" [T=text/javascript,E=no-gzip:1]
+ # Serve correct content types, and prevent mod_deflate double compression.
+ RewriteRule "\.css\.gz$" "-" [T=text/css,E=no-gzip:1,E=no-brotli:1]
+ RewriteRule "\.js\.gz$" "-" [T=text/javascript,E=no-gzip:1,E=no-brotli:1]
# Serve correct encoding type.
diff --git a/installation/language/cy-GB/joomla.ini b/installation/language/cy-GB/joomla.ini
index 1007638d8b7bd..5f2a0b37854e5 100644
--- a/installation/language/cy-GB/joomla.ini
+++ b/installation/language/cy-GB/joomla.ini
@@ -81,11 +81,13 @@ INSTL_DATABASE_NAME_LABEL="Enw'r Gronfa Ddata"
INSTL_DATABASE_NAME_MSG_MYSQL="Mae enw'r gronfa ddata yn annilys. Rhaid iddo beidio cynnwys y nodau canlynol: \ /"
INSTL_DATABASE_NAME_MSG_POSTGRES="Mae enw'r gronfa ddata yn annilys. Rhaid iddo gychwyn gyda llythyren yna llythrennau a rhifau'n unig."
INSTL_DATABASE_NO_SCHEMA="Nid oes sgema cronfa ddata yn bodoli ar gyfer y math hwn o gronfa ddata."
+INSTL_DATABASE_PASSWORD_DESC="Rhowch y cyfrinair cronfa ddata a grëwyd gennych chi neu gyfrinair a roddwyd gan eich lletywr."
INSTL_DATABASE_PREFIX_DESC="Rhowch ragddodiad tabl neu defnyddiwch yr un a grëwyd ar hap."
INSTL_DATABASE_PREFIX_DUPLICATE_DESC="Os ydych yn defnyddio cronfa ddata sy'n bodoli'n barod gyda thablau gyda'r un rhagddodiad bydd Joomla yn ailenwi y tablau hynny drwy ychwanegu'r rhagddodiad \"bak_\"."
INSTL_DATABASE_PREFIX_MSG="Rhaid i’r rhagddodiad tabl dechrau efo llythyren yna, yn ddewisol, ei ddilyn gan nodau alffaniwmerig a/neu tanlinell."
INSTL_DATABASE_RESPONSE_ERROR="Mae'r broses gosod wedi methu."
INSTL_DATABASE_TYPE_DESC="Dewiswch math y gronfa ddata."
+INSTL_DATABASE_USER_DESC="Rhowch yr enw defnyddiwr cronfa ddata a grëwyd gennych chi neu enw defnyddiwr a roddwyd gan eich lletywr."
INSTL_DATABASE_VALIDATION_ERROR="Gwiriwch eich manylion mewngofnodi i'r gronfa ddata, math y gronfa ddata, enw'r gronfa ddata neu enw lletywr. Os yw MySQL 8 wedi ei osod yna darllenwch y wici am fwy o wybodaeth."
INSTL_CONNECT_DB="Ffurfweddu'r Cysylltiad Cronfa Ddata"
diff --git a/installation/language/da-DK/joomla.ini b/installation/language/da-DK/joomla.ini
index f11d009d6ae08..145e10e52dc11 100644
--- a/installation/language/da-DK/joomla.ini
+++ b/installation/language/da-DK/joomla.ini
@@ -81,11 +81,13 @@ INSTL_DATABASE_NAME_LABEL="Databasenavn"
INSTL_DATABASE_NAME_MSG_MYSQL="Databasenavnet er ugyldigt. Det må ikke indeholde følgende karakterer: \ /"
INSTL_DATABASE_NAME_MSG_POSTGRES="Databasenavnet er ugyldigt. Det skal starte med et bogstav, efterfulgt af alfanumeriske karakterer."
INSTL_DATABASE_NO_SCHEMA="Intet databaseskema eksisterer for denne databasetype"
+INSTL_DATABASE_PASSWORD_DESC="Angiv database adgangskoden som du oprettede eller en adgangskode som din host har leveret."
INSTL_DATABASE_PREFIX_DESC="Angiv et tabelpræfiks eller anvend det tilfældigt genererede."
INSTL_DATABASE_PREFIX_DUPLICATE_DESC="Hvis du anvende en eksisterende database med tabeller med det samme præfiks, så vil Joomla omdøbe disse eksisterende tabeller ved at tilføje præfikset \"bak_\"."
INSTL_DATABASE_PREFIX_MSG="Tabelpræfikset skal starte med et bogstav, og valgfrit efterfulgt af alfanumeriske karakterer og en underscore"
INSTL_DATABASE_RESPONSE_ERROR="Installationsprocessen fejlede."
INSTL_DATABASE_TYPE_DESC="Vælg databasetypen."
+INSTL_DATABASE_USER_DESC="Angiv database brugernavnet som du oprettede eller et brugernavn som din host leverede."
INSTL_DATABASE_VALIDATION_ERROR="Kontroller dine database legitimationsoplysninger, databasetype, databasenavn eller hostname. Hvis du har installeret MySQL 8, så læs venligst denne wiki for mere information."
INSTL_CONNECT_DB="Opsæt databaseforbindelse"
diff --git a/installation/language/en-GB/langmetadata.xml b/installation/language/en-GB/langmetadata.xml
index 2afca31144a81..ccf0614488bb7 100644
--- a/installation/language/en-GB/langmetadata.xml
+++ b/installation/language/en-GB/langmetadata.xml
@@ -1,8 +1,8 @@
English (United Kingdom)
- 5.1.0
- 2024-03
+ 5.2.0
+ 2024-04
Joomla! Project
(C) 2005 Open Source Matters, Inc.
GNU General Public License version 2 or later; see LICENSE.txt
diff --git a/installation/language/es-ES/joomla.ini b/installation/language/es-ES/joomla.ini
index c96db2b4cc320..466802f4dea58 100644
--- a/installation/language/es-ES/joomla.ini
+++ b/installation/language/es-ES/joomla.ini
@@ -81,11 +81,13 @@ INSTL_DATABASE_NAME_LABEL="Base de datos"
INSTL_DATABASE_NAME_MSG_MYSQL="El nombre de la base de datos no es válido. No debe contener los siguientes caracteres: \ /"
INSTL_DATABASE_NAME_MSG_POSTGRES="El nombre de la base de datos no es válido. Debe comenzar con una letra seguida de caracteres alfanuméricos."
INSTL_DATABASE_NO_SCHEMA="No existe ningún esquema de base de datos para este tipo de base de datos."
+INSTL_DATABASE_PASSWORD_DESC="Introduzca la contraseña de la base de datos que haya elegido o la facilitada por quien le sirva el hospedaje."
INSTL_DATABASE_PREFIX_DESC="Introduzca un prefijo para la base de datos o use uno generado aleatoriamente."
INSTL_DATABASE_PREFIX_DUPLICATE_DESC="Si está utilizando una base de datos existente con tablas con el mismo prefijo, Joomla renombrará las tablas existentes añadiendo el prefijo \"bak_\"."
INSTL_DATABASE_PREFIX_MSG="El prefijo de la base de datos debe empezar con una letra, seguido opcionalmente de caracteres alfanuméricos y un guión bajo"
INSTL_DATABASE_RESPONSE_ERROR="El proceso de instalación ha fallado."
INSTL_DATABASE_TYPE_DESC="Seleccione el tipo de base de datos."
+INSTL_DATABASE_USER_DESC="Introduzca el nombre de usuario de la base de datos que haya elegido o el facilitado por quien le sirva el hospedaje."
INSTL_DATABASE_VALIDATION_ERROR="Verifique las credenciales de su base de datos, el tipo de base de datos, el nombre de la base de datos o el nombre de hospedaje. Si tiene MySQL 8 instalado, para más información lea esta wiki."
INSTL_CONNECT_DB="Configurar conexión a la base de datos"
diff --git a/installation/language/ja-JP/joomla.ini b/installation/language/ja-JP/joomla.ini
index 7d2d901b0f979..4ab3a6a4fbef3 100644
--- a/installation/language/ja-JP/joomla.ini
+++ b/installation/language/ja-JP/joomla.ini
@@ -81,10 +81,13 @@ INSTL_DATABASE_NAME_LABEL="データベース名"
INSTL_DATABASE_NAME_MSG_MYSQL="データベース名が無効です。次の文字を含めることはできません。 \ /"
INSTL_DATABASE_NAME_MSG_POSTGRES="データベース名が無効です。文字で始まり、その後に英数字が続く必要があります。"
INSTL_DATABASE_NO_SCHEMA="このデータベースタイプのデータベーススキーマは存在しません。"
+INSTL_DATABASE_PASSWORD_DESC="作成したデータベースパスワード、またはホストから提供されたパスワードを入力します。"
INSTL_DATABASE_PREFIX_DESC="テーブルプレフィックスを入力するか、ランダムに生成されたプレフィックスを使用"
+INSTL_DATABASE_PREFIX_DUPLICATE_DESC="同じプレフィックスを持つテーブルを持つ既存のデータベースを使用している場合、Joomlaはこれらの既存プレフィックスに\"bak_\"を加えて別名に変更します。"
INSTL_DATABASE_PREFIX_MSG="テーブルプレフィックスは文字で始まり、オプションで英数字とアンダースコアが続く必要があります"
INSTL_DATABASE_RESPONSE_ERROR="インストールプロセスが失敗しました。"
INSTL_DATABASE_TYPE_DESC="データベースタイプを選択"
+INSTL_DATABASE_USER_DESC="作成したデータベースユーザー名、またはホストから提供されたユーザー名を入力します。"
INSTL_DATABASE_VALIDATION_ERROR="データベースの認証情報、データベースの種類、データベース名またはホスト名を確認してください。MySQL 8がインストールされている場合は、ウィキをお読みください。"
INSTL_CONNECT_DB="データベース接続の設定"
@@ -100,6 +103,9 @@ INSTL_SETUP_SITE_NAME="サイト名の設定"
INSTL_SITE="メイン設定"
INSTL_SITE_DEVMODE_LABEL="開発モードを検出しました"
INSTL_SITE_NAME_DESC="サイト名を入力してください。"
+; Expert View
+INSTL_PUBLIC_FOLDER_DESC="publicフォルダへの相対パスまたは絶対パス"
+INSTL_PUBLIC_FOLDER_DESC_SHORT="publicフォルダへの相対パスまたは絶対パス"
; Complete view
INSTL_COMPLETE_ERROR_FOLDER_DELETE="「%s」フォルダを削除できませんでした。フォルダを手動で削除してください。"
INSTL_COMPLETE_REMOVE_FOLDER="%s フォルダを削除"
@@ -240,6 +246,7 @@ JLIB_INSTALLER_WARNING_UNABLE_TO_INSTALL_CONTENT_LANGUAGE="%s 言語のコンテ
JLIB_UPDATER_ERROR_COLLECTION_FOPEN="PHPの allow_url_fopen 設定が無効です。更新機能を利用するにはこの設定を有効にする必要があります。"
JLIB_UPDATER_ERROR_COLLECTION_OPEN_URL="更新::収集:%s を開けませんでした"
JLIB_UPDATER_ERROR_COLLECTION_PARSE_URL="更新::収集:%s を解析できませんでした"
+JLIB_UPDATER_ERROR_OPEN_UPDATE_SITE="更新:更新サイトを開けませんでした。 #%d "%s", URL: %s"
JLIB_UTIL_ERROR_CONNECT_DATABASE="JDatabase: :getInstance: データベースに接続できません
joomla.library: %1$s - %2$s"
; Strings for the language debugger
JDEBUG_LANGUAGE_FILES_IN_ERROR="言語ファイルの解析エラー"
@@ -278,4 +285,9 @@ JLIB_FORM_CONTAINS_INVALID_FIELDS="必要なデータが不足しているため
JLIB_FORM_FIELD_INVALID_VALUE="この値は無効です。"
JLIB_FORM_FIELD_REQUIRED_CHECK="オプションの1つを選択する必要があります。"
JLIB_FORM_FIELD_REQUIRED_VALUE="このフィールドに入力してください。"
+; Installation progress screen
+INSTL="インストール"
+INSTL_FINISHED="インストール完了"
+INSTL_IN_PROGRESS="インストール中"
+INSTL_PROGRESS="インストール進行状況"
diff --git a/installation/language/pl-PL/joomla.ini b/installation/language/pl-PL/joomla.ini
index 2112e6046ef81..d5a5f342faef6 100644
--- a/installation/language/pl-PL/joomla.ini
+++ b/installation/language/pl-PL/joomla.ini
@@ -81,11 +81,13 @@ INSTL_DATABASE_NAME_LABEL="Nazwa bazy danych"
INSTL_DATABASE_NAME_MSG_MYSQL="Nazwa bazy danych jest nieprawidłowa. Nie może zawierać następujących znaków: \ /"
INSTL_DATABASE_NAME_MSG_POSTGRES="Nazwa bazy danych jest nieprawidłowa. Musi zaczynać się literą, po której następują znaki alfanumeryczne."
INSTL_DATABASE_NO_SCHEMA="Schemat bazy danych dla tego typu bazy nie istnieje."
+INSTL_DATABASE_PASSWORD_DESC="Wprowadź hasło do bazy danych utworzone przez ciebie lub przekazane przez twojego dostawcę usługi."
INSTL_DATABASE_PREFIX_DESC="Ustal przedrostek dla nazw tabel w bazie danych lub użyj wygenerowanego losowo. Upewnij się, że ustalony przedrostek nie został wykorzystany do oznaczenia innych tabel."
INSTL_DATABASE_PREFIX_DUPLICATE_DESC="Jeśli używasz istniejącej bazy danych z tabelami o tym samym prefiksie, Joomla zmieni nazwę istniejących tabel dodając prefiks \"bak_\"."
INSTL_DATABASE_PREFIX_MSG="Przedrostek nazw tabel musi zaczynać się od litery, po której opcjonalnie mogą następować znaki alfanumeryczne i podkreślenie"
INSTL_DATABASE_RESPONSE_ERROR="Instalacja nie powiodła się."
INSTL_DATABASE_TYPE_DESC="Wybierz typ bazy danych."
+INSTL_DATABASE_USER_DESC="Wprowadź nazwę użytkownika utworzoną przez ciebie lub przekazaną przez twojego dostawcę usługi."
INSTL_DATABASE_VALIDATION_ERROR="Sprawdź swoje dane uwierzytelniające, typ bazy danych, nazwę bazy danych lub nazwę hosta. Jeśli masz zainstalowany MySQL 8, przeczytaj wiki, aby uzyskać więcej informacji."
INSTL_CONNECT_DB="Konfiguracja połączenia z bazą danych"
diff --git a/installation/language/sl-SI/joomla.ini b/installation/language/sl-SI/joomla.ini
index fd8cd1a990bc0..bb1f64cc7920c 100644
--- a/installation/language/sl-SI/joomla.ini
+++ b/installation/language/sl-SI/joomla.ini
@@ -81,11 +81,13 @@ INSTL_DATABASE_NAME_LABEL="Ime zbirke podatkov"
INSTL_DATABASE_NAME_MSG_MYSQL="Ime zbirke podatkov ni veljavno. Ne sme vsebovati naslednjih znakov: \ /"
INSTL_DATABASE_NAME_MSG_POSTGRES="Ime zbirke podatkov, ni veljaven. Začeti se mora s črko, nadaljevati z alfanumeričnimi znaki."
INSTL_DATABASE_NO_SCHEMA="Za to vrsto baze podatkov ne obstaja nobena shema baz podatkov."
+INSTL_DATABASE_PASSWORD_DESC="Vnesite geslo baze podatkov, ki ste ga ustvarili, ali geslo, ki ga je zagotovil vaš gostitelj."
INSTL_DATABASE_PREFIX_DESC="Vnesite predpone tabele ali uporabite naključno ustvarjeno."
INSTL_DATABASE_PREFIX_DUPLICATE_DESC="Če uporabljate obstoječo zbirko podatkov s tabelami z isto predpono, bo Joomla preimenovala te obstoječe tabele z dodajanjem predpone \"bak_\"."
INSTL_DATABASE_PREFIX_MSG="Tabela predpon se mora začeti s črko, po izbiri sledijo alfanumerični znaki in podčrtaj"
INSTL_DATABASE_RESPONSE_ERROR="Postopek namestitve ni uspel."
INSTL_DATABASE_TYPE_DESC="Izberite vrsto zbirke podatkov."
+INSTL_DATABASE_USER_DESC="Vnesite uporabniško ime za bazo podatkov, ki ste ga ustvarili, ali uporabniško ime, ki vam ga je posredoval vaš gostitelj."
INSTL_DATABASE_VALIDATION_ERROR="Preverite poverilnice zbirke podatkov, vrsto zbirke podatkov, ime zbirke podatkov ali ime gostitelja. Če imate nameščen MySQL 8, prosimo, preberite to wiki za več informacij."
INSTL_CONNECT_DB="Nastavitev povezave zbirke podatkov"
diff --git a/installation/language/sr-YU/joomla.ini b/installation/language/sr-YU/joomla.ini
index 7c487531f9579..c63a2c0c9e48f 100644
--- a/installation/language/sr-YU/joomla.ini
+++ b/installation/language/sr-YU/joomla.ini
@@ -81,11 +81,13 @@ INSTL_DATABASE_NAME_LABEL="Ime baze podataka"
INSTL_DATABASE_NAME_MSG_MYSQL="Neodgovarajuće ime baze. Ime ne sme sadržati karaktere: \ /"
INSTL_DATABASE_NAME_MSG_POSTGRES="Neispravno ime baze Ime mora započeti sa slovom i u nastavku mogu biti slova i brojevi."
INSTL_DATABASE_NO_SCHEMA="Ne postoji šema baze za ovaj tip baze."
+INSTL_DATABASE_PASSWORD_DESC="Unesite lozinku baze koju ste kreirali ili lozinku dobijenu od vašeg hopsting provajdera."
INSTL_DATABASE_PREFIX_DESC="Unesite prefix tabela baze ili izaberite neki nasumičan."
INSTL_DATABASE_PREFIX_DUPLICATE_DESC="Ako koristite postojeću bazu sa tabelama koje imaju isti prefiks Joomla će preimenovati te tabele sa prefiksom \"bak_\"."
INSTL_DATABASE_PREFIX_MSG="Prefiks tabela baze mora započeti slovom i nastaviti sa slovima i brojevima, a mora se završiti donjom crtom"
INSTL_DATABASE_RESPONSE_ERROR="Instalacija nije uspela."
INSTL_DATABASE_TYPE_DESC="Izaberi tip baze."
+INSTL_DATABASE_USER_DESC="Unesite korisničko ime koje ste kreirali ili korisničko ime dobijeno od strane hosting provajdera."
INSTL_DATABASE_VALIDATION_ERROR="Proverite podatke od baze, korisnička imena ili lozinke, tip, ime ili ime hosta. Ukoliko imate instaliran MySQL 8 pročitajte ovo wiki za više informacija."
INSTL_CONNECT_DB="Podesi konekciju baze"
@@ -101,6 +103,9 @@ INSTL_SETUP_SITE_NAME="Unesite ime sajta"
INSTL_SITE="Osnovna konfiguracija"
INSTL_SITE_DEVMODE_LABEL="Primećen je mod za razvoj (development mode)"
INSTL_SITE_NAME_DESC="Unesite ime za vaš Joomla sajt."
+; Expert View
+INSTL_PUBLIC_FOLDER_DESC="Relativna ili apsolutna putanaj do public foldera"
+INSTL_PUBLIC_FOLDER_DESC_SHORT="Relativna ili apsolutna putanaj do public foldera"
; Complete view
INSTL_COMPLETE_ERROR_FOLDER_DELETE="Direktorijum \"%s\" se nije mogao obrisati automatski. Obrišite ga ručno."
INSTL_COMPLETE_REMOVE_FOLDER="Obrišite \"%s\" direktorijum"
@@ -280,4 +285,9 @@ JLIB_FORM_CONTAINS_INVALID_FIELDS="Forma se ne može poslati jer nedostaju potre
JLIB_FORM_FIELD_INVALID_VALUE="Vrednost nije ispravna."
JLIB_FORM_FIELD_REQUIRED_CHECK="Barem jedna opcija se mora izabrati."
JLIB_FORM_FIELD_REQUIRED_VALUE="Popunite ovo polje."
+; Installation progress screen
+INSTL="Instalacija"
+INSTL_FINISHED="Instalacija je završena"
+INSTL_IN_PROGRESS="Instalacija je u toku"
+INSTL_PROGRESS="Napredak instalacije"
diff --git a/installation/language/ta-IN/joomla.ini b/installation/language/ta-IN/joomla.ini
index a75d7838ed297..279111c9d4cc3 100644
--- a/installation/language/ta-IN/joomla.ini
+++ b/installation/language/ta-IN/joomla.ini
@@ -81,11 +81,13 @@ INSTL_DATABASE_NAME_LABEL="தரவுத்தள பெயர்"
INSTL_DATABASE_NAME_MSG_MYSQL="தரவுத்தளப் பெயர் செல்லுபடியாகாதது. இது, பின்வரும் உருக்களைக் கொண்டிருத்தல் கூடாது: \ /"
INSTL_DATABASE_NAME_MSG_POSTGRES="தரவுத்தளப் பெயர் செல்லுபடியாகாதது. இது, ஒரு எழுத்தில் ஆரம்பித்து, எண்ணெழுத்து உருக்களால் பின்பற்றப்பட வேண்டும்."
INSTL_DATABASE_NO_SCHEMA="இந்தத் தரவுத்தள வகைக்கு, அமைப்புமுறைகள் (schema) இல்லை."
+INSTL_DATABASE_PASSWORD_DESC="தாங்கள் உருவாக்கிய கடவுச்சொல்லை அல்லது தங்கள் சேவை வழங்குநரால் (Host) கொடுக்கப்பட்ட கடவுச்சொல்லை நிரப்பவும்."
INSTL_DATABASE_PREFIX_DESC="அட்டவணை முன்-ஒட்டு ஒன்றை நிரப்பவும் அல்லது குறிப்பிலா வகையில் உருவாக்கப்பட்டதைப் பயன்படுத்தவும்."
INSTL_DATABASE_PREFIX_DUPLICATE_DESC="இதே முன்-ஒட்டு உடன் கூடிய அட்டவணைகள் கொண்ட ஏற்கனவே உள்ள தரவுத்தளத்தைத் தாங்கள் பயன்படுத்தினால், \"bak_\" முன்-ஒட்டு-வை சேர்ப்பதன் மூலம் Joomla ஏற்கனவே இருக்கும் அட்டவணைகளை மறுபெயரிடும்."
INSTL_DATABASE_PREFIX_MSG="அட்டவணை முன்-ஒட்டு ஆனது ஒரு எழுத்தில் ஆரம்பித்து, விருப்பமானால் எண்ணெழுத்து உருக்களால் பின்பற்றப்பட்டு, கட்டாயம் அடிக்கோடுடன் முடிவதாகவும் இருத்தல் வேண்டும்"
INSTL_DATABASE_RESPONSE_ERROR="நிறுவல் தோல்வியுற்றது."
INSTL_DATABASE_TYPE_DESC="தரவுத்தள வகையைத் தேர்வுசெய்யவும்."
+INSTL_DATABASE_USER_DESC="தாங்கள் உருவாக்கிய பயனாளர்பெயரை அல்லது தங்கள் சேவை வழங்குநரால் (Host) கொடுக்கப்பட்ட பயனாளர்பெயரை நிரப்பவும்."
INSTL_DATABASE_VALIDATION_ERROR="தங்கள் தரவுத்தள சான்றுகள், தரவுத்தள வகை, தரவுத்தளப் பெயர் அல்லது புரவலர்-கணினிப் பெயர் ஆகியவற்றை சரிபார்க்கவும். தாங்கள் MySQL 8-ஐ நிறுவி இருந்தால், மேலும் விவரங்களுக்கு படிக்கவும்: விக்கி (wiki)."
INSTL_CONNECT_DB="தரவுத்தள தொடர்பு அமைத்தல்"
diff --git a/language/en-GB/install.xml b/language/en-GB/install.xml
index 861cf3e6595ec..8e2ccc0454ccc 100644
--- a/language/en-GB/install.xml
+++ b/language/en-GB/install.xml
@@ -2,8 +2,8 @@
English (en-GB)
en-GB
- 5.1.0
- 2024-03
+ 5.2.0
+ 2024-04
Joomla! Project
admin@joomla.org
www.joomla.org
diff --git a/language/en-GB/langmetadata.xml b/language/en-GB/langmetadata.xml
index f4ff366573ca2..98f0363a90c7a 100644
--- a/language/en-GB/langmetadata.xml
+++ b/language/en-GB/langmetadata.xml
@@ -1,8 +1,8 @@
English (en-GB)
- 5.1.0
- 2024-03
+ 5.2.0
+ 2024-04
Joomla! Project
admin@joomla.org
www.joomla.org
diff --git a/libraries/src/Changelog/Changelog.php b/libraries/src/Changelog/Changelog.php
index 93008a661b677..fd8c894bdcc0c 100644
--- a/libraries/src/Changelog/Changelog.php
+++ b/libraries/src/Changelog/Changelog.php
@@ -122,7 +122,7 @@ class Changelog
/**
* Resource handle for the XML Parser
*
- * @var resource
+ * @var \XMLParser
* @since 4.0.0
*/
protected $xmlParser;
diff --git a/libraries/src/Component/Exception/MissingComponentException.php b/libraries/src/Component/Exception/MissingComponentException.php
index d862b517f1b50..efdd106433163 100644
--- a/libraries/src/Component/Exception/MissingComponentException.php
+++ b/libraries/src/Component/Exception/MissingComponentException.php
@@ -22,17 +22,4 @@
*/
class MissingComponentException extends RouteNotFoundException
{
- /**
- * Constructor
- *
- * @param string $message The Exception message to throw.
- * @param integer $code The Exception code.
- * @param \Exception $previous The previous exception used for the exception chaining.
- *
- * @since 3.7.0
- */
- public function __construct($message = '', $code = 404, \Exception $previous = null)
- {
- parent::__construct($message, $code, $previous);
- }
}
diff --git a/libraries/src/Image/Image.php b/libraries/src/Image/Image.php
index 17c0ef861269e..5c29558261de3 100644
--- a/libraries/src/Image/Image.php
+++ b/libraries/src/Image/Image.php
@@ -137,7 +137,7 @@ public function __construct($source = null)
/**
* Get the image resource handle
*
- * @return resource
+ * @return \GdImage
*
* @since 3.8.0
* @throws \LogicException if an image has not been loaded into the instance
diff --git a/libraries/src/Image/ImageFilter.php b/libraries/src/Image/ImageFilter.php
index e16a990a5cc60..2d7d2f15bf57a 100644
--- a/libraries/src/Image/ImageFilter.php
+++ b/libraries/src/Image/ImageFilter.php
@@ -21,7 +21,7 @@
abstract class ImageFilter
{
/**
- * @var resource The image resource handle.
+ * @var \GdImage The image resource handle.
* @since 2.5.0
*/
protected $handle;
diff --git a/libraries/src/MVC/View/ListView.php b/libraries/src/MVC/View/ListView.php
index 000619537746b..6727be9ec2f64 100644
--- a/libraries/src/MVC/View/ListView.php
+++ b/libraries/src/MVC/View/ListView.php
@@ -251,7 +251,13 @@ protected function addToolbar()
$bar->appendButton('Custom', $dhtml, 'batch');
}
- if ($this->state->get('filter.published') == -2 && $canDo->get('core.delete')) {
+ if (
+ $canDo->get('core.delete') &&
+ (
+ $this->state->get('filter.state') == -2 ||
+ $this->state->get('filter.published') == -2
+ )
+ ) {
ToolbarHelper::deleteList('JGLOBAL_CONFIRM_DELETE', $viewName . '.delete', 'JTOOLBAR_EMPTY_TRASH');
} elseif ($canDo->get('core.edit.state')) {
ToolbarHelper::trash($viewName . '.trash');
diff --git a/libraries/src/TUF/DatabaseStorage.php b/libraries/src/TUF/DatabaseStorage.php
index fce63b9eb2123..667767a9ad34b 100644
--- a/libraries/src/TUF/DatabaseStorage.php
+++ b/libraries/src/TUF/DatabaseStorage.php
@@ -20,6 +20,9 @@
/**
* @since 5.1.0
+ *
+ * @internal Currently this class is only used for Joomla! updates and will be extended in the future to support 3rd party updates
+ * Don't extend this class in your own code, it is subject to change without notice.
*/
class DatabaseStorage extends StorageBase
{
diff --git a/libraries/src/TUF/HttpLoader.php b/libraries/src/TUF/HttpLoader.php
index 5c6b344cd823b..b299866b9bf2d 100644
--- a/libraries/src/TUF/HttpLoader.php
+++ b/libraries/src/TUF/HttpLoader.php
@@ -17,6 +17,9 @@
/**
* @since 5.1.0
+ *
+ * @internal Currently this class is only used for Joomla! updates and will be extended in the future to support 3rd party updates
+ * Don't extend this class in your own code, it is subject to change without notice.
*/
class HttpLoader implements LoaderInterface
{
diff --git a/libraries/src/TUF/TufFetcher.php b/libraries/src/TUF/TufFetcher.php
index 55d7a35de6e7e..a2c1840e389f8 100644
--- a/libraries/src/TUF/TufFetcher.php
+++ b/libraries/src/TUF/TufFetcher.php
@@ -28,6 +28,9 @@
/**
* @since 5.1.0
+ *
+ * @internal Currently this class is only used for Joomla! updates and will be extended in the future to support 3rd party updates
+ * Don't extend this class in your own code, it is subject to change without notice.
*/
class TufFetcher
{
diff --git a/libraries/src/Toolbar/Button/DropdownButton.php b/libraries/src/Toolbar/Button/DropdownButton.php
index 97272da54c19e..915f45e7540f0 100644
--- a/libraries/src/Toolbar/Button/DropdownButton.php
+++ b/libraries/src/Toolbar/Button/DropdownButton.php
@@ -84,20 +84,6 @@ protected function prepareOptions(array &$options)
}
}
- /**
- * Render button HTML.
- *
- * @param array $options The button options.
- *
- * @return string The button HTML.
- *
- * @since 4.0.0
- */
- protected function renderButton(array &$options): string
- {
- return parent::renderButton($options);
- }
-
/**
* Get the button CSS Id.
*
diff --git a/libraries/src/Updater/Adapter/TufAdapter.php b/libraries/src/Updater/Adapter/TufAdapter.php
index 625ae512b55d0..1839056e00990 100644
--- a/libraries/src/Updater/Adapter/TufAdapter.php
+++ b/libraries/src/Updater/Adapter/TufAdapter.php
@@ -21,6 +21,7 @@
use Joomla\CMS\TUF\TufFetcher;
use Joomla\CMS\Updater\ConstraintChecker;
use Joomla\CMS\Updater\UpdateAdapter;
+use Joomla\CMS\Updater\Updater;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Tuf\Exception\MetadataException;
@@ -28,6 +29,9 @@
* TUF Update Adapter Class
*
* @since 5.1.0
+ *
+ * @internal Currently this class is only used for Joomla! updates and will be extended in the future to support 3rd party updates
+ * Don't extend this class in your own code, it is subject to change without notice.
*/
class TufAdapter extends UpdateAdapter
{
@@ -81,11 +85,11 @@ public function getUpdateTargets($options)
$metaData = json_decode((string) $metaData, true);
- if (!isset($metaData["signed"]["targets"])) {
+ if (!isset($metaData['signed']['targets'])) {
return false;
}
- foreach ($metaData["signed"]["targets"] as $filename => $target) {
+ foreach ($metaData['signed']['targets'] as $filename => $target) {
$version = $this->processTufTarget($filename, $target);
if (!$version) {
@@ -108,7 +112,7 @@ public function getUpdateTargets($options)
// Return the version as a match if either all constraints are matched
// or "only" env related constraints fail - the later one is the existing behavior of the XML updater
if (
- $constraintChecker->check($version) === true
+ $constraintChecker->check($version, $options['minimum_stability'] ?? Updater::STABILITY_STABLE) === true
|| !empty((array) $constraintChecker->getFailedEnvironmentConstraints())
) {
return [$version];
diff --git a/libraries/src/Updater/ConstraintChecker.php b/libraries/src/Updater/ConstraintChecker.php
index e7ae984ac8182..0af2ec3a21aa4 100644
--- a/libraries/src/Updater/ConstraintChecker.php
+++ b/libraries/src/Updater/ConstraintChecker.php
@@ -22,6 +22,8 @@
* ConstraintChecker Class
*
* @since 5.1.0
+ *
+ * @internal Currently this class is only used for Joomla! updates and will be extended in the future to support 3rd party updates
*/
class ConstraintChecker
{
@@ -35,28 +37,46 @@ class ConstraintChecker
*/
protected \stdClass $failedEnvironmentConstraints;
+ /**
+ * The channel to check the contraints against
+ *
+ * @var string
+ */
+ protected $channel;
+
/**
* Constructor, used to populate the failed
*
+ * @param string|null $channel The channel to be used for updating
+ *
* @return void
*
* @since 5.1.0
*/
- public function __construct()
+ public function __construct($channel = null)
{
$this->failedEnvironmentConstraints = new \stdClass();
+
+ if (!isset($channel)) {
+ $params = ComponentHelper::getParams('com_joomlaupdate');
+
+ $channel = (Version::MAJOR_VERSION + ($params->get('updatesource', 'default') == 'next' ? 1 : 0)) . '.x';
+ }
+
+ $this->channel = $channel;
}
/**
* Checks whether the passed constraints are matched
*
- * @param array $candidate The provided constraints to be checked
+ * @param array $candidate The provided constraints to be checked
+ * @param int $minimumStability The minimum stability required for updating
*
* @return boolean
*
* @since 5.1.0
*/
- public function check(array $candidate)
+ public function check(array $candidate, $minimumStability = Updater::STABILITY_STABLE)
{
if (!isset($candidate['targetplatform'])) {
// targetplatform is required
@@ -68,6 +88,11 @@ public function check(array $candidate)
return false;
}
+ // Check channel
+ if (isset($candidate['channel']) && $candidate['channel'] !== $this->channel) {
+ return false;
+ }
+
$result = true;
// Check php_minimum, assume true when not set
@@ -89,7 +114,7 @@ public function check(array $candidate)
// Check stability, assume true when not set
if (
isset($candidate['stability'])
- && !$this->checkStability($candidate['stability'])
+ && !$this->checkStability($candidate['stability'], $minimumStability)
) {
$result = false;
}
@@ -208,23 +233,18 @@ protected function checkSupportedDatabases(array $supportedDatabases)
/**
* Check the stability
*
- * @param string $stability Stability to check
+ * @param string $stability Stability to check
+ * @param int $minimumStability The minimum stability required for updating
*
* @return boolean
*
* @since 5.1.0
*/
- protected function checkStability(string $stability)
+ protected function checkStability(string $stability, $minimumStability = Updater::STABILITY_STABLE)
{
- $minimumStability = ComponentHelper::getParams('com_installer')->get('minimum_stability', Updater::STABILITY_STABLE);
-
$stabilityInt = $this->stabilityToInteger($stability);
- if (($stabilityInt < $minimumStability)) {
- $this->failedEnvironmentConstraints->stability = new \stdClass();
- $this->failedEnvironmentConstraints->stability->required = $stability;
- $this->failedEnvironmentConstraints->stability->used = $minimumStability;
-
+ if ($stabilityInt < $minimumStability) {
return false;
}
diff --git a/libraries/src/Updater/Update.php b/libraries/src/Updater/Update.php
index 82df28b09dea1..ed4e42bddbeff 100644
--- a/libraries/src/Updater/Update.php
+++ b/libraries/src/Updater/Update.php
@@ -176,7 +176,7 @@ class Update
/**
* Resource handle for the XML Parser
*
- * @var resource
+ * @var \XMLParser
* @since 3.0.0
*/
protected $xmlParser;
@@ -557,7 +557,7 @@ public function loadFromTuf(TufMetadata $metadataTable, string $url, $minimumSta
continue;
}
- if (!$constraintChecker->check($target['custom'])) {
+ if (!$constraintChecker->check($target['custom'], $minimumStability)) {
$this->otherUpdateInfo = $constraintChecker->getFailedEnvironmentConstraints();
continue;
diff --git a/libraries/src/Updater/UpdateAdapter.php b/libraries/src/Updater/UpdateAdapter.php
index 009f5cf1ea010..293115c154053 100644
--- a/libraries/src/Updater/UpdateAdapter.php
+++ b/libraries/src/Updater/UpdateAdapter.php
@@ -32,7 +32,7 @@ abstract class UpdateAdapter extends AdapterInstance
/**
* Resource handle for the XML Parser
*
- * @var resource
+ * @var \XMLParser
* @since 3.0.0
*/
protected $xmlParser;
diff --git a/libraries/src/Version.php b/libraries/src/Version.php
index c5c34e17a9b20..3c7cceaf0bd09 100644
--- a/libraries/src/Version.php
+++ b/libraries/src/Version.php
@@ -66,7 +66,7 @@ final class Version
* @var string
* @since 3.8.0
*/
- public const EXTRA_VERSION = 'alpha-dev';
+ public const EXTRA_VERSION = 'alpha1-dev';
/**
* Development status.
@@ -82,7 +82,7 @@ final class Version
* @var string
* @since 3.5
*/
- public const CODENAME = 'Kudumisha';
+ public const CODENAME = 'Uthabiti';
/**
* Release date.
@@ -90,7 +90,7 @@ final class Version
* @var string
* @since 3.5
*/
- public const RELDATE = '19-March-2024';
+ public const RELDATE = '3-April-2024';
/**
* Release time.
@@ -98,7 +98,7 @@ final class Version
* @var string
* @since 3.5
*/
- public const RELTIME = '16:01';
+ public const RELTIME = '16:00';
/**
* Release timezone.
diff --git a/package.json b/package.json
index a6cdfad36ce79..ffea83a672c44 100644
--- a/package.json
+++ b/package.json
@@ -126,4 +126,4 @@
"stylelint-order": "^5.0.0",
"stylelint-scss": "^4.7.0"
}
-}
+}
\ No newline at end of file
diff --git a/plugins/actionlog/joomla/src/Extension/Joomla.php b/plugins/actionlog/joomla/src/Extension/Joomla.php
index a5848c360e9f1..ce833fd2f1696 100644
--- a/plugins/actionlog/joomla/src/Extension/Joomla.php
+++ b/plugins/actionlog/joomla/src/Extension/Joomla.php
@@ -896,7 +896,7 @@ protected function checkLoggable($extension)
*
* Method is called after user request to remind their username.
*
- * @param array $user Holds the user data.
+ * @param object $user Holds the user data.
*
* @return void
*
@@ -1127,7 +1127,7 @@ public function onJoomlaAfterUpdate($oldVersion = null)
*
* @param string $context The context of the action log
*
- * @return \stdClass The params
+ * @return ?\stdClass The params
*
* @since 4.2.0
*/
@@ -1147,7 +1147,7 @@ private function getActionLogParams($context): ?\stdClass
*
* Method is called after user request to reset their password.
*
- * @param array $user Holds the user data.
+ * @param object $user Holds the user data.
*
* @return void
*
@@ -1180,7 +1180,7 @@ public function onUserAfterResetRequest($user)
*
* Method is called after user complete the reset of their password.
*
- * @param array $user Holds the user data.
+ * @param object $user Holds the user data.
*
* @return void
*
diff --git a/plugins/api-authentication/token/src/Extension/Token.php b/plugins/api-authentication/token/src/Extension/Token.php
index db551d519eee2..28127e66759e8 100644
--- a/plugins/api-authentication/token/src/Extension/Token.php
+++ b/plugins/api-authentication/token/src/Extension/Token.php
@@ -15,7 +15,6 @@
use Joomla\CMS\Event\User\AuthenticationEvent;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\CMS\User\UserFactoryAwareTrait;
-use Joomla\Component\Plugins\Administrator\Model\PluginModel;
use Joomla\Database\DatabaseAwareTrait;
use Joomla\Database\ParameterType;
use Joomla\Event\DispatcherInterface;
@@ -327,7 +326,7 @@ private function isTokenEnabledForUser(int $userId): bool
*/
private function getPluginParameter(string $folder, string $plugin, string $param, $default = null)
{
- /** @var PluginModel $model */
+ /** @var \Joomla\Component\Plugins\Administrator\Model\PluginModel $model */
$model = $this->getApplication()->bootComponent('plugins')
->getMVCFactory()->createModel('Plugin', 'Administrator', ['ignore_request' => true]);
diff --git a/plugins/behaviour/compat/src/Extension/Compat.php b/plugins/behaviour/compat/src/Extension/Compat.php
index 3ce25b0b50873..7232a8866269a 100644
--- a/plugins/behaviour/compat/src/Extension/Compat.php
+++ b/plugins/behaviour/compat/src/Extension/Compat.php
@@ -13,7 +13,6 @@
use Joomla\CMS\Event\Application\AfterInitialiseDocumentEvent;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\Event\DispatcherInterface;
-use Joomla\Event\Event;
use Joomla\Event\Priority;
use Joomla\Event\SubscriberInterface;
@@ -80,7 +79,7 @@ public function __construct(DispatcherInterface $dispatcher, array $config = [])
/**
* We run as early as possible, this should be the first event
*
- * @param Event $event
+ * @param AfterInitialiseDocumentEvent $event
* @return void
*
* @since 5.0.0
diff --git a/plugins/content/emailcloak/src/Extension/EmailCloak.php b/plugins/content/emailcloak/src/Extension/EmailCloak.php
index 1518df7fb5926..6e665256c60de 100644
--- a/plugins/content/emailcloak/src/Extension/EmailCloak.php
+++ b/plugins/content/emailcloak/src/Extension/EmailCloak.php
@@ -58,7 +58,7 @@ public function onContentPrepare(ContentPrepareEvent $event)
$item = $event->getItem();
// If the item does not have a text property there is nothing to do
- if (!property_exists($item, 'text')) {
+ if (!isset($item->text)) {
return;
}
diff --git a/plugins/editors/codemirror/layouts/editors/codemirror/codemirror.php b/plugins/editors/codemirror/layouts/editors/codemirror/codemirror.php
index 2cb2f34430067..2b615336056a0 100644
--- a/plugins/editors/codemirror/layouts/editors/codemirror/codemirror.php
+++ b/plugins/editors/codemirror/layouts/editors/codemirror/codemirror.php
@@ -20,7 +20,7 @@
/**
* Layout variables
*
- * @var array $options JS options for editor
+ * @var object $options JS options for editor
* @var Registry $params Plugin parameters
* @var string $id The id of the input
* @var string $name The name of the input
diff --git a/plugins/editors/tinymce/src/PluginTraits/DisplayTrait.php b/plugins/editors/tinymce/src/PluginTraits/DisplayTrait.php
index 61c290665f384..be10b339218d4 100644
--- a/plugins/editors/tinymce/src/PluginTraits/DisplayTrait.php
+++ b/plugins/editors/tinymce/src/PluginTraits/DisplayTrait.php
@@ -459,6 +459,10 @@ public function display(string $name, string $content = '', array $attributes =
'branding' => false,
'promotion' => false,
+ // Hardened security
+ 'sandbox_iframes' => true,
+ 'convert_unsafe_embeds' => true,
+
// Specify the attributes to be used when previewing a style. This prevents white text on a white background making the preview invisible.
'preview_styles' => 'font-family font-size font-weight font-style text-decoration text-transform background-color border border-radius outline text-shadow',
]
diff --git a/plugins/fields/calendar/src/Extension/Calendar.php b/plugins/fields/calendar/src/Extension/Calendar.php
index 3c03b5f1e668f..4bf3c70b0098c 100644
--- a/plugins/fields/calendar/src/Extension/Calendar.php
+++ b/plugins/fields/calendar/src/Extension/Calendar.php
@@ -32,7 +32,7 @@ final class Calendar extends FieldsPlugin implements SubscriberInterface
* @param \DOMElement $parent The field node parent.
* @param Form $form The form.
*
- * @return \DOMElement
+ * @return ?\DOMElement
*
* @since 3.7.0
*/
diff --git a/plugins/fields/color/src/Extension/Color.php b/plugins/fields/color/src/Extension/Color.php
index b112987367511..8585c30805655 100644
--- a/plugins/fields/color/src/Extension/Color.php
+++ b/plugins/fields/color/src/Extension/Color.php
@@ -32,7 +32,7 @@ final class Color extends FieldsPlugin implements SubscriberInterface
* @param \DOMElement $parent The field node parent.
* @param Form $form The form.
*
- * @return \DOMElement
+ * @return ?\DOMElement
*
* @since 3.7.0
*/
diff --git a/plugins/fields/editor/src/Extension/Editor.php b/plugins/fields/editor/src/Extension/Editor.php
index 6391d9e3ab046..217db368ae8e9 100644
--- a/plugins/fields/editor/src/Extension/Editor.php
+++ b/plugins/fields/editor/src/Extension/Editor.php
@@ -32,7 +32,7 @@ final class Editor extends FieldsPlugin implements SubscriberInterface
* @param \DOMElement $parent The field node parent.
* @param Form $form The form.
*
- * @return \DOMElement
+ * @return ?\DOMElement
*
* @since 3.7.0
*/
diff --git a/plugins/fields/imagelist/src/Extension/Imagelist.php b/plugins/fields/imagelist/src/Extension/Imagelist.php
index b48ab487fa80f..706dcf6f8d7fb 100644
--- a/plugins/fields/imagelist/src/Extension/Imagelist.php
+++ b/plugins/fields/imagelist/src/Extension/Imagelist.php
@@ -32,7 +32,7 @@ final class Imagelist extends FieldsPlugin implements SubscriberInterface
* @param \DOMElement $parent The field node parent.
* @param Form $form The form.
*
- * @return \DOMElement
+ * @return ?\DOMElement
*
* @since 3.7.0
*/
diff --git a/plugins/fields/list/src/Extension/ListPlugin.php b/plugins/fields/list/src/Extension/ListPlugin.php
index 1af4330dad85e..2595c1250caf8 100644
--- a/plugins/fields/list/src/Extension/ListPlugin.php
+++ b/plugins/fields/list/src/Extension/ListPlugin.php
@@ -63,7 +63,7 @@ public function onCustomFieldsBeforePrepareField($context, $item, $field)
* @param \stdclass $item The item.
* @param \stdclass $field The field.
*
- * @return object
+ * @return ?string
*
* @since 3.9.2
*/
diff --git a/plugins/fields/media/src/Extension/Media.php b/plugins/fields/media/src/Extension/Media.php
index c7d5723dd45e3..07ad1c8f5877e 100644
--- a/plugins/fields/media/src/Extension/Media.php
+++ b/plugins/fields/media/src/Extension/Media.php
@@ -31,7 +31,7 @@ final class Media extends FieldsPlugin
* @param \DOMElement $parent The field node parent.
* @param Form $form The form.
*
- * @return \DOMElement
+ * @return ?\DOMElement
*
* @since 4.0.0
*/
diff --git a/plugins/fields/sql/src/Extension/SQL.php b/plugins/fields/sql/src/Extension/SQL.php
index d09cb7f85cf4f..693064fe1cf71 100644
--- a/plugins/fields/sql/src/Extension/SQL.php
+++ b/plugins/fields/sql/src/Extension/SQL.php
@@ -32,7 +32,7 @@ final class SQL extends FieldsListPlugin
* @param \DOMElement $parent The field node parent.
* @param Form $form The form.
*
- * @return \DOMElement
+ * @return ?\DOMElement
*
* @since 3.7.0
*/
diff --git a/plugins/fields/subform/src/Extension/Subform.php b/plugins/fields/subform/src/Extension/Subform.php
index 1815be6396ea1..193512c3f8738 100644
--- a/plugins/fields/subform/src/Extension/Subform.php
+++ b/plugins/fields/subform/src/Extension/Subform.php
@@ -140,7 +140,7 @@ public function onCustomFieldsBeforePrepareField($context, $item, $field)
* @param object $item The item
* @param \stdClass $field The field
*
- * @return string
+ * @return ?string
*
* @since 4.0.0
*/
@@ -242,7 +242,7 @@ public function onCustomFieldsPrepareField($context, $item, $field)
* @param \DOMElement $parent The original parent element
* @param Form $form The form
*
- * @return \DOMElement
+ * @return ?\DOMElement
*
* @since 4.0.0
*/
diff --git a/plugins/fields/url/src/Extension/Url.php b/plugins/fields/url/src/Extension/Url.php
index 1b43a475904bc..e4126e0db2414 100644
--- a/plugins/fields/url/src/Extension/Url.php
+++ b/plugins/fields/url/src/Extension/Url.php
@@ -32,7 +32,7 @@ final class Url extends FieldsPlugin implements SubscriberInterface
* @param \DOMElement $parent The field node parent.
* @param Form $form The form.
*
- * @return \DOMElement
+ * @return ?\DOMElement
*
* @since 3.7.0
*/
diff --git a/plugins/fields/user/src/Extension/User.php b/plugins/fields/user/src/Extension/User.php
index c0d6b15ef871d..ffd2c17d24c3b 100644
--- a/plugins/fields/user/src/Extension/User.php
+++ b/plugins/fields/user/src/Extension/User.php
@@ -35,7 +35,7 @@ final class User extends FieldsPlugin implements SubscriberInterface
* @param \DOMElement $parent The field node parent.
* @param Form $form The form.
*
- * @return \DOMElement
+ * @return ?\DOMElement
*
* @since 3.7.0
*/
diff --git a/plugins/installer/packageinstaller/tmpl/default.php b/plugins/installer/packageinstaller/tmpl/default.php
index 570673f76a950..60f75e7aee403 100644
--- a/plugins/installer/packageinstaller/tmpl/default.php
+++ b/plugins/installer/packageinstaller/tmpl/default.php
@@ -13,9 +13,8 @@
use Joomla\CMS\Filesystem\FilesystemHelper;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
-use Joomla\Plugin\Installer\Package\Extension\PackageInstaller;
-/** @var PackageInstaller $this */
+/** @var \Joomla\Plugin\Installer\Package\Extension\PackageInstaller $this */
HTMLHelper::_('form.csrf');
diff --git a/plugins/installer/urlinstaller/tmpl/default.php b/plugins/installer/urlinstaller/tmpl/default.php
index 2bc15d67302bc..a3552fb35e8dc 100644
--- a/plugins/installer/urlinstaller/tmpl/default.php
+++ b/plugins/installer/urlinstaller/tmpl/default.php
@@ -11,9 +11,8 @@
defined('_JEXEC') or die;
use Joomla\CMS\Language\Text;
-use Joomla\Plugin\Installer\Url\Extension\UrlInstaller;
-/** @var UrlInstaller $this */
+/** @var \Joomla\Plugin\Installer\Url\Extension\UrlInstaller $this */
$this->getApplication()->getDocument()->getWebAssetManager()
->registerAndUseScript('plg_installer_urlinstaller.urlinstaller', 'plg_installer_urlinstaller/urlinstaller.js', [], ['defer' => true], ['core']);
diff --git a/plugins/multifactorauth/webauthn/src/Helper/Credentials.php b/plugins/multifactorauth/webauthn/src/Helper/Credentials.php
index e40d37c079631..b03628b25c410 100644
--- a/plugins/multifactorauth/webauthn/src/Helper/Credentials.php
+++ b/plugins/multifactorauth/webauthn/src/Helper/Credentials.php
@@ -20,7 +20,6 @@
use Joomla\Plugin\Multifactorauth\Webauthn\CredentialRepository;
use Joomla\Session\SessionInterface;
use Laminas\Diactoros\ServerRequestFactory;
-use Webauthn\AttestedCredentialData;
use Webauthn\AuthenticationExtensions\AuthenticationExtensionsClientInputs;
use Webauthn\AuthenticatorSelectionCriteria;
use Webauthn\PublicKeyCredentialCreationOptions;
@@ -89,7 +88,7 @@ public static function requestAttestation(User $user): string
*
* @param string $data The JSON-encoded data returned by the browser during the authentication flow
*
- * @return AttestedCredentialData|null
+ * @return ?PublicKeyCredentialSource
* @throws \Exception When something does not check out
* @since 4.2.0
*/
diff --git a/plugins/privacy/consents/src/Extension/Consents.php b/plugins/privacy/consents/src/Extension/Consents.php
index 05ffe252cbbc7..8cbf133eead33 100644
--- a/plugins/privacy/consents/src/Extension/Consents.php
+++ b/plugins/privacy/consents/src/Extension/Consents.php
@@ -32,7 +32,7 @@ final class Consents extends PrivacyPlugin
* This event will collect data for the core `#__privacy_consents` table
*
* @param RequestTable $request The request record being processed
- * @param User $user The user account associated with this request if available
+ * @param ?User $user The user account associated with this request if available
*
* @return \Joomla\Component\Privacy\Administrator\Export\Domain[]
*
diff --git a/plugins/privacy/contact/src/Extension/Contact.php b/plugins/privacy/contact/src/Extension/Contact.php
index 9ea1b6651d6fe..8f87bb5eb2022 100644
--- a/plugins/privacy/contact/src/Extension/Contact.php
+++ b/plugins/privacy/contact/src/Extension/Contact.php
@@ -34,7 +34,7 @@ final class Contact extends PrivacyPlugin
* - Contact custom fields
*
* @param RequestTable $request The request record being processed
- * @param User $user The user account associated with this request if available
+ * @param ?User $user The user account associated with this request if available
*
* @return \Joomla\Component\Privacy\Administrator\Export\Domain[]
*
diff --git a/plugins/privacy/content/src/Extension/Content.php b/plugins/privacy/content/src/Extension/Content.php
index 55a02de203f19..ec5615b26491c 100644
--- a/plugins/privacy/content/src/Extension/Content.php
+++ b/plugins/privacy/content/src/Extension/Content.php
@@ -33,7 +33,7 @@ final class Content extends PrivacyPlugin
* - Content custom fields
*
* @param RequestTable $request The request record being processed
- * @param User $user The user account associated with this request if available
+ * @param ?User $user The user account associated with this request if available
*
* @return \Joomla\Component\Privacy\Administrator\Export\Domain[]
*
diff --git a/plugins/privacy/message/src/Extension/Message.php b/plugins/privacy/message/src/Extension/Message.php
index 809805a25aa8a..e123260108d6f 100644
--- a/plugins/privacy/message/src/Extension/Message.php
+++ b/plugins/privacy/message/src/Extension/Message.php
@@ -32,7 +32,7 @@ final class Message extends PrivacyPlugin
* This event will collect data for the message table
*
* @param RequestTable $request The request record being processed
- * @param User $user The user account associated with this request if available
+ * @param ?User $user The user account associated with this request if available
*
* @return \Joomla\Component\Privacy\Administrator\Export\Domain[]
*
diff --git a/plugins/quickicon/phpversioncheck/src/Extension/PhpVersionCheck.php b/plugins/quickicon/phpversioncheck/src/Extension/PhpVersionCheck.php
index 3e5d3f9cbd80e..f282cca9a3f94 100644
--- a/plugins/quickicon/phpversioncheck/src/Extension/PhpVersionCheck.php
+++ b/plugins/quickicon/phpversioncheck/src/Extension/PhpVersionCheck.php
@@ -143,6 +143,10 @@ private function getPhpSupport()
'security' => '2024-12-08',
'eos' => '2025-12-08',
],
+ '8.3' => [
+ 'security' => '2025-11-23',
+ 'eos' => '2026-11-23',
+ ],
];
// Fill our return array with default values
diff --git a/plugins/system/actionlogs/src/Extension/ActionLogs.php b/plugins/system/actionlogs/src/Extension/ActionLogs.php
index 7ed0a7110399a..233f3ccf71a50 100644
--- a/plugins/system/actionlogs/src/Extension/ActionLogs.php
+++ b/plugins/system/actionlogs/src/Extension/ActionLogs.php
@@ -353,9 +353,9 @@ public static function renderActionlogsExtensions($extensions)
* On Saving extensions logging method
* Method is called when an extension is being saved
*
- * @param string $context The extension
- * @param Table $table DataBase Table object
- * @param boolean $isNew If the extension is new or not
+ * @param string $context The extension
+ * @param \Joomla\CMS\Table\Table $table DataBase Table object
+ * @param boolean $isNew If the extension is new or not
*
* @return void
*
diff --git a/plugins/system/fields/src/Extension/Fields.php b/plugins/system/fields/src/Extension/Fields.php
index 3f75cf9f36526..d8d31434f4e5b 100644
--- a/plugins/system/fields/src/Extension/Fields.php
+++ b/plugins/system/fields/src/Extension/Fields.php
@@ -219,7 +219,7 @@ public function onContentAfterDelete($context, $item): void
/**
* The user delete event.
*
- * @param \stdClass $user The context
+ * @param array $user The context
* @param boolean $success Is success
* @param string $msg The message
*
diff --git a/plugins/system/guidedtours/src/Extension/GuidedTours.php b/plugins/system/guidedtours/src/Extension/GuidedTours.php
index dd555c3aada73..4bcc765ad39fc 100644
--- a/plugins/system/guidedtours/src/Extension/GuidedTours.php
+++ b/plugins/system/guidedtours/src/Extension/GuidedTours.php
@@ -161,20 +161,20 @@ public function onBeforeCompileHead()
// Temporary solution to auto-start the welcome tour
if ($app->getInput()->getCmd('option', 'com_cpanel') === 'com_cpanel') {
- $tour = $this->getTour('joomla-welcome');
+ $factory = $app->bootComponent('com_guidedtours')->getMVCFactory();
- if ($tour->autostart) {
- $doc->addScriptOptions('com_guidedtours.autotour', $tour->id);
+ $tourModel = $factory->createModel(
+ 'Tour',
+ 'Administrator',
+ ['ignore_request' => true]
+ );
- // Set autostart to '0' to avoid it to autostart again
- $factory = $app->bootComponent('com_guidedtours')->getMVCFactory();
+ if ($tourModel->isAutostart('joomla-welcome')) {
+ $tour = $this->getTour('joomla-welcome');
- $tourModel = $factory->createModel(
- 'Tour',
- 'Administrator',
- ['ignore_request' => true]
- );
+ $doc->addScriptOptions('com_guidedtours.autotour', $tour->id);
+ // Set autostart to '0' to avoid it to autostart again
$tourModel->setAutostart($tour->id, 0);
}
}
diff --git a/plugins/system/webauthn/src/Authentication.php b/plugins/system/webauthn/src/Authentication.php
index 0839fab8d895f..ca346706215d9 100644
--- a/plugins/system/webauthn/src/Authentication.php
+++ b/plugins/system/webauthn/src/Authentication.php
@@ -212,7 +212,7 @@ public function getPubKeyCreationOptions(User $user): PublicKeyCredentialCreatio
*
* @param User $user The Joomla user to get the PK request options for
*
- * @return PublicKeyCredentialRequestOptions
+ * @return ?PublicKeyCredentialRequestOptions
*
* @throws \Exception
* @since 4.2.0
@@ -289,7 +289,7 @@ public function validateAssertionResponse(string $data, User $user): PublicKeyCr
*
* @param string $data The data
*
- * @return PublicKeyCredentialSource|null
+ * @return PublicKeyCredentialSource
*
* @throws \Exception
* @since 4.2.0
diff --git a/plugins/webservices/users/src/Extension/Users.php b/plugins/webservices/users/src/Extension/Users.php
index 28189cc7482cb..0f2ce1bb9d66a 100644
--- a/plugins/webservices/users/src/Extension/Users.php
+++ b/plugins/webservices/users/src/Extension/Users.php
@@ -12,6 +12,7 @@
use Joomla\CMS\Event\Application\BeforeApiRouteEvent;
use Joomla\CMS\Plugin\CMSPlugin;
+use Joomla\CMS\Router\ApiRouter;
use Joomla\Event\SubscriberInterface;
// phpcs:disable PSR1.Files.SideEffects
diff --git a/tests/Unit/Libraries/Cms/Updater/ConstraintCheckerTest.php b/tests/Unit/Libraries/Cms/Updater/ConstraintCheckerTest.php
index f7645ea828a20..57d05f22a3441 100644
--- a/tests/Unit/Libraries/Cms/Updater/ConstraintCheckerTest.php
+++ b/tests/Unit/Libraries/Cms/Updater/ConstraintCheckerTest.php
@@ -12,6 +12,7 @@
use Joomla\CMS\Factory;
use Joomla\CMS\Updater\ConstraintChecker;
+use Joomla\CMS\Version;
use Joomla\Database\DatabaseDriver;
use Joomla\Tests\Unit\UnitTestCase;
@@ -40,7 +41,7 @@ class ConstraintCheckerTest extends UnitTestCase
*/
protected function setUp(): void
{
- $this->checker = new ConstraintChecker();
+ $this->checker = new ConstraintChecker(Version::MAJOR_VERSION . '.x');
}
/**