Click to expand the diff!
```diff
diff --git a/administrator/components/com_users/src/Controller/UserController.php b/administrator/components/com_users/src/Controller/UserController.php
index c4a884ddc068..c319bf693dbf 100644
--- a/administrator/components/com_users/src/Controller/UserController.php
+++ b/administrator/components/com_users/src/Controller/UserController.php
@@ -117,6 +117,11 @@ public function save($key = null, $urlVar = null)
$this->setRedirect($return);
}
+ // If a user has to renew a password but has no permission for users
+ if (!$this->app->getIdentity()->authorise('core.admin', 'com_users')) {
+ $this->setRedirect('index.php');
+ }
+
return $result;
}
diff --git a/build/media_source/system/js/fields/joomla-field-media.w-c.es6.js b/build/media_source/system/js/fields/joomla-field-media.w-c.es6.js
index 0374f3273b53..aff9cae4f8bc 100644
--- a/build/media_source/system/js/fields/joomla-field-media.w-c.es6.js
+++ b/build/media_source/system/js/fields/joomla-field-media.w-c.es6.js
@@ -135,12 +135,7 @@ class JoomlaFieldMedia extends HTMLElement {
this.inputElement.removeAttribute('readonly');
this.inputElement.addEventListener('change', this.validateValue);
-
- // Force input revalidation
- (async () => {
- await this.validateValue({ target: this.inputElement });
- this.updatePreview();
- })();
+ this.updatePreview();
}
disconnectedCallback() {
diff --git a/language/en-GB/com_contact.ini b/language/en-GB/com_contact.ini
index 5c5a66bdb76c..aca7f2a7bf86 100644
--- a/language/en-GB/com_contact.ini
+++ b/language/en-GB/com_contact.ini
@@ -31,7 +31,8 @@ COM_CONTACT_EMAIL_THANKS="Thank you for your email."
COM_CONTACT_ENQUIRY_SUBJECT="{SITENAME}: {SUBJECT}"
COM_CONTACT_ENQUIRY_TEXT="This is an enquiry email via {URL} from:\n{NAME} <{EMAIL}>\n\n{BODY}\n\n{CUSTOMFIELDS}"
COM_CONTACT_ERROR_CONTACT_NOT_FOUND="Contact not found"
-COM_CONTACT_ERROR_UNIQUE_ALIAS="Another Contact from this category has the same alias (remember it may be a trashed item)."
+COM_CONTACT_ERROR_UNIQUE_ALIAS="Another Contact in this category has the same alias."
+COM_CONTACT_ERROR_UNIQUE_ALIAS_TRASHED="A trashed Contact in this category has the same alias."
COM_CONTACT_FAX="Fax"
COM_CONTACT_FAX_NUMBER="Fax: %s"
COM_CONTACT_FIELD_CREATED_BY_ALIAS_LABEL="Created By Alias"
diff --git a/language/en-GB/com_content.ini b/language/en-GB/com_content.ini
index 96d833e3b952..d1a9f8e1a9f7 100644
--- a/language/en-GB/com_content.ini
+++ b/language/en-GB/com_content.ini
@@ -26,6 +26,8 @@ COM_CONTENT_ERROR_ARTICLE_NOT_FOUND="Article not found"
COM_CONTENT_ERROR_LOGIN_TO_VIEW_ARTICLE="Please login to view the article"
COM_CONTENT_ERROR_PARENT_CATEGORY_NOT_FOUND="Parent category not found"
COM_CONTENT_ERROR_PRINT_POPUP="Sorry, Joomla 4 no longer supports print_popup"
+COM_CONTENT_ERROR_UNIQUE_ALIAS="Another Article in this category has the same alias."
+COM_CONTENT_ERROR_UNIQUE_ALIAS_TRASHED="A trashed Article in this category has the same alias."
COM_CONTENT_FEED_READMORE="Read More …"
COM_CONTENT_FIELD_ARTICLETEXT_LABEL="Article Text"
COM_CONTENT_FIELD_FEATURED_DOWN_LABEL="Finish Featured"
diff --git a/language/en-GB/lib_joomla.ini b/language/en-GB/lib_joomla.ini
index d08b985c5781..9d4e6434a179 100644
--- a/language/en-GB/lib_joomla.ini
+++ b/language/en-GB/lib_joomla.ini
@@ -110,7 +110,8 @@ JLIB_DATABASE_ERROR_ADAPTER_MYSQLI="The MySQL adapter 'mysqli' is not available.
JLIB_DATABASE_ERROR_ARTICLE_UNIQUE_ALIAS="Another article from this category has the same alias (remember it may be a trashed item)."
JLIB_DATABASE_ERROR_BIND_FAILED_INVALID_SOURCE_ARGUMENT="%s: :bind failed. Invalid source argument."
JLIB_DATABASE_ERROR_CATEGORY_REQUIRED="Category is required."
-JLIB_DATABASE_ERROR_CATEGORY_UNIQUE_ALIAS="Another category with the same parent category has the same alias (remember it may be a trashed item)."
+JLIB_DATABASE_ERROR_CATEGORY_UNIQUE_ALIAS="Another category with the same parent category has the same alias."
+JLIB_DATABASE_ERROR_CATEGORY_UNIQUE_ALIAS_TRASHED="A trashed category with the same parent category has the same alias."
JLIB_DATABASE_ERROR_CHECK_FAILED="%s: :check Failed - %s"
JLIB_DATABASE_ERROR_CHECKIN_FAILED="%s: :check-in failed - %s"
JLIB_DATABASE_ERROR_CHECKOUT_FAILED="%s: :check-out failed - %s"
@@ -148,8 +149,9 @@ JLIB_DATABASE_ERROR_MENU_HOME_NOT_COMPONENT="The home menu item must be a compon
JLIB_DATABASE_ERROR_MENU_HOME_NOT_UNIQUE_IN_MENU="A menu should have only one Default home."
JLIB_DATABASE_ERROR_MENU_ROOT_ALIAS_COMPONENT="A first level menu item alias can't be 'component'."
JLIB_DATABASE_ERROR_MENU_ROOT_ALIAS_FOLDER="A first level menu item alias can't be '%s' because '%s' is a sub-folder of your Joomla installation folder."
-JLIB_DATABASE_ERROR_MENU_UNIQUE_ALIAS="The alias %1$s is already being used by %2$s menu item in the %3$s menu (remember it may be a trashed item)."
+JLIB_DATABASE_ERROR_MENU_UNIQUE_ALIAS="The alias %1$s is already being used by the %2$s menu item in the %3$s menu."
JLIB_DATABASE_ERROR_MENU_UNIQUE_ALIAS_ROOT="Another menu item has the same alias in Root (remember it may be a trashed item). Root is the top level parent."
+JLIB_DATABASE_ERROR_MENU_UNIQUE_ALIAS_TRASHED="The alias %1$s is already being used by the trashed %2$s menu item in the %3$s menu."
JLIB_DATABASE_ERROR_MENU_UNPUBLISH_DEFAULT_HOME="Can't unpublish default home."
JLIB_DATABASE_ERROR_MENUTYPE="Some menu items or some menu modules related to this menutype are checked out by another user or the default menu item is in this menu."
JLIB_DATABASE_ERROR_MENUTYPE_CHECKOUT="The user checking out does not match the user who checked out this menu and/or its linked menu module."
diff --git a/libraries/src/MVC/Model/ListModel.php b/libraries/src/MVC/Model/ListModel.php
index 98f3be1df018..37cf9df2b797 100644
--- a/libraries/src/MVC/Model/ListModel.php
+++ b/libraries/src/MVC/Model/ListModel.php
@@ -540,7 +540,7 @@ protected function populateState($ordering = null, $direction = null)
break;
case 'direction':
- if (!\in_array(strtoupper($value), array('ASC', 'DESC', ''))) {
+ if ($value && (!\in_array(strtoupper($value), array('ASC', 'DESC', '')))) {
$value = $direction;
}
break;
```
New language relevant PR in upstream repo: https://github.com/joomla/joomla-cms/pull/39119 Here are the upstream changes:
Click to expand the diff!
```diff diff --git a/administrator/components/com_users/src/Controller/UserController.php b/administrator/components/com_users/src/Controller/UserController.php index c4a884ddc068..c319bf693dbf 100644 --- a/administrator/components/com_users/src/Controller/UserController.php +++ b/administrator/components/com_users/src/Controller/UserController.php @@ -117,6 +117,11 @@ public function save($key = null, $urlVar = null) $this->setRedirect($return); } + // If a user has to renew a password but has no permission for users + if (!$this->app->getIdentity()->authorise('core.admin', 'com_users')) { + $this->setRedirect('index.php'); + } + return $result; } diff --git a/build/media_source/system/js/fields/joomla-field-media.w-c.es6.js b/build/media_source/system/js/fields/joomla-field-media.w-c.es6.js index 0374f3273b53..aff9cae4f8bc 100644 --- a/build/media_source/system/js/fields/joomla-field-media.w-c.es6.js +++ b/build/media_source/system/js/fields/joomla-field-media.w-c.es6.js @@ -135,12 +135,7 @@ class JoomlaFieldMedia extends HTMLElement { this.inputElement.removeAttribute('readonly'); this.inputElement.addEventListener('change', this.validateValue); - - // Force input revalidation - (async () => { - await this.validateValue({ target: this.inputElement }); - this.updatePreview(); - })(); + this.updatePreview(); } disconnectedCallback() { diff --git a/language/en-GB/com_contact.ini b/language/en-GB/com_contact.ini index 5c5a66bdb76c..aca7f2a7bf86 100644 --- a/language/en-GB/com_contact.ini +++ b/language/en-GB/com_contact.ini @@ -31,7 +31,8 @@ COM_CONTACT_EMAIL_THANKS="Thank you for your email." COM_CONTACT_ENQUIRY_SUBJECT="{SITENAME}: {SUBJECT}" COM_CONTACT_ENQUIRY_TEXT="This is an enquiry email via {URL} from:\n{NAME} <{EMAIL}>\n\n{BODY}\n\n{CUSTOMFIELDS}" COM_CONTACT_ERROR_CONTACT_NOT_FOUND="Contact not found" -COM_CONTACT_ERROR_UNIQUE_ALIAS="Another Contact from this category has the same alias (remember it may be a trashed item)." +COM_CONTACT_ERROR_UNIQUE_ALIAS="Another Contact in this category has the same alias." +COM_CONTACT_ERROR_UNIQUE_ALIAS_TRASHED="A trashed Contact in this category has the same alias." COM_CONTACT_FAX="Fax" COM_CONTACT_FAX_NUMBER="Fax: %s" COM_CONTACT_FIELD_CREATED_BY_ALIAS_LABEL="Created By Alias" diff --git a/language/en-GB/com_content.ini b/language/en-GB/com_content.ini index 96d833e3b952..d1a9f8e1a9f7 100644 --- a/language/en-GB/com_content.ini +++ b/language/en-GB/com_content.ini @@ -26,6 +26,8 @@ COM_CONTENT_ERROR_ARTICLE_NOT_FOUND="Article not found" COM_CONTENT_ERROR_LOGIN_TO_VIEW_ARTICLE="Please login to view the article" COM_CONTENT_ERROR_PARENT_CATEGORY_NOT_FOUND="Parent category not found" COM_CONTENT_ERROR_PRINT_POPUP="Sorry, Joomla 4 no longer supports print_popup" +COM_CONTENT_ERROR_UNIQUE_ALIAS="Another Article in this category has the same alias." +COM_CONTENT_ERROR_UNIQUE_ALIAS_TRASHED="A trashed Article in this category has the same alias." COM_CONTENT_FEED_READMORE="Read More …" COM_CONTENT_FIELD_ARTICLETEXT_LABEL="Article Text" COM_CONTENT_FIELD_FEATURED_DOWN_LABEL="Finish Featured" diff --git a/language/en-GB/lib_joomla.ini b/language/en-GB/lib_joomla.ini index d08b985c5781..9d4e6434a179 100644 --- a/language/en-GB/lib_joomla.ini +++ b/language/en-GB/lib_joomla.ini @@ -110,7 +110,8 @@ JLIB_DATABASE_ERROR_ADAPTER_MYSQLI="The MySQL adapter 'mysqli' is not available. JLIB_DATABASE_ERROR_ARTICLE_UNIQUE_ALIAS="Another article from this category has the same alias (remember it may be a trashed item)." JLIB_DATABASE_ERROR_BIND_FAILED_INVALID_SOURCE_ARGUMENT="%s: :bind failed. Invalid source argument." JLIB_DATABASE_ERROR_CATEGORY_REQUIRED="Category is required." -JLIB_DATABASE_ERROR_CATEGORY_UNIQUE_ALIAS="Another category with the same parent category has the same alias (remember it may be a trashed item)." +JLIB_DATABASE_ERROR_CATEGORY_UNIQUE_ALIAS="Another category with the same parent category has the same alias." +JLIB_DATABASE_ERROR_CATEGORY_UNIQUE_ALIAS_TRASHED="A trashed category with the same parent category has the same alias." JLIB_DATABASE_ERROR_CHECK_FAILED="%s: :check Failed - %s" JLIB_DATABASE_ERROR_CHECKIN_FAILED="%s: :check-in failed - %s" JLIB_DATABASE_ERROR_CHECKOUT_FAILED="%s: :check-out failed - %s" @@ -148,8 +149,9 @@ JLIB_DATABASE_ERROR_MENU_HOME_NOT_COMPONENT="The home menu item must be a compon JLIB_DATABASE_ERROR_MENU_HOME_NOT_UNIQUE_IN_MENU="A menu should have only one Default home." JLIB_DATABASE_ERROR_MENU_ROOT_ALIAS_COMPONENT="A first level menu item alias can't be 'component'." JLIB_DATABASE_ERROR_MENU_ROOT_ALIAS_FOLDER="A first level menu item alias can't be '%s' because '%s' is a sub-folder of your Joomla installation folder." -JLIB_DATABASE_ERROR_MENU_UNIQUE_ALIAS="The alias %1$s is already being used by %2$s menu item in the %3$s menu (remember it may be a trashed item)." +JLIB_DATABASE_ERROR_MENU_UNIQUE_ALIAS="The alias %1$s is already being used by the %2$s menu item in the %3$s menu." JLIB_DATABASE_ERROR_MENU_UNIQUE_ALIAS_ROOT="Another menu item has the same alias in Root (remember it may be a trashed item). Root is the top level parent." +JLIB_DATABASE_ERROR_MENU_UNIQUE_ALIAS_TRASHED="The alias %1$s is already being used by the trashed %2$s menu item in the %3$s menu." JLIB_DATABASE_ERROR_MENU_UNPUBLISH_DEFAULT_HOME="Can't unpublish default home." JLIB_DATABASE_ERROR_MENUTYPE="Some menu items or some menu modules related to this menutype are checked out by another user or the default menu item is in this menu." JLIB_DATABASE_ERROR_MENUTYPE_CHECKOUT="The user checking out does not match the user who checked out this menu and/or its linked menu module." diff --git a/libraries/src/MVC/Model/ListModel.php b/libraries/src/MVC/Model/ListModel.php index 98f3be1df018..37cf9df2b797 100644 --- a/libraries/src/MVC/Model/ListModel.php +++ b/libraries/src/MVC/Model/ListModel.php @@ -540,7 +540,7 @@ protected function populateState($ordering = null, $direction = null) break; case 'direction': - if (!\in_array(strtoupper($value), array('ASC', 'DESC', ''))) { + if ($value && (!\in_array(strtoupper($value), array('ASC', 'DESC', '')))) { $value = $direction; } break; ```