diff --git a/administrator/components/com_media/config.xml b/administrator/components/com_media/config.xml
index 273091e1b5904..e712d9f750704 100644
--- a/administrator/components/com_media/config.xml
+++ b/administrator/components/com_media/config.xml
@@ -142,6 +142,6 @@
validate="rules"
component="com_media"
section="component"
- />
+ />
diff --git a/administrator/components/com_media/src/Provider/ProviderManager.php b/administrator/components/com_media/src/Provider/ProviderManager.php
index 8f2c38d228ba4..5b852e6567028 100644
--- a/administrator/components/com_media/src/Provider/ProviderManager.php
+++ b/administrator/components/com_media/src/Provider/ProviderManager.php
@@ -11,6 +11,7 @@
\defined('_JEXEC') or die;
+use Joomla\CMS\Language\Text;
use Joomla\Component\Media\Administrator\Adapter\AdapterInterface;
/**
@@ -96,7 +97,7 @@ public function getProvider($id)
{
if (!isset($this->providers[$id]))
{
- throw new \Exception("Media Provider not found");
+ throw new \Exception(Text::_('COM_MEDIA_ERROR_MEDIA_PROVIDER_NOT_FOUND'));
}
return $this->providers[$id];
@@ -119,14 +120,14 @@ public function getAdapter($name)
if ($account == null)
{
- throw new \Exception('Account was not set');
+ throw new \Exception(Text::_('COM_MEDIA_ERROR_ACCOUNT_NOT_SET'));
}
$adapters = $this->getProvider($provider)->getAdapters();
if (!isset($adapters[$account]))
{
- throw new \Exception("The account was not found");
+ throw new \Exception(Text::_('COM_MEDIA_ERROR_ACCOUNT_NOT_FOUND'));
}
return $adapters[$account];
diff --git a/administrator/components/com_media/src/Provider/ProviderManagerHelperTrait.php b/administrator/components/com_media/src/Provider/ProviderManagerHelperTrait.php
index fb178eddf30f3..7c95165602386 100644
--- a/administrator/components/com_media/src/Provider/ProviderManagerHelperTrait.php
+++ b/administrator/components/com_media/src/Provider/ProviderManagerHelperTrait.php
@@ -13,6 +13,7 @@
use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Factory;
+use Joomla\CMS\Language\Text;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\Component\Media\Administrator\Adapter\AdapterInterface;
use Joomla\Component\Media\Administrator\Event\MediaProviderEvent;
@@ -117,7 +118,7 @@ protected function resolveAdapterAndPath(String $path): array
if (!$this->getDefaultAdapterName())
{
- throw new \InvalidArgumentException('No adapter found');
+ throw new \InvalidArgumentException(Text::_('COM_MEDIA_ERROR_NO_ADAPTER_FOUND'));
}
// If we have less than 2 parts, we return a default adapter name
diff --git a/administrator/components/com_media/src/View/File/HtmlView.php b/administrator/components/com_media/src/View/File/HtmlView.php
index b01a6a1a069a5..1681758459c89 100644
--- a/administrator/components/com_media/src/View/File/HtmlView.php
+++ b/administrator/components/com_media/src/View/File/HtmlView.php
@@ -49,7 +49,7 @@ public function display($tpl = null)
if (empty($this->file->content))
{
// @todo error handling controller redirect files
- throw new \Exception('No content available!');
+ throw new \Exception(Text::_('COM_MEDIA_ERROR_NO_CONTENT_AVAILABLE'));
}
$this->addToolbar();
diff --git a/administrator/components/com_menus/forms/item_component.xml b/administrator/components/com_menus/forms/item_component.xml
index 96a176dbffa20..99ab1cc9880e6 100644
--- a/administrator/components/com_menus/forms/item_component.xml
+++ b/administrator/components/com_menus/forms/item_component.xml
@@ -42,7 +42,8 @@
type="radio"
label="COM_MENUS_ITEM_FIELD_MENU_TEXT_LABEL"
layout="joomla.form.field.radio.switcher"
- default="1" filter="integer"
+ default="1"
+ filter="integer"
>
diff --git a/administrator/components/com_privacy/services/provider.php b/administrator/components/com_privacy/services/provider.php
index 72ff9d6a97843..fc62cfaf46de2 100644
--- a/administrator/components/com_privacy/services/provider.php
+++ b/administrator/components/com_privacy/services/provider.php
@@ -9,10 +9,12 @@
defined('_JEXEC') or die;
+use Joomla\CMS\Component\Router\RouterFactoryInterface;
use Joomla\CMS\Dispatcher\ComponentDispatcherFactoryInterface;
use Joomla\CMS\Extension\ComponentInterface;
use Joomla\CMS\Extension\Service\Provider\ComponentDispatcherFactory;
use Joomla\CMS\Extension\Service\Provider\MVCFactory;
+use Joomla\CMS\Extension\Service\Provider\RouterFactory;
use Joomla\CMS\HTML\Registry;
use Joomla\CMS\MVC\Factory\MVCFactoryInterface;
use Joomla\Component\Privacy\Administrator\Extension\PrivacyComponent;
@@ -39,6 +41,7 @@ public function register(Container $container)
{
$container->registerServiceProvider(new MVCFactory('\\Joomla\\Component\\Privacy'));
$container->registerServiceProvider(new ComponentDispatcherFactory('\\Joomla\\Component\\Privacy'));
+ $container->registerServiceProvider(new RouterFactory('\\Joomla\\Component\\Privacy'));
$container->set(
ComponentInterface::class,
@@ -48,6 +51,7 @@ function (Container $container)
$component->setMVCFactory($container->get(MVCFactoryInterface::class));
$component->setRegistry($container->get(Registry::class));
+ $component->setRouterFactory($container->get(RouterFactoryInterface::class));
return $component;
}
diff --git a/administrator/components/com_privacy/src/Extension/PrivacyComponent.php b/administrator/components/com_privacy/src/Extension/PrivacyComponent.php
index 8a473a3536ea9..d270d19b49cc0 100644
--- a/administrator/components/com_privacy/src/Extension/PrivacyComponent.php
+++ b/administrator/components/com_privacy/src/Extension/PrivacyComponent.php
@@ -11,6 +11,8 @@
\defined('JPATH_PLATFORM') or die;
+use Joomla\CMS\Component\Router\RouterServiceInterface;
+use Joomla\CMS\Component\Router\RouterServiceTrait;
use Joomla\CMS\Extension\BootableExtensionInterface;
use Joomla\CMS\Extension\MVCComponent;
use Joomla\CMS\HTML\HTMLRegistryAwareTrait;
@@ -22,9 +24,10 @@
*
* @since 4.0.0
*/
-class PrivacyComponent extends MVCComponent implements BootableExtensionInterface
+class PrivacyComponent extends MVCComponent implements BootableExtensionInterface, RouterServiceInterface
{
use HTMLRegistryAwareTrait;
+ use RouterServiceTrait;
/**
* Booting the extension. This is the function to set up the environment of the extension like
diff --git a/administrator/components/com_redirect/forms/link.xml b/administrator/components/com_redirect/forms/link.xml
index 28eda985d6b10..12b8f37dd99cc 100644
--- a/administrator/components/com_redirect/forms/link.xml
+++ b/administrator/components/com_redirect/forms/link.xml
@@ -8,7 +8,7 @@
default="0"
readonly="true"
class="readonly"
- />
+ />
+ />
getTemplate())
{
$app = Factory::getApplication();
- $path = $this->getBasePath();;
+ $path = $this->getBasePath();
$fileName = File::makeSafe($file['name']);
$err = null;
diff --git a/administrator/components/com_users/config.xml b/administrator/components/com_users/config.xml
index 076712da0eaaa..bd592e9b4d0d9 100644
--- a/administrator/components/com_users/config.xml
+++ b/administrator/components/com_users/config.xml
@@ -264,23 +264,23 @@
-
diff --git a/administrator/language/en-GB/com_installer.ini b/administrator/language/en-GB/com_installer.ini
index cbddc1fa23709..612558a268461 100644
--- a/administrator/language/en-GB/com_installer.ini
+++ b/administrator/language/en-GB/com_installer.ini
@@ -156,7 +156,7 @@ COM_INSTALLER_MSG_INSTALL_WARNINSTALLZLIB="The installer can't continue until Zl
COM_INSTALLER_MSG_LANGUAGES_CANT_FIND_REMOTE_MANIFEST="The installer can't get the URL to the XML manifest file of the %s language."
COM_INSTALLER_MSG_LANGUAGES_CANT_FIND_REMOTE_PACKAGE="The installer can't get the URL to the remote %s language."
COM_INSTALLER_MSG_LANGUAGES_NOLANGUAGES="There are no available languages to install at the moment. Please select the "Find languages" button to check for updates on the Joomla! Languages server. You will need an internet connection for this to work."
-COM_INSTALLER_MSG_LANGUAGES_TRY_LATER="Try again later or contact the language team coordinator."
+COM_INSTALLER_MSG_LANGUAGES_TRY_LATER="Try again later or contact the language team coordinator."
COM_INSTALLER_MSG_N_DATABASE_ERROR_PANEL="%d Database Problems Found."
COM_INSTALLER_MSG_N_DATABASE_ERROR_PANEL_1="One Database Problem Found."
COM_INSTALLER_MSG_UPDATE_ERROR="Error updating %s."
@@ -176,7 +176,7 @@ COM_INSTALLER_MSG_UPDATESITES_REBUILD_SUCCESS="Update sites have been rebuilt fr
COM_INSTALLER_MSG_UPDATESITES_REBUILD_WARNING="Update sites have been rebuilt. No extension with updates sites discovered."
COM_INSTALLER_MSG_WARNING_NO_LANGUAGES_UPDATESERVER="The update table is not up to date. Please rebuild your update server table"
COM_INSTALLER_MSG_WARNINGFURTHERINFO="Further information on warnings"
-COM_INSTALLER_MSG_WARNINGFURTHERINFODESC="For more information see the Joomla! Documentation Site."
+COM_INSTALLER_MSG_WARNINGFURTHERINFODESC="For more information see the Joomla! Documentation Site."
COM_INSTALLER_MSG_WARNINGS_FILEUPLOADISDISABLEDDESC="File uploads are required to upload extensions with the installer."
COM_INSTALLER_MSG_WARNINGS_FILEUPLOADSDISABLED="File uploads disabled."
COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTSET="The Joomla temporary folder is not set."
diff --git a/administrator/language/en-GB/com_languages.ini b/administrator/language/en-GB/com_languages.ini
index b3a3ad372aa82..c6c66ef2880ed 100644
--- a/administrator/language/en-GB/com_languages.ini
+++ b/administrator/language/en-GB/com_languages.ini
@@ -69,20 +69,22 @@ COM_LANGUAGES_MULTILANGSTATUS_CONTENT_LANGUAGE_MISSING="The %s
COM_LANGUAGES_MULTILANGSTATUS_CONTENT_LANGUAGE_PUBLISHED="Published Content Languages"
COM_LANGUAGES_MULTILANGSTATUS_CONTENT_LANGUAGE_SEF_MISSING="The \"URL Language Code\" is missing for the %s Content Language. The multilingual feature may not function properly or the site may not be reachable!"
COM_LANGUAGES_MULTILANGSTATUS_CONTENT_LANGUAGE_TRASHED="The %s Content Language is trashed. The language will not display on the site."
+COM_LANGUAGES_MULTILANGSTATUS_CONTENT_TABLE_CAPTION="Table of the status for each content language."
COM_LANGUAGES_MULTILANGSTATUS_DEFAULT_HOME_MODULE_PUBLISHED="The menu module displaying the Home menu item set to language "All" should not be published."
COM_LANGUAGES_MULTILANGSTATUS_ERROR_CONTENT_LANGUAGE="A Default Home page is assigned to the %s Content Language although a Site Language for this Content Language is not installed or enabled AND/OR the Content Language is not published. The language will not display on the site."
COM_LANGUAGES_MULTILANGSTATUS_ERROR_DEFAULT_CONTENT_LANGUAGE="The Content Language for the %s default Site Language is unpublished or does not exist. The multilingual feature may not function properly or the site may not be reachable!"
COM_LANGUAGES_MULTILANGSTATUS_ERROR_LANGUAGE_TAG="The Content Language tag %s does not have a matching Site Language tag. Check that the Site Language is installed and enabled AND the correct language tag is used for the Content Language. Example: for English (en-GB) both tags should be 'en-GB'. The language will not display on the site."
-COM_LANGUAGES_MULTILANGSTATUS_HOME_UNPUBLISHED="The Default Home page assigned to the %s Content Language is unpublished. The language will not display on the site."
COM_LANGUAGES_MULTILANGSTATUS_HOMES_PUBLISHED="Published Default Home pages"
COM_LANGUAGES_MULTILANGSTATUS_HOMES_PUBLISHED_ALL="1 assigned to language 'All'."
COM_LANGUAGES_MULTILANGSTATUS_HOMES_PUBLISHED_INCLUDING_ALL="Published Default Home pages (including 1 assigned to language "All")."
+COM_LANGUAGES_MULTILANGSTATUS_HOME_UNPUBLISHED="The Default Home page assigned to the %s Content Language is unpublished. The language will not display on the site."
COM_LANGUAGES_MULTILANGSTATUS_LANGSWITCHER_PUBLISHED="Published Language Switcher Modules."
COM_LANGUAGES_MULTILANGSTATUS_LANGSWITCHER_UNPUBLISHED="At least one Language Switcher module set to language "All" has to be published. Otherwise, it will be impossible to switch languages on the site. Disregard this message if you do not use a language switcher module but direct links."
COM_LANGUAGES_MULTILANGSTATUS_LANGUAGEFILTER="Language Filter Plugin"
COM_LANGUAGES_MULTILANGSTATUS_LANGUAGEFILTER_DISABLED="The Language Filter plugin is not enabled although one or more Language Switcher modules AND/OR one or more specific Content language Default Home pages are published."
COM_LANGUAGES_MULTILANGSTATUS_NONE="This site is not set as a multilingual site."
COM_LANGUAGES_MULTILANGSTATUS_SITE_LANG_PUBLISHED="Enabled Site Languages"
+COM_LANGUAGES_MULTILANGSTATUS_TABLE_CAPTION="Table of the multilingual status."
COM_LANGUAGES_MULTILANGSTATUS_USELESS_HOMES="This site is not set as a multilingual site. Note: at least one Default Home page is assigned to a Content Language. This will not break a monolingual site but is useless."
COM_LANGUAGES_N_ITEMS_DELETED="%d Content Languages deleted."
COM_LANGUAGES_N_ITEMS_DELETED_1="Content Language deleted."
diff --git a/administrator/language/en-GB/com_media.ini b/administrator/language/en-GB/com_media.ini
index d23c6c8f904f5..1a000702e8451 100644
--- a/administrator/language/en-GB/com_media.ini
+++ b/administrator/language/en-GB/com_media.ini
@@ -24,6 +24,11 @@ COM_MEDIA_DELETE_SUCCESS="Item deleted."
COM_MEDIA_DROP_FILE="Drop file(s) to Upload"
COM_MEDIA_EDIT="Media Edit"
COM_MEDIA_ERROR="An error occurred."
+COM_MEDIA_ERROR_ACCOUNT_NOT_FOUND="The account was not found"
+COM_MEDIA_ERROR_ACCOUNT_NOT_SET="Account was not set."
+COM_MEDIA_ERROR_MEDIA_PROVIDER_NOT_FOUND="Media Provider not found."
+COM_MEDIA_ERROR_NO_ADAPTER_FOUND="No adapter found."
+COM_MEDIA_ERROR_NO_CONTENT_AVAILABLE="No content available!"
COM_MEDIA_ERROR_NO_PROVIDERS="No filesystem providers have been found. Please enable at least one filesystem plugin."
COM_MEDIA_ERROR_NOT_AUTHENTICATED="You are not authenticated. Please login."
COM_MEDIA_ERROR_NOT_AUTHORIZED="You are not authorised"
diff --git a/administrator/language/en-GB/joomla.ini b/administrator/language/en-GB/joomla.ini
index 5f96f9bbab9ec..e7ec82863bffc 100644
--- a/administrator/language/en-GB/joomla.ini
+++ b/administrator/language/en-GB/joomla.ini
@@ -202,6 +202,7 @@ JFIELD_ALIAS_LABEL="Alias"
JFIELD_ALIAS_PLACEHOLDER="Auto-generate from title"
JFIELD_ALT_COMPONENT_LAYOUT_DESC="Use a layout from the supplied component view or overrides in the templates."
JFIELD_ALT_LAYOUT_LABEL="Layout"
+; Deprecated, will be removed with 5.0
JFIELD_ALT_MODULE_LAYOUT_DESC="Use a layout from the supplied module or overrides in the templates."
JFIELD_ALT_PAGE_TITLE_DESC="An optional alternative page title to set that will change the TITLE tag in the HTML output."
JFIELD_ALT_PAGE_TITLE_LABEL="Alternative Page Title"
@@ -645,7 +646,7 @@ JGLOBAL_SHOW_READMORE_LABEL=""Read More" Link"
JGLOBAL_SHOW_READMORE_LIMIT_DESC="Set a limit of number of characters in Article Title to show in Read More button."
JGLOBAL_SHOW_READMORE_LIMIT_LABEL="Read More Limit (characters)"
JGLOBAL_SHOW_READMORE_TITLE_DESC="If set to show the title of the Article will be shown on the Read More button."
-JGLOBAL_SHOW_READMORE_TITLE_LABEL="Title with Read More"
+JGLOBAL_SHOW_READMORE_TITLE_LABEL="Read More with Title"
JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC="Show or hide the subcategories descriptions."
JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL="Subcategories Descriptions"
JGLOBAL_SHOW_SUBCATEGORY_CONTENT_DESC="If None, only articles from this category will show. If a number, all articles from the category and the subcategories up to and including that level will show in the blog."
diff --git a/administrator/modules/mod_custom/mod_custom.xml b/administrator/modules/mod_custom/mod_custom.xml
index 8da47896dc3fc..1eb2bd8c21539 100644
--- a/administrator/modules/mod_custom/mod_custom.xml
+++ b/administrator/modules/mod_custom/mod_custom.xml
@@ -44,7 +44,7 @@
type="modulelayout"
label="JFIELD_ALT_LAYOUT_LABEL"
class="form-select"
- />
+ />
+ />
+ />
+ />
+ />
diff --git a/administrator/modules/mod_loginsupport/mod_loginsupport.xml b/administrator/modules/mod_loginsupport/mod_loginsupport.xml
index 36beb6c3c0452..cac87888b3c9e 100644
--- a/administrator/modules/mod_loginsupport/mod_loginsupport.xml
+++ b/administrator/modules/mod_loginsupport/mod_loginsupport.xml
@@ -55,18 +55,6 @@
class="form-select"
/>
-
-
-
-
-
+
+
+
+
+
+ />
+ />
+ />
diff --git a/administrator/modules/mod_sampledata/mod_sampledata.xml b/administrator/modules/mod_sampledata/mod_sampledata.xml
index 0aff7ad8ee3d7..5f948a4f5f24c 100644
--- a/administrator/modules/mod_sampledata/mod_sampledata.xml
+++ b/administrator/modules/mod_sampledata/mod_sampledata.xml
@@ -30,7 +30,6 @@
name="layout"
type="modulelayout"
label="JFIELD_ALT_LAYOUT_LABEL"
- description="JFIELD_ALT_MODULE_LAYOUT_DESC"
class="form-select"
validate="moduleLayout"
/>
diff --git a/administrator/modules/mod_title/mod_title.xml b/administrator/modules/mod_title/mod_title.xml
index 9fc51999312e1..0cca740153613 100644
--- a/administrator/modules/mod_title/mod_title.xml
+++ b/administrator/modules/mod_title/mod_title.xml
@@ -27,7 +27,7 @@
label="JFIELD_ALT_LAYOUT_LABEL"
class="form-select"
validate="moduleLayout"
- />
+ />
+ />
+ />
{}, false);
@@ -127,7 +135,7 @@ if (container) {
const ajaxOptions = {
url,
method: 'POST',
- data: getOrderData(rows, inputRows, dragElementIndex, dropElementIndex).join('&'),
+ data: `${new URLSearchParams(formData).toString()}&${getOrderData(rows, inputRows, dragElementIndex, dropElementIndex).join('&')}`,
perform: true,
};
diff --git a/build/media_source/system/js/fields/joomla-media-select.w-c.es6.js b/build/media_source/system/js/fields/joomla-media-select.w-c.es6.js
index f50ef67639081..eb57c56e50061 100644
--- a/build/media_source/system/js/fields/joomla-media-select.w-c.es6.js
+++ b/build/media_source/system/js/fields/joomla-media-select.w-c.es6.js
@@ -197,8 +197,7 @@ const insertAsImage = async (media, editor, fieldClass) => {
Joomla.selectedMediaFile.width = 0;
}
}
- editor.value = `${Joomla.selectedMediaFile.url}#joomlaImage://${media.path.replace(':', '')}?width=${Joomla.selectedMediaFile.width}&height=${Joomla.selectedMediaFile.height}`;
- fieldClass.updatePreview();
+ fieldClass.setValue(`${Joomla.selectedMediaFile.url}#joomlaImage://${media.path.replace(':', '')}?width=${Joomla.selectedMediaFile.width}&height=${Joomla.selectedMediaFile.height}`);
}
}
};
@@ -256,9 +255,8 @@ const insertAsOther = (media, editor, fieldClass, type) => {
Joomla.editors.instances[editor].replaceSelection(outputText);
} else {
- editor.value = Joomla.selectedMediaFile.url;
fieldClass.givenType = type;
- fieldClass.updatePreview();
+ fieldClass.setValue(Joomla.selectedMediaFile.url);
}
}
};
diff --git a/components/com_contact/tmpl/category/default.xml b/components/com_contact/tmpl/category/default.xml
index d46edb7fda2ef..b398b62dc3503 100644
--- a/components/com_contact/tmpl/category/default.xml
+++ b/components/com_contact/tmpl/category/default.xml
@@ -326,22 +326,22 @@
-
-
-
-
-
-
-
-
-
-
+ name="contacts_display_num"
+ type="list"
+ label="COM_CONTACT_NUMBER_CONTACTS_LIST_LABEL"
+ useglobal="true"
+ validate="options"
+ >
+
+
+
+
+
+
+
+
+
+
-
diff --git a/components/com_content/tmpl/categories/default.xml b/components/com_content/tmpl/categories/default.xml
index e11f0c42b7527..1435e7d84372e 100644
--- a/components/com_content/tmpl/categories/default.xml
+++ b/components/com_content/tmpl/categories/default.xml
@@ -12,7 +12,7 @@