diff --git a/administrator/components/com_admin/sql/updates/mysql/4.3.0-2023-02-15.sql b/administrator/components/com_admin/sql/updates/mysql/4.3.0-2023-02-15.sql index 6f26fe562f031..c1ed70c581d76 100644 --- a/administrator/components/com_admin/sql/updates/mysql/4.3.0-2023-02-15.sql +++ b/administrator/components/com_admin/sql/updates/mysql/4.3.0-2023-02-15.sql @@ -148,7 +148,7 @@ INSERT IGNORE INTO `#__guidedtour_steps` (`id`, `tour_id`, `title`, `published`, (60, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_DESCRIPTION', 60, 'bottom', '.button-new', 2, 1, 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), (61, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_DESCRIPTION', 61, 'bottom', '#jform_name', 2, 2, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), (62, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_DESCRIPTION', 62, 'bottom', '#jform_alias', 2, 2, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), -(63, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DESCRIPTION_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DESCRIPTION_DESCRIPTION', 63, 'bottom', '#jform_description,#jform_description_ifr', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), +(63, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_DESCRIPTION', 63, 'bottom', '.col-lg-9', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), (64, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_DESCRIPTION', 64, 'bottom', '#jform_state', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), (65, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_DESCRIPTION', 65, 'top', 'joomla-field-fancy-select .choices[data-type=select-one]', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), (66, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_DESCRIPTION', 66, 'bottom', '#jform_sticky1', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), diff --git a/administrator/components/com_admin/sql/updates/mysql/4.3.0-2023-03-31.sql b/administrator/components/com_admin/sql/updates/mysql/4.3.0-2023-03-31.sql new file mode 100644 index 0000000000000..5678a50187bc4 --- /dev/null +++ b/administrator/components/com_admin/sql/updates/mysql/4.3.0-2023-03-31.sql @@ -0,0 +1,3 @@ +UPDATE `#__guidedtour_steps` +SET `title` = 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_TITLE', `description` = 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_DESCRIPTION', `target` = '.col-lg-9' +WHERE `id` = 63; diff --git a/administrator/components/com_admin/sql/updates/postgresql/4.3.0-2023-02-15.sql b/administrator/components/com_admin/sql/updates/postgresql/4.3.0-2023-02-15.sql index ed81a7c4142f8..76453da411598 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/4.3.0-2023-02-15.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/4.3.0-2023-02-15.sql @@ -152,7 +152,7 @@ INSERT INTO "#__guidedtour_steps" ("id", "tour_id", "title", "published", "descr (60, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_DESCRIPTION', 60, 'bottom', '.button-new', 2, 1, 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, '*'), (61, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_DESCRIPTION', 61, 'bottom', '#jform_name', 2, 2, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, '*'), (62, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_DESCRIPTION', 62, 'bottom', '#jform_alias', 2, 2, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, '*'), -(63, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DESCRIPTION_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DESCRIPTION_DESCRIPTION', 63, 'bottom', '#jform_description,#jform_description_ifr', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, '*'), +(63, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_DESCRIPTION', 63, 'bottom', '.col-lg-9', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, '*'), (64, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_DESCRIPTION', 64, 'bottom', '#jform_state', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, '*'), (65, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_DESCRIPTION', 65, 'top', 'joomla-field-fancy-select .choices[data-type=select-one]', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, '*'), (66, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_DESCRIPTION', 66, 'bottom', '#jform_sticky1', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, '*'), diff --git a/administrator/components/com_admin/sql/updates/postgresql/4.3.0-2023-03-31.sql b/administrator/components/com_admin/sql/updates/postgresql/4.3.0-2023-03-31.sql new file mode 100644 index 0000000000000..3c512404de503 --- /dev/null +++ b/administrator/components/com_admin/sql/updates/postgresql/4.3.0-2023-03-31.sql @@ -0,0 +1,3 @@ +UPDATE "#__guidedtour_steps" +SET "title" = 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_TITLE', "description" = 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_DESCRIPTION', "target" = '.col-lg-9' +WHERE "id" = 63; diff --git a/administrator/components/com_admin/src/Model/SysinfoModel.php b/administrator/components/com_admin/src/Model/SysinfoModel.php index 0fa96f5ede7db..d9c003651419a 100644 --- a/administrator/components/com_admin/src/Model/SysinfoModel.php +++ b/administrator/components/com_admin/src/Model/SysinfoModel.php @@ -336,7 +336,9 @@ public function &getInfo(): array */ public function phpinfoEnabled(): bool { - return !\in_array('phpinfo', explode(',', ini_get('disable_functions'))); + // remove any spaces from the ini value before exploding it + $disabledFunctions = str_replace(' ', '', ini_get('disable_functions')); + return !\in_array('phpinfo', explode(',', $disabledFunctions)); } /** diff --git a/administrator/components/com_banners/tmpl/banners/default_batch_body.php b/administrator/components/com_banners/tmpl/banners/default_batch_body.php index fbc990db6f439..66d0ca9f02e4a 100644 --- a/administrator/components/com_banners/tmpl/banners/default_batch_body.php +++ b/administrator/components/com_banners/tmpl/banners/default_batch_body.php @@ -16,7 +16,7 @@ /** @var \Joomla\Component\Banners\Administrator\View\Banners\HtmlView $this */ -$published = $this->state->get('filter.published'); +$published = (int) $this->state->get('filter.published'); ?> diff --git a/administrator/components/com_cache/src/View/Cache/HtmlView.php b/administrator/components/com_cache/src/View/Cache/HtmlView.php index 78fe269e25619..a202d5a606de3 100644 --- a/administrator/components/com_cache/src/View/Cache/HtmlView.php +++ b/administrator/components/com_cache/src/View/Cache/HtmlView.php @@ -106,7 +106,7 @@ public function display($tpl = null): void throw new GenericDataException(implode("\n", $errors), 500); } - if (!\count($this->data)) { + if (!\count($this->data) && $this->state->get('filter.search') === '') { $this->setLayout('emptystate'); } diff --git a/administrator/components/com_content/config.xml b/administrator/components/com_content/config.xml index d36173adf743c..eee659d520a17 100644 --- a/administrator/components/com_content/config.xml +++ b/administrator/components/com_content/config.xml @@ -261,6 +261,8 @@ type="number" label="JGLOBAL_SHOW_READMORE_LIMIT_LABEL" filter="integer" + validate="number" + min="0" default="100" showon="show_readmore:1[AND]show_readmore_title:1" /> @@ -416,6 +418,8 @@ type="number" label="JGLOBAL_HISTORY_LIMIT_OPTIONS_LABEL" filter="integer" + validate="number" + min="0" default="10" showon="save_history:1" /> @@ -723,6 +727,8 @@ type="number" label="JGLOBAL_NUM_LEADING_ARTICLES_LABEL" filter="integer" + validate="number" + min="0" default="1" /> @@ -738,6 +744,8 @@ type="number" label="JGLOBAL_NUM_INTRO_ARTICLES_LABEL" filter="integer" + validate="number" + min="0" default="4" /> @@ -754,6 +762,8 @@ type="number" label="JGLOBAL_NUM_COLUMNS_LABEL" filter="integer" + validate="number" + min="0" default="1" /> @@ -773,6 +783,8 @@ type="number" label="JGLOBAL_NUM_LINKS_LABEL" filter="integer" + validate="number" + min="0" default="4" /> diff --git a/administrator/components/com_media/resources/scripts/app/Api.es6.js b/administrator/components/com_media/resources/scripts/app/Api.es6.js index 0b789ee570cd0..783f46fa5a4a2 100644 --- a/administrator/components/com_media/resources/scripts/app/Api.es6.js +++ b/administrator/components/com_media/resources/scripts/app/Api.es6.js @@ -107,35 +107,26 @@ class Api { /** * Get the contents of a directory from the server - * @param {string} dir The directory path - * @param {number} full whether or not the persistent url should be returned - * @param {number} content whether or not the content should be returned + * @param {string} dir The directory path + * @param {boolean} full whether or not the persistent url should be returned + * @param {boolean} content whether or not the content should be returned * @returns {Promise} */ - getContents(dir, full, content) { + getContents(dir, full = false, content = false) { // Wrap the ajax call into a real promise return new Promise((resolve, reject) => { - // Do a check on full - if (['0', '1'].indexOf(full) !== -1) { - throw Error('Invalid parameter: full'); - } - // Do a check on download - if (['0', '1'].indexOf(content) !== -1) { - throw Error('Invalid parameter: content'); - } - - let url = `${this.baseUrl}&task=api.files&path=${encodeURIComponent(dir)}`; + const url = new URL(`${this.baseUrl}&task=api.files&path=${encodeURIComponent(dir)}`); if (full) { - url += `&url=${full}`; + url.searchParams.append('url', full); } if (content) { - url += `&content=${content}`; + url.searchParams.append('content', content); } Joomla.request({ - url, + url: url.toString(), method: 'GET', headers: { 'Content-Type': 'application/json' }, onSuccess: (response) => { @@ -157,11 +148,11 @@ class Api { createDirectory(name, parent) { // Wrap the ajax call into a real promise return new Promise((resolve, reject) => { - const url = `${this.baseUrl}&task=api.files&path=${encodeURIComponent(parent)}`; + const url = new URL(`${this.baseUrl}&task=api.files&path=${encodeURIComponent(parent)}`); const data = { [this.csrfToken]: '1', name }; Joomla.request({ - url, + url: url.toString(), method: 'POST', data: JSON.stringify(data), headers: { 'Content-Type': 'application/json' }, @@ -188,7 +179,7 @@ class Api { upload(name, parent, content, override) { // Wrap the ajax call into a real promise return new Promise((resolve, reject) => { - const url = `${this.baseUrl}&task=api.files&path=${encodeURIComponent(parent)}`; + const url = new URL(`${this.baseUrl}&task=api.files&path=${encodeURIComponent(parent)}`); const data = { [this.csrfToken]: '1', name, @@ -201,7 +192,7 @@ class Api { } Joomla.request({ - url, + url: url.toString(), method: 'POST', data: JSON.stringify(data), headers: { 'Content-Type': 'application/json' }, @@ -225,14 +216,14 @@ class Api { rename(path, newPath) { // Wrap the ajax call into a real promise return new Promise((resolve, reject) => { - const url = `${this.baseUrl}&task=api.files&path=${encodeURIComponent(path)}`; + const url = new URL(`${this.baseUrl}&task=api.files&path=${encodeURIComponent(path)}`); const data = { [this.csrfToken]: '1', newPath, }; Joomla.request({ - url, + url: url.toString(), method: 'PUT', data: JSON.stringify(data), headers: { 'Content-Type': 'application/json' }, @@ -256,11 +247,11 @@ class Api { delete(path) { // Wrap the ajax call into a real promise return new Promise((resolve, reject) => { - const url = `${this.baseUrl}&task=api.files&path=${encodeURIComponent(path)}`; + const url = new URL(`${this.baseUrl}&task=api.files&path=${encodeURIComponent(path)}`); const data = { [this.csrfToken]: '1' }; Joomla.request({ - url, + url: url.toString(), method: 'DELETE', data: JSON.stringify(data), headers: { 'Content-Type': 'application/json' }, diff --git a/administrator/components/com_media/resources/scripts/components/app.vue b/administrator/components/com_media/resources/scripts/components/app.vue index ab1a1371717b9..eaf36d36960bb 100644 --- a/administrator/components/com_media/resources/scripts/components/app.vue +++ b/administrator/components/com_media/resources/scripts/components/app.vue @@ -3,8 +3,8 @@
@@ -78,7 +78,7 @@ export default { }); // Initial load the data - this.$store.dispatch('getContents', this.$store.state.selectedDirectory); + this.$store.dispatch('getContents', this.$store.state.selectedDirectory, false, false); }, beforeUnmount() { // Remove the global resize event listener diff --git a/administrator/components/com_media/resources/scripts/components/browser/items/item.es6.js b/administrator/components/com_media/resources/scripts/components/browser/items/item.es6.js index 4f5d12e0ebea7..9ca4be5a3b7ad 100644 --- a/administrator/components/com_media/resources/scripts/components/browser/items/item.es6.js +++ b/administrator/components/com_media/resources/scripts/components/browser/items/item.es6.js @@ -200,6 +200,7 @@ export default { h(this.itemType(), { item: this.item, onToggleSettings: this.toggleSettings, + focused: false, }), ], ); diff --git a/administrator/components/com_media/resources/scripts/mixins/navigable.es6.js b/administrator/components/com_media/resources/scripts/mixins/navigable.es6.js index 68329c975634a..d45bc02a394d6 100644 --- a/administrator/components/com_media/resources/scripts/mixins/navigable.es6.js +++ b/administrator/components/com_media/resources/scripts/mixins/navigable.es6.js @@ -1,7 +1,7 @@ export default { methods: { navigateTo(path) { - this.$store.dispatch('getContents', path); + this.$store.dispatch('getContents', path, false, false); }, }, }; diff --git a/administrator/components/com_media/resources/scripts/store/actions.es6.js b/administrator/components/com_media/resources/scripts/store/actions.es6.js index c7fcb7c864980..804ce5e13d617 100644 --- a/administrator/components/com_media/resources/scripts/store/actions.es6.js +++ b/administrator/components/com_media/resources/scripts/store/actions.es6.js @@ -30,7 +30,7 @@ export const getContents = (context, payload) => { updateUrlPath(payload); context.commit(types.SET_IS_LOADING, true); - api.getContents(payload, 0) + api.getContents(payload, false, false) .then((contents) => { context.commit(types.LOAD_CONTENTS_SUCCESS, contents); context.commit(types.UNSELECT_ALL_BROWSER_ITEMS); @@ -51,7 +51,7 @@ export const getContents = (context, payload) => { */ export const getFullContents = (context, payload) => { context.commit(types.SET_IS_LOADING, true); - api.getContents(payload.path, 1) + api.getContents(payload.path, true, true) .then((contents) => { context.commit(types.LOAD_FULL_CONTENTS_SUCCESS, contents.files[0]); context.commit(types.SET_IS_LOADING, false); @@ -69,7 +69,7 @@ export const getFullContents = (context, payload) => { * @param payload */ export const download = (context, payload) => { - api.getContents(payload.path, 0, 1) + api.getContents(payload.path, false, true) .then((contents) => { const file = contents.files[0]; diff --git a/administrator/components/com_media/src/Model/ApiModel.php b/administrator/components/com_media/src/Model/ApiModel.php index 1608e3d977edf..a36004c9b88f3 100644 --- a/administrator/components/com_media/src/Model/ApiModel.php +++ b/administrator/components/com_media/src/Model/ApiModel.php @@ -13,6 +13,7 @@ use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; use Joomla\CMS\Filesystem\File; +use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\Model\BaseDatabaseModel; use Joomla\CMS\Object\CMSObject; use Joomla\CMS\Plugin\PluginHelper; @@ -230,7 +231,7 @@ public function createFile($adapter, $name, $path, $data, $override) // Check if it is a media file if (!$this->isMediaFile($path . '/' . $name)) { - throw new InvalidPathException(); + throw new InvalidPathException(Text::_('JLIB_MEDIA_ERROR_WARNFILETYPE')); } $app = Factory::getApplication(); diff --git a/administrator/language/en-GB/com_guidedtours.sys.ini b/administrator/language/en-GB/com_guidedtours.sys.ini index 5e1ff9d9efa2b..20d59d1edb91d 100644 --- a/administrator/language/en-GB/com_guidedtours.sys.ini +++ b/administrator/language/en-GB/com_guidedtours.sys.ini @@ -215,8 +215,8 @@ COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_DESCRIPTION="Enter a required title for COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_TITLE="Enter an alias" COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this banner. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DESCRIPTION_TITLE="Add a description" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DESCRIPTION_DESCRIPTION="Add a description for the banner in the editor." +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_TITLE="Enter detailed information" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_DESCRIPTION="Add the details for the banner here." COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_TITLE="Select the status" COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_DESCRIPTION="Select the published status of the banner." diff --git a/administrator/language/en-GB/plg_system_updatenotification.ini b/administrator/language/en-GB/plg_system_updatenotification.ini index b0e1f285584a6..cb889bdb5f931 100644 --- a/administrator/language/en-GB/plg_system_updatenotification.ini +++ b/administrator/language/en-GB/plg_system_updatenotification.ini @@ -4,7 +4,7 @@ ; Note : All ini files need to be saved as UTF-8 PLG_SYSTEM_UPDATENOTIFICATION="System - Joomla! Update Notification" -PLG_SYSTEM_UPDATENOTIFICATION_EMAIL_BODY="This email IS NOT sent by the Joomla! project. It is sent automatically by your own site,\n{SITENAME} - {URL} \n\n================================================================================\nUPDATE INFORMATION\n================================================================================\n\nYour site has discovered that there is an updated version of Joomla! available for download.\n\nJoomla! version currently installed: {CURVERSION}\nJoomla! version available for installation: {NEWVERSION}\n\nThis email is sent to you by your site to remind you of this fact.\nThe Joomla! project will never contact you directly about available updates of Joomla! on your site.\n\n================================================================================\nUPDATE INSTRUCTIONS\n================================================================================\n\nTo install the update on {SITENAME} please select the following link. (If the URL is not a link, copy & paste it to your browser).\n\nUpdate link: {LINK}\n\nRelease News can be found here: {RELEASENEWS}\n\n================================================================================\nWHY AM I RECEIVING THIS EMAIL?\n================================================================================\n\nThis email has been automatically sent by a plugin provided by Joomla!, the software which powers your site.\nThis plugin looks for updated versions of Joomla! and sends an email notification to its administrators.\nYou will receive several similar emails from your site until you either update the software or disable these emails.\n\nTo disable these emails, please unpublish the 'System - Joomla! Update Notification' plugin in the Plugin Manager on your site.\n\nIf you do not understand what Joomla! is and what you need to do please do not contact the Joomla! project.\nThey are NOT sending you this email and they cannot help you. Instead, please contact the person who built or manages your site.\n\nIf you are the person who built or manages your website, please note that this plugin may have been activated automatically when you installed or updated Joomla! on your site.\n\n================================================================================\nWHO SENT ME THIS EMAIL?\n================================================================================\n\nThis email is sent to you by your own site, {SITENAME}" +PLG_SYSTEM_UPDATENOTIFICATION_EMAIL_BODY="This email IS NOT sent by the Joomla! project. It is sent automatically by your own site,\n{SITENAME} - {URL} \n\n================================================================================\nUPDATE INFORMATION\n================================================================================\n\nYour site has discovered that there is an updated version of Joomla! available.\n\nJoomla! version currently installed: {CURVERSION}\nJoomla! version available for installation: {NEWVERSION}\n\nThis email is sent to you by your site to remind you of this fact.\nThe Joomla! project will never contact you directly about available updates of Joomla! on your site.\n\n================================================================================\nUPDATE INSTRUCTIONS\n================================================================================\n\nTo install the update on {SITENAME} please select the following link. (If the URL is not a link, copy & paste it to your browser).\n\nUpdate link: {LINK}\n\nRelease News can be found here: {RELEASENEWS}\n\n================================================================================\nWHY AM I RECEIVING THIS EMAIL?\n================================================================================\n\nThis email has been automatically sent by a plugin provided by Joomla!, the software which powers your site.\nThis plugin looks for updated versions of Joomla! and sends an email notification to its administrators.\nYou will receive several similar emails from your site until you either update the software or disable these emails.\n\nTo disable these emails, please unpublish the 'System - Joomla! Update Notification' plugin in the Plugin Manager on your site.\n\nIf you do not understand what Joomla! is and what you need to do please do not contact the Joomla! project.\nThey are NOT sending you this email and they cannot help you. Instead, please contact the person who built or manages your site.\n\nIf you are the person who built or manages your website, please note that this plugin may have been activated automatically when you installed or updated Joomla! on your site.\n\n================================================================================\nWHO SENT ME THIS EMAIL?\n================================================================================\n\nThis email is sent to you by your own site, {SITENAME}" PLG_SYSTEM_UPDATENOTIFICATION_EMAIL_DESC="A comma separated list of the email addresses which will receive the update notification emails. The addresses in the list MUST belong to existing users of your site who have the Super User privilege. If none of the listed emails belongs to Super Users, or if it's left blank, all Super Users of this site will receive the update notification email." PLG_SYSTEM_UPDATENOTIFICATION_EMAIL_LBL="Super User Emails" ; You can use the following merge codes: diff --git a/administrator/modules/mod_guidedtours/tmpl/default.php b/administrator/modules/mod_guidedtours/tmpl/default.php index bd6e2f92a4c00..ba35270c14d88 100644 --- a/administrator/modules/mod_guidedtours/tmpl/default.php +++ b/administrator/modules/mod_guidedtours/tmpl/default.php @@ -52,8 +52,6 @@ $allTours[$key][] = $tour; endforeach; -ksort($allTours); - ?> - params->get('show_headings')) : ?> - - - + + params->get('tag_list_show_date')) : ?> + - params->get('tag_list_show_date')) : ?> - - - - - + + + items as $i => $item) : ?> core_state == 0) : ?> diff --git a/installation/sql/mysql/extensions.sql b/installation/sql/mysql/extensions.sql index 69f4c05716efa..facc65bb257e0 100644 --- a/installation/sql/mysql/extensions.sql +++ b/installation/sql/mysql/extensions.sql @@ -1076,7 +1076,7 @@ INSERT INTO `#__guidedtour_steps` (`id`, `tour_id`, `title`, `published`, `descr (60, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_DESCRIPTION', 60, 'bottom', '.button-new', 2, 1, 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), (61, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_DESCRIPTION', 61, 'bottom', '#jform_name', 2, 2, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), (62, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_DESCRIPTION', 62, 'bottom', '#jform_alias', 2, 2, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), -(63, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DESCRIPTION_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DESCRIPTION_DESCRIPTION', 63, 'bottom', '#jform_description,#jform_description_ifr', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), +(63, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_DESCRIPTION', 63, 'bottom', '.col-lg-9', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), (64, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_DESCRIPTION', 64, 'bottom', '#jform_state', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), (65, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_DESCRIPTION', 65, 'top', 'joomla-field-fancy-select .choices[data-type=select-one]', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), (66, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_DESCRIPTION', 66, 'bottom', '#jform_sticky1', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), diff --git a/installation/sql/postgresql/extensions.sql b/installation/sql/postgresql/extensions.sql index b0365982b6df8..c1a61922ae99c 100644 --- a/installation/sql/postgresql/extensions.sql +++ b/installation/sql/postgresql/extensions.sql @@ -1044,7 +1044,7 @@ INSERT INTO "#__guidedtour_steps" ("id", "tour_id", "title", "published", "descr (60, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_DESCRIPTION', 60, 'bottom', '.button-new', 2, 1, 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, '*'), (61, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_DESCRIPTION', 61, 'bottom', '#jform_name', 2, 2, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, '*'), (62, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_DESCRIPTION', 62, 'bottom', '#jform_alias', 2, 2, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, '*'), -(63, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DESCRIPTION_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DESCRIPTION_DESCRIPTION', 63, 'bottom', '#jform_description,#jform_description_ifr', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, '*'), +(63, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_DESCRIPTION', 63, 'bottom', '.col-lg-9', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, '*'), (64, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_DESCRIPTION', 64, 'bottom', '#jform_state', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, '*'), (65, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_DESCRIPTION', 65, 'top', 'joomla-field-fancy-select .choices[data-type=select-one]', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, '*'), (66, 7, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_DESCRIPTION', 66, 'bottom', '#jform_sticky1', 2, 3, 'administrator/index.php?option=com_banners&view=banner&layout=edit', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, '*'), diff --git a/libraries/src/Event/CoreEventAware.php b/libraries/src/Event/CoreEventAware.php index c65b8a3173866..4234a9f97f49f 100644 --- a/libraries/src/Event/CoreEventAware.php +++ b/libraries/src/Event/CoreEventAware.php @@ -44,7 +44,6 @@ use Joomla\CMS\Event\Table\ObjectCreateEvent; use Joomla\CMS\Event\Table\SetNewTagsEvent; use Joomla\CMS\Event\View\DisplayEvent; -use Joomla\CMS\Event\WebAsset\WebAssetRegistryAssetChanged; use Joomla\CMS\Event\Workflow\WorkflowFunctionalityUsedEvent; use Joomla\CMS\Event\Workflow\WorkflowTransitionEvent; use Joomla\Event\Event; @@ -130,10 +129,6 @@ trait CoreEventAware */ protected static function getEventClassByEventName(string $eventName): string { - if (strpos($eventName, 'onWebAssetRegistryChangedAsset') === 0) { - return WebAssetRegistryAssetChanged::class; - } - return self::$eventNameToConcreteClass[$eventName] ?? Event::class; } } diff --git a/libraries/src/HTML/Helpers/Access.php b/libraries/src/HTML/Helpers/Access.php index 46d629054f73f..fa61eed9a6c5e 100644 --- a/libraries/src/HTML/Helpers/Access.php +++ b/libraries/src/HTML/Helpers/Access.php @@ -157,8 +157,8 @@ public static function usergroups($name, $selected, $checkSuperAdmin = false) // If checkSuperAdmin is true, only add item if the user is superadmin or the group is not super admin if ((!$checkSuperAdmin) || $isSuperAdmin || (!AccessCheck::checkGroup($item->id, 'core.admin'))) { - // Setup the variable attributes. - $eid = $count . 'group_' . $item->id; + // Set up the variable attributes. ID may not start with a number (CSS) + $eid = 'group_' . $item->id . '_' . $count; // Don't call in_array unless something is selected $checked = ''; @@ -167,7 +167,7 @@ public static function usergroups($name, $selected, $checkSuperAdmin = false) $checked = in_array($item->id, $selected) ? ' checked="checked"' : ''; } - $rel = ($item->parent_id > 0) ? ' rel="' . $count . 'group_' . $item->parent_id . '"' : ''; + $rel = ($item->parent_id > 0) ? ' rel="group_' . $item->parent_id . '_' . $count . '"' : ''; // Build the HTML for the item. $html[] = '
'; diff --git a/libraries/src/HTML/Helpers/Category.php b/libraries/src/HTML/Helpers/Category.php index c16960f0d8067..c32660bffa582 100644 --- a/libraries/src/HTML/Helpers/Category.php +++ b/libraries/src/HTML/Helpers/Category.php @@ -53,7 +53,6 @@ public static function options($extension, $config = ['filter.published' => [0, $config = (array) $config; $db = Factory::getDbo(); $user = Factory::getUser(); - $groups = $user->getAuthorisedViewLevels(); $query = $db->getQuery(true) ->select( @@ -72,7 +71,9 @@ public static function options($extension, $config = ['filter.published' => [0, ->bind(':extension', $extension); // Filter on user access level - $query->whereIn($db->quoteName('a.access'), $groups); + if (!$user->authorise('core.admin')) { + $query->whereIn($db->quoteName('a.access'), $user->getAuthorisedViewLevels()); + } // Filter on the published state if (isset($config['filter.published'])) { @@ -165,8 +166,9 @@ public static function categories($extension, $config = ['filter.published' => [ ->bind(':extension', $extension); // Filter on user level. - $groups = $user->getAuthorisedViewLevels(); - $query->whereIn($db->quoteName('a.access'), $groups); + if (!$user->authorise('core.admin')) { + $query->whereIn($db->quoteName('a.access'), $user->getAuthorisedViewLevels()); + } // Filter on the published state if (isset($config['filter.published'])) { diff --git a/libraries/src/Toolbar/CoreButtonsTrait.php b/libraries/src/Toolbar/CoreButtonsTrait.php index 3c17eaaf9dd7f..e01ece82df89d 100644 --- a/libraries/src/Toolbar/CoreButtonsTrait.php +++ b/libraries/src/Toolbar/CoreButtonsTrait.php @@ -469,7 +469,7 @@ public function checkin(string $task, string $text = 'JTOOLBAR_CHECKIN'): Standa */ public function cancel(string $task, string $text = 'JTOOLBAR_CLOSE'): StandardButton { - return $this->standardButton('cancel', $text, $task); + return $this->standardButton('exit', $text, $task); } /** diff --git a/plugins/editors/tinymce/src/PluginTraits/DisplayTrait.php b/plugins/editors/tinymce/src/PluginTraits/DisplayTrait.php index fa3a0653d3801..2a7c98ae39b29 100644 --- a/plugins/editors/tinymce/src/PluginTraits/DisplayTrait.php +++ b/plugins/editors/tinymce/src/PluginTraits/DisplayTrait.php @@ -478,6 +478,9 @@ public function onDisplay( // Disable TinyMCE Branding 'branding' => false, + + // Specify the atributes 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/quickicon/joomlaupdate/joomlaupdate.xml b/plugins/quickicon/joomlaupdate/joomlaupdate.xml index 222dc69849340..8f3ffb1070db3 100644 --- a/plugins/quickicon/joomlaupdate/joomlaupdate.xml +++ b/plugins/quickicon/joomlaupdate/joomlaupdate.xml @@ -11,7 +11,7 @@ PLG_QUICKICON_JOOMLAUPDATE_XML_DESCRIPTION Joomla\Plugin\Quickicon\Joomlaupdate - services + services src diff --git a/plugins/system/guidedtours/guidedtours.xml b/plugins/system/guidedtours/guidedtours.xml index 5fe7238e1ed5b..a94cc3b44183b 100644 --- a/plugins/system/guidedtours/guidedtours.xml +++ b/plugins/system/guidedtours/guidedtours.xml @@ -1,21 +1,21 @@ - - plg_system_guidedtours - Joomla! Project - 2023-02 - (C) 2023 Open Source Matters, Inc. - GNU General Public License version 2 or later; see LICENSE.txt - admin@joomla.org - www.joomla.org - 4.3.0 - PLG_SYSTEM_GUIDEDTOURS_DESCRIPTION + + plg_system_guidedtours + Joomla! Project + 2023-02 + (C) 2023 Open Source Matters, Inc. + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + 4.3.0 + PLG_SYSTEM_GUIDEDTOURS_DESCRIPTION Joomla\Plugin\System\GuidedTours - - services + + services src - - - language/en-GB/plg_system_guidedtours.ini - language/en-GB/plg_system_guidedtours.sys.ini - + + + language/en-GB/plg_system_guidedtours.ini + language/en-GB/plg_system_guidedtours.sys.ini + diff --git a/plugins/system/schedulerunner/schedulerunner.php b/plugins/system/schedulerunner/schedulerunner.php index 30ce85e53e907..180c1f60d689d 100644 --- a/plugins/system/schedulerunner/schedulerunner.php +++ b/plugins/system/schedulerunner/schedulerunner.php @@ -168,7 +168,7 @@ public function runLazyCron(EventInterface $e) return; } - // Since `navigator.sendBeacon()` may time out, allow execution after disconnect if possible. + // Since the the request from the frontend may time out, try allowing execution after disconnect. if (function_exists('ignore_user_abort')) { ignore_user_abort(true); }
- + params->get('show_headings', '1') ? '' : ' class="visually-hidden"'; ?>> +
+ + + + + + + + + - - - - - - - -