diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 3e1635228df..20b0c5d4718 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -6,7 +6,7 @@ You are welcome to submit a contribution for review and possible inclusion in th 2) Follow the [Joomla! Coding Standards](https://developer.joomla.org/coding-standards.html). -3) When filing an issue or opening a PR, please include a clear title and description. The title should be a short summary of an issue and, if possible, should include a reference to an open issue. For example, `Invalid Query in com_admin (Ref #1234)` would be sufficient. All issues and PRs should include a description with as much detail as possible. +3) When filing an issue or opening a PR, please include a clear title and description. The title should be a short summary of an issue and, if possible, should include a reference to an open issue. For example, `Invalid Query in com_admin (Ref #1234)` would be sufficient. All issues and PRs should include a description with as much detail as possible. If it is a PR, include what the issue is, what the PR is addressing, testing instructions and environmental information (PHP version, database driver and version, and other data you can retrieve from your site's system information view) in case the issue is specific to certain environments. If additional information is needed, please be prepared to provide it as our community members review your submission. 4) Report security issues to the Joomla! Security Strike Team (JSST) at security@joomla.org or use the [JSST contact form](https://developer.joomla.org/contact-security-team.html). Please do not use the public tracker for security issues. @@ -14,11 +14,11 @@ If it is a PR, include what the issue is, what the PR is addressing, testing ins Please be patient as not all items will be tested immediately (remember, all bug testing for the Joomla! CMS is done by volunteers) and be receptive to feedback about your code. #### Branches -PRs should usually be made to the `staging` branch as this contains the most recent version of the code. +PRs should usually be made to the `4.0-dev` branch as this contains the most recent version of the code. There are other branches available which serve specific purposes. | Branch | Purpose | | ------ | ------- | -| staging | Current codebase. Branch for the next minor Joomla version. New backward compatible features go into this branch. The 3.9.0 release will include the Privacy Tools Suite features. | -| 3.10-dev | Branch for the next minor Joomla version. The 3.10.0 release will only include compatibility features for 4.0. Commits to staging will be applied to this branch as well. | -| 4.0-dev | Branch for the next major Joomla version. New features go into this branch. Commits to staging will be applied to this branch as well. | +| 3.10-dev | Branch for the Joomla 3.x series. The 3.10 series release will only include compatibility features for 4.x as well as bugfixes and security patches. | +| 4.0-dev | Branch for the Joomla 4.0 series. Commits to 3.10-dev will be applied to this branch as well. | +| 4.1-dev | Branch for the next minor Joomla version. New features go into this branch. Commits to 4.0-dev will be applied to this branch as well. | diff --git a/README.md b/README.md index d44022a4796..597575304eb 100644 --- a/README.md +++ b/README.md @@ -28,13 +28,13 @@ Joomla is not installable out of the box from this repository, please use: How to get a working installation from the source --------------------- -For detailed instructions please visit https://docs.joomla.org/J4.x:Setting_Up_Your_Local_Environment +For detailed instructions please visit https://docs.joomla.org/Special:MyLanguage/J4.x:Setting_Up_Your_Local_Environment You will need: -- PHP - basically the same as you need for running a Joomla Site, but you need the cli (command line interface) Version (see https://docs.joomla.org/Configuring_a_LAMPP_server_for_PHP_development) +- PHP - basically the same as you need for running a Joomla Site, but you need the cli (command line interface) Version (see https://docs.joomla.org/Special:MyLanguage/Configuring_a_LAMPP_server_for_PHP_development) - Composer - for managing Joomla's PHP Dependencies. For help installing composer please read the documentation at https://getcomposer.org/doc/00-intro.md - Node.js - for compiling Joomla's Javascript and SASS files. For help installing Node.js please follow the instructions available on https://nodejs.org/en/ -- Git - for version management. Download from here https://git-scm.com/downloads (MacOS users can also use Brew and Linux users can use the built-in package manager, eg apt, yum, etc). +- Git - for version management. Download from here https://git-scm.com/downloads (MacOS users can also use Brew and Linux users can use the built-in package manager, eg apt, yum, etc). **Steps to setup the local environment:** - Clone the repository: @@ -70,6 +70,7 @@ Do you want to improve Joomla? * Get Involved: Joomla! is community developed software. [Join the community](https://volunteers.joomla.org). * Documentation for [Developers](https://docs.joomla.org/Special:MyLanguage/Portal:Developers). * Documentation for [Web designers](https://docs.joomla.org/Special:MyLanguage/Web_designers). +* Provide a translation for Joomla: [Joomla Crowdin Project](https://joomla.crowdin.com/cms) Copyright --------------------- diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index 2f162b8c3ab..039caafc6bc 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -91,8 +91,9 @@ public function update($installer) // Informational log only } - // Ensure we delete the repeatable fields plugin before we remove its files + // Uninstall plugins before removing their files and folders $this->uninstallRepeatableFieldsPlugin(); + $this->uninstallEosPlugin(); // This needs to stay for 2.5 update compatibility $this->deleteUnexistingFiles(); @@ -507,6 +508,56 @@ protected function uninstallRepeatableFieldsPlugin() } } + /** + * Uninstall the 3.10 EOS plugin + * + * @return void + * + * @since 4.0.0 + */ + protected function uninstallEosPlugin() + { + $db = Factory::getDbo(); + + // Check if the plg_quickicon_eos310 plugin is present + $extensionId = $db->setQuery( + $db->getQuery(true) + ->select('extension_id') + ->from('#__extensions') + ->where('name = ' . $db->quote('plg_quickicon_eos310')) + )->loadResult(); + + // Skip uninstalling if it doesn't exist + if (!$extensionId) + { + return; + } + + try + { + $db->transactionStart(); + + // Unprotect the plugin so we can uninstall it + $db->setQuery( + $db->getQuery(true) + ->update('#__extensions') + ->set('protected = 0') + ->where($db->quoteName('extension_id') . ' = ' . $extensionId) + )->execute(); + + // Uninstall the plugin + $installer = new Installer; + $installer->uninstall('plugin', $extensionId); + + $db->transactionCommit(); + } + catch (\Exception $e) + { + $db->transactionRollback(); + throw $e; + } + } + /** * Update the manifest caches * @@ -644,6 +695,7 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false) '/administrator/components/com_admin/sql/updates/mysql/3.1.4.sql', '/administrator/components/com_admin/sql/updates/mysql/3.1.5.sql', '/administrator/components/com_admin/sql/updates/mysql/3.10.0-2020-08-10.sql', + '/administrator/components/com_admin/sql/updates/mysql/3.10.0-2021-05-28.sql', '/administrator/components/com_admin/sql/updates/mysql/3.2.0.sql', '/administrator/components/com_admin/sql/updates/mysql/3.2.1.sql', '/administrator/components/com_admin/sql/updates/mysql/3.2.2-2013-12-22.sql', @@ -765,6 +817,7 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false) '/administrator/components/com_admin/sql/updates/postgresql/3.1.4.sql', '/administrator/components/com_admin/sql/updates/postgresql/3.1.5.sql', '/administrator/components/com_admin/sql/updates/postgresql/3.10.0-2020-08-10.sql', + '/administrator/components/com_admin/sql/updates/postgresql/3.10.0-2021-05-28.sql', '/administrator/components/com_admin/sql/updates/postgresql/3.2.0.sql', '/administrator/components/com_admin/sql/updates/postgresql/3.2.1.sql', '/administrator/components/com_admin/sql/updates/postgresql/3.2.2-2013-12-22.sql', @@ -887,6 +940,7 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false) '/administrator/components/com_admin/sql/updates/sqlazure/3.1.3.sql', '/administrator/components/com_admin/sql/updates/sqlazure/3.1.4.sql', '/administrator/components/com_admin/sql/updates/sqlazure/3.1.5.sql', + '/administrator/components/com_admin/sql/updates/sqlazure/3.10.0-2021-05-28.sql', '/administrator/components/com_admin/sql/updates/sqlazure/3.2.0.sql', '/administrator/components/com_admin/sql/updates/sqlazure/3.2.1.sql', '/administrator/components/com_admin/sql/updates/sqlazure/3.2.2-2013-12-22.sql', @@ -2854,6 +2908,7 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false) '/components/com_contact/helpers/association.php', '/components/com_contact/helpers/category.php', '/components/com_contact/helpers/legacyrouter.php', + '/components/com_contact/layouts/joomla/form/renderfield.php', '/components/com_contact/models/categories.php', '/components/com_contact/models/category.php', '/components/com_contact/models/contact.php', @@ -3800,6 +3855,7 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false) '/libraries/src/Form/FormWrapper.php', '/libraries/src/Helper/ContentHistoryHelper.php', '/libraries/src/Helper/SearchHelper.php', + '/libraries/src/Http/Transport/cacert.pem', '/libraries/src/Http/Wrapper/FactoryWrapper.php', '/libraries/src/Language/LanguageStemmer.php', '/libraries/src/Language/Stemmer/Porteren.php', @@ -4801,20 +4857,6 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false) '/media/system/css/jquery.Jcrop.min.css', '/media/system/css/modal.css', '/media/system/css/system.css', - '/media/system/images/modal/bg_e.png', - '/media/system/images/modal/bg_n.png', - '/media/system/images/modal/bg_ne.png', - '/media/system/images/modal/bg_nw.png', - '/media/system/images/modal/bg_s.png', - '/media/system/images/modal/bg_se.png', - '/media/system/images/modal/bg_sw.png', - '/media/system/images/modal/bg_w.png', - '/media/system/images/modal/closebox.png', - '/media/system/images/modal/spinner.gif', - '/media/system/images/notice-alert.png', - '/media/system/images/notice-download.png', - '/media/system/images/notice-info.png', - '/media/system/images/notice-note.png', '/media/system/js/associations-edit-uncompressed.js', '/media/system/js/associations-edit.js', '/media/system/js/calendar-setup-uncompressed.js', @@ -4830,6 +4872,50 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false) '/media/system/js/combobox-uncompressed.js', '/media/system/js/combobox.js', '/media/system/js/core-uncompressed.js', + '/media/system/js/fields/calendar-locales/af.js', + '/media/system/js/fields/calendar-locales/ar.js', + '/media/system/js/fields/calendar-locales/bg.js', + '/media/system/js/fields/calendar-locales/bn.js', + '/media/system/js/fields/calendar-locales/bs.js', + '/media/system/js/fields/calendar-locales/ca.js', + '/media/system/js/fields/calendar-locales/cs.js', + '/media/system/js/fields/calendar-locales/cy.js', + '/media/system/js/fields/calendar-locales/da.js', + '/media/system/js/fields/calendar-locales/de.js', + '/media/system/js/fields/calendar-locales/el.js', + '/media/system/js/fields/calendar-locales/en.js', + '/media/system/js/fields/calendar-locales/es.js', + '/media/system/js/fields/calendar-locales/eu.js', + '/media/system/js/fields/calendar-locales/fa-ir.js', + '/media/system/js/fields/calendar-locales/fi.js', + '/media/system/js/fields/calendar-locales/fr.js', + '/media/system/js/fields/calendar-locales/ga.js', + '/media/system/js/fields/calendar-locales/hr.js', + '/media/system/js/fields/calendar-locales/hu.js', + '/media/system/js/fields/calendar-locales/it.js', + '/media/system/js/fields/calendar-locales/ja.js', + '/media/system/js/fields/calendar-locales/ka.js', + '/media/system/js/fields/calendar-locales/kk.js', + '/media/system/js/fields/calendar-locales/ko.js', + '/media/system/js/fields/calendar-locales/lt.js', + '/media/system/js/fields/calendar-locales/mk.js', + '/media/system/js/fields/calendar-locales/nb.js', + '/media/system/js/fields/calendar-locales/nl.js', + '/media/system/js/fields/calendar-locales/pl.js', + '/media/system/js/fields/calendar-locales/prs-af.js', + '/media/system/js/fields/calendar-locales/pt.js', + '/media/system/js/fields/calendar-locales/ru.js', + '/media/system/js/fields/calendar-locales/sk.js', + '/media/system/js/fields/calendar-locales/sl.js', + '/media/system/js/fields/calendar-locales/sr-rs.js', + '/media/system/js/fields/calendar-locales/sr-yu.js', + '/media/system/js/fields/calendar-locales/sv.js', + '/media/system/js/fields/calendar-locales/sw.js', + '/media/system/js/fields/calendar-locales/ta.js', + '/media/system/js/fields/calendar-locales/th.js', + '/media/system/js/fields/calendar-locales/uk.js', + '/media/system/js/fields/calendar-locales/zh-CN.js', + '/media/system/js/fields/calendar-locales/zh-TW.js', '/media/system/js/frontediting-uncompressed.js', '/media/system/js/frontediting.js', '/media/system/js/helpsite.js', @@ -5860,9 +5946,142 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false) '/media/com_fields/js/admin-field-edit-modal.min.js', '/media/com_fields/js/admin-field-edit-modal.min.js.gz', // 4.0 from RC 3 to RC 4 - '/components/com_contact/layouts/joomla/form/renderfield.php', + '/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default.php', + '/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_nodownload.php', + '/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_noupdate.php', + '/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_preupdatecheck.php', + '/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_reinstall.php', + '/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_update.php', + '/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_updatemefirst.php', + '/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_upload.php', '/language/en-GB/com_messages.ini', - '/libraries/src/Http/Transport/cacert.pem', + '/media/system/css/fields/joomla-image-select.css', + '/media/system/css/fields/joomla-image-select.min.css', + '/media/system/css/fields/joomla-image-select.min.css.gz', + '/media/system/js/fields/joomla-image-select-es5.js', + '/media/system/js/fields/joomla-image-select-es5.min.js', + '/media/system/js/fields/joomla-image-select-es5.min.js.gz', + '/media/system/js/fields/joomla-image-select.js', + '/media/system/js/fields/joomla-image-select.min.js', + '/media/system/js/fields/joomla-image-select.min.js.gz', + // 4.0 from RC 4 to RC 5 + '/media/system/js/fields/calendar-locales/af.min.js', + '/media/system/js/fields/calendar-locales/af.min.js.gz', + '/media/system/js/fields/calendar-locales/ar.min.js', + '/media/system/js/fields/calendar-locales/ar.min.js.gz', + '/media/system/js/fields/calendar-locales/bg.min.js', + '/media/system/js/fields/calendar-locales/bg.min.js.gz', + '/media/system/js/fields/calendar-locales/bn.min.js', + '/media/system/js/fields/calendar-locales/bn.min.js.gz', + '/media/system/js/fields/calendar-locales/bs.min.js', + '/media/system/js/fields/calendar-locales/bs.min.js.gz', + '/media/system/js/fields/calendar-locales/ca.min.js', + '/media/system/js/fields/calendar-locales/ca.min.js.gz', + '/media/system/js/fields/calendar-locales/cs.min.js', + '/media/system/js/fields/calendar-locales/cs.min.js.gz', + '/media/system/js/fields/calendar-locales/cy.min.js', + '/media/system/js/fields/calendar-locales/cy.min.js.gz', + '/media/system/js/fields/calendar-locales/da.min.js', + '/media/system/js/fields/calendar-locales/da.min.js.gz', + '/media/system/js/fields/calendar-locales/de.min.js', + '/media/system/js/fields/calendar-locales/de.min.js.gz', + '/media/system/js/fields/calendar-locales/el.min.js', + '/media/system/js/fields/calendar-locales/el.min.js.gz', + '/media/system/js/fields/calendar-locales/en.min.js', + '/media/system/js/fields/calendar-locales/en.min.js.gz', + '/media/system/js/fields/calendar-locales/es.min.js', + '/media/system/js/fields/calendar-locales/es.min.js.gz', + '/media/system/js/fields/calendar-locales/eu.min.js', + '/media/system/js/fields/calendar-locales/eu.min.js.gz', + '/media/system/js/fields/calendar-locales/fa-ir.min.js', + '/media/system/js/fields/calendar-locales/fa-ir.min.js.gz', + '/media/system/js/fields/calendar-locales/fi.min.js', + '/media/system/js/fields/calendar-locales/fi.min.js.gz', + '/media/system/js/fields/calendar-locales/fr.min.js', + '/media/system/js/fields/calendar-locales/fr.min.js.gz', + '/media/system/js/fields/calendar-locales/ga.min.js', + '/media/system/js/fields/calendar-locales/ga.min.js.gz', + '/media/system/js/fields/calendar-locales/hr.min.js', + '/media/system/js/fields/calendar-locales/hr.min.js.gz', + '/media/system/js/fields/calendar-locales/hu.min.js', + '/media/system/js/fields/calendar-locales/hu.min.js.gz', + '/media/system/js/fields/calendar-locales/it.min.js', + '/media/system/js/fields/calendar-locales/it.min.js.gz', + '/media/system/js/fields/calendar-locales/ja.min.js', + '/media/system/js/fields/calendar-locales/ja.min.js.gz', + '/media/system/js/fields/calendar-locales/ka.min.js', + '/media/system/js/fields/calendar-locales/ka.min.js.gz', + '/media/system/js/fields/calendar-locales/kk.min.js', + '/media/system/js/fields/calendar-locales/kk.min.js.gz', + '/media/system/js/fields/calendar-locales/ko.min.js', + '/media/system/js/fields/calendar-locales/ko.min.js.gz', + '/media/system/js/fields/calendar-locales/lt.min.js', + '/media/system/js/fields/calendar-locales/lt.min.js.gz', + '/media/system/js/fields/calendar-locales/mk.min.js', + '/media/system/js/fields/calendar-locales/mk.min.js.gz', + '/media/system/js/fields/calendar-locales/nb.min.js', + '/media/system/js/fields/calendar-locales/nb.min.js.gz', + '/media/system/js/fields/calendar-locales/nl.min.js', + '/media/system/js/fields/calendar-locales/nl.min.js.gz', + '/media/system/js/fields/calendar-locales/pl.min.js', + '/media/system/js/fields/calendar-locales/pl.min.js.gz', + '/media/system/js/fields/calendar-locales/prs-af.min.js', + '/media/system/js/fields/calendar-locales/prs-af.min.js.gz', + '/media/system/js/fields/calendar-locales/pt.min.js', + '/media/system/js/fields/calendar-locales/pt.min.js.gz', + '/media/system/js/fields/calendar-locales/ru.min.js', + '/media/system/js/fields/calendar-locales/ru.min.js.gz', + '/media/system/js/fields/calendar-locales/sk.min.js', + '/media/system/js/fields/calendar-locales/sk.min.js.gz', + '/media/system/js/fields/calendar-locales/sl.min.js', + '/media/system/js/fields/calendar-locales/sl.min.js.gz', + '/media/system/js/fields/calendar-locales/sr-rs.min.js', + '/media/system/js/fields/calendar-locales/sr-rs.min.js.gz', + '/media/system/js/fields/calendar-locales/sr-yu.min.js', + '/media/system/js/fields/calendar-locales/sr-yu.min.js.gz', + '/media/system/js/fields/calendar-locales/sv.min.js', + '/media/system/js/fields/calendar-locales/sv.min.js.gz', + '/media/system/js/fields/calendar-locales/sw.min.js', + '/media/system/js/fields/calendar-locales/sw.min.js.gz', + '/media/system/js/fields/calendar-locales/ta.min.js', + '/media/system/js/fields/calendar-locales/ta.min.js.gz', + '/media/system/js/fields/calendar-locales/th.min.js', + '/media/system/js/fields/calendar-locales/th.min.js.gz', + '/media/system/js/fields/calendar-locales/uk.min.js', + '/media/system/js/fields/calendar-locales/uk.min.js.gz', + '/media/system/js/fields/calendar-locales/zh-CN.min.js', + '/media/system/js/fields/calendar-locales/zh-CN.min.js.gz', + '/media/system/js/fields/calendar-locales/zh-TW.min.js', + '/media/system/js/fields/calendar-locales/zh-TW.min.js.gz', + // 4.0 from RC 5 to RC 6 + '/media/templates/cassiopeia/js/mod_menu/menu-metismenu-es5.js', + '/media/templates/cassiopeia/js/mod_menu/menu-metismenu-es5.min.js', + '/media/templates/cassiopeia/js/mod_menu/menu-metismenu-es5.min.js.gz', + '/media/templates/cassiopeia/js/mod_menu/menu-metismenu.js', + '/media/templates/cassiopeia/js/mod_menu/menu-metismenu.min.js', + '/media/templates/cassiopeia/js/mod_menu/menu-metismenu.min.js.gz', + '/templates/cassiopeia/css/vendor/fontawesome-free/fontawesome.css', + '/templates/cassiopeia/css/vendor/fontawesome-free/fontawesome.min.css', + '/templates/cassiopeia/css/vendor/fontawesome-free/fontawesome.min.css.gz', + '/templates/cassiopeia/scss/vendor/fontawesome-free/fontawesome.scss', + // 4.0 from RC 6 to 4.0.0 (stable) + '/libraries/vendor/algo26-matthias/idna-convert/tests/integration/ToIdnTest.php', + '/libraries/vendor/algo26-matthias/idna-convert/tests/integration/ToUnicodeTest.php', + '/libraries/vendor/algo26-matthias/idna-convert/tests/unit/.gitkeep', + '/libraries/vendor/algo26-matthias/idna-convert/tests/unit/namePrepTest.php', + '/libraries/vendor/doctrine/inflector/docs/en/index.rst', + '/libraries/vendor/jakeasmith/http_build_url/tests/HttpBuildUrlTest.php', + '/libraries/vendor/jakeasmith/http_build_url/tests/bootstrap.php', + '/libraries/vendor/willdurand/negotiation/tests/Negotiation/Tests/AcceptLanguageTest.php', + '/libraries/vendor/willdurand/negotiation/tests/Negotiation/Tests/AcceptTest.php', + '/libraries/vendor/willdurand/negotiation/tests/Negotiation/Tests/BaseAcceptTest.php', + '/libraries/vendor/willdurand/negotiation/tests/Negotiation/Tests/CharsetNegotiatorTest.php', + '/libraries/vendor/willdurand/negotiation/tests/Negotiation/Tests/EncodingNegotiatorTest.php', + '/libraries/vendor/willdurand/negotiation/tests/Negotiation/Tests/LanguageNegotiatorTest.php', + '/libraries/vendor/willdurand/negotiation/tests/Negotiation/Tests/MatchTest.php', + '/libraries/vendor/willdurand/negotiation/tests/Negotiation/Tests/NegotiatorTest.php', + '/libraries/vendor/willdurand/negotiation/tests/Negotiation/Tests/TestCase.php', + '/libraries/vendor/willdurand/negotiation/tests/bootstrap.php', ); $folders = array( @@ -5935,7 +6154,6 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false) '/plugins/content/confirmconsent/fields', '/plugins/captcha/recaptcha/postinstall', '/plugins/authentication/gmail', - '/media/system/images/modal', '/media/plg_twofactorauth_totp/js', '/media/plg_twofactorauth_totp', '/media/plg_system_highlight', @@ -6460,6 +6678,8 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false) '/components/com_contact/models/rules', '/components/com_contact/models/forms', '/components/com_contact/models', + '/components/com_contact/layouts/joomla/form', + '/components/com_contact/layouts/joomla', '/components/com_contact/controllers', '/components/com_config/view/templates/tmpl', '/components/com_config/view/templates', @@ -7054,7 +7274,7 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false) '/libraries/vendor/joomla/controller', '/api/components/com_installer/src/View/Languages', '/administrator/components/com_finder/src/Indexer/Driver', - // 4.0 from Beta 2 to Beta 5 + // 4.0 from Beta 4 to Beta 5 '/plugins/content/imagelazyload', // 4.0 from Beta 5 to Beta 6 '/media/system/js/core.es6', @@ -7103,6 +7323,22 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false) '/administrator/components/com_admin/tmpl/profile', '/administrator/components/com_admin/src/View/Profile', '/administrator/components/com_admin/forms', + // 4.0 from RC 5 to RC 6 + '/templates/cassiopeia/scss/vendor/fontawesome-free', + '/templates/cassiopeia/css/vendor/fontawesome-free', + '/media/templates/cassiopeia/js/mod_menu', + '/media/templates/cassiopeia/js', + '/media/templates/cassiopeia', + // 4.0 from RC 6 to 4.0.0 (stable) + '/libraries/vendor/willdurand/negotiation/tests/Negotiation/Tests', + '/libraries/vendor/willdurand/negotiation/tests/Negotiation', + '/libraries/vendor/willdurand/negotiation/tests', + '/libraries/vendor/jakeasmith/http_build_url/tests', + '/libraries/vendor/doctrine/inflector/docs/en', + '/libraries/vendor/doctrine/inflector/docs', + '/libraries/vendor/algo26-matthias/idna-convert/tests/unit', + '/libraries/vendor/algo26-matthias/idna-convert/tests/integration', + '/libraries/vendor/algo26-matthias/idna-convert/tests', ); $status['files_checked'] = $files; diff --git a/administrator/components/com_admin/sql/updates/mysql/4.0.0-2018-03-05.sql b/administrator/components/com_admin/sql/updates/mysql/4.0.0-2018-03-05.sql index 8283d5d2772..dbae8b67ed5 100644 --- a/administrator/components/com_admin/sql/updates/mysql/4.0.0-2018-03-05.sql +++ b/administrator/components/com_admin/sql/updates/mysql/4.0.0-2018-03-05.sql @@ -20,8 +20,8 @@ INSERT INTO `#__extensions` (`name`, `type`, `element`, `folder`, `client_id`, ` ('cassiopeia', 'template', 'cassiopeia', '', 0, 1, 1, 0, '{}', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0); INSERT INTO `#__template_styles` (`template`, `client_id`, `home`, `title`, `params`) VALUES -('atum', 1, (CASE WHEN (SELECT count FROM (SELECT count(`id`) AS count FROM `#__template_styles` WHERE home = '1' AND client_id = 1 AND `template` IN ('isis', 'hathor')) as c) = 0 THEN '0' ELSE '1' END), 'atum - Default', '{}'), -('cassiopeia', 0, (CASE WHEN (SELECT count FROM (SELECT count(`id`) AS count FROM `#__template_styles` WHERE home = '1' AND client_id = 0 AND `template` IN ('protostar', 'beez3')) as c) = 0 THEN '0' ELSE '1' END), 'cassiopeia - Default', '{}'); +('atum', 1, (CASE WHEN (SELECT b.`count` FROM (SELECT count(a.`id`) AS `count` FROM `#__template_styles` a WHERE a.`home` = '1' AND a.`client_id` = 1 AND a.`template` IN ('isis', 'hathor')) AS b) = 0 THEN '0' ELSE '1' END), 'atum - Default', '{}'), +('cassiopeia', 0, (CASE WHEN (SELECT d.`count` FROM (SELECT count(c.`id`) AS `count` FROM `#__template_styles` c WHERE c.`home` = '1' AND c.`client_id` = 0 AND c.`template` IN ('protostar', 'beez3')) AS d) = 0 THEN '0' ELSE '1' END), 'cassiopeia - Default', '{}'); -- -- Move mod_version to the right position for the atum template diff --git a/administrator/components/com_admin/sql/updates/postgresql/4.0.0-2018-03-05.sql b/administrator/components/com_admin/sql/updates/postgresql/4.0.0-2018-03-05.sql index 817cb62c9fa..d6620523b66 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/4.0.0-2018-03-05.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/4.0.0-2018-03-05.sql @@ -20,8 +20,8 @@ INSERT INTO "#__extensions" ("name", "type", "element", "folder", "client_id", " ('cassiopeia', 'template', 'cassiopeia', '', 0, 1, 1, 0, '{}', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0); INSERT INTO "#__template_styles" ("template", "client_id", "home", "title", "params") VALUES -('atum', 1, (CASE WHEN (SELECT count FROM (SELECT count("id") AS count FROM "#__template_styles" WHERE home = '1' AND client_id = 1 AND "template" IN ('isis', 'hathor')) as c) = 0 THEN '0' ELSE '1' END), 'atum - Default', '{}'), -('cassiopeia', 0, (CASE WHEN (SELECT count FROM (SELECT count("id") AS count FROM "#__template_styles" WHERE home = '1' AND client_id = 0 AND "template" IN ('protostar', 'beez3')) as c) = 0 THEN '0' ELSE '1' END), 'cassiopeia - Default', '{}'); +('atum', 1, (CASE WHEN (SELECT b."count" FROM (SELECT count(a."id") AS "count" FROM "#__template_styles" a WHERE a."home" = '1' AND a."client_id" = 1 AND a."template" IN ('isis', 'hathor')) AS b) = 0 THEN '0' ELSE '1' END), 'atum - Default', '{}'), +('cassiopeia', 0, (CASE WHEN (SELECT d."count" FROM (SELECT count(c."id") AS "count" FROM "#__template_styles" c WHERE c."home" = '1' AND c."client_id" = 0 AND c."template" IN ('protostar', 'beez3')) AS d) = 0 THEN '0' ELSE '1' END), 'cassiopeia - Default', '{}'); -- -- Move mod_version to the right position for the atum template diff --git a/administrator/components/com_admin/tmpl/sysinfo/default.php b/administrator/components/com_admin/tmpl/sysinfo/default.php index d1fc8f05b13..8423582c109 100644 --- a/administrator/components/com_admin/tmpl/sysinfo/default.php +++ b/administrator/components/com_admin/tmpl/sysinfo/default.php @@ -16,7 +16,7 @@ ?>
- 'site']); ?> + 'site', 'recall' => true, 'breakpoint' => 768]); ?> loadTemplate('system'); ?> diff --git a/administrator/components/com_associations/tmpl/associations/default.php b/administrator/components/com_associations/tmpl/associations/default.php index 3ed40def53a..68484020dff 100644 --- a/administrator/components/com_associations/tmpl/associations/default.php +++ b/administrator/components/com_associations/tmpl/associations/default.php @@ -120,9 +120,9 @@ escape($item->title); ?> typeFields['alias'])) : ?> - +
escape($item->alias)); ?> - +
typeFields['catid'])) : ?>
diff --git a/administrator/components/com_banners/src/Model/BannersModel.php b/administrator/components/com_banners/src/Model/BannersModel.php index 2fc49a19660..6a18caa75c7 100644 --- a/administrator/components/com_banners/src/Model/BannersModel.php +++ b/administrator/components/com_banners/src/Model/BannersModel.php @@ -28,7 +28,6 @@ class BannersModel extends ListModel * * @param array $config An optional associative array of configuration settings. * - * @see JControllerLegacy * @since 1.6 */ public function __construct($config = array()) diff --git a/administrator/components/com_banners/src/Model/ClientsModel.php b/administrator/components/com_banners/src/Model/ClientsModel.php index c967622224d..da569440e06 100644 --- a/administrator/components/com_banners/src/Model/ClientsModel.php +++ b/administrator/components/com_banners/src/Model/ClientsModel.php @@ -27,7 +27,6 @@ class ClientsModel extends ListModel * * @param array $config An optional associative array of configuration settings. * - * @see JControllerLegacy * @since 1.6 */ public function __construct($config = array()) diff --git a/administrator/components/com_banners/src/Model/TracksModel.php b/administrator/components/com_banners/src/Model/TracksModel.php index 6a893acf9a9..17597aa89ff 100644 --- a/administrator/components/com_banners/src/Model/TracksModel.php +++ b/administrator/components/com_banners/src/Model/TracksModel.php @@ -40,7 +40,6 @@ class TracksModel extends ListModel * * @param array $config An optional associative array of configuration settings. * - * @see JControllerLegacy * @since 1.6 */ public function __construct($config = array()) diff --git a/administrator/components/com_banners/tmpl/banner/edit.php b/administrator/components/com_banners/tmpl/banner/edit.php index 3badc363819..3320b312111 100644 --- a/administrator/components/com_banners/tmpl/banner/edit.php +++ b/administrator/components/com_banners/tmpl/banner/edit.php @@ -29,7 +29,7 @@
- 'details')); ?> + 'details', 'recall' => true, 'breakpoint' => 768]); ?>
diff --git a/administrator/components/com_banners/tmpl/banners/default.php b/administrator/components/com_banners/tmpl/banners/default.php index 0bedb508b34..8e34d411148 100644 --- a/administrator/components/com_banners/tmpl/banners/default.php +++ b/administrator/components/com_banners/tmpl/banners/default.php @@ -137,9 +137,9 @@ escape($item->name); ?> - +
escape($item->alias)); ?> - +
escape($item->category_title); ?>
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 e35f0ca9d83..f53c0395e2d 100644 --- a/administrator/components/com_banners/tmpl/banners/default_batch_body.php +++ b/administrator/components/com_banners/tmpl/banners/default_batch_body.php @@ -10,6 +10,7 @@ defined('_JEXEC') or die; use Joomla\CMS\HTML\HTMLHelper; +use Joomla\CMS\Language\Multilanguage; use Joomla\CMS\Layout\LayoutHelper; /** @var \Joomla\Component\Banners\Administrator\View\Banners\HtmlView $this */ @@ -20,11 +21,13 @@
-
-
- + +
+
+ +
-
+
diff --git a/administrator/components/com_banners/tmpl/client/edit.php b/administrator/components/com_banners/tmpl/client/edit.php index 76f95f9f474..9b8466a5301 100644 --- a/administrator/components/com_banners/tmpl/client/edit.php +++ b/administrator/components/com_banners/tmpl/client/edit.php @@ -28,7 +28,7 @@
- 'general']); ?> + 'general', 'recall' => true, 'breakpoint' => 768]); ?> item->id) ? Text::_('COM_BANNERS_NEW_CLIENT') : Text::_('COM_BANNERS_EDIT_CLIENT')); ?>
diff --git a/administrator/components/com_banners/tmpl/download/default.php b/administrator/components/com_banners/tmpl/download/default.php index 2fd1ab213dc..ed5be743908 100644 --- a/administrator/components/com_banners/tmpl/download/default.php +++ b/administrator/components/com_banners/tmpl/download/default.php @@ -11,7 +11,7 @@ use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Router\Route; -use \Joomla\CMS\Session\Session; +use Joomla\CMS\Session\Session; /** @var \Joomla\Component\Banners\Administrator\View\Download\HtmlView $this */ diff --git a/administrator/components/com_cache/src/View/Cache/HtmlView.php b/administrator/components/com_cache/src/View/Cache/HtmlView.php index cb57886f9a4..58ee08bdf95 100644 --- a/administrator/components/com_cache/src/View/Cache/HtmlView.php +++ b/administrator/components/com_cache/src/View/Cache/HtmlView.php @@ -11,7 +11,6 @@ \defined('_JEXEC') or die; -use Exception; use Joomla\CMS\Factory; use Joomla\CMS\Form\Form; use Joomla\CMS\Language\Text; diff --git a/administrator/components/com_categories/src/Controller/CategoryController.php b/administrator/components/com_categories/src/Controller/CategoryController.php index 2fe54ba6751..ea78b2ccdcf 100644 --- a/administrator/components/com_categories/src/Controller/CategoryController.php +++ b/administrator/components/com_categories/src/Controller/CategoryController.php @@ -45,7 +45,6 @@ class CategoryController extends FormController * @param Input|null $input Input * * @since 1.6 - * @see \JControllerLegacy * @throws \Exception */ public function __construct($config = array(), MVCFactoryInterface $factory = null, CMSApplication $app = null, Input $input = null) diff --git a/administrator/components/com_categories/src/Model/CategoriesModel.php b/administrator/components/com_categories/src/Model/CategoriesModel.php index f025f7cca1d..019362535d4 100644 --- a/administrator/components/com_categories/src/Model/CategoriesModel.php +++ b/administrator/components/com_categories/src/Model/CategoriesModel.php @@ -34,7 +34,6 @@ class CategoriesModel extends ListModel * @param array $config An optional associative array of configuration settings. * @param MVCFactoryInterface|null $factory The factory. * - * @see \JControllerLegacy * @since 1.6 */ public function __construct($config = array(), MVCFactoryInterface $factory = null) diff --git a/administrator/components/com_categories/tmpl/categories/default.php b/administrator/components/com_categories/tmpl/categories/default.php index 9cda90741fb..41b109ce7c9 100644 --- a/administrator/components/com_categories/tmpl/categories/default.php +++ b/administrator/components/com_categories/tmpl/categories/default.php @@ -200,13 +200,13 @@
- - note)) : ?> - escape($item->alias)); ?> - - escape($item->alias), $this->escape($item->note)); ?> - - + + note)) : ?> + escape($item->alias)); ?> + + escape($item->alias), $this->escape($item->note)); ?> + +
items[0]) && property_exists($this->items[0], 'count_published')) : ?> diff --git a/administrator/components/com_categories/tmpl/categories/default_batch_body.php b/administrator/components/com_categories/tmpl/categories/default_batch_body.php index d995527ffc3..700addd6f67 100644 --- a/administrator/components/com_categories/tmpl/categories/default_batch_body.php +++ b/administrator/components/com_categories/tmpl/categories/default_batch_body.php @@ -9,6 +9,7 @@ defined('_JEXEC') or die; use Joomla\CMS\HTML\HTMLHelper; +use Joomla\CMS\Language\Multilanguage; use Joomla\CMS\Language\Text; use Joomla\CMS\Layout\LayoutHelper; @@ -19,11 +20,13 @@
-
-
- + +
+
+ +
-
+
@@ -47,7 +50,7 @@
-
+
@@ -59,4 +62,3 @@
- diff --git a/administrator/components/com_categories/tmpl/category/edit.php b/administrator/components/com_categories/tmpl/category/edit.php index fd91c60e970..26dfa454f4a 100644 --- a/administrator/components/com_categories/tmpl/category/edit.php +++ b/administrator/components/com_categories/tmpl/category/edit.php @@ -34,12 +34,14 @@ $c = Factory::getApplication()->bootComponent($this->state->get('category.extension')); -$wcontext = $c->getCategoryWorkflowContext($this->state->get('category.section')); - -if (!$c instanceof WorkflowServiceInterface - || !$c->isWorkflowActive($wcontext)) +if ($c instanceof WorkflowServiceInterface) { - $this->ignore_fieldsets[] = 'workflow'; + $wcontext = $c->getCategoryWorkflowContext($this->state->get('category.section')); + + if (!$c->isWorkflowActive($wcontext)) + { + $this->ignore_fieldsets[] = 'workflow'; + } } $this->useCoreUI = true; @@ -55,7 +57,7 @@
- 'general')); ?> + 'general', 'recall' => true, 'breakpoint' => 768]); ?>
diff --git a/administrator/components/com_config/tmpl/application/default.php b/administrator/components/com_config/tmpl/application/default.php index e3f447d5d06..35b73e3e145 100644 --- a/administrator/components/com_config/tmpl/application/default.php +++ b/administrator/components/com_config/tmpl/application/default.php @@ -36,7 +36,7 @@
- 'page-site')); ?> + 'page-site', 'recall' => true, 'breakpoint' => 768]); ?> loadTemplate('site'); ?> loadTemplate('metadata'); ?> diff --git a/administrator/components/com_config/tmpl/component/default.php b/administrator/components/com_config/tmpl/component/default.php index 121264b1ed7..ad464613ad6 100644 --- a/administrator/components/com_config/tmpl/component/default.php +++ b/administrator/components/com_config/tmpl/component/default.php @@ -56,7 +56,7 @@ fieldsets) : ?> - + true, 'breakpoint' => 768]); ?> fieldsets as $name => $fieldSet) : ?>
- 'details')); ?> + 'details', 'recall' => true, 'breakpoint' => 768)); ?> item->id) ? Text::_('COM_CONTACT_NEW_CONTACT') : Text::_('COM_CONTACT_EDIT_CONTACT')); ?>
@@ -97,7 +98,7 @@
- +
@@ -105,7 +106,7 @@
- +
@@ -115,10 +116,10 @@
- -
- -
+ +
+ +
diff --git a/administrator/components/com_contact/tmpl/contacts/default.php b/administrator/components/com_contact/tmpl/contacts/default.php index 88485b20643..a50bb39c2a0 100644 --- a/administrator/components/com_contact/tmpl/contacts/default.php +++ b/administrator/components/com_contact/tmpl/contacts/default.php @@ -142,9 +142,9 @@ escape($item->name); ?> - +
escape($item->alias)); ?> - +
escape($item->category_title); ?>
diff --git a/administrator/components/com_contact/tmpl/contacts/default_batch_body.php b/administrator/components/com_contact/tmpl/contacts/default_batch_body.php index db6035a4feb..4d5bcd3610f 100644 --- a/administrator/components/com_contact/tmpl/contacts/default_batch_body.php +++ b/administrator/components/com_contact/tmpl/contacts/default_batch_body.php @@ -8,6 +8,7 @@ */ defined('_JEXEC') or die; +use Joomla\CMS\Language\Multilanguage; use Joomla\CMS\Layout\LayoutHelper; $published = $this->state->get('filter.published'); @@ -16,11 +17,13 @@
-
-
- + +
+
+ +
-
+
diff --git a/administrator/components/com_content/forms/category.xml b/administrator/components/com_content/forms/category.xml index 61f0f961f17..7fb3cbd4790 100644 --- a/administrator/components/com_content/forms/category.xml +++ b/administrator/components/com_content/forms/category.xml @@ -10,7 +10,7 @@ size="1" sql_select="id, title" sql_from="#__workflows" - sql_where="published = 1" + sql_where="published = 1 AND extension = 'com_content.article'" sql_order="ordering" key_field="id" value_field="title" diff --git a/administrator/components/com_content/src/Extension/ContentComponent.php b/administrator/components/com_content/src/Extension/ContentComponent.php index 81065a2b674..84780cc8ec0 100644 --- a/administrator/components/com_content/src/Extension/ContentComponent.php +++ b/administrator/components/com_content/src/Extension/ContentComponent.php @@ -202,7 +202,7 @@ public function getWorkflowContexts(): array * * @return string|null * - * @since __DEPLOY_VERSION__ + * @since 4.0.0 */ public function getCategoryWorkflowContext(?string $section = null): string { diff --git a/administrator/components/com_content/src/Helper/ContentHelper.php b/administrator/components/com_content/src/Helper/ContentHelper.php index 539a8aedd25..3d26fc915fc 100644 --- a/administrator/components/com_content/src/Helper/ContentHelper.php +++ b/administrator/components/com_content/src/Helper/ContentHelper.php @@ -116,6 +116,7 @@ public static function onPrepareForm(Form $form, $data) [ $db->quoteName('default') . ' = 1', $db->quoteName('published') . ' = 1', + $db->quoteName('extension') . ' = ' . $db->quote('com_content.article'), ] ); @@ -146,6 +147,7 @@ public static function onPrepareForm(Form $form, $data) [ $db->quoteName('id') . ' = :workflowId', $db->quoteName('published') . ' = 1', + $db->quoteName('extension') . ' = ' . $db->quote('com_content.article'), ] ) ->bind(':workflowId', $workflow_id, ParameterType::INTEGER); diff --git a/administrator/components/com_content/tmpl/article/edit.php b/administrator/components/com_content/tmpl/article/edit.php index bf359a97e0f..fd9add68c99 100644 --- a/administrator/components/com_content/tmpl/article/edit.php +++ b/administrator/components/com_content/tmpl/article/edit.php @@ -56,7 +56,7 @@
- 'general')); ?> + 'general', 'recall' => true, 'breakpoint' => 768]); ?>
diff --git a/administrator/components/com_content/tmpl/articles/default.php b/administrator/components/com_content/tmpl/articles/default.php index 062d2ff8782..d3fa1fb904e 100644 --- a/administrator/components/com_content/tmpl/articles/default.php +++ b/administrator/components/com_content/tmpl/articles/default.php @@ -221,7 +221,8 @@ 'transitions' => $transitions, 'title' => Text::_($item->stage_title), 'tip_content' => Text::sprintf('JWORKFLOW', Text::_($item->workflow_title)), - 'id' => 'workflow-' . $item->id + 'id' => 'workflow-' . $item->id, + 'task' => 'articles.runTransition' ]; echo (new TransitionButton($options)) diff --git a/administrator/components/com_content/tmpl/articles/default_batch_body.php b/administrator/components/com_content/tmpl/articles/default_batch_body.php index ecd8a930ad4..eaa3e08bbea 100644 --- a/administrator/components/com_content/tmpl/articles/default_batch_body.php +++ b/administrator/components/com_content/tmpl/articles/default_batch_body.php @@ -10,6 +10,7 @@ use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; +use Joomla\CMS\Language\Multilanguage; use Joomla\CMS\Layout\LayoutHelper; $params = ComponentHelper::getParams('com_content'); @@ -21,11 +22,13 @@
-
-
- + +
+
+ +
-
+
diff --git a/administrator/components/com_content/tmpl/featured/default.php b/administrator/components/com_content/tmpl/featured/default.php index 52624114666..c57e7ef6f93 100644 --- a/administrator/components/com_content/tmpl/featured/default.php +++ b/administrator/components/com_content/tmpl/featured/default.php @@ -227,7 +227,8 @@ 'transitions' => $transitions, 'title' => Text::_($item->stage_title), 'tip_content' => Text::sprintf('JWORKFLOW', Text::_($item->workflow_title)), - 'id' => 'workflow-' . $item->id + 'id' => 'workflow-' . $item->id, + 'task' => 'articles.runTransitions' ]; echo (new TransitionButton($options)) diff --git a/administrator/components/com_fields/tmpl/field/edit.php b/administrator/components/com_fields/tmpl/field/edit.php index 65e5950db36..a357d89c792 100644 --- a/administrator/components/com_fields/tmpl/field/edit.php +++ b/administrator/components/com_fields/tmpl/field/edit.php @@ -32,7 +32,7 @@
- 'general')); ?> + 'general', 'recall' => true, 'breakpoint' => 768]); ?>
diff --git a/administrator/components/com_fields/tmpl/fields/default.php b/administrator/components/com_fields/tmpl/fields/default.php index ee46daf5d96..5736147e551 100644 --- a/administrator/components/com_fields/tmpl/fields/default.php +++ b/administrator/components/com_fields/tmpl/fields/default.php @@ -144,13 +144,13 @@ escape($item->title); ?> - +
note)) : ?> escape($item->name)); ?> escape($item->name), $this->escape($item->note)); ?> - +
only_use_in_subform) : ?>
diff --git a/administrator/components/com_fields/tmpl/fields/default_batch_body.php b/administrator/components/com_fields/tmpl/fields/default_batch_body.php index 5c07fe160b8..700f26699ad 100644 --- a/administrator/components/com_fields/tmpl/fields/default_batch_body.php +++ b/administrator/components/com_fields/tmpl/fields/default_batch_body.php @@ -9,6 +9,7 @@ defined('_JEXEC') or die; use Joomla\CMS\HTML\HTMLHelper; +use Joomla\CMS\Language\Multilanguage; use Joomla\CMS\Language\Text; use Joomla\CMS\Layout\LayoutHelper; @@ -22,11 +23,13 @@
-
-
- + +
+
+ +
-
+
@@ -35,7 +38,7 @@
-
+
state->get('filter.context') . '&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="item-form" aria-label="item->id === 0 ? 'NEW' : 'EDIT'), true); ?>" class="form-validate">
- 'general')); ?> + 'general', 'recall' => true, 'breakpoint' => 768]); ?>
diff --git a/administrator/components/com_fields/tmpl/groups/default.php b/administrator/components/com_fields/tmpl/groups/default.php index e4f1ab82d31..3a67ff0042e 100644 --- a/administrator/components/com_fields/tmpl/groups/default.php +++ b/administrator/components/com_fields/tmpl/groups/default.php @@ -136,11 +136,11 @@ escape($item->title); ?> - +
note) : ?> escape($item->note)); ?> - +
diff --git a/administrator/components/com_fields/tmpl/groups/default_batch_body.php b/administrator/components/com_fields/tmpl/groups/default_batch_body.php index 9cd4df9187d..9b44ea54a43 100644 --- a/administrator/components/com_fields/tmpl/groups/default_batch_body.php +++ b/administrator/components/com_fields/tmpl/groups/default_batch_body.php @@ -8,17 +8,19 @@ */ defined('_JEXEC') or die; +use Joomla\CMS\Language\Multilanguage; use Joomla\CMS\Layout\LayoutHelper; - ?>
-
-
- + +
+
+ +
-
+
diff --git a/administrator/components/com_finder/src/Helper/FinderHelper.php b/administrator/components/com_finder/src/Helper/FinderHelper.php index 74d478e82ad..ca51836df73 100644 --- a/administrator/components/com_finder/src/Helper/FinderHelper.php +++ b/administrator/components/com_finder/src/Helper/FinderHelper.php @@ -11,7 +11,7 @@ \defined('_JEXEC') or die; -use Joomla\CMS\Factory; +use Joomla\CMS\Extension\ExtensionHelper; /** * Helper class for Finder. @@ -28,14 +28,6 @@ class FinderHelper */ public static $extension = 'com_finder'; - /** - * The finder plugin id. - * - * @var integer - * @since __DEPLOY_VERSION__ - */ - protected static $pluginId; - /** * Gets the finder system plugin extension id. * @@ -45,26 +37,8 @@ class FinderHelper */ public static function getFinderPluginId() { - if (self::$pluginId === null) - { - $db = Factory::getDbo(); - $query = $db->getQuery(true) - ->select($db->quoteName('extension_id')) - ->from($db->quoteName('#__extensions')) - ->where($db->quoteName('folder') . ' = ' . $db->quote('content')) - ->where($db->quoteName('element') . ' = ' . $db->quote('finder')); - $db->setQuery($query); - - try - { - self::$pluginId = (int) $db->loadResult(); - } - catch (\RuntimeException $e) - { - Factory::getApplication()->enqueueMessage($e->getMessage(), 'error'); - } - } + $pluginRecord = ExtensionHelper::getExtensionRecord('finder', 'plugin', null, 'content'); - return self::$pluginId; + return $pluginRecord !== null ? $pluginRecord->extension_id : 0; } } diff --git a/administrator/components/com_finder/tmpl/filter/edit.php b/administrator/components/com_finder/tmpl/filter/edit.php index 2e85cdd7ae6..7cec87a044d 100644 --- a/administrator/components/com_finder/tmpl/filter/edit.php +++ b/administrator/components/com_finder/tmpl/filter/edit.php @@ -35,7 +35,7 @@
- 'details')); ?> + 'details', 'recall' => true, 'breakpoint' => 768]); ?>
diff --git a/administrator/components/com_finder/tmpl/index/emptystate.php b/administrator/components/com_finder/tmpl/index/emptystate.php index 3af4b9b4e45..dea524c6f41 100644 --- a/administrator/components/com_finder/tmpl/index/emptystate.php +++ b/administrator/components/com_finder/tmpl/index/emptystate.php @@ -9,8 +9,10 @@ defined('_JEXEC') or die; +use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Layout\LayoutHelper; +use Joomla\CMS\Router\Route; $displayData = [ 'textPrefix' => 'COM_FINDER', @@ -23,3 +25,29 @@ ]; echo LayoutHelper::render('joomla.content.emptystate', $displayData); + +if ($this->finderPluginId) : ?> + finderPluginId . '&tmpl=component&layout=modal'); ?> + finderPluginId . 'Modal', + array( + 'url' => $link, + 'title' => Text::_('COM_FINDER_EDIT_PLUGIN_SETTINGS'), + 'height' => '400px', + 'width' => '800px', + 'bodyHeight' => '70', + 'modalWidth' => '80', + 'closeButton' => false, + 'backdrop' => 'static', + 'keyboard' => false, + 'footer' => '' + . '' + . '' + ) + ); ?> + diff --git a/administrator/components/com_installer/src/Controller/InstallController.php b/administrator/components/com_installer/src/Controller/InstallController.php index 9b341b9bedf..af365d77941 100644 --- a/administrator/components/com_installer/src/Controller/InstallController.php +++ b/administrator/components/com_installer/src/Controller/InstallController.php @@ -11,6 +11,7 @@ \defined('_JEXEC') or die; +use Joomla\CMS\Access\Exception\NotAllowed; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\Controller\BaseController; use Joomla\CMS\Response\JsonResponse; @@ -37,6 +38,11 @@ public function install() // Check for request forgeries. $this->checkToken(); + if (!$this->app->getIdentity()->authorise('core.admin')) + { + throw new NotAllowed(Text::_('JERROR_ALERTNOAUTHOR'), 403); + } + /** @var \Joomla\Component\Installer\Administrator\Model\InstallModel $model */ $model = $this->getModel('install'); @@ -86,8 +92,12 @@ public function ajax_upload() // Check for request forgeries. Session::checkToken() or jexit(Text::_('JINVALID_TOKEN')); - $app = $this->app; - $message = $app->getUserState('com_installer.message'); + if (!$this->app->getIdentity()->authorise('core.admin')) + { + throw new NotAllowed(Text::_('JERROR_ALERTNOAUTHOR'), 403); + } + + $message = $this->app->getUserState('com_installer.message'); // Do install $result = $this->install(); @@ -97,12 +107,12 @@ public function ajax_upload() // Push message queue to session because we will redirect page by \Javascript, not $app->redirect(). // The "application.queue" is only set in redirect() method, so we must manually store it. - $app->getSession()->set('application.queue', $app->getMessageQueue()); + $this->app->getSession()->set('application.queue', $this->app->getMessageQueue()); header('Content-Type: application/json'); echo new JsonResponse(array('redirect' => $redirect), $message, !$result); - $app->close(); + $this->app->close(); } } diff --git a/administrator/components/com_installer/src/Controller/ManageController.php b/administrator/components/com_installer/src/Controller/ManageController.php index fc1f213b352..3eb258e6b69 100644 --- a/administrator/components/com_installer/src/Controller/ManageController.php +++ b/administrator/components/com_installer/src/Controller/ManageController.php @@ -37,7 +37,6 @@ class ManageController extends BaseController * @param Input $input Input * * @since 1.6 - * @see \JControllerLegacy */ public function __construct($config = array(), MVCFactoryInterface $factory = null, $app = null, $input = null) { diff --git a/administrator/components/com_installer/src/Controller/UpdatesitesController.php b/administrator/components/com_installer/src/Controller/UpdatesitesController.php index 314ad9b28f9..b9cd5b37da3 100644 --- a/administrator/components/com_installer/src/Controller/UpdatesitesController.php +++ b/administrator/components/com_installer/src/Controller/UpdatesitesController.php @@ -45,7 +45,6 @@ class UpdatesitesController extends AdminController * @param Input $input Input * * @since 1.6 - * @see \JControllerLegacy */ public function __construct($config = array(), MVCFactoryInterface $factory = null, $app = null, $input = null) { diff --git a/administrator/components/com_installer/src/Model/UpdatesitesModel.php b/administrator/components/com_installer/src/Model/UpdatesitesModel.php index 8e7250f9386..1391aae10ee 100644 --- a/administrator/components/com_installer/src/Model/UpdatesitesModel.php +++ b/administrator/components/com_installer/src/Model/UpdatesitesModel.php @@ -380,8 +380,13 @@ public function rebuild(): void { /** * Search if the extension exists in the extensions table. Excluding Joomla - * core extensions (id < 10000) and discovered extensions. + * core extensions and discovered but not yet installed extensions. */ + + $name = (string) $manifest->name; + $pkgName = (string) $manifest->packagename; + $type = (string) $manifest['type']; + $query = $db->getQuery(true) ->select($db->quoteName('extension_id')) ->from($db->quoteName('#__extensions')) @@ -400,9 +405,9 @@ public function rebuild(): void 'OR' ) ->whereNotIn($db->quoteName('extension_id'), $joomlaCoreExtensionIds) - ->bind(':name', $manifest->name) - ->bind(':pkgname', $manifest->packagename) - ->bind(':type', $manifest['type']); + ->bind(':name', $name) + ->bind(':pkgname', $pkgName) + ->bind(':type', $type); $db->setQuery($query); $eid = (int) $db->loadResult(); diff --git a/administrator/components/com_installer/src/Model/WarningsModel.php b/administrator/components/com_installer/src/Model/WarningsModel.php index ba53b4664a9..395add43e35 100644 --- a/administrator/components/com_installer/src/Model/WarningsModel.php +++ b/administrator/components/com_installer/src/Model/WarningsModel.php @@ -95,7 +95,11 @@ public function getItems() return $messages; } - $messages = array(); + $messages = []; + + // 16MB + $minMemory = 16 * 1024 * 1024; + $file_uploads = ini_get('file_uploads'); if (!$file_uploads) @@ -111,13 +115,10 @@ public function getItems() $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSET'), 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSETDESC')); } - else + elseif (!is_writable($upload_dir)) { - if (!is_writable($upload_dir)) - { - $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTWRITEABLE'), - 'description' => Text::sprintf('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTWRITEABLEDESC', $upload_dir)); - } + $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTWRITEABLE'), + 'description' => Text::sprintf('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTWRITEABLEDESC', $upload_dir)); } $tmp_path = Factory::getApplication()->get('tmp_path'); @@ -127,26 +128,23 @@ public function getItems() $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTSET'), 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTSETDESC')); } - else + elseif (!is_writable($tmp_path)) { - if (!is_writable($tmp_path)) - { - $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTWRITEABLE'), - 'description' => Text::sprintf('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTWRITEABLEDESC', $tmp_path)); - } + $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTWRITEABLE'), + 'description' => Text::sprintf('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTWRITEABLEDESC', $tmp_path)); } $memory_limit = $this->return_bytes(ini_get('memory_limit')); - if ($memory_limit < (8 * 1024 * 1024) && $memory_limit != -1) + if ($memory_limit < $minMemory && $memory_limit != -1) { - // 8MB + // 16MB $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_LOWMEMORYWARN'), 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_LOWMEMORYDESC')); } - elseif ($memory_limit < (16 * 1024 * 1024) && $memory_limit != -1) + elseif ($memory_limit < ($minMemory * 1.5) && $memory_limit != -1) { - // 16MB + // 24MB $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_MEDMEMORYWARN'), 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_MEDMEMORYDESC')); } @@ -160,13 +158,13 @@ public function getItems() 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_UPLOADBIGGERTHANPOSTDESC')); } - if ($post_max_size < (8 * 1024 * 1024)) // 8MB + if ($post_max_size < $minMemory) { $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_SMALLPOSTSIZE'), 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_SMALLPOSTSIZEDESC')); } - if ($upload_max_filesize < (8 * 1024 * 1024)) // 8MB + if ($upload_max_filesize < $minMemory) { $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_SMALLUPLOADSIZE'), 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_SMALLUPLOADSIZEDESC')); diff --git a/administrator/components/com_installer/src/View/Install/HtmlView.php b/administrator/components/com_installer/src/View/Install/HtmlView.php index ec911436212..b0929b8a7e6 100644 --- a/administrator/components/com_installer/src/View/Install/HtmlView.php +++ b/administrator/components/com_installer/src/View/Install/HtmlView.php @@ -11,6 +11,9 @@ \defined('_JEXEC') or die; +use Joomla\CMS\Access\Exception\NotAllowed; +use Joomla\CMS\Factory; +use Joomla\CMS\Language\Text; use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\Component\Installer\Administrator\View\Installer\HtmlView as InstallerViewDefault; @@ -33,6 +36,11 @@ class HtmlView extends InstallerViewDefault */ public function display($tpl = null) { + if (!Factory::getUser()->authorise('core.admin')) + { + throw new NotAllowed(Text::_('JERROR_ALERTNOAUTHOR'), 403); + } + $paths = new \stdClass; $paths->first = ''; diff --git a/administrator/components/com_installer/src/View/Languages/HtmlView.php b/administrator/components/com_installer/src/View/Languages/HtmlView.php index 689e2160927..b8383a3f2cb 100644 --- a/administrator/components/com_installer/src/View/Languages/HtmlView.php +++ b/administrator/components/com_installer/src/View/Languages/HtmlView.php @@ -11,6 +11,8 @@ \defined('_JEXEC') or die; +use Joomla\CMS\Access\Exception\NotAllowed; +use Joomla\CMS\Factory; use Joomla\CMS\Helper\ContentHelper; use Joomla\CMS\Language\LanguageHelper; use Joomla\CMS\Language\Text; @@ -44,6 +46,11 @@ class HtmlView extends InstallerViewDefault */ public function display($tpl = null) { + if (!Factory::getUser()->authorise('core.admin')) + { + throw new NotAllowed(Text::_('JERROR_ALERTNOAUTHOR'), 403); + } + // Get data from the model. $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); diff --git a/administrator/components/com_installer/tmpl/discover/emptystate.php b/administrator/components/com_installer/tmpl/discover/emptystate.php index 0520a191204..547c2b77acf 100644 --- a/administrator/components/com_installer/tmpl/discover/emptystate.php +++ b/administrator/components/com_installer/tmpl/discover/emptystate.php @@ -16,7 +16,7 @@ $displayData = [ 'textPrefix' => 'COM_INSTALLER', 'formURL' => 'index.php?option=com_installer&task=discover.refresh', - 'helpURL' => 'https://docs.joomla.org/Help4.x:Extensions:_Discover', + 'helpURL' => 'https://docs.joomla.org/Special:MyLanguage/Help4.x:Extensions:_Discover', 'icon' => 'icon-puzzle-piece install', 'createURL' => 'index.php?option=com_installer&task=discover.refresh&' . Session::getFormToken() . '=1', 'content' => Text::_('COM_INSTALLER_MSG_DISCOVER_DESCRIPTION'), diff --git a/administrator/components/com_installer/tmpl/install/default.php b/administrator/components/com_installer/tmpl/install/default.php index a61194ac868..151bf9fa384 100644 --- a/administrator/components/com_installer/tmpl/install/default.php +++ b/administrator/components/com_installer/tmpl/install/default.php @@ -51,7 +51,7 @@ - $tabs[0]['name'] ?? '']); ?> + $tabs[0]['name'] ?? '', 'recall' => true, 'breakpoint' => 768]); ?> diff --git a/administrator/components/com_installer/tmpl/update/default.php b/administrator/components/com_installer/tmpl/update/default.php index 9fc9f1174cf..e31691f9b02 100644 --- a/administrator/components/com_installer/tmpl/update/default.php +++ b/administrator/components/com_installer/tmpl/update/default.php @@ -124,7 +124,7 @@ changelogurl)) : ?> - + 'COM_INSTALLER', 'formURL' => 'index.php?option=com_installer&view=update', - 'helpURL' => 'https://docs.joomla.org/Help4.x:Extensions:_Update', + 'helpURL' => 'https://docs.joomla.org/Special:MyLanguage/Help4.x:Extensions:_Update', 'icon' => 'icon-puzzle-piece install', ]; diff --git a/administrator/components/com_installer/tmpl/updatesites/default.php b/administrator/components/com_installer/tmpl/updatesites/default.php index 57f6fdf15fe..ce0c7cf9a7d 100644 --- a/administrator/components/com_installer/tmpl/updatesites/default.php +++ b/administrator/components/com_installer/tmpl/updatesites/default.php @@ -102,12 +102,10 @@ update_site_name); ?> -
- + +
downloadKey['valid']) : ?> @@ -123,7 +121,7 @@ - +
diff --git a/administrator/components/com_installer/tmpl/warnings/emptystate.php b/administrator/components/com_installer/tmpl/warnings/emptystate.php index 10cb596b5b3..03ebbd1bc86 100644 --- a/administrator/components/com_installer/tmpl/warnings/emptystate.php +++ b/administrator/components/com_installer/tmpl/warnings/emptystate.php @@ -13,7 +13,7 @@ use Joomla\CMS\Layout\LayoutHelper; $displayData = [ - 'helpURL' => 'https://docs.joomla.org/Help4.x:Information:_Warnings', + 'helpURL' => 'https://docs.joomla.org/Special:MyLanguage/Help4.x:Information:_Warnings', 'icon' => 'icon-puzzle-piece install', 'title' => Text::_('COM_INSTALLER_MSG_WARNINGS_NONE'), 'content' => '', diff --git a/administrator/components/com_joomlaupdate/src/Controller/DisplayController.php b/administrator/components/com_joomlaupdate/src/Controller/DisplayController.php index 1432a4ebd07..75534fc13bc 100644 --- a/administrator/components/com_joomlaupdate/src/Controller/DisplayController.php +++ b/administrator/components/com_joomlaupdate/src/Controller/DisplayController.php @@ -14,6 +14,7 @@ use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\Controller\BaseController; use Joomla\CMS\Response\JsonResponse; +use Joomla\CMS\Router\Route; /** * Joomla! Update Controller @@ -45,6 +46,12 @@ public function display($cachable = false, $urlparams = false) // Get and render the view. if ($view = $this->getView($vName, $vFormat)) { + // Only super user can access file upload + if ($view == 'upload' && !$this->app->getIdentity()->authorise('core.admin', 'com_joomlaupdate')) + { + $this->app->redirect(Route::_('index.php?option=com_joomlaupdate', true)); + } + // Get the model for the view. /** @var \Joomla\Component\Joomlaupdate\Administrator\Model\UpdateModel $model */ $model = $this->getModel('Update'); diff --git a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php index 93e374900ce..e3eb2e31b78 100644 --- a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php +++ b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php @@ -172,6 +172,69 @@ public function refreshUpdates($force = false) } } + /** + * Makes sure that the Joomla! Update Component Update is in the database and check if there is a new version. + * + * @return boolean True if there is an update else false + * + * @since 4.0.0 + */ + public function getCheckForSelfUpdate() + { + $db = $this->getDbo(); + + $query = $db->getQuery(true) + ->select($db->quoteName('extension_id')) + ->from($db->quoteName('#__extensions')) + ->where($db->quoteName('element') . ' = ' . $db->quote('com_joomlaupdate')); + $db->setQuery($query); + + try + { + // Get the component extension ID + $joomlaUpdateComponentId = $db->loadResult(); + } + catch (\RuntimeException $e) + { + // Something is wrong here! + $joomlaUpdateComponentId = 0; + Factory::getApplication()->enqueueMessage($e->getMessage(), 'error'); + } + + // Try the update only if we have an extension id + if ($joomlaUpdateComponentId != 0) + { + // Always force to check for an update! + $cache_timeout = 0; + + $updater = Updater::getInstance(); + $updater->findUpdates($joomlaUpdateComponentId, $cache_timeout, Updater::STABILITY_STABLE); + + // Fetch the update information from the database. + $query = $db->getQuery(true) + ->select('*') + ->from($db->quoteName('#__updates')) + ->where($db->quoteName('extension_id') . ' = :id') + ->bind(':id', $joomlaUpdateComponentId, ParameterType::INTEGER); + $db->setQuery($query); + + try + { + $joomlaUpdateComponentObject = $db->loadObject(); + } + catch (\RuntimeException $e) + { + // Something is wrong here! + $joomlaUpdateComponentObject = null; + Factory::getApplication()->enqueueMessage($e->getMessage(), 'error'); + } + + return !empty($joomlaUpdateComponentObject); + } + + return false; + } + /** * Returns an array with the Joomla! update information. * @@ -1333,7 +1396,7 @@ public function getNonCoreExtensions() $decode = json_decode($extension->manifest_cache); // Removed description so that CDATA content does not cause javascript error during pre-update check - $decode->description = ''; + unset($decode->description); $this->translateExtensionName($extension); $extension->version @@ -1354,7 +1417,7 @@ public function getNonCoreExtensions() * * @since 3.10.0 */ - public function getNonCorePlugins($folderFilter = array()) + public function getNonCorePlugins($folderFilter = ['system','user','authentication','actionlog','twofactorauth']) { $db = $this->getDbo(); $query = $db->getQuery(true); @@ -1584,9 +1647,11 @@ private function getCollectionDetailsUrls($updateSiteInfo, $joomlaTargetVersion) */ private function checkCompatibility($updateFileUrl, $joomlaTargetVersion) { - $update = new \Joomla\CMS\Updater\Update; + $minimumStability = ComponentHelper::getParams('com_installer')->get('minimum_stability', Updater::STABILITY_STABLE); + + $update = new Update; $update->set('jversion.full', $joomlaTargetVersion); - $update->loadFromXml($updateFileUrl); + $update->loadFromXml($updateFileUrl, $minimumStability); $downloadUrl = $update->get('downloadurl'); @@ -1642,6 +1707,6 @@ protected function translateExtensionName(&$item) || $lang->load($extension, $source); // Translate the extension name if possible - $item->name = Text::_($item->name); + $item->name = strip_tags(Text::_($item->name)); } } diff --git a/administrator/components/com_joomlaupdate/src/View/Joomlaupdate/HtmlView.php b/administrator/components/com_joomlaupdate/src/View/Joomlaupdate/HtmlView.php index 954085328f6..23801a5c165 100644 --- a/administrator/components/com_joomlaupdate/src/View/Joomlaupdate/HtmlView.php +++ b/administrator/components/com_joomlaupdate/src/View/Joomlaupdate/HtmlView.php @@ -16,8 +16,6 @@ use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Toolbar\ToolbarHelper; -use Joomla\CMS\Updater\Updater; -use Joomla\Database\ParameterType; /** * Joomla! Update's Default View @@ -68,7 +66,25 @@ class HtmlView extends BaseHtmlView * @var \JObject * @since 4.0.0 */ - public $state; + protected $state; + + /** + * Flag if the update component itself has to be updated + * + * @var boolean True when update is available otherwise false + * + * @since 4.0.0 + */ + protected $selfUpdateAvailable = false; + + /** + * A special prefix used for the emptystate layout variable + * + * @var string The prefix + * + * @since 4.0.0 + */ + protected $messagePrefix = ''; /** * Renders the view @@ -81,42 +97,77 @@ class HtmlView extends BaseHtmlView */ public function display($tpl = null) { - // Get data from the model. - $this->state = $this->get('State'); + $this->updateInfo = $this->get('UpdateInformation'); + $this->selfUpdateAvailable = $this->get('CheckForSelfUpdate'); - // Load useful classes. - /** @var \Joomla\Component\Joomlaupdate\Administrator\Model\UpdateModel $model */ - $model = $this->getModel(); + // Get results of pre update check evaluations + $this->phpOptions = $this->get('PhpOptions'); + $this->phpSettings = $this->get('PhpSettings'); + $this->nonCoreExtensions = $this->get('NonCoreExtensions'); + $this->nonCoreCriticalPlugins = $this->get('NonCorePlugins'); - // Assign view variables. - $this->updateInfo = $model->getUpdateInformation(); + // Set to true if a required PHP option is not ok + $isCritical = false; - // Get results of pre update check evaluations - $this->phpOptions = $model->getPhpOptions(); - $this->phpSettings = $model->getPhpSettings(); - $this->nonCoreExtensions = $model->getNonCoreExtensions(); - $this->nonCoreCriticalPlugins = $model->getNonCorePlugins(array('system','user','authentication','actionlog','twofactorauth')); + foreach ($this->phpOptions as $option) + { + if (!$option->state) + { + $isCritical = true; + break; + } + } - // Set the toolbar information. - ToolbarHelper::title(Text::_('COM_JOOMLAUPDATE_OVERVIEW'), 'joomla install'); - ToolbarHelper::custom('update.purge', 'loop', '', 'COM_JOOMLAUPDATE_TOOLBAR_CHECK', false); + $this->state = $this->get('State'); - // Add toolbar buttons. - if (Factory::getUser()->authorise('core.admin')) + $hasUpdate = !empty($this->updateInfo['hasUpdate']); + $hasDownload = isset($this->updateInfo['object']->downloadurl->_data); + + // Fresh update, show it + if ($this->getLayout() == 'complete') { - ToolbarHelper::preferences('com_joomlaupdate'); + // Complete message, nothing to do here + } + // There is an update for the updater itself. So we have to update it first + elseif ($this->selfUpdateAvailable) + { + $this->setLayout('selfupdate'); } + elseif (!$hasDownload || !$hasUpdate) + { + // Could be that we have a download file but no update, so we offer a re-install + if ($hasDownload) + { + // We can reinstall if we have a URL but no update + $this->setLayout('reinstall'); + } + // No download available + else + { + if ($hasUpdate) + { + $this->messagePrefix = '_NODOWNLOAD'; + } - ToolbarHelper::divider(); - ToolbarHelper::help('JHELP_COMPONENTS_JOOMLA_UPDATE'); + $this->setLayout('noupdate'); + } + } + // Here we have now two options: preupdatecheck or update + elseif ($this->getLayout() != 'update' || $isCritical) + { + $this->setLayout('preupdatecheck'); + } - if (!is_null($this->updateInfo['object'])) + if (in_array($this->getLayout(), ['preupdatecheck', 'update', 'upload'])) { - // Show the message if an update is found. - Factory::getApplication()->enqueueMessage(Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATE_NOTICE'), 'warning'); + $language = Factory::getLanguage(); + $language->load('com_installer', JPATH_ADMINISTRATOR, 'en-GB', false, true); + $language->load('com_installer', JPATH_ADMINISTRATOR, null, true); + + Factory::getApplication()->enqueueMessage(Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATE_NOTICE'), 'notice'); } - $params = ComponentHelper::getParams('com_joomlaupdate'); + $params = ComponentHelper::getParams('com_joomlaupdate'); switch ($params->get('updatesource', 'default')) { @@ -151,102 +202,52 @@ public function display($tpl = null) $this->updateSourceKey = Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT'); } - $this->warnings = array(); - /** @var \Joomla\Component\Installer\Administrator\Model\WarningsModel $warningsModel */ - $warningsModel = $this->getModel('warnings'); - - if (is_object($warningsModel) && $warningsModel instanceof \Joomla\CMS\MVC\Model\BaseDatabaseModel) - { - $language = Factory::getLanguage(); - $language->load('com_installer', JPATH_ADMINISTRATOR, 'en-GB', false, true); - $language->load('com_installer', JPATH_ADMINISTRATOR, null, true); - - $this->warnings = $warningsModel->getItems(); - } - - $this->selfUpdate = $this->checkForSelfUpdate(); - - // Only Super Users have access to the Update & Install for obvious security reasons - $this->showUploadAndUpdate = Factory::getUser()->authorise('core.admin'); - // Remove temporary files - $model->removePackageFiles(); + $this->getModel()->removePackageFiles(); + + $this->addToolbar(); // Render the view. parent::display($tpl); } /** - * Makes sure that the Joomla! Update Component Update is in the database and check if there is a new version. + * Add the page title and toolbar. * - * @return boolean True if there is an update else false + * @return void * - * @since 3.6.3 + * @since 4.0.0 */ - private function checkForSelfUpdate() + protected function addToolbar() { - $db = Factory::getDbo(); - - $query = $db->getQuery(true) - ->select($db->quoteName('extension_id')) - ->from($db->quoteName('#__extensions')) - ->where($db->quoteName('element') . ' = ' . $db->quote('com_joomlaupdate')); - $db->setQuery($query); + // Set the toolbar information. + ToolbarHelper::title(Text::_('COM_JOOMLAUPDATE_OVERVIEW'), 'joomla install'); - try + if (in_array($this->getLayout(), ['update', 'complete'])) { - // Get the component extension ID - $joomlaUpdateComponentId = $db->loadResult(); + $arrow = Factory::getLanguage()->isRtl() ? 'arrow-right' : 'arrow-left'; + + ToolbarHelper::link('index.php?option=com_joomlaupdate', 'JTOOLBAR_BACK', $arrow); + + ToolbarHelper::title(Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_TAB_UPLOAD'), 'joomla install'); } - catch (\RuntimeException $e) + elseif (!$this->selfUpdateAvailable) { - // Something is wrong here! - $joomlaUpdateComponentId = 0; - Factory::getApplication()->enqueueMessage($e->getMessage(), 'error'); + ToolbarHelper::custom('update.purge', 'loop', '', 'COM_JOOMLAUPDATE_TOOLBAR_CHECK', false); } - // Try the update only if we have an extension id - if ($joomlaUpdateComponentId != 0) + // Add toolbar buttons. + if (Factory::getUser()->authorise('core.admin')) { - // Always force to check for an update! - $cache_timeout = 0; - - $updater = Updater::getInstance(); - $updater->findUpdates($joomlaUpdateComponentId, $cache_timeout, Updater::STABILITY_STABLE); - - // Fetch the update information from the database. - $query = $db->getQuery(true) - ->select('*') - ->from($db->quoteName('#__updates')) - ->where($db->quoteName('extension_id') . ' = :id') - ->bind(':id', $joomlaUpdateComponentId, ParameterType::INTEGER); - $db->setQuery($query); - - try - { - $joomlaUpdateComponentObject = $db->loadObject(); - } - catch (\RuntimeException $e) - { - // Something is wrong here! - $joomlaUpdateComponentObject = null; - Factory::getApplication()->enqueueMessage($e->getMessage(), 'error'); - } - - if (is_null($joomlaUpdateComponentObject)) - { - // No Update great! - return false; - } - - return true; + ToolbarHelper::preferences('com_joomlaupdate'); } + + ToolbarHelper::divider(); + ToolbarHelper::help('JHELP_COMPONENTS_JOOMLA_UPDATE'); } /** * Returns true, if the pre update check should be displayed. - * This logic is not hardcoded in tmpl files, because it is - * used by the Hathor tmpl too. * * @return boolean * @@ -255,7 +256,6 @@ private function checkForSelfUpdate() public function shouldDisplayPreUpdateCheck() { return isset($this->updateInfo['object']->downloadurl->_data) - && $this->getModel()->isDatabaseTypeSupported() - && $this->getModel()->isPhpVersionSupported(); + && !empty($this->updateInfo['hasUpdate']); } } diff --git a/administrator/components/com_joomlaupdate/src/View/Upload/HtmlView.php b/administrator/components/com_joomlaupdate/src/View/Upload/HtmlView.php index bcf09376e1b..59d7c5c1542 100644 --- a/administrator/components/com_joomlaupdate/src/View/Upload/HtmlView.php +++ b/administrator/components/com_joomlaupdate/src/View/Upload/HtmlView.php @@ -23,6 +23,33 @@ */ class HtmlView extends BaseHtmlView { + /** + * An array with the Joomla! update information. + * + * @var array + * + * @since 4.0.0 + */ + protected $updateInfo = null; + + /** + * Flag if the update component itself has to be updated + * + * @var boolean True when update is available otherwise false + * + * @since 4.0.0 + */ + protected $selfUpdateAvailable = false; + + /** + * Warnings for the upload update + * + * @var array An array of warnings which could prevent the upload update + * + * @since 4.0.0 + */ + protected $warnings = []; + /** * Renders the view. * @@ -34,17 +61,40 @@ class HtmlView extends BaseHtmlView */ public function display($tpl = null) { - // Set the toolbar information. - ToolbarHelper::title(Text::_('COM_JOOMLAUPDATE_OVERVIEW'), 'sync install'); - ToolbarHelper::divider(); - ToolbarHelper::help('JHELP_COMPONENTS_JOOMLA_UPDATE'); - // Load com_installer's language $language = Factory::getLanguage(); $language->load('com_installer', JPATH_ADMINISTRATOR, 'en-GB', false, true); $language->load('com_installer', JPATH_ADMINISTRATOR, null, true); + $this->updateInfo = $this->get('UpdateInformation'); + $this->selfUpdateAvailable = $this->get('CheckForSelfUpdate'); + + if ($this->getLayout() !== 'captive') + { + $this->warnings = $this->get('Items', 'warnings'); + } + + $this->addToolbar(); + // Render the view. parent::display($tpl); } + + /** + * Add the page title and toolbar. + * + * @return void + * + * @since 4.0.0 + */ + protected function addToolbar() + { + // Set the toolbar information. + ToolbarHelper::title(Text::_('COM_JOOMLAUPDATE_OVERVIEW'), 'sync install'); + + $arrow = Factory::getLanguage()->isRtl() ? 'arrow-right' : 'arrow-left'; + ToolbarHelper::link('index.php?option=com_joomlaupdate&' . ($this->getLayout() == 'captive' ? 'view=upload' : ''), 'JTOOLBAR_BACK', $arrow); + ToolbarHelper::divider(); + ToolbarHelper::help('JHELP_COMPONENTS_JOOMLA_UPDATE'); + } } diff --git a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/complete.php b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/complete.php index 8827ecd4457..01a8d4eb7fe 100644 --- a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/complete.php +++ b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/complete.php @@ -14,16 +14,15 @@ use Joomla\CMS\Router\Route; ?> - 'complete')); ?> - - +
+

+
- - - +
+
diff --git a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default.php b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default.php deleted file mode 100644 index 098986c9a17..00000000000 --- a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default.php +++ /dev/null @@ -1,98 +0,0 @@ - - * @license GNU General Public License version 2 or later; see LICENSE.txt - */ - -defined('_JEXEC') or die; - -use Joomla\CMS\Factory; -use Joomla\CMS\HTML\HTMLHelper; -use Joomla\CMS\Language\Text; -use Joomla\CMS\WebAsset\WebAssetManager; -use Joomla\Component\Joomlaupdate\Administrator\View\Joomlaupdate\HtmlView; - -/** @var HtmlView $this */ - -/** @var WebAssetManager $wa */ -$wa = $this->document->getWebAssetManager(); -$wa->useScript('core') - ->useScript('com_joomlaupdate.default') - ->useScript('bootstrap.popover'); - -Text::script('COM_INSTALLER_MSG_INSTALL_PLEASE_SELECT_A_PACKAGE', true); -Text::script('JYES'); -Text::script('JNO'); -Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSION_NO_COMPATIBILITY_INFORMATION'); -Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSION_WARNING_UNKNOWN'); -Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSION_SERVER_ERROR'); -Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN'); -Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN_DESC'); -Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN_LIST'); -Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN_CONFIRM_MESSAGE'); -Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_HELP'); - -$latestJoomlaVersion = $this->updateInfo['latest']; -$currentJoomlaVersion = isset($this->updateInfo['current']) ? $this->updateInfo['current'] : JVERSION; -?> - -
- showUploadAndUpdate) : ?> - $this->shouldDisplayPreUpdateCheck() ? 'pre-update-check' : 'online-update')); ?> - shouldDisplayPreUpdateCheck()) : ?> - - loadTemplate('preupdatecheck'); ?> - - - - - - - - selfUpdate) : ?> - - enqueueMessage(Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_INSTALL_SELF_UPDATE_FIRST'), 'error'); ?> - loadTemplate('updatemefirst'); ?> - - updateInfo['object']->downloadurl->_data) - && !$this->updateInfo['hasUpdate'])) : ?> - - loadTemplate('noupdate'); ?> - updateInfo['object']->downloadurl->_data) - || !$this->getModel()->isDatabaseTypeSupported() - || !$this->getModel()->isPhpVersionSupported()) : ?> - - loadTemplate('nodownload'); ?> - updateInfo['hasUpdate']) : ?> - - loadTemplate('reinstall'); ?> - - - loadTemplate('update'); ?> - - - - - - - - - - - showUploadAndUpdate) : ?> - - - loadTemplate('upload'); ?> - - - - - -
-
diff --git a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_nodownload.php b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_nodownload.php deleted file mode 100644 index dc94a63d685..00000000000 --- a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_nodownload.php +++ /dev/null @@ -1,48 +0,0 @@ - - * @license GNU General Public License version 2 or later; see LICENSE.txt - */ - -defined('_JEXEC') or die; - -use Joomla\CMS\Language\Text; -use Joomla\Component\Joomlaupdate\Administrator\View\Joomlaupdate\HtmlView; - -/** @var HtmlView $this */ -?> - -
- - - -
- getModel()->isDatabaseTypeSupported()) : ?> -

- -

-

- updateInfo['latest']); ?> -

- - getModel()->isPhpVersionSupported()) : ?> -

- -

-

- updateInfo['latest']); ?> -

- - updateInfo['object']->downloadurl->_data) && $this->updateInfo['installed'] < $this->updateInfo['latest'] && $this->getModel()->isPhpVersionSupported() && $this->getModel()->isDatabaseTypeSupported()) : ?> -

- -

-

- updateInfo['latest']); ?> -

- -
-
diff --git a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_noupdate.php b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_noupdate.php deleted file mode 100644 index 28f06e3d08d..00000000000 --- a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_noupdate.php +++ /dev/null @@ -1,27 +0,0 @@ - - * @license GNU General Public License version 2 or later; see LICENSE.txt - */ - -defined('_JEXEC') or die; - -use Joomla\CMS\Language\Text; -use Joomla\Component\Joomlaupdate\Administrator\View\Joomlaupdate\HtmlView; - -/** @var HtmlView $this */ -?> -
- - - -

- langKey, $this->updateSourceKey); ?> -

-
- -
-
diff --git a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_preupdatecheck.php b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_preupdatecheck.php deleted file mode 100644 index e1b0831320f..00000000000 --- a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_preupdatecheck.php +++ /dev/null @@ -1,269 +0,0 @@ - - * @license GNU General Public License version 2 or later; see LICENSE.txt - */ - -defined('_JEXEC') or die; - -use Joomla\CMS\Factory; -use Joomla\CMS\Language\Text; -use Joomla\CMS\Uri\Uri; -use Joomla\Component\Joomlaupdate\Administrator\View\Joomlaupdate\HtmlView; - -/** @var HtmlView $this */ - -// JText::script doesn't have a sprintf equivalent so work around this -Factory::getDocument()->addScriptOptions('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_SHOW_MORE_COMPATIBILITY_INFORMATION', Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_SHOW_MORE_COMPATIBILITY_INFORMATION', '', true)) - ->addScriptOptions('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_SHOW_LESS_COMPATIBILITY_INFORMATION', Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_SHOW_LESS_COMPATIBILITY_INFORMATION', '', true)) - ->addScriptOptions('nonCoreCriticalPlugins', $this->nonCoreCriticalPlugins); - -$compatibilityTypes = array( - 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_RUNNING_PRE_UPDATE_CHECKS' => array( - 'class' => 'alert-secondary', - 'notes' => 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_RUNNING_PRE_UPDATE_CHECKS_NOTES', - 'group' => 0, - ), - 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_PRE_UPDATE_CHECKS_FAILED' => array( - 'class' => 'alert-danger', - 'notes' => 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_PRE_UPDATE_CHECKS_FAILED_NOTES', - 'group' => 4, - ), - 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_UPDATE_SERVER_OFFERS_NO_COMPATIBLE_VERSION' => array( - 'class' => 'alert-danger', - 'notes' => 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_UPDATE_SERVER_OFFERS_NO_COMPATIBLE_VERSION_NOTES', - 'group' => 1, - ), - 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_REQUIRING_UPDATES_TO_BE_COMPATIBLE' => array( - 'class' => 'alert-warning', - 'notes' => 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_REQUIRING_UPDATES_TO_BE_COMPATIBLE_NOTES', - 'group' => 2, - ), - 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_PROBABLY_COMPATIBLE' => array( - 'class' => 'alert-success', - 'notes' => 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_PROBABLY_COMPATIBLE_NOTES', - 'group' => 3, - ), -); -?> - -

- updateInfo['latest']); ?> -

-

- -

- -
-
-
- - phpOptions as $option) : ?> - state) : ?> - - - - - -

- -
- ' - ); ?> -
-

-
- -
-
- -
-
- - phpSettings as $setting) : ?> - state !== $setting->recommended) : ?> - - - - - - -

- -
- ' - ); ?> -
-

-
- -
-
-
-
- nonCoreExtensions)) : ?> -
-

- -

- $compatibilityData) : ?> - - - -
- -

- -
- ' - ); ?> -
- - -

-
-
- -
- - - - - - - - - - - - - - nonCoreExtensions as $extension) : ?> - - - - - - - - - -
- - - -
- name; ?> - - type)); ?> -
-
- -
- -
-

- -

-
- - -
-
- -
diff --git a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_reinstall.php b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_reinstall.php deleted file mode 100644 index 8967a6aa987..00000000000 --- a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_reinstall.php +++ /dev/null @@ -1,83 +0,0 @@ - - * @license GNU General Public License version 2 or later; see LICENSE.txt - */ - -defined('_JEXEC') or die; - -use Joomla\CMS\HTML\HTMLHelper; -use Joomla\CMS\Language\Text; -use Joomla\CMS\Updater\Update; -use Joomla\Component\Joomlaupdate\Administrator\View\Joomlaupdate\HtmlView; - -/** @var HtmlView $this */ -?> -
- - - -

- - - -

-

langKey, $this->updateSourceKey); ?>

-

- - - -

- updateInfo['object']) && ($this->updateInfo['object'] instanceof Update)) : ?> -
-
- -
-
- updateInfo['object']->downloadurl->_data, - $this->updateInfo['object']->downloadurl->_data, - [ - 'target' => '_blank', - 'rel' => 'noopener noreferrer', - 'title' => Text::sprintf('JBROWSERTARGET_NEW_TITLE', $this->updateInfo['object']->downloadurl->_data) - ] - ); ?> -
-
- - updateInfo['object']->get('infourl')->_data) - && isset($this->updateInfo['object']->get('infourl')->title)) : ?> -
-
- -
-
- updateInfo['object']->get('infourl')->_data, - $this->updateInfo['object']->get('infourl')->title, - [ - 'target' => '_blank', - 'rel' => 'noopener noreferrer', - 'title' => Text::sprintf('JBROWSERTARGET_NEW_TITLE', $this->updateInfo['object']->get('infourl')->title) - ] - ); ?> -
-
- - -
- -
-
- -
-
- - -
diff --git a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_update.php b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_update.php deleted file mode 100644 index 71a1394cafb..00000000000 --- a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_update.php +++ /dev/null @@ -1,205 +0,0 @@ - - * @license GNU General Public License version 2 or later; see LICENSE.txt - */ - -defined('_JEXEC') or die; - -use Joomla\CMS\HTML\HTMLHelper; -use Joomla\CMS\Language\Text; -use Joomla\Component\Joomlaupdate\Administrator\View\Joomlaupdate\HtmlView; - -/** @var HtmlView $this */ -?> - -
- - - -

- langKey, $this->updateSourceKey); ?> -

- -
-
- -
-
- updateInfo['installed']; ?> -
-
- -
-
- -
-
- updateInfo['latest']; ?> -
-
- -
-
- -
-
- updateInfo['object']->downloadurl->_data, - $this->updateInfo['object']->downloadurl->_data, - [ - 'target' => '_blank', - 'rel' => 'noopener noreferrer', - 'title' => Text::sprintf('JBROWSERTARGET_DOWNLOAD', $this->updateInfo['object']->downloadurl->_data) - ] - ); ?> -
-
- - updateInfo['object']->get('infourl')->_data) - && isset($this->updateInfo['object']->get('infourl')->title)) : ?> -
-
- -
-
- updateInfo['object']->get('infourl')->_data, - $this->updateInfo['object']->get('infourl')->title, - [ - 'target' => '_blank', - 'rel' => 'noopener noreferrer', - 'title' => Text::sprintf('JBROWSERTARGET_NEW_TITLE', $this->updateInfo['object']->get('infourl')->title) - ] - ); ?> -
-
- - -
-

- -

-
-
- -
-
-
- - - -
- -
- -
- - - - - - - - - nonCoreCriticalPlugins as $nonCoreCriticalPlugin) : ?> - - - package_id > 0) : ?> - nonCoreExtensions as $nonCoreExtension) : ?> - package_id == $nonCoreExtension->extension_id) : ?> - - - - - - - - - - - - - -
- - - - - - - -
- name); ?> - - name; ?> - - - - manifest_cache->author)) : ?> - manifest_cache->author); ?> - package_id > 0) : ?> - nonCoreExtensions as $nonCoreExtension) : ?> - package_id == $nonCoreExtension->extension_id) : ?> - - name; ?> - - - manifest_cache->authorUrl)) : ?> - manifest_cache->authorUrl; ?> - package_id > 0) : ?> - nonCoreExtensions as $nonCoreExtension) : ?> - package_id == $nonCoreExtension->extension_id) : ?> - manifest_cache->authorUrl; ?> - - - - - - - - - - - - -
-
- - - - -
- - - -
- -
- -
-
- -
-
-
diff --git a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_updatemefirst.php b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_updatemefirst.php deleted file mode 100644 index 9d441843378..00000000000 --- a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_updatemefirst.php +++ /dev/null @@ -1,25 +0,0 @@ - - * @license GNU General Public License version 2 or later; see LICENSE.txt - */ -defined('_JEXEC') or die; - -use Joomla\CMS\Language\Text; - -?> - -
- - - -

- -

-

- -

-
diff --git a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_upload.php b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_upload.php deleted file mode 100644 index 5f654d09be9..00000000000 --- a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/default_upload.php +++ /dev/null @@ -1,84 +0,0 @@ - - * @license GNU General Public License version 2 or later; see LICENSE.txt - */ - -defined('_JEXEC') or die; - -use Joomla\CMS\HTML\HTMLHelper; -use Joomla\CMS\Language\Text; -use Joomla\CMS\Utility\Utility; -use Joomla\Component\Joomlaupdate\Administrator\View\Joomlaupdate\HtmlView; - -/** @var HtmlView $this */ - -HTMLHelper::_('behavior.core'); -Text::script('COM_INSTALLER_MSG_INSTALL_PLEASE_SELECT_A_PACKAGE', true); -Text::script('COM_INSTALLER_MSG_WARNINGS_UPLOADFILETOOBIG', true); -Text::script('JGLOBAL_SELECTED_UPLOAD_FILE_SIZE', true); -?> - -
- - -
- -warnings)) : ?> -

- warnings as $warning) : ?> -
-

- - - -

-

-
- -
-

- - - -

-

-
- - -
-
- - -
- -
- - - - -
- - -
-
-
-
- -
-
- -
- - - - - -
diff --git a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/noupdate.php b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/noupdate.php new file mode 100644 index 00000000000..3f2fa6a9ec1 --- /dev/null +++ b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/noupdate.php @@ -0,0 +1,49 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Factory; +use Joomla\CMS\HTML\HTMLHelper; +use Joomla\CMS\Language\Text; +use Joomla\CMS\Layout\LayoutHelper; +use Joomla\CMS\Session\Session; + +$uploadLink = 'index.php?option=com_joomlaupdate&view=upload'; + +$displayData = [ + 'textPrefix' => 'COM_JOOMLAUPDATE' . $this->messagePrefix, + 'content' => Text::sprintf($this->langKey, $this->updateSourceKey), + 'formURL' => 'index.php?option=com_joomlaupdate&view=joomlaupdate', + 'helpURL' => 'https://docs.joomla.org/Special:MyLanguage/Updating_from_an_existing_version', + 'icon' => 'icon-loop joomlaupdate', + 'createURL' => 'index.php?option=com_joomlaupdate&task=update.purge&' . Session::getFormToken() . '=1' +]; + +if (Factory::getApplication()->getIdentity()->authorise('core.admin', 'com_joomlaupdate')) +{ + $displayData['formAppend'] = '
' . HTMLHelper::_('link', $uploadLink, Text::_($displayData['textPrefix'] . '_EMPTYSTATE_APPEND')) . '
'; +} + +if (isset($this->updateInfo['object']) && isset($this->updateInfo['object']->get('infourl')->_data)) : + $displayData['content'] .= '
' . HTMLHelper::_('link', + $this->updateInfo['object']->get('infourl')->_data, + Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_INFOURL'), + [ + 'target' => '_blank', + 'rel' => 'noopener noreferrer', + 'title' => isset($this->updateInfo['object']->get('infourl')->title) ? Text::sprintf('JBROWSERTARGET_NEW_TITLE', $this->updateInfo['object']->get('infourl')->title) : '' + ] + ); +endif; + +$content = LayoutHelper::render('joomla.content.emptystate', $displayData); + +// Inject Joomla! version +echo str_replace('%1$s', '‎' . $this->updateInfo['latest'], $content); diff --git a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/preupdatecheck.php b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/preupdatecheck.php new file mode 100644 index 00000000000..8b8934592f6 --- /dev/null +++ b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/preupdatecheck.php @@ -0,0 +1,348 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Factory; +use Joomla\CMS\HTML\HTMLHelper; +use Joomla\CMS\Language\Text; +use Joomla\CMS\Router\Route; +use Joomla\CMS\Uri\Uri; +use Joomla\Component\Joomlaupdate\Administrator\View\Joomlaupdate\HtmlView; + +/** @var HtmlView $this */ + +/** @var WebAssetManager $wa */ +$wa = $this->document->getWebAssetManager(); +$wa->useScript('core') + ->useScript('com_joomlaupdate.default') + ->useScript('bootstrap.popover') + ->useScript('bootstrap.tab'); + +// Text::script doesn't have a sprintf equivalent so work around this +Factory::getDocument()->addScriptOptions('nonCoreCriticalPlugins', $this->nonCoreCriticalPlugins); + +Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN_CONFIRM_MESSAGE'); +Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSION_NO_COMPATIBILITY_INFORMATION'); +Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSION_WARNING_UNKNOWN'); +Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSION_SERVER_ERROR'); +Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_SHOW_MORE_COMPATIBILITY_INFORMATION'); +Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_SHOW_LESS_COMPATIBILITY_INFORMATION'); +Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN'); +Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN_DESC'); +Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN_LIST'); +Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN_CONFIRM_MESSAGE'); +Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_HELP'); + +$compatibilityTypes = array( + 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_RUNNING_PRE_UPDATE_CHECKS' => array( + 'class' => 'info', + 'icon' => 'hourglass fa-spin', + 'notes' => 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_RUNNING_PRE_UPDATE_CHECKS_NOTES', + 'group' => 0, + ), + 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_REQUIRING_UPDATES_TO_BE_COMPATIBLE' => array( + 'class' => 'danger', + 'icon' => 'times', + 'notes' => 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_REQUIRING_UPDATES_TO_BE_COMPATIBLE_NOTES', + 'group' => 2, + ), + 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_PRE_UPDATE_CHECKS_FAILED' => array( + 'class' => 'warning', + 'icon' => 'exclamation-triangle', + 'notes' => 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_PRE_UPDATE_CHECKS_FAILED_NOTES', + 'group' => 4, + ), + 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_UPDATE_SERVER_OFFERS_NO_COMPATIBLE_VERSION' => array( + 'class' => 'warning', + 'icon' => 'exclamation-triangle', + 'notes' => 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_UPDATE_SERVER_OFFERS_NO_COMPATIBLE_VERSION_NOTES', + 'group' => 1, + ), + 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_PROBABLY_COMPATIBLE' => array( + 'class' => 'success', + 'icon' => 'check', + 'notes' => 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_PROBABLY_COMPATIBLE_NOTES', + 'group' => 3, + ), +); + +$latestJoomlaVersion = $this->updateInfo['latest']; +$currentJoomlaVersion = isset($this->updateInfo['current']) ? $this->updateInfo['current'] : JVERSION; + +$updatePossible = true; + +?> + +
+ +

+ updateInfo['latest']); ?> +

+

+ +

+ +
+ + +
+
+

+ +

+
+ + + + + + + + + + phpOptions as $option) : ?> + + + + + + +
+ +
+ + + +
+ label; ?> + notice) : ?> +
+ notice; ?> +
+ +
+ + state ? 'JYES' : 'JNO'); ?> + +
+
+
+ +
+

+ +

+
+
+

+ +

+
+
+ +
+
+
+
+ + + + nonCoreExtensions)) : ?> +
+ $data) : ?> +
+

+ + + 0) : ?> + + +

+ +
+ + + + + + + + + + + + + + nonCoreExtensions as $extension) : ?> + + + + + + + + +
+ +
+ + + +
+ name; ?> + + + type)); ?> +
+
+
+ +
+ +
+ + +
+ +
+
+
+ + + +
+ +
+
+ + +
+
+ + +
+ + +
+ + +
+ + authorise('core.admin')) : ?> +
+ +
+ +
diff --git a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/reinstall.php b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/reinstall.php new file mode 100644 index 00000000000..ea9314a92df --- /dev/null +++ b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/reinstall.php @@ -0,0 +1,56 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Factory; +use Joomla\CMS\HTML\HTMLHelper; +use Joomla\CMS\Language\Text; +use Joomla\CMS\Layout\LayoutHelper; + +/** @var HtmlView $this */ + +/** @var WebAssetManager $wa */ +$wa = $this->document->getWebAssetManager(); +$wa->useScript('core') + ->useScript('com_joomlaupdate.default') + ->useScript('bootstrap.popover'); + +$uploadLink = 'index.php?option=com_joomlaupdate&view=upload'; + +$displayData = [ + 'textPrefix' => 'COM_JOOMLAUPDATE_REINSTALL', + 'content' => Text::sprintf($this->langKey, $this->updateSourceKey), + 'formURL' => 'index.php?option=com_joomlaupdate&view=joomlaupdate', + 'helpURL' => 'https://docs.joomla.org/Special:MyLanguage/Updating_from_an_existing_version', + 'icon' => 'icon-loop joomlaupdate', + 'createURL' => '#' +]; + +if (isset($this->updateInfo['object']) && isset($this->updateInfo['object']->get('infourl')->_data)) : + $displayData['content'] .= '
' . HTMLHelper::_('link', + $this->updateInfo['object']->get('infourl')->_data, + Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_INFOURL'), + [ + 'target' => '_blank', + 'rel' => 'noopener noreferrer', + 'title' => isset($this->updateInfo['object']->get('infourl')->title) ? Text::sprintf('JBROWSERTARGET_NEW_TITLE', $this->updateInfo['object']->get('infourl')->title) : '' + ] + ); +endif; + +if (Factory::getApplication()->getIdentity()->authorise('core.admin', 'com_joomlaupdate')) : + $displayData['formAppend'] = '
' . HTMLHelper::_('link', $uploadLink, Text::_('COM_JOOMLAUPDATE_EMPTYSTATE_APPEND')) . '
'; +endif; + +echo '
'; + +echo LayoutHelper::render('joomla.content.emptystate', $displayData); + +echo '
'; diff --git a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/selfupdate.php b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/selfupdate.php new file mode 100644 index 00000000000..0ca24eb8efa --- /dev/null +++ b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/selfupdate.php @@ -0,0 +1,21 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ +defined('_JEXEC') or die; + +use Joomla\CMS\Layout\LayoutHelper; + +$displayData = [ + 'textPrefix' => 'COM_JOOMLAUPDATE_SELF', + 'formURL' => 'index.php?option=com_joomlaupdate&view=joomlaupdate', + 'helpURL' => 'https://docs.joomla.org/Special:MyLanguage/Updating_from_an_existing_version', + 'icon' => 'icon-loop joomlaupdate', + 'createURL' => 'index.php?option=com_installer&view=update' +]; + +echo LayoutHelper::render('joomla.content.emptystate', $displayData); diff --git a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/update.php b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/update.php new file mode 100644 index 00000000000..52c698f9981 --- /dev/null +++ b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/update.php @@ -0,0 +1,65 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Factory; +use Joomla\CMS\HTML\HTMLHelper; +use Joomla\CMS\Language\Text; +use Joomla\CMS\Layout\LayoutHelper; + +/** @var HtmlView $this */ + +/** @var WebAssetManager $wa */ +$wa = $this->document->getWebAssetManager(); +$wa->useScript('core') + ->useScript('com_joomlaupdate.default') + ->useScript('bootstrap.popover'); + +$uploadLink = 'index.php?option=com_joomlaupdate&view=upload'; + +$displayData = [ + 'textPrefix' => 'COM_JOOMLAUPDATE_UPDATE', + 'title' => Text::sprintf('COM_JOOMLAUPDATE_UPDATE_EMPTYSTATE_TITLE', $this->escape($this->updateInfo['latest'])), + 'content' => Text::sprintf($this->langKey, $this->updateSourceKey), + 'formURL' => 'index.php?option=com_joomlaupdate&view=joomlaupdate', + 'helpURL' => 'https://docs.joomla.org/Special:MyLanguage/Updating_from_an_existing_version', + 'icon' => 'icon-loop joomlaupdate', + 'createURL' => '#' +]; + +if (isset($this->updateInfo['object']) && isset($this->updateInfo['object']->get('infourl')->_data)) : + $displayData['content'] .= '
' . HTMLHelper::_('link', + $this->updateInfo['object']->get('infourl')->_data, + Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_INFOURL'), + [ + 'target' => '_blank', + 'rel' => 'noopener noreferrer', + 'title' => isset($this->updateInfo['object']->get('infourl')->title) ? Text::sprintf('JBROWSERTARGET_NEW_TITLE', $this->updateInfo['object']->get('infourl')->title) : '' + ] + ); +endif; + +// Confirm backup and check +$displayData['content'] .= '
+ + +
'; + +if (Factory::getApplication()->getIdentity()->authorise('core.admin', 'com_joomlaupdate')) : + $displayData['formAppend'] = '
' . HTMLHelper::_('link', $uploadLink, Text::_('COM_JOOMLAUPDATE_EMPTYSTATE_APPEND')) . '
'; +endif; + +echo '
'; + +echo LayoutHelper::render('joomla.content.emptystate', $displayData); + +echo '
'; diff --git a/administrator/components/com_joomlaupdate/tmpl/upload/captive.php b/administrator/components/com_joomlaupdate/tmpl/upload/captive.php index 42302d20475..86af707b216 100644 --- a/administrator/components/com_joomlaupdate/tmpl/upload/captive.php +++ b/administrator/components/com_joomlaupdate/tmpl/upload/captive.php @@ -40,9 +40,9 @@
-
-
- + +
+
diff --git a/administrator/components/com_joomlaupdate/tmpl/upload/default.php b/administrator/components/com_joomlaupdate/tmpl/upload/default.php new file mode 100644 index 00000000000..08909922509 --- /dev/null +++ b/administrator/components/com_joomlaupdate/tmpl/upload/default.php @@ -0,0 +1,100 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\HTML\HTMLHelper; +use Joomla\CMS\Language\Text; +use Joomla\CMS\Updater\Update; +use Joomla\CMS\Utility\Utility; +use Joomla\Component\Joomlaupdate\Administrator\View\Joomlaupdate\HtmlView; + +/** @var HtmlView $this */ + +/** @var WebAssetManager $wa */ +$wa = $this->document->getWebAssetManager(); +$wa->useScript('core') + ->useScript('com_joomlaupdate.default') + ->useScript('bootstrap.popover'); + +HTMLHelper::_('behavior.core'); +Text::script('COM_INSTALLER_MSG_INSTALL_PLEASE_SELECT_A_PACKAGE', true); +Text::script('COM_INSTALLER_MSG_WARNINGS_UPLOADFILETOOBIG', true); +Text::script('JGLOBAL_SELECTED_UPLOAD_FILE_SIZE', true); + +$latestJoomlaVersion = $this->updateInfo['latest']; +$currentJoomlaVersion = isset($this->updateInfo['current']) ? $this->updateInfo['current'] : JVERSION; +?> + +
+
+ + + updateInfo['object']) && ($this->updateInfo['object'] instanceof Update)) : ?> +

+ + updateInfo['object']->downloadurl->_data); ?> + +
+ +warnings)) : ?> +

+ warnings as $warning) : ?> +
+

+ + + +

+

+
+ +
+

+ + + +

+

+
+ + + + +
+ + + + + + +
+ + +
+ +
+ + +
+ + + + + + + + +
diff --git a/administrator/components/com_languages/src/Controller/InstalledController.php b/administrator/components/com_languages/src/Controller/InstalledController.php index ad451a1cd3e..295afe970e7 100644 --- a/administrator/components/com_languages/src/Controller/InstalledController.php +++ b/administrator/components/com_languages/src/Controller/InstalledController.php @@ -12,7 +12,7 @@ \defined('_JEXEC') or die; use Joomla\CMS\Factory; -use Joomla\CMS\Installer\Installer; +use Joomla\CMS\Language\LanguageHelper; use Joomla\CMS\Language\Language; use Joomla\CMS\Language\Multilanguage; use Joomla\CMS\Language\Text; @@ -92,8 +92,8 @@ public function switchAdminLanguage() $file = JPATH_ADMINISTRATOR . '/language/' . $cid . '/' . $cid . '.xml'; } - $info = Installer::parseXMLInstallFile($file); - $languageName = $info['name']; + $info = LanguageHelper::parseXMLLanguageFile($file); + $languageName = $info['nativeName']; if ($model->switchAdminLanguage($cid)) { diff --git a/administrator/components/com_languages/src/Service/HTML/Languages.php b/administrator/components/com_languages/src/Service/HTML/Languages.php index 475a542bb10..935b4447d96 100644 --- a/administrator/components/com_languages/src/Service/HTML/Languages.php +++ b/administrator/components/com_languages/src/Service/HTML/Languages.php @@ -49,6 +49,7 @@ public function published($published) public function id($rowNum, $language) { return ' - 'details')); ?> + 'details', 'recall' => true, 'breakpoint' => 768]); ?>
diff --git a/administrator/components/com_mails/config.xml b/administrator/components/com_mails/config.xml index 936524653bc..09a4519a9b8 100644 --- a/administrator/components/com_mails/config.xml +++ b/administrator/components/com_mails/config.xml @@ -62,7 +62,7 @@ label="JCONFIG_PERMISSIONS_LABEL" filter="rules" validate="rules" - component="com_messages" + component="com_mails" section="component" />
diff --git a/administrator/components/com_mails/tmpl/template/edit.php b/administrator/components/com_mails/tmpl/template/edit.php index 8164be4c345..5cb4c6f7409 100644 --- a/administrator/components/com_mails/tmpl/template/edit.php +++ b/administrator/components/com_mails/tmpl/template/edit.php @@ -37,14 +37,14 @@
- 'general')); ?> + 'general', 'recall' => true, 'breakpoint' => 768]); ?>

- escape($this->item->language); ?> - (escape($this->master->template_id); ?>)

+
escape($this->master->template_id); ?>

@@ -54,17 +54,20 @@ form->renderField('subject'); ?>
- +
- form->getField('body')) : ?>
form->renderField('body'); ?>
- +

master, 'body'); ?> @@ -79,7 +82,9 @@ form->renderField('htmlbody'); ?>
- +

master, 'htmlbody'); ?> diff --git a/administrator/components/com_mails/tmpl/templates/default.php b/administrator/components/com_mails/tmpl/templates/default.php index f8b0944c9fa..f25ee2e8b7c 100644 --- a/administrator/components/com_mails/tmpl/templates/default.php +++ b/administrator/components/com_mails/tmpl/templates/default.php @@ -72,8 +72,8 @@ languages) > 1) : ?> - -
@@ -187,6 +187,7 @@ diff --git a/administrator/components/com_media/tmpl/media/default.php b/administrator/components/com_media/tmpl/media/default.php index 5e00040e136..aff6f9b1f0d 100644 --- a/administrator/components/com_media/tmpl/media/default.php +++ b/administrator/components/com_media/tmpl/media/default.php @@ -49,7 +49,7 @@ 'imagesExtensions' => explode(',', $params->get('image_extensions', 'bmp,gif,jpg,jpeg,png,webp')), 'audioExtensions' => explode(',', $params->get('audio_extensions', 'mp3,m4a,mp4a,ogg')), 'videoExtensions' => explode(',', $params->get('video_extensions', 'mp4,mp4v,mpeg,mov,webm')), - 'documentExtensions' => explode(',', $params->get('doc_extensions', 'doc,odg,odp,ods,odt,pdf,png,ppt,txt,xcf,xls,csv')), + 'documentExtensions' => explode(',', $params->get('doc_extensions', 'doc,odg,odp,ods,odt,pdf,ppt,txt,xcf,xls,csv')), 'maxUploadSizeMb' => $params->get('upload_maxsize', 10), 'providers' => (array) $this->providers, 'currentPath' => $this->currentPath, diff --git a/administrator/components/com_menus/presets/alternate.xml b/administrator/components/com_menus/presets/alternate.xml index d15fbed09ef..0bc733b2dd8 100644 --- a/administrator/components/com_menus/presets/alternate.xml +++ b/administrator/components/com_menus/presets/alternate.xml @@ -375,12 +375,12 @@ title="MOD_MENU_EXTENSIONS_EXTENSION_MANAGER" type="component" element="com_installer" - link="index.php?option=com_installer"> + link="index.php?option=com_installer&view=manage"> setRedirect('index.php?option=com_menus&view=menus'); } - /** - * Rebuild the menu tree. - * - * @return boolean False on failure or error, true on success. - * - * @since 1.6 - */ - public function rebuild() - { - $this->checkToken(); - - $this->setRedirect('index.php?option=com_menus&view=menus'); - - /** @var \Joomla\Component\Menus\Administrator\Model\ItemModel $model */ - $model = $this->getModel('Item'); - - if ($model->rebuild()) - { - // Reorder succeeded. - $this->setMessage(Text::_('JTOOLBAR_REBUILD_SUCCESS')); - - return true; - } - else - { - // Rebuild failed. - $this->setMessage(Text::sprintf('JTOOLBAR_REBUILD_FAILED', $model->getError()), 'error'); - - return false; - } - } - /** * Temporary method. This should go into the 1.5 to 1.6 upgrade routines. * diff --git a/administrator/components/com_menus/src/Helper/MenusHelper.php b/administrator/components/com_menus/src/Helper/MenusHelper.php index 1612087644f..44f5767cb1f 100644 --- a/administrator/components/com_menus/src/Helper/MenusHelper.php +++ b/administrator/components/com_menus/src/Helper/MenusHelper.php @@ -515,7 +515,7 @@ protected static function installPresetItems($node, $menutype) 'menutype' => $menutype, 'type' => $item->type, 'title' => $item->title, - 'parent_id' => $item->getParent()->id, + 'parent_id' => (int) $item->getParent()->id, 'client_id' => 1, ); $table->load($keys); @@ -541,7 +541,7 @@ protected static function installPresetItems($node, $menutype) 'menutype' => $menutype, 'type' => $item->type, 'link' => $item->link, - 'parent_id' => $item->getParent()->id, + 'parent_id' => (int) $item->getParent()->id, 'client_id' => 1, ); $table->load($keys); @@ -577,7 +577,7 @@ protected static function installPresetItems($node, $menutype) 'img' => $item->class, 'access' => $item->access, 'component_id' => array_search($item->element, $components) ?: 0, - 'parent_id' => $item->getParent()->id, + 'parent_id' => (int) $item->getParent()->id, 'client_id' => 1, 'published' => 1, 'language' => '*', diff --git a/administrator/components/com_menus/src/View/Menu/XmlView.php b/administrator/components/com_menus/src/View/Menu/XmlView.php index a5f1ce10096..7d1beda77a8 100644 --- a/administrator/components/com_menus/src/View/Menu/XmlView.php +++ b/administrator/components/com_menus/src/View/Menu/XmlView.php @@ -58,7 +58,7 @@ public function display($tpl = null) $root = MenusHelper::getMenuItems($menutype, true); } - if ($root->hasChildren()) + if (!$root->hasChildren()) { Log::add(Text::_('COM_MENUS_SELECT_MENU_FIRST_EXPORT'), Log::WARNING, 'jerror'); @@ -67,9 +67,9 @@ public function display($tpl = null) return; } - $this->items = $root->getChildren(); + $this->items = $root->getChildren(true); - $xml = new \SimpleXMLElement('' @@ -121,7 +121,7 @@ protected function addXmlChild($xml, $item) if ($item->title) { - $node['title'] = $item->title; + $node['title'] = htmlentities($item->title, ENT_XML1); } if ($item->link) @@ -136,7 +136,7 @@ protected function addXmlChild($xml, $item) if ($item->class) { - $node['class'] = $item->class; + $node['class'] = htmlentities($item->class, ENT_XML1); } if ($item->access) @@ -153,7 +153,7 @@ protected function addXmlChild($xml, $item) { $hideitems = $item->getParams()->get('hideitems'); - if (count($hideitems)) + if ($hideitems) { $db = Factory::getDbo(); $query = $db->getQuery(true); @@ -169,7 +169,7 @@ protected function addXmlChild($xml, $item) $item->getParams()->set('hideitems', $hideitems); } - $node->addChild('params', (string) $item->getParams()); + $node->addChild('params', htmlentities((string) $item->getParams(), ENT_XML1)); } foreach ($item->submenu as $sub) diff --git a/administrator/components/com_menus/src/View/Menus/HtmlView.php b/administrator/components/com_menus/src/View/Menus/HtmlView.php index 034598fa92e..fccf099fbcf 100644 --- a/administrator/components/com_menus/src/View/Menus/HtmlView.php +++ b/administrator/components/com_menus/src/View/Menus/HtmlView.php @@ -125,8 +125,6 @@ protected function addToolbar() ToolbarHelper::deleteList('COM_MENUS_MENU_CONFIRM_DELETE', 'menus.delete', 'JTOOLBAR_DELETE'); } - ToolbarHelper::custom('menus.rebuild', 'refresh', '', 'JTOOLBAR_REBUILD', false); - if ($canDo->get('core.admin') && $this->state->get('client_id') == 1) { ToolbarHelper::custom('menu.exportXml', 'download', '', 'COM_MENUS_MENU_EXPORT_BUTTON', true); diff --git a/administrator/components/com_menus/tmpl/item/edit.php b/administrator/components/com_menus/tmpl/item/edit.php index f903b685cf0..dc9f5991e17 100644 --- a/administrator/components/com_menus/tmpl/item/edit.php +++ b/administrator/components/com_menus/tmpl/item/edit.php @@ -67,7 +67,7 @@
- 'details')); ?> + 'details', 'recall' => true, 'breakpoint' => 768]); ?>
diff --git a/administrator/components/com_menus/tmpl/items/default.php b/administrator/components/com_menus/tmpl/items/default.php index 3d8c157eae2..57400eb71ad 100644 --- a/administrator/components/com_menus/tmpl/items/default.php +++ b/administrator/components/com_menus/tmpl/items/default.php @@ -182,15 +182,15 @@
- type != 'url') : ?> - note)) : ?> - escape($item->alias)); ?> - - escape($item->alias), $this->escape($item->note)); ?> + type != 'url') : ?> + note)) : ?> + escape($item->alias)); ?> + + escape($item->alias), $this->escape($item->note)); ?> + + type == 'url' && $item->note) : ?> + escape($item->note)); ?> - type == 'url' && $item->note) : ?> - escape($item->note)); ?> -
diff --git a/administrator/components/com_menus/tmpl/items/default_batch_body.php b/administrator/components/com_menus/tmpl/items/default_batch_body.php index eb3ce1101ee..a329cd86e25 100644 --- a/administrator/components/com_menus/tmpl/items/default_batch_body.php +++ b/administrator/components/com_menus/tmpl/items/default_batch_body.php @@ -10,6 +10,7 @@ use Joomla\CMS\Factory; use Joomla\CMS\HTML\HTMLHelper; +use Joomla\CMS\Language\Multilanguage; use Joomla\CMS\Language\Text; use Joomla\CMS\Layout\LayoutHelper; @@ -33,11 +34,13 @@
-
-
- + +
+
+ +
-
+
diff --git a/administrator/components/com_menus/tmpl/menu/edit.php b/administrator/components/com_menus/tmpl/menu/edit.php index e3887c5638c..8c523b6ef9f 100644 --- a/administrator/components/com_menus/tmpl/menu/edit.php +++ b/administrator/components/com_menus/tmpl/menu/edit.php @@ -25,7 +25,7 @@
- 'details')); ?> + 'details', 'recall' => true, 'breakpoint' => 768]); ?> diff --git a/administrator/components/com_modules/src/Controller/ModuleController.php b/administrator/components/com_modules/src/Controller/ModuleController.php index 3a1d093ab77..ef53b80adf3 100644 --- a/administrator/components/com_modules/src/Controller/ModuleController.php +++ b/administrator/components/com_modules/src/Controller/ModuleController.php @@ -280,9 +280,9 @@ public function orderPosition() $moduleId = $this->input->getValue('module_id'); // Access check. - if (!Factory::getUser()->authorise('core.create', 'com_modules') - && !Factory::getUser()->authorise('core.edit.state', 'com_modules') - && ($moduleId && !Factory::getUser()->authorise('core.edit.state', 'com_modules.module.' . $moduleId))) + if (!$this->app->getIdentity()->authorise('core.create', 'com_modules') + && !$this->app->getIdentity()->authorise('core.edit.state', 'com_modules') + && ($moduleId && !$this->app->getIdentity()->authorise('core.edit.state', 'com_modules.module.' . $moduleId))) { $app->enqueueMessage(Text::_('JLIB_APPLICATION_ERROR_ACCESS_FORBIDDEN'), 'error'); echo new JsonResponse; diff --git a/administrator/components/com_modules/tmpl/module/edit.php b/administrator/components/com_modules/tmpl/module/edit.php index 26d76efa39f..f7e5e315761 100644 --- a/administrator/components/com_modules/tmpl/module/edit.php +++ b/administrator/components/com_modules/tmpl/module/edit.php @@ -57,7 +57,7 @@
- 'general')); ?> + 'general', 'recall' => true, 'breakpoint' => 768]); ?> diff --git a/administrator/components/com_newsfeeds/tmpl/newsfeed/edit.php b/administrator/components/com_newsfeeds/tmpl/newsfeed/edit.php index ecec65b7779..34dcd86d2be 100644 --- a/administrator/components/com_newsfeeds/tmpl/newsfeed/edit.php +++ b/administrator/components/com_newsfeeds/tmpl/newsfeed/edit.php @@ -41,7 +41,7 @@
- 'details')); ?> + 'details', 'recall' => true, 'breakpoint' => 768]); ?> item->id) ? Text::_('COM_NEWSFEEDS_NEW_NEWSFEED') : Text::_('COM_NEWSFEEDS_EDIT_NEWSFEED')); ?>
diff --git a/administrator/components/com_newsfeeds/tmpl/newsfeeds/default.php b/administrator/components/com_newsfeeds/tmpl/newsfeeds/default.php index 589ead10a7f..70f12a91c15 100644 --- a/administrator/components/com_newsfeeds/tmpl/newsfeeds/default.php +++ b/administrator/components/com_newsfeeds/tmpl/newsfeeds/default.php @@ -133,9 +133,9 @@ escape($item->name); ?> - +
escape($item->alias)); ?> - +
escape($item->category_title); ?>
diff --git a/administrator/components/com_newsfeeds/tmpl/newsfeeds/default_batch_body.php b/administrator/components/com_newsfeeds/tmpl/newsfeeds/default_batch_body.php index 1b3c4c09dd7..71e3729811e 100644 --- a/administrator/components/com_newsfeeds/tmpl/newsfeeds/default_batch_body.php +++ b/administrator/components/com_newsfeeds/tmpl/newsfeeds/default_batch_body.php @@ -8,6 +8,7 @@ */ defined('_JEXEC') or die; +use Joomla\CMS\Language\Multilanguage; use Joomla\CMS\Layout\LayoutHelper; $published = (int) $this->state->get('filter.published'); @@ -15,11 +16,13 @@
-
-
- + +
+
+ +
-
+
diff --git a/administrator/components/com_plugins/tmpl/plugin/edit.php b/administrator/components/com_plugins/tmpl/plugin/edit.php index 9015c0375fa..75a08fefa49 100644 --- a/administrator/components/com_plugins/tmpl/plugin/edit.php +++ b/administrator/components/com_plugins/tmpl/plugin/edit.php @@ -32,7 +32,7 @@
- 'general')); ?> + 'general', 'recall' => true, 'breakpoint' => 768]); ?> diff --git a/administrator/components/com_redirect/src/Model/LinksModel.php b/administrator/components/com_redirect/src/Model/LinksModel.php index dd3dffef417..abae160418a 100644 --- a/administrator/components/com_redirect/src/Model/LinksModel.php +++ b/administrator/components/com_redirect/src/Model/LinksModel.php @@ -30,7 +30,6 @@ class LinksModel extends ListModel * @param array $config An optional associative array of configuration settings. * @param MVCFactoryInterface $factory The factory. * - * @see \JControllerLegacy * @since 1.6 */ public function __construct($config = array(), MVCFactoryInterface $factory = null) diff --git a/administrator/components/com_redirect/tmpl/link/edit.php b/administrator/components/com_redirect/tmpl/link/edit.php index 6efd4c1eb39..83809e81a65 100644 --- a/administrator/components/com_redirect/tmpl/link/edit.php +++ b/administrator/components/com_redirect/tmpl/link/edit.php @@ -20,7 +20,7 @@
- 'basic')); ?> + 'basic', 'recall' => true, 'breakpoint' => 768]); ?> item->id) ? Text::_('COM_REDIRECT_NEW_LINK') : Text::sprintf('COM_REDIRECT_EDIT_LINK', $this->item->id)); ?> diff --git a/administrator/components/com_tags/src/Model/TagsModel.php b/administrator/components/com_tags/src/Model/TagsModel.php index c0d72b1b5b7..1b08eaeb7f0 100644 --- a/administrator/components/com_tags/src/Model/TagsModel.php +++ b/administrator/components/com_tags/src/Model/TagsModel.php @@ -29,8 +29,6 @@ class TagsModel extends ListModel /** * Constructor. * - * @see \JControllerLegacy - * * @param MVCFactoryInterface $factory The factory. * * @param array $config An optional associative array of configuration settings. diff --git a/administrator/components/com_tags/tmpl/tag/edit.php b/administrator/components/com_tags/tmpl/tag/edit.php index f0cbb7af742..d4cd2270515 100644 --- a/administrator/components/com_tags/tmpl/tag/edit.php +++ b/administrator/components/com_tags/tmpl/tag/edit.php @@ -30,7 +30,7 @@
- 'details')); ?> + 'details', 'recall' => true, 'breakpoint' => 768]); ?>
diff --git a/administrator/components/com_tags/tmpl/tags/default.php b/administrator/components/com_tags/tmpl/tags/default.php index 648d1acd7ed..7b225f77461 100644 --- a/administrator/components/com_tags/tmpl/tags/default.php +++ b/administrator/components/com_tags/tmpl/tags/default.php @@ -200,13 +200,13 @@ escape($item->title); ?> - +
note)) : ?> escape($item->alias)); ?> escape($item->alias), $this->escape($item->note)); ?> - +
items[0]) && property_exists($this->items[0], 'count_published')) : ?> diff --git a/administrator/components/com_tags/tmpl/tags/default_batch_body.php b/administrator/components/com_tags/tmpl/tags/default_batch_body.php index a7cc78f9ad5..bc82733e4de 100644 --- a/administrator/components/com_tags/tmpl/tags/default_batch_body.php +++ b/administrator/components/com_tags/tmpl/tags/default_batch_body.php @@ -8,6 +8,7 @@ */ defined('_JEXEC') or die; +use Joomla\CMS\Language\Multilanguage; use Joomla\CMS\Layout\LayoutHelper; $published = $this->state->get('filter.published'); @@ -15,11 +16,13 @@
-
-
- + +
+
+ +
-
+
diff --git a/administrator/components/com_templates/tmpl/style/edit.php b/administrator/components/com_templates/tmpl/style/edit.php index ccf68a202ff..da5eed2152a 100644 --- a/administrator/components/com_templates/tmpl/style/edit.php +++ b/administrator/components/com_templates/tmpl/style/edit.php @@ -28,7 +28,7 @@
- 'details')); ?> + 'details', 'recall' => true, 'breakpoint' => 768]); ?> diff --git a/administrator/components/com_templates/tmpl/template/default.php b/administrator/components/com_templates/tmpl/template/default.php index 7508cb006e5..865dcd22435 100644 --- a/administrator/components/com_templates/tmpl/template/default.php +++ b/administrator/components/com_templates/tmpl/template/default.php @@ -58,7 +58,7 @@ ?>
- 'editor')); ?> + 'editor', 'recall' => true, 'breakpoint' => 768]); ?>
diff --git a/administrator/components/com_templates/tmpl/template/readonly.php b/administrator/components/com_templates/tmpl/template/readonly.php index 4301ac0a163..157cff97362 100644 --- a/administrator/components/com_templates/tmpl/template/readonly.php +++ b/administrator/components/com_templates/tmpl/template/readonly.php @@ -17,7 +17,7 @@ $input = Factory::getApplication()->input; ?> - 'description')); ?> + 'description', 'recall' => true, 'breakpoint' => 768]); ?>
diff --git a/administrator/components/com_users/forms/group.xml b/administrator/components/com_users/forms/group.xml index 3a901a70698..e8614b4a2fc 100644 --- a/administrator/components/com_users/forms/group.xml +++ b/administrator/components/com_users/forms/group.xml @@ -21,6 +21,7 @@ name="parent_id" type="groupparent" label="COM_USERS_GROUP_FIELD_PARENT_LABEL" + validate="options" /> getAll(); - $currentGroupId = $this->form->getValue('id'); + $options = UserGroupsHelper::getInstance()->getAll(); + $currentGroupId = (int) Factory::getApplication()->input->get('id', 0, 'int'); // Prevent to set yourself as parent if ($currentGroupId) @@ -75,7 +75,7 @@ protected function getOptions() } // We should not remove any groups when we are creating a new group - if ($currentGroupId !== null && $currentGroupId !== 0) + if ($currentGroupId !== 0) { // Prevent parenting direct children and children of children of this item. $options = $this->cleanOptionsChildrenByFather($options, $currentGroupId); diff --git a/administrator/components/com_users/src/Model/GroupModel.php b/administrator/components/com_users/src/Model/GroupModel.php index 802efd9a814..1907564630f 100644 --- a/administrator/components/com_users/src/Model/GroupModel.php +++ b/administrator/components/com_users/src/Model/GroupModel.php @@ -260,21 +260,16 @@ public function delete(&$pks) // Check if I am a Super Admin $iAmSuperAdmin = $user->authorise('core.admin'); - // Do not allow to delete groups to which the current user belongs foreach ($pks as $pk) { + // Do not allow to delete groups to which the current user belongs if (in_array($pk, $groups)) { Factory::getApplication()->enqueueMessage(Text::_('COM_USERS_DELETE_ERROR_INVALID_GROUP'), 'error'); return false; } - } - - // Iterate the items to check if all of them exist. - foreach ($pks as $i => $pk) - { - if (!$table->load($pk)) + elseif (!$table->load($pk)) { // Item is not in the table. $this->setError($table->getError()); diff --git a/administrator/components/com_users/src/Model/UserModel.php b/administrator/components/com_users/src/Model/UserModel.php index 821f26da2cd..794604205ec 100644 --- a/administrator/components/com_users/src/Model/UserModel.php +++ b/administrator/components/com_users/src/Model/UserModel.php @@ -344,6 +344,12 @@ public function save($data) return false; } + // Destroy all active sessions for the user after changing the password or blocking him + if ($data['password2'] || $data['block']) + { + UserHelper::destroyUserSessions($user->id, true); + } + $this->setState('user.id', $user->id); return true; @@ -515,6 +521,11 @@ public function block(&$pks, $value = 1) return false; } + if ($table->block) + { + UserHelper::destroyUserSessions($table->id); + } + // Trigger the after save event Factory::getApplication()->triggerEvent($this->event_after_save, [$table->getProperties(), false, true, null]); } diff --git a/administrator/components/com_users/tmpl/group/edit.php b/administrator/components/com_users/tmpl/group/edit.php index 5b433c9c45f..78cbe1b15ab 100644 --- a/administrator/components/com_users/tmpl/group/edit.php +++ b/administrator/components/com_users/tmpl/group/edit.php @@ -21,7 +21,7 @@ ?> - 'details')); ?> + 'details', 'recall' => true, 'breakpoint' => 768]); ?>
form->renderField('title'); ?> diff --git a/administrator/components/com_users/tmpl/level/edit.php b/administrator/components/com_users/tmpl/level/edit.php index 80116fdd040..e991e8217f3 100644 --- a/administrator/components/com_users/tmpl/level/edit.php +++ b/administrator/components/com_users/tmpl/level/edit.php @@ -19,7 +19,7 @@ ?> - 'details')); ?> + 'details', 'recall' => true, 'breakpoint' => 768]); ?>
diff --git a/administrator/components/com_users/tmpl/user/edit.php b/administrator/components/com_users/tmpl/user/edit.php index b74c44bb79f..e23bec93c12 100644 --- a/administrator/components/com_users/tmpl/user/edit.php +++ b/administrator/components/com_users/tmpl/user/edit.php @@ -35,7 +35,7 @@

form->getValue('name', null, Text::_('COM_USERS_USER_NEW_USER_TITLE')); ?>

- 'details')); ?> + 'details', 'recall' => true, 'breakpoint' => 768]); ?>
diff --git a/administrator/components/com_workflow/tmpl/stage/edit.php b/administrator/components/com_workflow/tmpl/stage/edit.php index 5f0d531012e..29877b728c9 100644 --- a/administrator/components/com_workflow/tmpl/stage/edit.php +++ b/administrator/components/com_workflow/tmpl/stage/edit.php @@ -52,7 +52,7 @@
- 'details')); ?> + 'details', 'recall' => true, 'breakpoint' => 768]); ?>
diff --git a/administrator/components/com_workflow/tmpl/transition/edit.php b/administrator/components/com_workflow/tmpl/transition/edit.php index 2bea6cd65ee..6cdd054e4c8 100644 --- a/administrator/components/com_workflow/tmpl/transition/edit.php +++ b/administrator/components/com_workflow/tmpl/transition/edit.php @@ -34,7 +34,7 @@
- 'details')); ?> + 'details', 'recall' => true, 'breakpoint' => 768]); ?>
diff --git a/administrator/components/com_workflow/tmpl/workflow/edit.php b/administrator/components/com_workflow/tmpl/workflow/edit.php index 5cabb23b064..5896186b804 100644 --- a/administrator/components/com_workflow/tmpl/workflow/edit.php +++ b/administrator/components/com_workflow/tmpl/workflow/edit.php @@ -51,7 +51,7 @@
- 'general')); ?> + 'general', 'recall' => true, 'breakpoint' => 768]); ?>
diff --git a/administrator/language/en-GB/com_actionlogs.ini b/administrator/language/en-GB/com_actionlogs.ini index 2223a0ddd2e..0a88ccf7dd6 100644 --- a/administrator/language/en-GB/com_actionlogs.ini +++ b/administrator/language/en-GB/com_actionlogs.ini @@ -58,7 +58,7 @@ COM_ACTIONLOGS_OPTION_RANGE_PAST_YEAR="In the last year" COM_ACTIONLOGS_OPTION_RANGE_POST_YEAR="More than a year ago" COM_ACTIONLOGS_OPTION_RANGE_TODAY="Today" COM_ACTIONLOGS_OPTIONS="Options" -COM_ACTIONLOGS_POSTINSTALL_BODY="

With the release of Joomla 3.9.0 you can now log all administrative actions performed by your users in supported extensions. It is now easy to see who did what and when they did it.

The logs can be reviewed in Joomla or exported for external use.

For further information on this new feature read the User Action Logs documentation.

" +COM_ACTIONLOGS_POSTINSTALL_BODY="

With the release of Joomla 3.9.0 you can now log all administrative actions performed by your users in supported extensions. It is now easy to see who did what and when they did it.

The logs can be reviewed in Joomla or exported for external use.

For further information on this new feature read the User Action Logs documentation.

" COM_ACTIONLOGS_POSTINSTALL_TITLE="User Actions Can Now Be Logged" COM_ACTIONLOGS_PURGE_CONFIRM="Are you sure want to delete all User Action logs?" COM_ACTIONLOGS_PURGE_FAIL="Failed to delete all User Action logs." diff --git a/administrator/language/en-GB/com_admin.ini b/administrator/language/en-GB/com_admin.ini index 385935007ae..82bfb6b1bea 100644 --- a/administrator/language/en-GB/com_admin.ini +++ b/administrator/language/en-GB/com_admin.ini @@ -139,7 +139,7 @@ COM_ADMIN_POST_MAX_SIZE="Post Max Size" COM_ADMIN_POSTINSTALL_MSG_BEHIND_LOAD_BALANCER_ACTION="Enable Behind Load Balancer Setting" COM_ADMIN_POSTINSTALL_MSG_BEHIND_LOAD_BALANCER_DESCRIPTION="

For Joomla sites hosted behind Load Balancers and Reverse Proxies a new Global Configuration setting has been introduced with Joomla 3.9.26

This setting, when enabled, will allow your Load Balancer/Reverse Proxy to provide the real IP address of your visitors. This IP will then be used in your Action Logs and used for tracking voting on articles (if these features are enabled).

Only sites behind a Load Balancer/Reverse Proxy will wish to enable this feature.

" COM_ADMIN_POSTINSTALL_MSG_BEHIND_LOAD_BALANCER_TITLE="New Server Setting \"Behind Load Balancer\"" -COM_ADMIN_POSTINSTALL_MSG_FLOC_BLOCKER_DESCRIPTION="

A new technology is currently being rolled out to browsers to replace third party tracking cookies. This technology is named Federated Learning of Cohorts (FLoC) and you can read more about it here and here. Starting with Joomla! 3.9.27 your website blocks this technology, you can re-allow it from the Global Configuration. Additionally to disable this technology for all requests to your server, you have to update your .htaccess.

" +COM_ADMIN_POSTINSTALL_MSG_FLOC_BLOCKER_DESCRIPTION="

A new technology is currently being rolled out to browsers to replace third party tracking cookies. This technology is named Federated Learning of Cohorts (FLoC) and you can read more about it at the Web Platform Incubator Community Group and at the Electronic Frontier Foundation. Starting with Joomla! 3.9.27 your website blocks this technology, you can re-allow it from the Global Configuration. Additionally to disable this technology for all requests to your server, you have to update your .htaccess.

" COM_ADMIN_POSTINSTALL_MSG_FLOC_BLOCKER_TITLE="Block Federated Learning of Cohorts (FLoC)" 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" diff --git a/administrator/language/en-GB/com_banners.ini b/administrator/language/en-GB/com_banners.ini index 83dee761eef..f2c727a5a29 100644 --- a/administrator/language/en-GB/com_banners.ini +++ b/administrator/language/en-GB/com_banners.ini @@ -199,5 +199,4 @@ COM_BANNERS_UNLIMITED="Unlimited" COM_BANNERS_WARNING_PROVIDE_VALID_NAME="Please provide a valid, non-blank name" COM_BANNERS_XML_DESCRIPTION="This component manages banners and banner clients." -; Alternate language strings for the rules form field -JLIB_RULES_SETTING_NOTES_COM_BANNERS="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." +JLIB_RULES_SETTING_NOTES_COM_BANNERS="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." ; Alternate language strings for the rules form field diff --git a/administrator/language/en-GB/com_cache.ini b/administrator/language/en-GB/com_cache.ini index a45c9203ab4..01effdc6234 100644 --- a/administrator/language/en-GB/com_cache.ini +++ b/administrator/language/en-GB/com_cache.ini @@ -37,5 +37,4 @@ COM_CACHE_SIZE="Size" COM_CACHE_TABLE_CAPTION="Table of Cached Files" COM_CACHE_XML_DESCRIPTION="Component for cache management." -; Alternate language strings for the rules form field -JLIB_RULES_SETTING_NOTES_COM_CACHE="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." +JLIB_RULES_SETTING_NOTES_COM_CACHE="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." ; Alternate language strings for the rules form field diff --git a/administrator/language/en-GB/com_categories.ini b/administrator/language/en-GB/com_categories.ini index 2c6da7fa876..a7361a596ee 100644 --- a/administrator/language/en-GB/com_categories.ini +++ b/administrator/language/en-GB/com_categories.ini @@ -56,7 +56,7 @@ COM_CATEGORIES_N_ITEMS_UNPUBLISHED_1="Category unpublished." COM_CATEGORIES_N_QUICKICON="Article Categories" COM_CATEGORIES_N_QUICKICON_0="Article Categories" COM_CATEGORIES_N_QUICKICON_1="Article Category" -COM_CATEGORIES_N_QUICKICON_SRONLY="Categories: %s article categories are published." +COM_CATEGORIES_N_QUICKICON_SRONLY="Categories: %d article categories are published." COM_CATEGORIES_N_QUICKICON_SRONLY_0="Categories: No article category is published." COM_CATEGORIES_N_QUICKICON_SRONLY_1="Categories: One article category is published." COM_CATEGORIES_NEW_CATEGORY="New Category" diff --git a/administrator/language/en-GB/com_checkin.ini b/administrator/language/en-GB/com_checkin.ini index 1dc6516b43a..6a14709de00 100644 --- a/administrator/language/en-GB/com_checkin.ini +++ b/administrator/language/en-GB/com_checkin.ini @@ -25,5 +25,4 @@ COM_CHECKIN_TABLE="%s table" COM_CHECKIN_TABLE_CAPTION="Table of Checked Out Items" COM_CHECKIN_XML_DESCRIPTION="Check-in Component." -; Alternate language strings for the rules form field -JLIB_RULES_SETTING_NOTES_COM_CHECKIN="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." +JLIB_RULES_SETTING_NOTES_COM_CHECKIN="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." ; Alternate language strings for the rules form field diff --git a/administrator/language/en-GB/com_config.ini b/administrator/language/en-GB/com_config.ini index 1e6e9168301..0fd4e1ac6df 100644 --- a/administrator/language/en-GB/com_config.ini +++ b/administrator/language/en-GB/com_config.ini @@ -232,5 +232,4 @@ COM_CONFIG_TEXT_FILTERS_SUMMARY="Expand for notes about the text filters" COM_CONFIG_WEBSERVICES_SETTINGS="Web Services" COM_CONFIG_XML_DESCRIPTION="Configuration Manager" -; Alternate language strings for the rules form field -JLIB_RULES_SETTING_NOTES_COM_CONFIG="If you change the setting, it will apply to this and all child groups, components and content. Note that:
Inherited means that the permissions from the parent group will be used.
Denied means that no matter what the parent group's setting is, the group being edited can't take this action.
Allowed means that the group being edited will be able to take this action (but if this is in conflict with the parent group it will have no impact; a conflict will be indicated by Not Allowed (Locked) under Calculated Settings).
Not Set is used only for the Public group in global configuration. The Public group is the parent of all other groups. If a permission is not set, it is treated as deny but can be changed for child groups, components, categories and items." +JLIB_RULES_SETTING_NOTES_COM_CONFIG="If you change the setting, it will apply to this and all child groups, components and content. Note that:
Inherited means that the permissions from the parent group will be used.
Denied means that no matter what the parent group's setting is, the group being edited can't take this action.
Allowed means that the group being edited will be able to take this action (but if this is in conflict with the parent group it will have no impact; a conflict will be indicated by Not Allowed (Locked) under Calculated Settings).
Not Set is used only for the Public group in global configuration. The Public group is the parent of all other groups. If a permission is not set, it is treated as deny but can be changed for child groups, components, categories and items." ; Alternate language strings for the rules form field diff --git a/administrator/language/en-GB/com_contact.ini b/administrator/language/en-GB/com_contact.ini index 1e5598c34bc..9655ff66d71 100644 --- a/administrator/language/en-GB/com_contact.ini +++ b/administrator/language/en-GB/com_contact.ini @@ -192,5 +192,4 @@ JGLOBAL_FIELDSET_MISCELLANEOUS="Miscellaneous Information" JGLOBAL_NEWITEMSLAST_DESC="New Contacts default to the last position. Ordering can be changed after this Contact is saved." JLIB_HTML_BATCH_USER_LABEL="Set Linked User" -; Alternate language strings for the rules form field -JLIB_RULES_SETTING_NOTES_COM_CONTACT="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." +JLIB_RULES_SETTING_NOTES_COM_CONTACT="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." ; Alternate language strings for the rules form field diff --git a/administrator/language/en-GB/com_content.ini b/administrator/language/en-GB/com_content.ini index 716d1c01a88..e66a574bbe8 100644 --- a/administrator/language/en-GB/com_content.ini +++ b/administrator/language/en-GB/com_content.ini @@ -190,11 +190,9 @@ JLIB_APPLICATION_ERROR_BATCH_CANNOT_CREATE="You are not allowed to create new ar JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT="You are not allowed to edit one or more of these articles." JLIB_APPLICATION_ERROR_BATCH_CANNOT_EXECUTE_TRANSITION="You are not allowed to execute a transition for one or more of these articles." -; Alternate language strings for the rules form field -JLIB_RULES_SETTING_NOTES_COM_CONTENT="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." -JLIB_RULES_SETTING_NOTES_ITEM_COM_CONTENT_ARTICLE="Changes apply to this article only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." +JLIB_RULES_SETTING_NOTES_COM_CONTENT="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." ; Alternate language strings for the rules form field +JLIB_RULES_SETTING_NOTES_ITEM_COM_CONTENT_ARTICLE="Changes apply to this article only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." ; Alternate language strings for the rules form field -; Fields overrides -COM_CONTENT_ARTICLE_CATEGORIES_TITLE="Articles: Field Groups" -COM_CONTENT_ARTICLE_CATEGORY_ADD_TITLE="Articles: New Field Group" -COM_CONTENT_ARTICLE_CATEGORY_EDIT_TITLE="Articles: Edit Field Group" +COM_CONTENT_ARTICLE_CATEGORIES_TITLE="Articles: Field Groups" ; Fields overrides +COM_CONTENT_ARTICLE_CATEGORY_ADD_TITLE="Articles: New Field Group" ; Fields overrides +COM_CONTENT_ARTICLE_CATEGORY_EDIT_TITLE="Articles: Edit Field Group" ; Fields overrides diff --git a/administrator/language/en-GB/com_cpanel.ini b/administrator/language/en-GB/com_cpanel.ini index 9c4f8bfed75..ec0d0962319 100644 --- a/administrator/language/en-GB/com_cpanel.ini +++ b/administrator/language/en-GB/com_cpanel.ini @@ -15,8 +15,7 @@ COM_CPANEL_MESSAGES_BODY_NOCLOSE="There are important post-installation messages COM_CPANEL_MESSAGES_BODYMORE_NOCLOSE="This information area won't appear when you have hidden all the messages." COM_CPANEL_MESSAGES_REVIEW="Read Messages" COM_CPANEL_MESSAGES_TITLE="You have post-installation messages" -; Translators: Don't touch the code part in the following message, Starting with ## Mod_rewrite ... -COM_CPANEL_MSG_ADDNOSNIFF_BODY="

Joomla is now shipped with additional security hardenings in the default htaccess.txt and web.config.txt files. These hardenings disable the so called MIME-type sniffing feature in web browsers. The sniffing leads to specific attack vectors, where scripts in normally harmless file formats (eg images) will be executed, leading to Cross-Site-Scripting vulnerabilities.

The security team recommends to manually apply the necessary changes to existing .htaccess or web.config files, as those files can not be updated automatically.

Changes for .htaccess
Add the following lines before \"## Mod_rewrite in use.\":

<IfModule mod_headers.c>\nHeader always set X-Content-Type-Options \"nosniff\"\n</IfModule>

Changes for web.config
Add the following lines right after \"</rewrite>\":

<httpProtocol>\n  <customHeaders>\n    <add name=\"X-Content-Type-Options\" value=\"nosniff\" />\n  </customHeaders>\n</httpProtocol>
" +COM_CPANEL_MSG_ADDNOSNIFF_BODY="

Joomla is now shipped with additional security hardenings in the default htaccess.txt and web.config.txt files. These hardenings disable the so called MIME-type sniffing feature in web browsers. The sniffing leads to specific attack vectors, where scripts in normally harmless file formats (eg images) will be executed, leading to Cross-Site-Scripting vulnerabilities.

The security team recommends to manually apply the necessary changes to existing .htaccess or web.config files, as those files can not be updated automatically.

Changes for .htaccess
Add the following lines before \"## Mod_rewrite in use.\":

<IfModule mod_headers.c>\nHeader always set X-Content-Type-Options \"nosniff\"\n</IfModule>

Changes for web.config
Add the following lines right after \"</rewrite>\":

<httpProtocol>\n  <customHeaders>\n    <add name=\"X-Content-Type-Options\" value=\"nosniff\" />\n  </customHeaders>\n</httpProtocol>
" ; Translators: Don't touch the code part in the message, Starting with ## Mod_rewrite ... COM_CPANEL_MSG_ADDNOSNIFF_TITLE=".htaccess & web.config Security Update" COM_CPANEL_MSG_HTACCESSSVG_BODY="

Since 3.9.21 Joomla is shipped with an additional security rule in the default htaccess.txt. This rule will protect users of svg files from potential Cross-Site-Scripting (XSS) vulnerabilities.
The security team recommends to manually apply the necessary changes to any existing .htaccess file, as this file can not be updated automatically.

Changes for .htaccess

<FilesMatch \"\.svg$\">\n  <IfModule mod_headers.c>\n    Header always set Content-Security-Policy \"script-src 'none'\"\n  </IfModule>\n</FilesMatch>

Currently we are not aware of a method to conditionally configure this on IIS web servers, please contact your hosting provider for further assistance.

" COM_CPANEL_MSG_HTACCESSSVG_TITLE="Additional XSS protection for the usage of SVG files" @@ -24,13 +23,13 @@ COM_CPANEL_MSG_LANGUAGEACCESS340_BODY="Since Joomla! 3.4.0 you may have issues w COM_CPANEL_MSG_LANGUAGEACCESS340_TITLE="You have possible issues with your multilingual settings" COM_CPANEL_MSG_ROBOTS_BODY="A change to the default robots.txt files was made in Joomla! 3.3 to allow Google to access templates and media files by default to improve SEO. This change is not applied automatically on upgrades and users are recommended to review the changes in the robots.txt.dist file and implement these changes in their own robots.txt file." COM_CPANEL_MSG_ROBOTS_TITLE="robots.txt Update" -COM_CPANEL_MSG_STATS_COLLECTION_BODY="

Since Joomla! 3.5 a statistics plugin will submit anonymous data to the Joomla Project. This will only submit the Joomla version, PHP version, database engine and version, and server operating system.

This data is collected to ensure that future versions of Joomla can take advantage of the latest database and PHP features without affecting significant numbers of users. The need for this became clear when a minimum of PHP 5.3.10 was required when Joomla! 3.3 implemented the more secure Bcrypt passwords.

In the interest of full transparency and to help developers this data is publicly available. An API and graphs will show the Joomla version, PHP versions and database engines in use.

If you do not wish to provide the Joomla Project with this information you can disable the plugin called System - Joomla Statistics.

" +COM_CPANEL_MSG_STATS_COLLECTION_BODY="

Since Joomla! 3.5 a statistics plugin will submit anonymous data to the Joomla Project. This will only submit the Joomla version, PHP version, database engine and version, and server operating system.

This data is collected to ensure that future versions of Joomla can take advantage of the latest database and PHP features without affecting significant numbers of users. The need for this became clear when a minimum of PHP 5.3.10 was required when Joomla! 3.3 implemented the more secure Bcrypt passwords.

In the interest of full transparency and to help developers this data is publicly available. An API and graphs will show the Joomla version, PHP versions and database engines in use.

If you do not wish to provide the Joomla Project with this information you can disable the plugin called System - Joomla Statistics.

" COM_CPANEL_MSG_STATS_COLLECTION_TITLE="Stats Collection in Joomla" COM_CPANEL_MSG_TEXTFILTER3919_BODY="

As part of our security team's review, we have made some changes to the default settings for the global text filters in a new Joomla installation. The default setting for the 'Public', 'Guest' and 'Registered' groups is now 'No HTML'. As these changes are only applied to new installations, we strongly recommend that you review these changes and update your site from: System → Global Configuration → Text Filters

" COM_CPANEL_MSG_TEXTFILTER3919_TITLE="Updated Text Filter Recommendations" COM_CPANEL_TITLE_SYSTEM_PANEL="System Panel" COM_CPANEL_UNPUBLISH_MODULE_ERROR="Error unpublishing the module" COM_CPANEL_UNPUBLISH_MODULE_SUCCESS="Module unpublished" -COM_CPANEL_WELCOME_BEGINNERS_MESSAGE="

Community resources are available for new users.

" +COM_CPANEL_WELCOME_BEGINNERS_MESSAGE="

Community resources are available for new users.

" COM_CPANEL_WELCOME_BEGINNERS_TITLE="Welcome to Joomla!" COM_CPANEL_XML_DESCRIPTION="Home Dashboard component" diff --git a/administrator/language/en-GB/com_installer.ini b/administrator/language/en-GB/com_installer.ini index eef36f7e361..6025be09089 100644 --- a/administrator/language/en-GB/com_installer.ini +++ b/administrator/language/en-GB/com_installer.ini @@ -175,17 +175,17 @@ 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." COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTSETDESC="This folder is where Joomla copies an extension, extracts the extension and the files are then copied into the correct directories. If this location is not set in configuration.php ($tmp_path) then you won't be able to upload extensions. Create a folder to enable Joomla to write to the folder to fix the issue." COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTWRITEABLE="The Joomla temporary folder is not writable or does not exist." COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTWRITEABLEDESC="This may cause issues when trying to upload extensions to Joomla. If you are having issues uploading extensions, make sure the folder defined in your configuration.php exists or check the '%s' and set it to be writeable and see if this fixes the issue." -COM_INSTALLER_MSG_WARNINGS_LOWMEMORYDESC="Low PHP memory limit." -COM_INSTALLER_MSG_WARNINGS_LOWMEMORYWARN="Your PHP memory limit is set below 8MB which may cause some issues when installing large extensions. Please set your memory limit to at least 16MB." -COM_INSTALLER_MSG_WARNINGS_MEDMEMORYDESC="Potentially low PHP memory limit." -COM_INSTALLER_MSG_WARNINGS_MEDMEMORYWARN="Your PHP memory limit is set below 16MB which may cause some issues when installing large extensions. Please set your memory limit to at least 16MB." +COM_INSTALLER_MSG_WARNINGS_LOWMEMORYDESC="Your PHP memory limit is set below 16MB which may cause some issues when installing large extensions. Please set your memory limit to at least 32MB." +COM_INSTALLER_MSG_WARNINGS_LOWMEMORYWARN="Low PHP memory limit." +COM_INSTALLER_MSG_WARNINGS_MEDMEMORYDESC="Your PHP memory limit is set below 24MB which may cause some issues when installing large extensions. Please set your memory limit to at least 32MB." +COM_INSTALLER_MSG_WARNINGS_MEDMEMORYWARN="Potentially low PHP memory limit." COM_INSTALLER_MSG_WARNINGS_NONE="No warnings detected." COM_INSTALLER_MSG_WARNINGS_NOTCOMPLETE="

Warning: Update Not Complete!

The update is only partially complete. Please do the second update to complete the process.

" COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSET="The PHP temporary folder is not set." @@ -293,5 +293,4 @@ COM_INSTALLER_VALUE_SUPPORTED_SUPPORTED="Download Key supported" COM_INSTALLER_VALUE_TYPE_SELECT="- Select Type -" COM_INSTALLER_XML_DESCRIPTION="Installer component for adding, removing and upgrading extensions" -; Alternate language strings for the rules form field -JLIB_RULES_SETTING_NOTES_COM_INSTALLER="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." +JLIB_RULES_SETTING_NOTES_COM_INSTALLER="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." ; Alternate language strings for the rules form field diff --git a/administrator/language/en-GB/com_joomlaupdate.ini b/administrator/language/en-GB/com_joomlaupdate.ini index ac4620cb471..cf3f93c0115 100644 --- a/administrator/language/en-GB/com_joomlaupdate.ini +++ b/administrator/language/en-GB/com_joomlaupdate.ini @@ -3,6 +3,7 @@ ; License GNU General Public License version 2 or later; see LICENSE.txt ; Note : All ini files need to be saved as UTF-8 +COM_JOOMLAUPDATE_CAPTIVE_HEADLINE="Confirm your credentials" COM_JOOMLAUPDATE_CHECKED_UPDATES="Checked for updates." COM_JOOMLAUPDATE_CONFIG_CUSTOMURL_LABEL="Custom URL" COM_JOOMLAUPDATE_CONFIG_SOURCES_DESC="Configure where Joomla gets its update information from." @@ -15,8 +16,11 @@ COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT="Joomla Next" COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_TESTING="Testing" COM_JOOMLAUPDATE_CONFIGURATION="Joomla Update: Options" COM_JOOMLAUPDATE_CONFIRM="Confirm" +COM_JOOMLAUPDATE_EMPTYSTATE_APPEND="Update your site by manually uploading the update package." +COM_JOOMLAUPDATE_EMPTYSTATE_BUTTON_ADD="Check for Updates" +COM_JOOMLAUPDATE_EMPTYSTATE_CONTENT="Select the button below to check for updates." +COM_JOOMLAUPDATE_EMPTYSTATE_TITLE="Check if an update is available." COM_JOOMLAUPDATE_FAILED_TO_CHECK_UPDATES="Failed to check for updates." -COM_JOOMLAUPDATE_LOGIN="Login" COM_JOOMLAUPDATE_MINIMUM_STABILITY_ALPHA="Alpha" COM_JOOMLAUPDATE_MINIMUM_STABILITY_BETA="Beta" COM_JOOMLAUPDATE_MINIMUM_STABILITY_DESC="The minimum stability of the Joomla updates you would like to see. Development is the least stable, Stable is production quality. If an update doesn't specify a level it is assumed to be Stable." @@ -24,17 +28,33 @@ COM_JOOMLAUPDATE_MINIMUM_STABILITY_DEV="Development" COM_JOOMLAUPDATE_MINIMUM_STABILITY_LABEL="Minimum Stability" COM_JOOMLAUPDATE_MINIMUM_STABILITY_RC="Release Candidate" COM_JOOMLAUPDATE_MINIMUM_STABILITY_STABLE="Stable" +COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_APPEND="Update your site by manually uploading the update package." +COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_BUTTON_ADD="Retry check for update" +COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_CONTENT="An update to Joomla %1$s was found, but it wasn't possible to fetch the download URL for that update. Either the update to Joomla %1$s is not available for your stability level or there is a problem with the Joomla Update Server.
Please try to download the update package from the official Joomla download page and use the Upload and Update function." +COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_TITLE="We can't find a download URL" COM_JOOMLAUPDATE_OVERVIEW="Joomla Update" COM_JOOMLAUPDATE_PREUPDATE_CHECK_CAPTION="Table of server settings to check before update." -COM_JOOMLAUPDATE_PREUPDATE_CHECK_COMPLETED_YOU_HAVE_DANGEROUS_PLUGINS="There are plugins installed and enabled that could interfere with the Joomla upgrade and result in a failed upgrade that leaves the site inaccessible.

You are strongly advised to upgrade, disable or uninstall these plugins before upgrading." +COM_JOOMLAUPDATE_PREUPDATE_CHECK_COMPLETED_YOU_HAVE_DANGEROUS_PLUGINS="There are plugins installed and enabled that could interfere with the Joomla update and result in a failed update that leaves the site inaccessible.

You are strongly advised to update, disable or uninstall these plugins before upgrading." COM_JOOMLAUPDATE_PREUPDATE_CHECK_EXTENSION_AUTHOR_URL="Extension Author URL" COM_JOOMLAUPDATE_PREUPDATE_CHECK_NOT_COMPLETE="Pre-Update checks have not been completed yet - please wait." +COM_JOOMLAUPDATE_PREUPDATE_EXTENSIONS="Extensions" COM_JOOMLAUPDATE_PREUPDATE_HEADING_CHECKED="Checked" COM_JOOMLAUPDATE_PREUPDATE_HEADING_REQUIREMENT="Requirement" +COM_JOOMLAUPDATE_PREUPDATE_REQUIRED_SETTINGS="Required Settings" +COM_JOOMLAUPDATE_PREUPDATE_RECOMMENDED_SETTINGS="Recommended Settings" COM_JOOMLAUPDATE_PREUPDATE_UNKNOWN_EXTENSION_MANIFESTCACHE_VERSION="Unknown Version" +COM_JOOMLAUPDATE_REINSTALL_EMPTYSTATE_BUTTON_ADD="Reinstall Joomla! core files" +COM_JOOMLAUPDATE_REINSTALL_EMPTYSTATE_CONTENT="You can reinstall all core files to repair broken or missing files." +COM_JOOMLAUPDATE_REINSTALL_EMPTYSTATE_TITLE="Currently no update available." +COM_JOOMLAUPDATE_SELF_EMPTYSTATE_BUTTON_ADD="Update component now" +COM_JOOMLAUPDATE_SELF_EMPTYSTATE_CONTENT="A new version of the Joomla Update Component is available. You must update this first before you can update Joomla!" +COM_JOOMLAUPDATE_SELF_EMPTYSTATE_TITLE="Live Update is not available" COM_JOOMLAUPDATE_SYSTEM_CHECK="System Check" COM_JOOMLAUPDATE_TOOLBAR_CHECK="Check for Updates" COM_JOOMLAUPDATE_UPDATE_CHECK="Update Check" +COM_JOOMLAUPDATE_UPDATE_CONFIRM_BACKUP="I've created a backup and my extensions are compatible." +COM_JOOMLAUPDATE_UPDATE_EMPTYSTATE_TITLE="Update your site to \"Joomla! %s\"" +COM_JOOMLAUPDATE_UPDATE_EMPTYSTATE_BUTTON_ADD="Start update" COM_JOOMLAUPDATE_UPDATE_LOG_CLEANUP="Cleaning up after installation." COM_JOOMLAUPDATE_UPDATE_LOG_COMPLETE="Update to version %s is complete." COM_JOOMLAUPDATE_UPDATE_LOG_DELETE_FILES="Deleting removed files and folders." @@ -57,9 +77,9 @@ COM_JOOMLAUPDATE_VIEW_DEFAULT_DESCRIPTION_MISSING_TAG="Extensions marked with Please note that if you see a version highlighted as X.X.X then the extension developer is offering a newer version of the extension for your current version of Joomla than they do for the new version of Joomla. You should check with the extension developer if this is correct before you update Joomla.

" COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_REQUIRING_UPDATES_TO_BE_COMPATIBLE="Update Required" -COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_REQUIRING_UPDATES_TO_BE_COMPATIBLE_NOTES="

Please update these extensions before updating Joomla.

" +COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_REQUIRING_UPDATES_TO_BE_COMPATIBLE_NOTES="

Please update these extensions before updating Joomla.

Please be especially careful if the extension is also listed as incompatible with the current version of Joomla!

" COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_RUNNING_PRE_UPDATE_CHECKS="Running Pre-Update Checks" -COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_RUNNING_PRE_UPDATE_CHECKS_NOTES="Please be patient whilst we run the pre-update checks on your extensions." -COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_SHOW_LESS_COMPATIBILITY_INFORMATION="[ Less Detail %s ]" -COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_SHOW_MORE_COMPATIBILITY_INFORMATION="[ More Detail %s ]" +COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_RUNNING_PRE_UPDATE_CHECKS_NOTES="

Please be patient whilst we run the pre-update checks on your extensions.

" +COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_SHOW_LESS_COMPATIBILITY_INFORMATION="Less Details" +COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_SHOW_MORE_COMPATIBILITY_INFORMATION="More Details" COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_UPDATE_SERVER_OFFERS_NO_COMPATIBLE_VERSION="Update Information Unavailable" COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_UPDATE_SERVER_OFFERS_NO_COMPATIBLE_VERSION_NOTES="Extension does not offer a compatible version for the selected target version of Joomla. This could mean the extension does not use the Joomla update system or the developer has not provided compatibility information for this Joomla version yet." -COM_JOOMLAUPDATE_VIEW_DEFAULT_HELP="More Information." +COM_JOOMLAUPDATE_VIEW_DEFAULT_HELP="More Information" COM_JOOMLAUPDATE_VIEW_DEFAULT_INFOURL="Additional Information" COM_JOOMLAUPDATE_VIEW_DEFAULT_INSTALL_SELF_UPDATE_FIRST="You must update to the latest version of the Joomla Update Component before you can update Joomla!" COM_JOOMLAUPDATE_VIEW_DEFAULT_INSTALLAGAIN="Reinstall Joomla core files" COM_JOOMLAUPDATE_VIEW_DEFAULT_INSTALLED="Installed Joomla version" -COM_JOOMLAUPDATE_VIEW_DEFAULT_INSTALLUPDATE="Install the Update" +COM_JOOMLAUPDATE_VIEW_DEFAULT_INSTALLUPDATE="Update" COM_JOOMLAUPDATE_VIEW_DEFAULT_LATEST="Latest Joomla version" COM_JOOMLAUPDATE_VIEW_DEFAULT_NO_DOWNLOAD_URL="We can't find a download URL" COM_JOOMLAUPDATE_VIEW_DEFAULT_NO_DOWNLOAD_URL_DESC="An update to Joomla %1$s was found, but it wasn't possible to fetch the download URL for that update. Either the update to Joomla %1$s is not available for your stability level or there is a problem with the Joomla Update Server.
Please try to download the update package from the official Joomla download page and use the Upload and Update tab." COM_JOOMLAUPDATE_VIEW_DEFAULT_NO_LIVE_UPDATE="Live Update is not available" COM_JOOMLAUPDATE_VIEW_DEFAULT_NO_LIVE_UPDATE_DESC="There is a new version of the Joomla Update Component that needs to be installed first. Click here to update the component." -COM_JOOMLAUPDATE_VIEW_DEFAULT_NON_CORE_PLUGIN_BEING_CHECKED="The system is currently checking these plugins to see if they could cause problems during the upgrade.

Please be patient while the checks are completed." -COM_JOOMLAUPDATE_VIEW_DEFAULT_NON_CORE_PLUGIN_CONFIRMATION="Do you wish to ignore the warnings about potentially incompatible plugins and to proceed with the upgrade?" +COM_JOOMLAUPDATE_VIEW_DEFAULT_NON_CORE_PLUGIN_BEING_CHECKED="The system is currently checking these plugins to see if they could cause problems during the update.

Please be patient while the checks are completed." +COM_JOOMLAUPDATE_VIEW_DEFAULT_NON_CORE_PLUGIN_CONFIRMATION="I accept the warnings about potentially incompatible extensions and wish to proceed with the update." COM_JOOMLAUPDATE_VIEW_DEFAULT_NOUPDATES="No updates available" COM_JOOMLAUPDATE_VIEW_DEFAULT_NOUPDATESNOTICE="You already have the latest Joomla version, %s." COM_JOOMLAUPDATE_VIEW_DEFAULT_PACKAGE="Update package URL" +COM_JOOMLAUPDATE_VIEW_DEFAULT_PACKAGE_INFO="You can also download the update package and install it manually." COM_JOOMLAUPDATE_VIEW_DEFAULT_PACKAGE_REINSTALL="Reinstall package URL" COM_JOOMLAUPDATE_VIEW_DEFAULT_PHP_VERSION_NOT_SUPPORTED="Your PHP version is not supported" COM_JOOMLAUPDATE_VIEW_DEFAULT_PHP_VERSION_NOT_SUPPORTED_DESC="An update to Joomla %1$s was found, but your currently installed PHP version does not match the minimum requirements for Joomla %1$s." -COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN="Potentially Serious Problem." -COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN_CONFIRM_MESSAGE="Are you sure you want to ignore the warnings about potentially incompatible plugins and proceed with the upgrade?" -COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN_DESC="This extension includes a plugin that could cause the upgrade to fail.

To perform the Joomla upgrade safely you should either upgrade this extension to a version compatible with your target version of Joomla or disable the relevant plugin(s) and check again.

For more information about the relevant plugins please check the 'Live Update' tab." -COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN_LIST="The following plugins could cause problems during the upgrade" +COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN="Potential Upgrade Issue." +COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN_CONFIRM_MESSAGE="Are you sure you want to ignore the warnings about potentially incompatible extensions and proceed with the update?" +COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN_DESC="This extension includes a plugin that could cause the update to fail.

To perform the Joomla update safely you should either update this extension to a version compatible with your target version of Joomla or disable the relevant plugin(s) and check again.

For more information about the relevant plugins please check the 'Live Update' tab." +COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN_LIST="The following plugins could cause problems during the update" COM_JOOMLAUPDATE_VIEW_DEFAULT_PREUPDATE_CHECK="Pre-Update Check for Joomla %s" COM_JOOMLAUPDATE_VIEW_DEFAULT_RECOMMENDED="Recommended" COM_JOOMLAUPDATE_VIEW_DEFAULT_RECOMMENDED_SETTINGS_DESC="These settings are recommended for PHP in order to ensure full compatibility with Joomla. However, Joomla! will still operate if your settings do not quite match the recommended configuration." @@ -121,7 +142,7 @@ COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_CUSTOM="You are on the "%s" COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_DEFAULT="You are on the "%s" update channel. Through this channel you'll receive notifications for all updates of the current Joomla release (4.x)" COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_NEXT="You are on the "%s" update channel. Through this channel you'll receive notifications for all updates of the current Joomla release (4.x) and you will also be notified when the future major release (5.x) will be available. Before upgrading to 5.x you'll need to assess its compatibility with your environment." COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_TESTING="You are on the "%s" update channel. This channel is designed for testing new releases and fixes in Joomla.
It is only intended for JBS (Joomla Bug Squad™) members and others within the Joomla community who are testing. Do not use this setting on a production site." -COM_JOOMLAUPDATE_VIEW_DEFAULT_UPLOAD_INTRO="You can use this feature to update Joomla if your server is behind a firewall or otherwise unable to contact the update servers. First download the Joomla Upgrade Package in ZIP format from the official Joomla download page. Then use the fields below to upload and install it." +COM_JOOMLAUPDATE_VIEW_DEFAULT_UPLOAD_INTRO="You can use this feature to update Joomla if your server is behind a firewall or otherwise unable to contact the update servers. First download the Joomla Update Package in ZIP format from the official Joomla download page. Then use the fields below to upload and install it." COM_JOOMLAUPDATE_VIEW_UPDATE_BYTESEXTRACTED="Bytes extracted" COM_JOOMLAUPDATE_VIEW_UPDATE_BYTESREAD="Bytes read" COM_JOOMLAUPDATE_VIEW_UPDATE_CHECKSUM_WRONG="File Checksum Failed" diff --git a/administrator/language/en-GB/com_languages.ini b/administrator/language/en-GB/com_languages.ini index 4cb4a7e9824..c4f41e1b8a4 100644 --- a/administrator/language/en-GB/com_languages.ini +++ b/administrator/language/en-GB/com_languages.ini @@ -150,5 +150,4 @@ COM_LANGUAGES_VIEW_OVERRIDES_TEXT_DESC="Text descending" COM_LANGUAGES_VIEW_OVERRIDES_TITLE="Languages: Overrides" COM_LANGUAGES_XML_DESCRIPTION="Component for language management" -; Alternate language strings for the rules form field -JLIB_RULES_SETTING_NOTES_COM_LANGUAGES="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." +JLIB_RULES_SETTING_NOTES_COM_LANGUAGES="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." ; Alternate language strings for the rules form field diff --git a/administrator/language/en-GB/com_menus.ini b/administrator/language/en-GB/com_menus.ini index 7dc1d88c9d6..8335ec01db8 100644 --- a/administrator/language/en-GB/com_menus.ini +++ b/administrator/language/en-GB/com_menus.ini @@ -141,9 +141,7 @@ COM_MENUS_MENUS="Menu Items" COM_MENUS_MENUS_FILTER_SEARCH_DESC="Search in title and menu type." COM_MENUS_MENUS_FILTER_SEARCH_LABEL="Search Menus" COM_MENUS_MENUS_TABLE_CAPTION="Table of Menus" -; in the following string -; %1$s is for module title, %2$s is for access-title, %3$s is for position -COM_MENUS_MODULE_ACCESS_POSITION="%1$s (%2$s in %3$s)" +COM_MENUS_MODULE_ACCESS_POSITION="%1$s (%2$s in %3$s)" ; %1$s is for module title, %2$s is for access-title, %3$s is for position COM_MENUS_MODULES="Modules" COM_MENUS_MODULES_TABLE_CAPTION="Table of Module Assignments" COM_MENUS_N_ITEMS_CHECKED_IN_1="Menu item checked in." @@ -205,9 +203,8 @@ COM_MENUS_VIEW_NEW_ITEM_TITLE="Menus: New Item" COM_MENUS_VIEW_NEW_MENU_TITLE="Menus: Add" COM_MENUS_XML_DESCRIPTION="Component for creating menus." -; Alternate language strings for the rules form field -JLIB_RULES_SETTING_NOTES_COM_MENUS="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." +JLIB_RULES_SETTING_NOTES_COM_MENUS="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." ; Alternate language strings for the rules form field -; Alternate language strings for the default menu item -JDEFAULT="Home" -JLIB_HTML_SETDEFAULT_ITEM="Set as Home" +JDEFAULT="Home" ; Alternate language strings for the default menu item +JLIB_HTML_SETDEFAULT_ITEM="Set as Home" ; Alternate language strings for the default menu item +JTOOLBAR_DEFAULT="Home" ; Alternate language strings for the default menu item diff --git a/administrator/language/en-GB/com_messages.ini b/administrator/language/en-GB/com_messages.ini index fe28ca83639..43363d1e951 100644 --- a/administrator/language/en-GB/com_messages.ini +++ b/administrator/language/en-GB/com_messages.ini @@ -77,5 +77,4 @@ COM_MESSAGES_VIEW_PRIVATE_MESSAGE="Private Messages: View" COM_MESSAGES_WRITE_PRIVATE_MESSAGE="Private Messages: Write" COM_MESSAGES_XML_DESCRIPTION="Component for private messaging support in Backend." -; Alternate language strings for the rules form field -JLIB_RULES_SETTING_NOTES_COM_MESSAGES="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." +JLIB_RULES_SETTING_NOTES_COM_MESSAGES="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." ; Alternate language strings for the rules form field diff --git a/administrator/language/en-GB/com_modules.ini b/administrator/language/en-GB/com_modules.ini index cfb0cc3c87b..f0add7dbba4 100644 --- a/administrator/language/en-GB/com_modules.ini +++ b/administrator/language/en-GB/com_modules.ini @@ -192,5 +192,4 @@ COM_MODULES_TYPE_CHOOSE="Select a Module Type" COM_MODULES_TYPE_OR_SELECT_POSITION="Type or Select a Position" COM_MODULES_XML_DESCRIPTION="Component for module management in the Administrator Backend." -; Alternate language strings for the rules form field -JLIB_RULES_SETTING_NOTES_COM_MODULES="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." +JLIB_RULES_SETTING_NOTES_COM_MODULES="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." ; Alternate language strings for the rules form field diff --git a/administrator/language/en-GB/com_newsfeeds.ini b/administrator/language/en-GB/com_newsfeeds.ini index c03180139d1..77d88995838 100644 --- a/administrator/language/en-GB/com_newsfeeds.ini +++ b/administrator/language/en-GB/com_newsfeeds.ini @@ -95,5 +95,4 @@ COM_NEWSFEEDS_WARNING_PROVIDE_VALID_NAME="Please provide a valid name." COM_NEWSFEEDS_XML_DESCRIPTION="This component manages RSS and Atom news feeds." JGLOBAL_NEWITEMSLAST_DESC="New news feeds default to the last position. The ordering can be changed after this news feed has been saved." -; Alternate language strings for the rules form field -JLIB_RULES_SETTING_NOTES_COM_NEWSFEEDS="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." +JLIB_RULES_SETTING_NOTES_COM_NEWSFEEDS="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." ; Alternate language strings for the rules form field diff --git a/administrator/language/en-GB/com_plugins.ini b/administrator/language/en-GB/com_plugins.ini index 1b72b3f93cf..40d7f3662d9 100644 --- a/administrator/language/en-GB/com_plugins.ini +++ b/administrator/language/en-GB/com_plugins.ini @@ -42,5 +42,4 @@ COM_PLUGINS_XML_ERR="Plugins XML data not available." JLIB_HTML_PUBLISH_ITEM="Enable plugin" JLIB_HTML_UNPUBLISH_ITEM="Disable plugin" -; Alternate language strings for the rules form field -JLIB_RULES_SETTING_NOTES_COM_PLUGINS="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." +JLIB_RULES_SETTING_NOTES_COM_PLUGINS="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." ; Alternate language strings for the rules form field diff --git a/administrator/language/en-GB/com_privacy.ini b/administrator/language/en-GB/com_privacy.ini index a718daade7c..fd026db6a44 100644 --- a/administrator/language/en-GB/com_privacy.ini +++ b/administrator/language/en-GB/com_privacy.ini @@ -131,7 +131,7 @@ COM_PRIVACY_NOTIFY_LABEL="Days To Consider Request Urgent" COM_PRIVACY_N_CONSENTS_INVALIDATED="%s consents were invalidated." COM_PRIVACY_N_CONSENTS_INVALIDATED_1="The consent was invalidated." COM_PRIVACY_OPTION_LABEL="Options" -COM_PRIVACY_POSTINSTALL_BODY="

With the introduction of GDPR for EU citizens and similar regulations elsewhere in the world it may be necessary for you to request consent before storing any Personal Information of a user.

Joomla 3.9 introduces new capabilities to assist you in creating site privacy policies and collecting user consent. In addition a workflow is available to help you manage user information requests such as requests for removing their personal data from your site.

For further information on this new feature read the Privacy documentation.

" +COM_PRIVACY_POSTINSTALL_BODY="

With the introduction of GDPR for EU citizens and similar regulations elsewhere in the world it may be necessary for you to request consent before storing any Personal Information of a user.

Joomla 3.9 introduces new capabilities to assist you in creating site privacy policies and collecting user consent. In addition a workflow is available to help you manage user information requests such as requests for removing their personal data from your site.

For further information on this new feature read the Privacy documentation.

" COM_PRIVACY_POSTINSTALL_TITLE="Increased Management Of Users Privacy" COM_PRIVACY_REQUESTS_EMPTYSTATE_BUTTON_ADD="Add your first request" COM_PRIVACY_REQUESTS_EMPTYSTATE_CONTENT="This screen displays all Privacy: Information Requests that have been received and their status. You can also create a new request here." diff --git a/administrator/language/en-GB/com_redirect.ini b/administrator/language/en-GB/com_redirect.ini index dc121a38caf..9b17e3fe345 100644 --- a/administrator/language/en-GB/com_redirect.ini +++ b/administrator/language/en-GB/com_redirect.ini @@ -95,5 +95,4 @@ COM_REDIRECT_TOOLBAR_PURGE="Purge Disabled" COM_REDIRECT_XML_DESCRIPTION="This component implements link redirection." COM_REDIRECTS_TABLE_CAPTION="Table of redirect Links" -; Alternate language strings for the rules form field -JLIB_RULES_SETTING_NOTES_COM_REDIRECT="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." +JLIB_RULES_SETTING_NOTES_COM_REDIRECT="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." ; Alternate language strings for the rules form field diff --git a/administrator/language/en-GB/com_users.ini b/administrator/language/en-GB/com_users.ini index a37c800ae3f..336fbae3fc1 100644 --- a/administrator/language/en-GB/com_users.ini +++ b/administrator/language/en-GB/com_users.ini @@ -380,9 +380,7 @@ COM_USERS_VIEW_NOTES_TITLE="User Notes" COM_USERS_VIEW_USERS_TITLE="Users" COM_USERS_XML_DESCRIPTION="Component for managing users" -; Alternate language strings for the rules form field -JLIB_RULES_SETTING_NOTES_COM_USERS="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." +JLIB_RULES_SETTING_NOTES_COM_USERS="Changes apply to this component only.
Inherited - a Global Configuration setting or higher level setting is applied.
Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
Allowed will enable the action for this component unless overruled by a Global Configuration setting." ; Alternate language strings for the rules form field -; Categories overrides -COM_CATEGORIES_CATEGORY_ADD_TITLE="User Notes: New Category" -COM_CATEGORIES_CATEGORY_EDIT_TITLE="User Notes: Edit Category" +COM_CATEGORIES_CATEGORY_ADD_TITLE="User Notes: New Category" ; Categories overrides +COM_CATEGORIES_CATEGORY_EDIT_TITLE="User Notes: Edit Category" ; Categories overrides diff --git a/administrator/language/en-GB/install.xml b/administrator/language/en-GB/install.xml index 1c302077505..ac647490080 100644 --- a/administrator/language/en-GB/install.xml +++ b/administrator/language/en-GB/install.xml @@ -3,7 +3,7 @@ English (en-GB) en-GB 4.0.0 - June 2021 + August 2021 Joomla! Project admin@joomla.org www.joomla.org diff --git a/administrator/language/en-GB/joomla.ini b/administrator/language/en-GB/joomla.ini index cf24fcb031a..838e727b2d5 100644 --- a/administrator/language/en-GB/joomla.ini +++ b/administrator/language/en-GB/joomla.ini @@ -1010,8 +1010,6 @@ JTOOLBAR_OPTIONS="Options" JTOOLBAR_PUBLISH="Publish" JTOOLBAR_PURGE_CACHE="Clear Cache" JTOOLBAR_REBUILD="Rebuild" -JTOOLBAR_REBUILD_FAILED="Rebuild failed: %s" -JTOOLBAR_REBUILD_SUCCESS="Toolbar rebuilt." JTOOLBAR_REFRESH_CACHE="Refresh Cache" JTOOLBAR_REMOVE="Remove" JTOOLBAR_SAVE="Save & Close" diff --git a/administrator/language/en-GB/langmetadata.xml b/administrator/language/en-GB/langmetadata.xml index 1cbdb407c26..63b1757be53 100644 --- a/administrator/language/en-GB/langmetadata.xml +++ b/administrator/language/en-GB/langmetadata.xml @@ -2,7 +2,7 @@ English (en-GB) 4.0.0 - June 2021 + August 2021 Joomla! Project admin@joomla.org www.joomla.org diff --git a/administrator/language/en-GB/lib_joomla.ini b/administrator/language/en-GB/lib_joomla.ini index 8315d62b27c..b763fd9d3ee 100644 --- a/administrator/language/en-GB/lib_joomla.ini +++ b/administrator/language/en-GB/lib_joomla.ini @@ -382,6 +382,7 @@ JLIB_HTML_BATCH_USER_NOUSER="No User." JLIB_HTML_BATCH_WORKFLOW_STAGE_LABEL="Change Stage" JLIB_HTML_BATCH_WORKFLOW_STAGE_NOCHANGE="- Keep original Workflow Stage -" JLIB_HTML_BEHAVIOR_ABOUT_THE_CALENDAR="About the Calendar" +JLIB_HTML_BEHAVIOR_AM="am" JLIB_HTML_BEHAVIOR_CLOSE="Close" JLIB_HTML_BEHAVIOR_DATE_SELECTION="Date selection:\n" JLIB_HTML_BEHAVIOR_DISPLAY_S_FIRST="Display %s first" @@ -393,6 +394,7 @@ JLIB_HTML_BEHAVIOR_MONTH_SELECT="- Use the < and > buttons to select month\n" JLIB_HTML_BEHAVIOR_NEXT_MONTH_HOLD_FOR_MENU="Select to move to the next month. Select and hold for a list of the months." JLIB_HTML_BEHAVIOR_NEXT_YEAR_HOLD_FOR_MENU="Select to move to the next year. Select and hold for a list of years." JLIB_HTML_BEHAVIOR_OPEN_CALENDAR="Open the calendar" +JLIB_HTML_BEHAVIOR_PM="pm" JLIB_HTML_BEHAVIOR_PREV_MONTH_HOLD_FOR_MENU="Select to move to the previous month. Select and hold for a list of the months." JLIB_HTML_BEHAVIOR_PREV_YEAR_HOLD_FOR_MENU="Select to move to the previous year. Select and hold for a list of years." JLIB_HTML_BEHAVIOR_SELECT_DATE="Select a date." @@ -705,7 +707,6 @@ JLIB_RULES_NOTICE_RECALCULATE_GROUP_CHILDS_PERMISSIONS="Permissions changed in a JLIB_RULES_NOTICE_RECALCULATE_GROUP_PERMISSIONS="Super User permissions changed. Save or reload to recalculate this group permissions." JLIB_RULES_REQUEST_FAILURE="Failed sending the data to server." JLIB_RULES_SAVE_BEFORE_CHANGE_PERMISSIONS="Please save before changing permissions." -JLIB_RULES_SELECT_ALLOW_DENY_GROUP="Allow or deny %s for users in the %s group." JLIB_RULES_SELECT_SETTING="Select New Setting" JLIB_RULES_SETTING_NOTES="If you change the setting, it will apply to this and all child groups, components and content. Note that Denied will overrule any inherited setting and also the setting in any child group, component or content. In the case of a setting conflict, Deny will take precedence. Not Set is equivalent to Denied but can be changed in child groups, components and content." JLIB_RULES_SETTING_NOTES_ITEM="If you change the setting, it will apply to this item. Note that:
Inherited means that the permissions from global configuration, parent group and category will be used.
Denied means that no matter what the global configuration, parent group or category settings are, the group being edited can't take this action on this item.
Allowed means that the group being edited will be able to take this action for this item (but if this is in conflict with the global configuration, parent group or category it will have no impact; a conflict will be indicated by Not Allowed (Inherited) under Calculated Settings)." diff --git a/administrator/language/en-GB/mod_menu.ini b/administrator/language/en-GB/mod_menu.ini index b13e0265005..33fd0dc9c21 100644 --- a/administrator/language/en-GB/mod_menu.ini +++ b/administrator/language/en-GB/mod_menu.ini @@ -70,14 +70,10 @@ MOD_MENU_HELP_PARENT_START_HERE="Start Here" MOD_MENU_HELP_RESOURCES="Joomla! Resources" MOD_MENU_HELP_SECURITY="Security Centre" MOD_MENU_HELP_SHOP="Joomla! Shop" -; The string below will be used if the localised sample data has a URL for the desired community forum or if the 'Custom Support Forum' field parameter in the Administrator Menu module has a URL -MOD_MENU_HELP_SUPPORT_CUSTOM_FORUM="Custom Support Forum" +MOD_MENU_HELP_SUPPORT_CUSTOM_FORUM="Custom Support Forum" ; Will be used if the localised sample data has a URL for the desired community forum or if the 'Custom Support Forum' field parameter in the Administrator Menu module has a URL MOD_MENU_HELP_SUPPORT_OFFICIAL_FORUM="Official Support Forum" -; If you have chosen to display in the string above the section for all languages, translate the string below. -; If you have displayed the specific language forum, use something like "Official French Forum" in your language. -MOD_MENU_HELP_SUPPORT_OFFICIAL_LANGUAGE_FORUM="Official Language Forums" -; Enter in the string below the # of the specific language forum in https://forum.joomla.org/ (example: 19 for French). Default is '511' which is the section for all languages forums. -MOD_MENU_HELP_SUPPORT_OFFICIAL_LANGUAGE_FORUM_VALUE="511" +MOD_MENU_HELP_SUPPORT_OFFICIAL_LANGUAGE_FORUM="Official Language Forums" ; If you have displayed the specific language forum, use something like "Official French Forum" in your language. +MOD_MENU_HELP_SUPPORT_OFFICIAL_LANGUAGE_FORUM_VALUE="511" ; The # of the specific language forum in https://forum.joomla.org/ (example: 19 for French). Default is '511' which is the section for all languages forums. MOD_MENU_HELP_TRANSLATIONS="Joomla! Translations" MOD_MENU_HELP_USER_GROUPS="Joomla User Groups" MOD_MENU_HELP_XCHANGE="Stack Exchange" diff --git a/administrator/language/en-GB/plg_fields_imagelist.ini b/administrator/language/en-GB/plg_fields_imagelist.ini index 1fe6b5905a1..650be93932c 100644 --- a/administrator/language/en-GB/plg_fields_imagelist.ini +++ b/administrator/language/en-GB/plg_fields_imagelist.ini @@ -5,8 +5,7 @@ PLG_FIELDS_IMAGELIST="Fields - Imagelist" PLG_FIELDS_IMAGELIST_LABEL="List of Images (%s)" -; Don't translate "images" in the string below. -PLG_FIELDS_IMAGELIST_PARAMS_DIRECTORY_DESC="This directory is relative to \"images\" directory in Joomla! root." +PLG_FIELDS_IMAGELIST_PARAMS_DIRECTORY_DESC="This directory is relative to \"images\" directory in Joomla! root." ; Don't translate "images" PLG_FIELDS_IMAGELIST_PARAMS_DIRECTORY_LABEL="Directory" PLG_FIELDS_IMAGELIST_PARAMS_IMAGE_CLASS_LABEL="Image Class" PLG_FIELDS_IMAGELIST_PARAMS_MULTIPLE_LABEL="Multiple" diff --git a/administrator/language/en-GB/plg_fields_sql.ini b/administrator/language/en-GB/plg_fields_sql.ini index 4717eabf9e6..5744e7f5411 100644 --- a/administrator/language/en-GB/plg_fields_sql.ini +++ b/administrator/language/en-GB/plg_fields_sql.ini @@ -7,7 +7,6 @@ PLG_FIELDS_SQL="Fields - SQL" PLG_FIELDS_SQL_CREATE_NOT_POSSIBLE="Only a Super User can create or edit an SQL field!" PLG_FIELDS_SQL_LABEL="SQL (%s)" PLG_FIELDS_SQL_PARAMS_MULTIPLE_LABEL="Multiple" -; In the string below the terms 'value' and 'text' should not be translated -PLG_FIELDS_SQL_PARAMS_QUERY_DESC="The SQL query which will provide the data for the dropdown list. The query must return two columns; one called 'value' which will hold the values of the list items; the other called 'text' with the text in the dropdown list." +PLG_FIELDS_SQL_PARAMS_QUERY_DESC="The SQL query which will provide the data for the dropdown list. The query must return two columns; one called 'value' which will hold the values of the list items; the other called 'text' with the text in the dropdown list." ; The terms 'value' and 'text' should not be translated PLG_FIELDS_SQL_PARAMS_QUERY_LABEL="Query" PLG_FIELDS_SQL_XML_DESCRIPTION="This plugin lets you create new fields of type 'sql' in any extensions where custom fields are supported." diff --git a/administrator/language/en-GB/plg_installer_webinstaller.ini b/administrator/language/en-GB/plg_installer_webinstaller.ini index d6e63f9e8ca..e3ebf2fa391 100644 --- a/administrator/language/en-GB/plg_installer_webinstaller.ini +++ b/administrator/language/en-GB/plg_installer_webinstaller.ini @@ -10,7 +10,6 @@ PLG_INSTALLER_WEBINSTALLER_INSTALL_WEB_CONFIRM_NAME="Extension Name" PLG_INSTALLER_WEBINSTALLER_INSTALL_WEB_CONFIRM_URL="Install from" PLG_INSTALLER_WEBINSTALLER_INSTALL_WEB_LOADING="Loading ..." PLG_INSTALLER_WEBINSTALLER_INSTALL_WEB_LOADING_ERROR="Can't connect to the Joomla! server. Please try again later." -; The [SITEURL] placeholder should not be translated as it is used in the JavaScript API to insert the correct URL -PLG_INSTALLER_WEBINSTALLER_REDIRECT_TO_EXTERNAL_SITE_TO_INSTALL="You will be redirected to the following link to complete the registration/purchase: [SITEURL]" +PLG_INSTALLER_WEBINSTALLER_REDIRECT_TO_EXTERNAL_SITE_TO_INSTALL="You will be redirected to the following link to complete the registration/purchase: [SITEURL]" ; The [SITEURL] placeholder should not be translated as it is used in the JavaScript API to insert the correct URL PLG_INSTALLER_WEBINSTALLER_TAB_LABEL="Install from Web" PLG_INSTALLER_WEBINSTALLER_XML_DESCRIPTION="This plugin allows you to install directly from the Joomla! Extension Directory." diff --git a/administrator/language/en-GB/plg_quickicon_phpversioncheck.ini b/administrator/language/en-GB/plg_quickicon_phpversioncheck.ini index 256cd3954e8..c03c665c668 100644 --- a/administrator/language/en-GB/plg_quickicon_phpversioncheck.ini +++ b/administrator/language/en-GB/plg_quickicon_phpversioncheck.ini @@ -4,10 +4,7 @@ ; Note : All ini files need to be saved as UTF-8 PLG_QUICKICON_PHPVERSIONCHECK="Quick Icon - PHP Version Check" -; Key 1 is the server's current PHP version, key 2 is the date at which support will end for the current PHP version -PLG_QUICKICON_PHPVERSIONCHECK_SECURITY_ONLY="Your PHP version, %1$s, is only receiving security fixes from the PHP project at this time. This means your PHP version will soon no longer be supported. We recommend planning to upgrade to a newer PHP version before it reaches end of support on %2$s. Joomla will be faster and more secure if you upgrade to a newer PHP version. Please contact your host for upgrade instructions." -; Key 1 is the server's current PHP version, key 2 is the recommended PHP version, and key 3 is the date at which support will end for the recommended PHP version -PLG_QUICKICON_PHPVERSIONCHECK_UNSUPPORTED="We have detected that your server is using PHP %1$s which is obsolete and no longer receives official security updates by its developers. The Joomla! Project recommends upgrading your site to PHP %2$s or later which will receive security updates at least until %3$s.

Please ask your host to make PHP %2$s or a later version the default version for your site. If your host is already PHP %2$s ready please enable PHP %2$s on your site's root and 'administrator' directories – typically you can do this yourself through a tool in your hosting control panel, but it's best to ask your host if you are unsure." -; Key 1 is the server's current PHP version -PLG_QUICKICON_PHPVERSIONCHECK_UNSUPPORTED_JOOMLA_OUTDATED="We have detected that your server is using PHP %1$s which is obsolete and no longer receives official security updates by its developers. Furthermore, we cannot recommend a newer PHP version because you are using an outdated Joomla! version. We recommend updating Joomla! and then following further PHP upgrade instructions." +PLG_QUICKICON_PHPVERSIONCHECK_SECURITY_ONLY="Your PHP version, %1$s, is only receiving security fixes from the PHP project at this time. This means your PHP version will soon no longer be supported. We recommend planning to upgrade to a newer PHP version before it reaches end of support on %2$s. Joomla will be faster and more secure if you upgrade to a newer PHP version. Please contact your host for upgrade instructions." ; Key 1 is the server's current PHP version, key 2 is the date at which support will end for the current PHP version +PLG_QUICKICON_PHPVERSIONCHECK_UNSUPPORTED="We have detected that your server is using PHP %1$s which is obsolete and no longer receives official security updates by its developers. The Joomla! Project recommends upgrading your site to PHP %2$s or later which will receive security updates at least until %3$s.

Please ask your host to make PHP %2$s or a later version the default version for your site. If your host is already PHP %2$s ready please enable PHP %2$s on your site's root and 'administrator' directories – typically you can do this yourself through a tool in your hosting control panel, but it's best to ask your host if you are unsure." ; Key 1 is the server's current PHP version, key 2 is the recommended PHP version, and key 3 is the date at which support will end for the recommended PHP version +PLG_QUICKICON_PHPVERSIONCHECK_UNSUPPORTED_JOOMLA_OUTDATED="We have detected that your server is using PHP %1$s which is obsolete and no longer receives official security updates by its developers. Furthermore, we cannot recommend a newer PHP version because you are using an outdated Joomla! version. We recommend updating Joomla! and then following further PHP upgrade instructions." ; Key 1 is the server's current PHP version PLG_QUICKICON_PHPVERSIONCHECK_XML_DESCRIPTION="Checks the support status of your installation's PHP version and raises a warning if not fully supported." diff --git a/administrator/language/en-GB/plg_system_httpheaders.ini b/administrator/language/en-GB/plg_system_httpheaders.ini index dd306e08609..ee90100271b 100644 --- a/administrator/language/en-GB/plg_system_httpheaders.ini +++ b/administrator/language/en-GB/plg_system_httpheaders.ini @@ -3,61 +3,43 @@ ; License GNU General Public License version 2 or later; see LICENSE.txt ; Note : All ini files need to be saved as UTF-8 -; Please do not translate the word 'HTTP Headers' in the following two language strings -PLG_SYSTEM_HTTPHEADERS="System - HTTP Headers" -PLG_SYSTEM_HTTPHEADERS_ADDITIONAL_HEADER="Force HTTP Headers" -; Please do not translate the word 'HTTP Header' in the following two language strings -PLG_SYSTEM_HTTPHEADERS_ADDITIONAL_HEADER_KEY="HTTP Header" -PLG_SYSTEM_HTTPHEADERS_ADDITIONAL_HEADER_VALUE="HTTP Header Value" -; Please do not translate the following language string -PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY="Content Security Policy (CSP)" +PLG_SYSTEM_HTTPHEADERS="System - HTTP Headers" ; Do not translate 'HTTP Headers' +PLG_SYSTEM_HTTPHEADERS_ADDITIONAL_HEADER="Force HTTP Headers" ; Do not translate 'HTTP Headers' +PLG_SYSTEM_HTTPHEADERS_ADDITIONAL_HEADER_KEY="HTTP Header" ; Do not translate 'HTTP Header' +PLG_SYSTEM_HTTPHEADERS_ADDITIONAL_HEADER_VALUE="HTTP Header Value" ; Do not translate 'HTTP Header' +PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY="Content Security Policy (CSP)" ; Do not translate PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_CLIENT="Client" -; Please do not translate the following language string -PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_FRAME_ANCESTORS_SELF_ENABLED="frame-ancestors 'self'" +PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_FRAME_ANCESTORS_SELF_ENABLED="frame-ancestors 'self'" ; Do not translate PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_FRAME_ANCESTORS_SELF_ENABLED_DESC="Enable the CSP clickjacking protection frame-ancestors and only allow the origin 'self'. Please use the form below to allow origins other than 'self'." -; Please only change the URL in the following language string -PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_NONCE_ENABLED="Nonce" +PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_NONCE_ENABLED="Nonce" ; Please only change the URL PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_NONCE_ENABLED_DESC="Enable the whitelist for specific inline scripts using a cryptographic nonce (number used once) for all scripts and styles using the Joomla API. Specifying a nonce makes a modern browser ignore 'unsafe-inline' which should still be set for older browsers without nonce support." -; Please do not translate 'Content-Security-Policy' & 'Content-Security-Policy-Report-Only' in the following language string -PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_REPORT_ONLY_DESC="Use the header 'Content-Security-Policy-Report-Only' instead of 'Content-Security-Policy'." -; Please do not translate the following two language strings -PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_REPORT_ONLY="Report-Only" -PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_STRICT_DYNAMIC_ENABLED="strict-dynamic" -; Please do not translate 'strict-dynamic', 'self' and 'unsafe-inline' in the following language string -PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_STRICT_DYNAMIC_ENABLED_DESC="The strict-dynamic source expression specifies that the trust explicitly given to a script present in the markup, by accompanying it with a nonce or a hash, shall be propagated to all the scripts loaded by that root script. At the same time, any allowed or source expressions such as 'self' or 'unsafe-inline' will be ignored." -; Please only change the URL in the following language string -PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_SCRIPT_HASHES_ENABLED="Script hashes" +PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_REPORT_ONLY_DESC="Use the header 'Content-Security-Policy-Report-Only' instead of 'Content-Security-Policy'." ; Do not translate 'Content-Security-Policy' & 'Content-Security-Policy-Report-Only' +PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_REPORT_ONLY="Report-Only" ; Do not translate +PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_STRICT_DYNAMIC_ENABLED="strict-dynamic" ; Do not translate +PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_STRICT_DYNAMIC_ENABLED_DESC="The strict-dynamic source expression specifies that the trust explicitly given to a script present in the markup, by accompanying it with a nonce or a hash, shall be propagated to all the scripts loaded by that root script. At the same time, any allowed or source expressions such as 'self' or 'unsafe-inline' will be ignored." ; Do not translate 'strict-dynamic', 'self' and 'unsafe-inline' +PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_SCRIPT_HASHES_ENABLED="Script hashes" ; Please only change the URL PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_SCRIPT_HASHES_ENABLED_DESC="Enable the optional hash based whitelist inline scripts using a cryptographic hash for all scripts using the Joomla API. Specifying hashes makes a modern browser ignore 'unsafe-inline' which should still be set for older browsers without hash support." -; Please only change the URL in the following language string -PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_STYLE_HASHES_ENABLED="Style hashes" +PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_STYLE_HASHES_ENABLED="Style hashes" ; Please only change the URL PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_STYLE_HASHES_ENABLED_DESC="Enable the optional hash based whitelist inline styles using a cryptographic hash for all styles using the Joomla API. Specifying hashes makes a modern browser ignore 'unsafe-inline' which should still be set for older browsers without hash support." PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_VALUES="Add Directive" PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_VALUES_DIRECTIVE="Policy Directive" PLG_SYSTEM_HTTPHEADERS_CONTENTSECURITYPOLICY_VALUES_VALUE="Value" -; Please do not translate the following language string -PLG_SYSTEM_HTTPHEADERS_COOP="Cross-Origin-Opener-Policy" +PLG_SYSTEM_HTTPHEADERS_COOP="Cross-Origin-Opener-Policy" ; Do not translate PLG_SYSTEM_HTTPHEADERS_HEADER_CLIENT="Client" PLG_SYSTEM_HTTPHEADERS_HEADER_CLIENT_BOTH="Both" -; Please do not translate the following language string -PLG_SYSTEM_HTTPHEADERS_HSTS="HTTP Strict Transport Security (HSTS)" -; Please do not translate the following language string -PLG_SYSTEM_HTTPHEADERS_HSTS_MAXAGE="max-age" -; Please do not translate 'max-age' in the following language string -PLG_SYSTEM_HTTPHEADERS_HSTS_MAXAGE_DESC="This option sets the time for 'max-age', it is specified in seconds. The default value is 31536000, which corresponds to one year" -; Please do not translate the following language string -PLG_SYSTEM_HTTPHEADERS_HSTS_PRELOAD="Preload" +PLG_SYSTEM_HTTPHEADERS_HSTS="HTTP Strict Transport Security (HSTS)" ; Do not translate +PLG_SYSTEM_HTTPHEADERS_HSTS_MAXAGE="max-age" ; Do not translate +PLG_SYSTEM_HTTPHEADERS_HSTS_MAXAGE_DESC="This option sets the time for 'max-age', it is specified in seconds. The default value is 31536000, which corresponds to one year" ; Please do not translate 'max-age' +PLG_SYSTEM_HTTPHEADERS_HSTS_PRELOAD="Preload" ; Do not translate PLG_SYSTEM_HTTPHEADERS_HSTS_PRELOAD_DESC="This option activates the opt-in for inclusion in so-called browser preload lists." PLG_SYSTEM_HTTPHEADERS_HSTS_PRELOAD_NOTE="Important" -; Please do not translate 'max-age' in the following language string -PLG_SYSTEM_HTTPHEADERS_HSTS_PRELOAD_NOTE_DESC="HSTS means that your domain can no longer be called without HTTPS. Once added to the preload list, this is not easy to undo. Domains can be removed, but it takes months for users to make a change with a browser update.
This option is very important to prevent 'man-in-the-middle attacks', so it should be activated in any case, but only if you are sure that HTTPS is supported for domain and all subdomains in the long run! The value for 'max-age' must be set to 63072000 (2 years) for recording." +PLG_SYSTEM_HTTPHEADERS_HSTS_PRELOAD_NOTE_DESC="HSTS means that your domain can no longer be called without HTTPS. Once added to the preload list, this is not easy to undo. Domains can be removed, but it takes months for users to make a change with a browser update.
This option is very important to prevent 'man-in-the-middle attacks', so it should be activated in any case, but only if you are sure that HTTPS is supported for domain and all subdomains in the long run! The value for 'max-age' must be set to 63072000 (2 years) for recording." ; Please do not translate 'max-age' PLG_SYSTEM_HTTPHEADERS_HSTS_SUBDOMAINS="Also for subdomains" PLG_SYSTEM_HTTPHEADERS_HSTS_SUBDOMAINS_DESC="HSTS should also be enabled for subdomains usually the subdomain 'www' is taken into account when creating the SSL certificate. If further subdomains are used, please note that they are also provided with a valid SSL certificate." PLG_SYSTEM_HTTPHEADERS_POSTINSTALL_INTRODUCTION_ACTION="Enable default security headers" PLG_SYSTEM_HTTPHEADERS_POSTINSTALL_INTRODUCTION_BODY="

Joomla! comes with a built-in set of tools that help you to handle http security headers. These headers help your browser for example to protect your website from XSS and Clickjacking attacks.

You can find more details in the HTTP Header Management Tutorial in the Joomla! Documentation.

" PLG_SYSTEM_HTTPHEADERS_POSTINSTALL_INTRODUCTION_TITLE="HTTP Security Headers" -; Please do not translate the following two language strings -PLG_SYSTEM_HTTPHEADERS_REFERRERPOLICY="Referrer-Policy" -PLG_SYSTEM_HTTPHEADERS_XFRAMEOPTIONS="X-Frame-Options" -; Please do not translate 'HTTP Security Headers' in the following language string -PLG_SYSTEM_HTTPHEADERS_XML_DESCRIPTION="This Plugin helps you to set the HTTP Security Headers" +PLG_SYSTEM_HTTPHEADERS_REFERRERPOLICY="Referrer-Policy" ; Do not translate +PLG_SYSTEM_HTTPHEADERS_XFRAMEOPTIONS="X-Frame-Options" ; Do not translate +PLG_SYSTEM_HTTPHEADERS_XML_DESCRIPTION="This Plugin helps you to set the HTTP Security Headers" ; Please do not translate 'HTTP Security Headers' diff --git a/administrator/language/en-GB/plg_system_httpheaders.sys.ini b/administrator/language/en-GB/plg_system_httpheaders.sys.ini index 67ab816418e..bce0c3f2c3d 100644 --- a/administrator/language/en-GB/plg_system_httpheaders.sys.ini +++ b/administrator/language/en-GB/plg_system_httpheaders.sys.ini @@ -3,6 +3,5 @@ ; License GNU General Public License version 2 or later; see LICENSE.txt ; Note : All ini files need to be saved as UTF-8 -; Please do not translate the word 'HTTP Headers' in the following two language strings -PLG_SYSTEM_HTTPHEADERS="System - HTTP Headers" -PLG_SYSTEM_HTTPHEADERS_XML_DESCRIPTION="This Plugin can set some Security HTTP Headers" +PLG_SYSTEM_HTTPHEADERS="System - HTTP Headers" ; Do not translate the word 'HTTP Headers' +PLG_SYSTEM_HTTPHEADERS_XML_DESCRIPTION="This Plugin can set some Security HTTP Headers" ; Do not translate the word 'HTTP Headers' diff --git a/administrator/language/en-GB/plg_system_skipto.ini b/administrator/language/en-GB/plg_system_skipto.ini index a94b17f78cf..a3270dc65a9 100644 --- a/administrator/language/en-GB/plg_system_skipto.ini +++ b/administrator/language/en-GB/plg_system_skipto.ini @@ -4,12 +4,10 @@ ; Note : All ini files need to be saved as UTF-8 PLG_SYSTEM_SKIPTO="System - Skip-To Navigation" -; do not translate $key -PLG_SYSTEM_SKIPTO_ACCESS_KEY="Access key is $key" +PLG_SYSTEM_SKIPTO_ACCESS_KEY="Access key is $key" ; do not translate $key PLG_SYSTEM_SKIPTO_HEADING="Page Outline" PLG_SYSTEM_SKIPTO_HEADING_LEVEL="Heading level" -; next line begins with a space. $m is count, %n is total -PLG_SYSTEM_SKIPTO_HEADING_MOFN=" ($m of $n)" +PLG_SYSTEM_SKIPTO_HEADING_MOFN=" ($m of $n)" ; Begins with a space. $m is count, %n is total PLG_SYSTEM_SKIPTO_HEADING_NONE="No headings to skip to" PLG_SYSTEM_SKIPTO_LANDMARK_ASIDE="Aside" PLG_SYSTEM_SKIPTO_LANDMARK_FOOTER="Footer" diff --git a/administrator/language/en-GB/plg_twofactorauth_totp.ini b/administrator/language/en-GB/plg_twofactorauth_totp.ini index f589af584d8..cee182dd5a8 100644 --- a/administrator/language/en-GB/plg_twofactorauth_totp.ini +++ b/administrator/language/en-GB/plg_twofactorauth_totp.ini @@ -8,7 +8,7 @@ PLG_TWOFACTORAUTH_TOTP_ERR_VALIDATIONFAILED="You did not enter a valid security PLG_TWOFACTORAUTH_TOTP_INTRO="This feature allows you to use Google Authenticator, or a compatible application such as FreeOTP, for two factor authentication. In addition to your username and password you will also need to provide a six digit security code to be able to login to this site. The security code is rotated every 30 seconds. This provides extra protection against hackers logging in to your account even if they were able to get hold of your password." PLG_TWOFACTORAUTH_TOTP_METHOD_TITLE="Google Authenticator" PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_ACTION="Enable two factor authentication" -PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_BODY="

Joomla! comes with a built-in two factor authentication system. It secures your site login with a secondary secret code that's changing every 30 seconds. You can use your mobile device and the Google Authenticator app to produce that code.

By selecting the button below:

  • Joomla! will enable the two factor authentication plugins
  • Two Factor Authentication is going to be available for all users.
  • Each user can configure Two Factor Authentication in User Details.
  • You can always disable Two Factor Authentication plugin, or configure it for Backend usage only.
  • You will be taken to your user profile page where you can find more information on two factor authentication and enable it for your user account.
" +PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_BODY="

Joomla! comes with a built-in two factor authentication system. It secures your site login with a secondary secret code that's changing every 30 seconds. You can use your mobile device and the Google Authenticator app to produce that code.

By selecting the button below:

  • Joomla! will enable the two factor authentication plugins
  • Two Factor Authentication is going to be available for all users.
  • Each user can configure Two Factor Authentication in User Details.
  • You can always disable Two Factor Authentication plugin, or configure it for Backend usage only.
  • You will be taken to your user profile page where you can find more information on two factor authentication and enable it for your user account.
" PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_TITLE="Two Factor Authentication is Available" PLG_TWOFACTORAUTH_TOTP_SECTION_ADMIN="Administrator (Backend)" PLG_TWOFACTORAUTH_TOTP_SECTION_BOTH="Both" @@ -16,12 +16,10 @@ PLG_TWOFACTORAUTH_TOTP_SECTION_LABEL="Site Section" PLG_TWOFACTORAUTH_TOTP_SECTION_SITE="Site (Frontend)" PLG_TWOFACTORAUTH_TOTP_STEP1_HEAD="Step 1 - Get Google Authenticator" PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM1="Official Google Authenticator app for Android, iOS and BlackBerry" -; Check the URL and change the part hl=en to your language tag if this is available (example hl=de; hl=zh-cn; hl=zh-tw) -PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM1_LINK="https://support.google.com/accounts/bin/answer.py?hl=en&answer=1066447" +PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM1_LINK="https://support.google.com/accounts/bin/answer.py?hl=en&answer=1066447" ; Check the URL and change the part hl=en to your language tag if this is available (example hl=de; hl=zh-cn; hl=zh-tw) PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM2="Compatible clients for other devices and operating system (listed in Wikipedia)." -; Change and check this link if there is a translation in your language available. (current: German, Spanish, French, Japanese, Polish) -PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM2_LINK="https://en.wikipedia.org/wiki/Google_Authenticator#Implementation" -PLG_TWOFACTORAUTH_TOTP_STEP1_TEXT="Download and install Google Authenticator, or a compatible application such as FreeOTP, on your smartphone or desktop. Use one of the following:" +PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM2_LINK="https://en.wikipedia.org/wiki/Google_Authenticator#Implementation" ; Change and check this link if there is a translation in your language available. (current: German, Spanish, French, Japanese, Polish) +PLG_TWOFACTORAUTH_TOTP_STEP1_TEXT="Download and install Google Authenticator, or a compatible application such as FreeOTP, on your smartphone or desktop. Use one of the following:" PLG_TWOFACTORAUTH_TOTP_STEP1_WARN="Please remember to sync your device's clock with a time-server. Time drift in your device may cause an inability to log in to your site." PLG_TWOFACTORAUTH_TOTP_STEP2_ACCOUNT="Account" PLG_TWOFACTORAUTH_TOTP_STEP2_ALTTEXT="Alternatively, you can scan the following QR code in Google Authenticator." @@ -32,4 +30,4 @@ PLG_TWOFACTORAUTH_TOTP_STEP2_TEXT="You will need to enter the following informat PLG_TWOFACTORAUTH_TOTP_STEP3_HEAD="Step 3 - Activate Two Factor Authentication" PLG_TWOFACTORAUTH_TOTP_STEP3_SECURITYCODE="Security Code" PLG_TWOFACTORAUTH_TOTP_STEP3_TEXT="To verify that everything is set up properly, please enter the security code displayed in Google Authenticator in the field below. Afterwards, please save your user profile. If the code is correct, the Two Factor Authentication feature will be enabled." -PLG_TWOFACTORAUTH_TOTP_XML_DESCRIPTION="Allows users on your site to use two factor authentication using Google Authenticator or other compatible time-based One Time Password generators such as FreeOTP. To use two factor authentication please edit the user profile and enable two factor authentication." +PLG_TWOFACTORAUTH_TOTP_XML_DESCRIPTION="Allows users on your site to use two factor authentication using Google Authenticator or other compatible time-based One Time Password generators such as FreeOTP. To use two factor authentication please edit the user profile and enable two factor authentication." diff --git a/administrator/language/en-GB/plg_user_profile.ini b/administrator/language/en-GB/plg_user_profile.ini index 78be52f03ef..0b3e2ed7cb4 100644 --- a/administrator/language/en-GB/plg_user_profile.ini +++ b/administrator/language/en-GB/plg_user_profile.ini @@ -26,6 +26,5 @@ PLG_USER_PROFILE_FIELD_WEB_SITE_LABEL="Website" PLG_USER_PROFILE_FILL_FIELD_DESC_SITE="If required, please fill this field." PLG_USER_PROFILE_OPTION_AGREE="Agree" PLG_USER_PROFILE_SLIDER_LABEL="User Profile" -; Adapt the following string to the format you entered in the 'DATE_FORMAT_CALENDAR_DATE' -PLG_USER_PROFILE_SPACER_DOB="The date of birth entered should use the format Year-Month-Day, eg 2019-01-27." +PLG_USER_PROFILE_SPACER_DOB="The date of birth entered should use the format Year-Month-Day, eg 2019-01-27." ; Adapt to the format you entered in the 'DATE_FORMAT_CALENDAR_DATE' PLG_USER_PROFILE_XML_DESCRIPTION="User Profile Plugin" diff --git a/administrator/manifests/files/joomla.xml b/administrator/manifests/files/joomla.xml index 56bea1f3337..4ee889b8551 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 - 4.0.0-rc4-dev - June 2021 + 4.0.0-rc7-dev + August 2021 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 0da59c726b8..adb25019e04 100644 --- a/administrator/manifests/packages/pkg_en-GB.xml +++ b/administrator/manifests/packages/pkg_en-GB.xml @@ -3,7 +3,7 @@ English (en-GB) Language Pack en-GB 4.0.0.1 - June 2021 + August 2021 Joomla! Project admin@joomla.org www.joomla.org diff --git a/administrator/modules/mod_custom/mod_custom.xml b/administrator/modules/mod_custom/mod_custom.xml index 0ce6a78436b..be68ee23936 100644 --- a/administrator/modules/mod_custom/mod_custom.xml +++ b/administrator/modules/mod_custom/mod_custom.xml @@ -17,8 +17,8 @@ tmpl - en-GB.mod_custom.ini - en-GB.mod_custom.sys.ini + language/en-GB/mod_custom.ini + language/en-GB/mod_custom.sys.ini diff --git a/administrator/modules/mod_feed/mod_feed.xml b/administrator/modules/mod_feed/mod_feed.xml index 34eb537adce..612cd20b9c9 100644 --- a/administrator/modules/mod_feed/mod_feed.xml +++ b/administrator/modules/mod_feed/mod_feed.xml @@ -16,8 +16,8 @@ tmpl - en-GB.mod_feed.ini - en-GB.mod_feed.sys.ini + language/en-GB/mod_feed.ini + language/en-GB/mod_feed.sys.ini diff --git a/administrator/modules/mod_frontend/mod_frontend.xml b/administrator/modules/mod_frontend/mod_frontend.xml index 9efcb19210c..1bcb3571d54 100644 --- a/administrator/modules/mod_frontend/mod_frontend.xml +++ b/administrator/modules/mod_frontend/mod_frontend.xml @@ -14,8 +14,8 @@ tmpl - en-GB.mod_frontend.ini - en-GB.mod_frontend.sys.ini + language/en-GB/mod_frontend.ini + language/en-GB/mod_frontend.sys.ini diff --git a/administrator/modules/mod_latest/mod_latest.xml b/administrator/modules/mod_latest/mod_latest.xml index 9d57085ef68..f2cb71e3c4f 100644 --- a/administrator/modules/mod_latest/mod_latest.xml +++ b/administrator/modules/mod_latest/mod_latest.xml @@ -16,8 +16,8 @@ tmpl - en-GB.mod_latest.ini - en-GB.mod_latest.sys.ini + language/en-GB/mod_latest.ini + language/en-GB/mod_latest.sys.ini diff --git a/administrator/modules/mod_latestactions/mod_latestactions.xml b/administrator/modules/mod_latestactions/mod_latestactions.xml index e6b8e1c069f..f369e4d6171 100644 --- a/administrator/modules/mod_latestactions/mod_latestactions.xml +++ b/administrator/modules/mod_latestactions/mod_latestactions.xml @@ -16,8 +16,8 @@ tmpl - en-GB.mod_latestactions.ini - en-GB.mod_latestactions.sys.ini + language/en-GB/mod_latestactions.ini + language/en-GB/mod_latestactions.sys.ini diff --git a/administrator/modules/mod_logged/mod_logged.xml b/administrator/modules/mod_logged/mod_logged.xml index e9b63cdfe69..60dee8b2e70 100644 --- a/administrator/modules/mod_logged/mod_logged.xml +++ b/administrator/modules/mod_logged/mod_logged.xml @@ -16,8 +16,8 @@ tmpl - en-GB.mod_logged.ini - en-GB.mod_logged.sys.ini + language/en-GB/mod_logged.ini + language/en-GB/mod_logged.sys.ini diff --git a/administrator/modules/mod_login/mod_login.xml b/administrator/modules/mod_login/mod_login.xml index 746a8065adf..7327e2b4dcb 100644 --- a/administrator/modules/mod_login/mod_login.xml +++ b/administrator/modules/mod_login/mod_login.xml @@ -16,8 +16,8 @@ tmpl - en-GB.mod_login.ini - en-GB.mod_login.sys.ini + language/en-GB/mod_login.ini + language/en-GB/mod_login.sys.ini diff --git a/administrator/modules/mod_loginsupport/mod_loginsupport.xml b/administrator/modules/mod_loginsupport/mod_loginsupport.xml index 4cffdac1a3d..92db7a1e93a 100644 --- a/administrator/modules/mod_loginsupport/mod_loginsupport.xml +++ b/administrator/modules/mod_loginsupport/mod_loginsupport.xml @@ -15,8 +15,8 @@ tmpl - en-GB.mod_loginsupport.ini - en-GB.mod_loginsupport.sys.ini + language/en-GB/mod_loginsupport.ini + language/en-GB/mod_loginsupport.sys.ini diff --git a/administrator/modules/mod_menu/mod_menu.xml b/administrator/modules/mod_menu/mod_menu.xml index 25ce5af4c2e..65662980f7f 100644 --- a/administrator/modules/mod_menu/mod_menu.xml +++ b/administrator/modules/mod_menu/mod_menu.xml @@ -16,8 +16,8 @@ tmpl - en-GB.mod_menu.ini - en-GB.mod_menu.sys.ini + language/en-GB/mod_menu.ini + language/en-GB/mod_menu.sys.ini diff --git a/administrator/modules/mod_menu/src/Menu/CssMenu.php b/administrator/modules/mod_menu/src/Menu/CssMenu.php index c29d35faf8e..766cb7e1d3a 100644 --- a/administrator/modules/mod_menu/src/Menu/CssMenu.php +++ b/administrator/modules/mod_menu/src/Menu/CssMenu.php @@ -310,6 +310,19 @@ protected function preprocess($parent) } } + $uri = new Uri($item->link); + $query = $uri->getQuery(true); + + /** + * If component is passed in the link via option variable, we set $item->element to this value for further + * processing. It is needed for links from menu items of third party extensions link to Joomla! core + * components like com_categories, com_fields... + */ + if ($option = $uri->getVar('option')) + { + $item->element = $option; + } + // Exclude item if is not enabled if ($item->element && !ComponentHelper::isEnabled($item->element)) { @@ -340,13 +353,10 @@ protected function preprocess($parent) if ($item->element === 'com_categories') { - parse_str($item->link, $query); $assetName = $query['extension'] ?? 'com_content'; } elseif ($item->element === 'com_fields') { - parse_str($item->link, $query); - // Only display Fields menus when enabled in the component $createFields = null; @@ -381,8 +391,6 @@ protected function preprocess($parent) } elseif ($item->element === 'com_workflow') { - parse_str($item->link, $query); - // Only display Workflow menus when enabled in the component $workflow = null; @@ -412,10 +420,13 @@ protected function preprocess($parent) $parent->removeChild($item); continue; } + elseif (($item->link === 'index.php?option=com_installer&view=install' || $item->link === 'index.php?option=com_installer&view=languages') + && !$user->authorise('core.admin')) + { + continue; + } elseif ($item->element === 'com_admin') { - parse_str($item->link, $query); - if (isset($query['view']) && $query['view'] === 'sysinfo' && !$user->authorise('core.admin')) { $parent->removeChild($item); diff --git a/administrator/modules/mod_messages/mod_messages.xml b/administrator/modules/mod_messages/mod_messages.xml index 72cfbe4ed5e..73f89b991ae 100644 --- a/administrator/modules/mod_messages/mod_messages.xml +++ b/administrator/modules/mod_messages/mod_messages.xml @@ -14,8 +14,8 @@ tmpl - en-GB.mod_messages.ini - en-GB.mod_messages.sys.ini + language/en-GB/mod_messages.ini + language/en-GB/mod_messages.sys.ini diff --git a/administrator/modules/mod_popular/mod_popular.xml b/administrator/modules/mod_popular/mod_popular.xml index 26c9606fdaa..ed5636a33b4 100644 --- a/administrator/modules/mod_popular/mod_popular.xml +++ b/administrator/modules/mod_popular/mod_popular.xml @@ -16,8 +16,8 @@ tmpl - en-GB.mod_popular.ini - en-GB.mod_popular.sys.ini + language/en-GB/mod_popular.ini + language/en-GB/mod_popular.sys.ini diff --git a/administrator/modules/mod_post_installation_messages/mod_post_installation_messages.php b/administrator/modules/mod_post_installation_messages/mod_post_installation_messages.php index bf371892e03..1812161ddf7 100644 --- a/administrator/modules/mod_post_installation_messages/mod_post_installation_messages.php +++ b/administrator/modules/mod_post_installation_messages/mod_post_installation_messages.php @@ -31,6 +31,6 @@ $joomlaFilesExtensionId = ExtensionHelper::getExtensionRecord('joomla', 'file')->extension_id; // Load the com_postinstall language file -$app->getLanguage()->load('com_postinstall', JPATH_ADMINISTRATOR, 'en-GB', true); +$app->getLanguage()->load('com_postinstall', JPATH_ADMINISTRATOR); require ModuleHelper::getLayoutPath('mod_post_installation_messages', $params->get('layout', 'default')); diff --git a/administrator/modules/mod_post_installation_messages/mod_post_installation_messages.xml b/administrator/modules/mod_post_installation_messages/mod_post_installation_messages.xml index beafdee62dc..bd80169e81c 100644 --- a/administrator/modules/mod_post_installation_messages/mod_post_installation_messages.xml +++ b/administrator/modules/mod_post_installation_messages/mod_post_installation_messages.xml @@ -14,8 +14,8 @@ tmpl - en-GB.mod_post_installation_messages.ini - en-GB.mod_post_installation_messages.sys.ini + language/en-GB/mod_post_installation_messages.ini + language/en-GB/mod_post_installation_messages.sys.ini diff --git a/administrator/modules/mod_privacy_dashboard/mod_privacy_dashboard.xml b/administrator/modules/mod_privacy_dashboard/mod_privacy_dashboard.xml index b892f40c126..4c25675ec83 100644 --- a/administrator/modules/mod_privacy_dashboard/mod_privacy_dashboard.xml +++ b/administrator/modules/mod_privacy_dashboard/mod_privacy_dashboard.xml @@ -16,8 +16,8 @@ tmpl - en-GB.mod_privacy_dashboard.ini - en-GB.mod_privacy_dashboard.sys.ini + language/en-GB/mod_privacy_dashboard.ini + language/en-GB/mod_privacy_dashboard.sys.ini diff --git a/administrator/modules/mod_privacy_status/mod_privacy_status.xml b/administrator/modules/mod_privacy_status/mod_privacy_status.xml index 7197106d04d..bffd960ec31 100644 --- a/administrator/modules/mod_privacy_status/mod_privacy_status.xml +++ b/administrator/modules/mod_privacy_status/mod_privacy_status.xml @@ -16,8 +16,8 @@ tmpl - en-GB.mod_privacy_status.ini - en-GB.mod_privacy_status.sys.ini + language/en-GB/mod_privacy_status.ini + language/en-GB/mod_privacy_status.sys.ini diff --git a/administrator/modules/mod_quickicon/mod_quickicon.xml b/administrator/modules/mod_quickicon/mod_quickicon.xml index 4ff0b8f8dee..98722a9d5ce 100644 --- a/administrator/modules/mod_quickicon/mod_quickicon.xml +++ b/administrator/modules/mod_quickicon/mod_quickicon.xml @@ -17,8 +17,8 @@ tmpl - en-GB.mod_quickicon.ini - en-GB.mod_quickicon.sys.ini + language/en-GB/mod_quickicon.ini + language/en-GB/mod_quickicon.sys.ini diff --git a/administrator/modules/mod_sampledata/mod_sampledata.xml b/administrator/modules/mod_sampledata/mod_sampledata.xml index 0e4f52bf9ee..f87b2520e54 100644 --- a/administrator/modules/mod_sampledata/mod_sampledata.xml +++ b/administrator/modules/mod_sampledata/mod_sampledata.xml @@ -19,8 +19,8 @@ js - en-GB.mod_sampledata.ini - en-GB.mod_sampledata.sys.ini + language/en-GB/mod_sampledata.ini + language/en-GB/mod_sampledata.sys.ini diff --git a/administrator/modules/mod_stats_admin/mod_stats_admin.xml b/administrator/modules/mod_stats_admin/mod_stats_admin.xml index 6d84220b3e5..4fcf451ef6a 100644 --- a/administrator/modules/mod_stats_admin/mod_stats_admin.xml +++ b/administrator/modules/mod_stats_admin/mod_stats_admin.xml @@ -16,8 +16,8 @@ tmpl - en-GB.mod_stats.ini - en-GB.mod_stats.sys.ini + language/en-GB/mod_stats.ini + language/en-GB/mod_stats.sys.ini diff --git a/administrator/modules/mod_submenu/mod_submenu.xml b/administrator/modules/mod_submenu/mod_submenu.xml index 9ebe95ee1e8..c7025c5dab0 100644 --- a/administrator/modules/mod_submenu/mod_submenu.xml +++ b/administrator/modules/mod_submenu/mod_submenu.xml @@ -16,8 +16,8 @@ tmpl - en-GB.mod_submenu.ini - en-GB.mod_submenu.sys.ini + language/en-GB/mod_submenu.ini + language/en-GB/mod_submenu.sys.ini diff --git a/administrator/modules/mod_submenu/src/Menu/Menu.php b/administrator/modules/mod_submenu/src/Menu/Menu.php index e2b26fc9cff..87c0a9e8779 100644 --- a/administrator/modules/mod_submenu/src/Menu/Menu.php +++ b/administrator/modules/mod_submenu/src/Menu/Menu.php @@ -171,6 +171,11 @@ public static function preprocess($parent) $parent->removeChild($item); continue; } + elseif (($item->link === 'index.php?option=com_installer&view=install' || $item->link === 'index.php?option=com_installer&view=languages') + && !$user->authorise('core.admin')) + { + continue; + } elseif ($item->element === 'com_admin') { parse_str($item->link, $query); diff --git a/administrator/modules/mod_title/mod_title.xml b/administrator/modules/mod_title/mod_title.xml index e5411b86487..4b930eb58db 100644 --- a/administrator/modules/mod_title/mod_title.xml +++ b/administrator/modules/mod_title/mod_title.xml @@ -14,8 +14,8 @@ tmpl - en-GB.mod_title.ini - en-GB.mod_title.sys.ini + language/en-GB/mod_title.ini + language/en-GB/mod_title.sys.ini diff --git a/administrator/modules/mod_toolbar/mod_toolbar.xml b/administrator/modules/mod_toolbar/mod_toolbar.xml index 213412c5206..6e3886b05c4 100644 --- a/administrator/modules/mod_toolbar/mod_toolbar.xml +++ b/administrator/modules/mod_toolbar/mod_toolbar.xml @@ -14,8 +14,8 @@ tmpl - en-GB.mod_toolbar.ini - en-GB.mod_toolbar.sys.ini + language/en-GB/mod_toolbar.ini + language/en-GB/mod_toolbar.sys.ini diff --git a/administrator/modules/mod_user/mod_user.xml b/administrator/modules/mod_user/mod_user.xml index a27ee4eab0e..777adce619e 100644 --- a/administrator/modules/mod_user/mod_user.xml +++ b/administrator/modules/mod_user/mod_user.xml @@ -14,8 +14,8 @@ tmpl - en-GB.mod_user.ini - en-GB.mod_user.sys.ini + language/en-GB/mod_user.ini + language/en-GB/mod_user.sys.ini diff --git a/administrator/templates/atum/component.php b/administrator/templates/atum/component.php index 2cc1300590d..2913982b05b 100644 --- a/administrator/templates/atum/component.php +++ b/administrator/templates/atum/component.php @@ -24,11 +24,11 @@ ->useStyle('template.user') ->addInlineStyle(':root { --hue: ' . $matches[1] . '; - --atum-bg-light: ' . $this->params->get('bg-light', '--atum-bg-light') . '; - --atum-text-dark: ' . $this->params->get('text-dark', '--atum-text-dark') . '; - --atum-text-light: ' . $this->params->get('text-light', '--atum-text-light') . '; - --atum-link-color: ' . $this->params->get('link-color', '--atum-link-color') . '; - --atum-special-color: ' . $this->params->get('special-color', '--atum-special-color') . '; + --template-bg-light: ' . $this->params->get('bg-light', '--template-bg-light') . '; + --template-text-dark: ' . $this->params->get('text-dark', '--template-text-dark') . '; + --template-text-light: ' . $this->params->get('text-light', '--template-text-light') . '; + --template-link-color: ' . $this->params->get('link-color', '--template-link-color') . '; + --template-special-color: ' . $this->params->get('special-color', '--template-special-color') . '; }'); // No template.js for modals diff --git a/administrator/templates/atum/error_full.php b/administrator/templates/atum/error_full.php index 5d431f988b6..2c2ec0ebcbf 100644 --- a/administrator/templates/atum/error_full.php +++ b/administrator/templates/atum/error_full.php @@ -58,11 +58,11 @@ ->useStyle('template.user') ->addInlineStyle(':root { --hue: ' . $matches[1] . '; - --atum-bg-light: ' . $this->params->get('bg-light', '#f0f4fb') . '; - --atum-text-dark: ' . $this->params->get('text-dark', '#495057') . '; - --atum-text-light: ' . $this->params->get('text-light', '#ffffff') . '; - --atum-link-color: ' . $this->params->get('link-color', '#2a69b8') . '; - --atum-special-color: ' . $this->params->get('special-color', '#001B4C') . '; + --template-bg-light: ' . $this->params->get('bg-light', '#f0f4fb') . '; + --template-text-dark: ' . $this->params->get('text-dark', '#495057') . '; + --template-text-light: ' . $this->params->get('text-light', '#ffffff') . '; + --template-link-color: ' . $this->params->get('link-color', '#2a69b8') . '; + --template-special-color: ' . $this->params->get('special-color', '#001B4C') . '; }'); // Override 'template.active' asset to set correct ltr/rtl dependency diff --git a/administrator/templates/atum/error_login.php b/administrator/templates/atum/error_login.php index 1a24a0d1cf8..7bec7f8c3b7 100644 --- a/administrator/templates/atum/error_login.php +++ b/administrator/templates/atum/error_login.php @@ -62,11 +62,11 @@ ->useStyle('template.user') ->addInlineStyle(':root { --hue: ' . $matches[1] . '; - --atum-bg-light: ' . $this->params->get('bg-light', '#f0f4fb') . '; - --atum-text-dark: ' . $this->params->get('text-dark', '#495057') . '; - --atum-text-light: ' . $this->params->get('text-light', '#ffffff') . '; - --atum-link-color: ' . $this->params->get('link-color', '#2a69b8') . '; - --atum-special-color: ' . $this->params->get('special-color', '#001B4C') . '; + --template-bg-light: ' . $this->params->get('bg-light', '#f0f4fb') . '; + --template-text-dark: ' . $this->params->get('text-dark', '#495057') . '; + --template-text-light: ' . $this->params->get('text-light', '#ffffff') . '; + --template-link-color: ' . $this->params->get('link-color', '#2a69b8') . '; + --template-special-color: ' . $this->params->get('special-color', '#001B4C') . '; }'); // Override 'template.active' asset to set correct ltr/rtl dependency diff --git a/administrator/templates/atum/html/layouts/chromes/body.php b/administrator/templates/atum/html/layouts/chromes/body.php index 99f2f9c4f95..b73e693fe63 100644 --- a/administrator/templates/atum/html/layouts/chromes/body.php +++ b/administrator/templates/atum/html/layouts/chromes/body.php @@ -46,7 +46,7 @@ isRtl() ? 'start' : 'end'; ?>