JoomlaPolska / jezyk-J4

Język polski dla Joomla 4
GNU General Public License v2.0
3 stars 5 forks source link

Update 4.1 from 4.0 #107

Closed joomlapl-bot closed 2 years ago

joomlapl-bot commented 2 years ago

PR w związku ze zmianą oryginału https://github.com/joomla/joomla-cms/pull/36575 Poniżej zmiany w oryginale:

Click to expand the diff! ```diff diff --git a/administrator/components/com_banners/tmpl/clients/default.php b/administrator/components/com_banners/tmpl/clients/default.php index 27f0d737f6a4..fc7e5392d147 100644 --- a/administrator/components/com_banners/tmpl/clients/default.php +++ b/administrator/components/com_banners/tmpl/clients/default.php @@ -123,20 +123,40 @@ contact; ?> - - count_published; ?> + + count_published; ?> + + - - count_unpublished; ?> + + count_unpublished; ?> + + - - count_archived; ?> + + count_archived; ?> + + - - count_trashed; ?> + + count_trashed; ?> + + purchase_type < 0) : ?> diff --git a/administrator/components/com_categories/tmpl/category/edit.php b/administrator/components/com_categories/tmpl/category/edit.php index 26dfa454f4ac..448b4a18d583 100644 --- a/administrator/components/com_categories/tmpl/category/edit.php +++ b/administrator/components/com_categories/tmpl/category/edit.php @@ -124,6 +124,7 @@ form->getInput('extension'); ?> +
diff --git a/administrator/components/com_content/forms/article.xml b/administrator/components/com_content/forms/article.xml index a71ec8438528..6c9189d19404 100644 --- a/administrator/components/com_content/forms/article.xml +++ b/administrator/components/com_content/forms/article.xml @@ -909,7 +909,7 @@
+ label="JGLOBAL_FIELDSET_METADATA_OPTIONS"> input->getInt('a_id') ?: $app->input->getInt('id', 0); + $articleIdFromInput = $app->isClient('site') + ? $app->input->getInt('a_id', 0) + : $app->input->getInt('id', 0); // On edit article, we get ID of article from article.id state, but on save, we use data from input $id = (int) $this->getState('article.id', $articleIdFromInput); diff --git a/administrator/components/com_installer/src/Model/WarningsModel.php b/administrator/components/com_installer/src/Model/WarningsModel.php index 395add43e35a..ff3d20e5d1ce 100644 --- a/administrator/components/com_installer/src/Model/WarningsModel.php +++ b/administrator/components/com_installer/src/Model/WarningsModel.php @@ -98,76 +98,99 @@ public function getItems() $messages = []; // 16MB - $minMemory = 16 * 1024 * 1024; + $minLimit = 16 * 1024 * 1024; $file_uploads = ini_get('file_uploads'); if (!$file_uploads) { - $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_FILEUPLOADSDISABLED'), - 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_FILEUPLOADISDISABLEDDESC')); + $messages[] = [ + 'message' => Text::_('COM_INSTALLER_MSG_WARNINGS_FILEUPLOADSDISABLED'), + 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_FILEUPLOADISDISABLEDDESC'), + ]; } $upload_dir = ini_get('upload_tmp_dir'); if (!$upload_dir) { - $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSET'), - 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSETDESC')); + $messages[] = [ + 'message' => Text::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSET'), + 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSETDESC'), + ]; } elseif (!is_writable($upload_dir)) { - $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTWRITEABLE'), - 'description' => Text::sprintf('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTWRITEABLEDESC', $upload_dir)); + $messages[] = [ + 'message' => Text::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTWRITEABLE'), + 'description' => Text::sprintf('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTWRITEABLEDESC', $upload_dir), + ]; } $tmp_path = Factory::getApplication()->get('tmp_path'); if (!$tmp_path) { - $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTSET'), - 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTSETDESC')); + $messages[] = [ + 'message' => Text::_('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTSET'), + 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTSETDESC'), + ]; } elseif (!is_writable($tmp_path)) { - $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTWRITEABLE'), - 'description' => Text::sprintf('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTWRITEABLEDESC', $tmp_path)); + $messages[] = [ + '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 < $minMemory && $memory_limit != -1) + if ($memory_limit > -1) { - // 16MB - $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_LOWMEMORYWARN'), - 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_LOWMEMORYDESC')); - } - elseif ($memory_limit < ($minMemory * 1.5) && $memory_limit != -1) - { - // 24MB - $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_MEDMEMORYWARN'), - 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_MEDMEMORYDESC')); + if ($memory_limit < $minLimit) + { + // 16MB + $messages[] = [ + 'message' => Text::_('COM_INSTALLER_MSG_WARNINGS_LOWMEMORYWARN'), + 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_LOWMEMORYDESC'), + ]; + } + elseif ($memory_limit < ($minLimit * 1.5)) + { + // 24MB + $messages[] = [ + 'message' => Text::_('COM_INSTALLER_MSG_WARNINGS_MEDMEMORYWARN'), + 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_MEDMEMORYDESC'), + ]; + } } - $post_max_size = $this->return_bytes(ini_get('post_max_size')); + $post_max_size = $this->return_bytes(ini_get('post_max_size')); $upload_max_filesize = $this->return_bytes(ini_get('upload_max_filesize')); - if ($post_max_size < $upload_max_filesize) + if ($post_max_size > 0 && $post_max_size < $upload_max_filesize) { - $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_UPLOADBIGGERTHANPOST'), - 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_UPLOADBIGGERTHANPOSTDESC')); + $messages[] = [ + 'message' => Text::_('COM_INSTALLER_MSG_WARNINGS_UPLOADBIGGERTHANPOST'), + 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_UPLOADBIGGERTHANPOSTDESC'), + ]; } - if ($post_max_size < $minMemory) + if ($post_max_size > 0 && $post_max_size < $minLimit) { - $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_SMALLPOSTSIZE'), - 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_SMALLPOSTSIZEDESC')); + $messages[] = [ + 'message' => Text::_('COM_INSTALLER_MSG_WARNINGS_SMALLPOSTSIZE'), + 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_SMALLPOSTSIZEDESC'), + ]; } - if ($upload_max_filesize < $minMemory) + if ($upload_max_filesize > 0 && $upload_max_filesize < $minLimit) { - $messages[] = array('message' => Text::_('COM_INSTALLER_MSG_WARNINGS_SMALLUPLOADSIZE'), - 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_SMALLUPLOADSIZEDESC')); + $messages[] = [ + 'message' => Text::_('COM_INSTALLER_MSG_WARNINGS_SMALLUPLOADSIZE'), + 'description' => Text::_('COM_INSTALLER_MSG_WARNINGS_SMALLUPLOADSIZEDESC'), + ]; } return $messages; diff --git a/administrator/components/com_media/src/Controller/ApiController.php b/administrator/components/com_media/src/Controller/ApiController.php index ff9568617f99..3fab0b90b5b7 100644 --- a/administrator/components/com_media/src/Controller/ApiController.php +++ b/administrator/components/com_media/src/Controller/ApiController.php @@ -359,15 +359,19 @@ public function getModel($name = 'Api', $prefix = 'Administrator', $config = []) */ private function checkContent() { - $params = ComponentHelper::getParams('com_media'); - - $helper = new MediaHelper; - $serverlength = $this->input->server->getInt('CONTENT_LENGTH'); - - if (($params->get('upload_maxsize', 0) > 0 && $serverlength > ($params->get('upload_maxsize', 0) * 1024 * 1024)) - || $serverlength > $helper->toBytes(ini_get('upload_max_filesize')) - || $serverlength > $helper->toBytes(ini_get('post_max_size')) - || $serverlength > $helper->toBytes(ini_get('memory_limit'))) + $helper = new MediaHelper; + $contentLength = $this->input->server->getInt('CONTENT_LENGTH'); + $params = ComponentHelper::getParams('com_media'); + $paramsUploadMaxsize = $params->get('upload_maxsize', 0) * 1024 * 1024; + $uploadMaxFilesize = $helper->toBytes(ini_get('upload_max_filesize')); + $postMaxSize = $helper->toBytes(ini_get('post_max_size')); + $memoryLimit = $helper->toBytes(ini_get('memory_limit')); + + if (($paramsUploadMaxsize > 0 && $contentLength > $paramsUploadMaxsize) + || ($uploadMaxFilesize > 0 && $contentLength > $uploadMaxFilesize) + || ($postMaxSize > 0 && $contentLength > $postMaxSize) + || ($memoryLimit > -1 && $contentLength > $memoryLimit) + ) { throw new \Exception(Text::_('COM_MEDIA_ERROR_WARNFILETOOLARGE'), 403); } diff --git a/administrator/components/com_menus/forms/item.xml b/administrator/components/com_menus/forms/item.xml index db0570dc2c2e..984ae531e0d5 100644 --- a/administrator/components/com_menus/forms/item.xml +++ b/administrator/components/com_menus/forms/item.xml @@ -97,7 +97,7 @@ showtime="true" size="22" filter="user_utc" - showon="home:0" + showon="home:0" /> registerTask('unsetDefault', 'setDefault'); + $this->registerTask('unsetDefault', 'setDefault'); } /** diff --git a/administrator/components/com_workflow/src/Controller/StagesController.php b/administrator/components/com_workflow/src/Controller/StagesController.php index 5cd19a2fb7e5..e7af94b3b237 100644 --- a/administrator/components/com_workflow/src/Controller/StagesController.php +++ b/administrator/components/com_workflow/src/Controller/StagesController.php @@ -103,7 +103,7 @@ public function __construct(array $config = array(), MVCFactoryInterface $factor } } - $this->registerTask('unsetDefault', 'setDefault'); + $this->registerTask('unsetDefault', 'setDefault'); } /** diff --git a/administrator/components/com_workflow/src/Controller/WorkflowsController.php b/administrator/components/com_workflow/src/Controller/WorkflowsController.php index 9c698600ff0a..9739d666dba2 100644 --- a/administrator/components/com_workflow/src/Controller/WorkflowsController.php +++ b/administrator/components/com_workflow/src/Controller/WorkflowsController.php @@ -76,7 +76,7 @@ public function __construct($config = array(), MVCFactoryInterface $factory = nu } } - $this->registerTask('unsetDefault', 'setDefault'); + $this->registerTask('unsetDefault', 'setDefault'); } /** diff --git a/administrator/components/com_workflow/src/Model/WorkflowModel.php b/administrator/components/com_workflow/src/Model/WorkflowModel.php index beb71976e59d..dec07533ed12 100644 --- a/administrator/components/com_workflow/src/Model/WorkflowModel.php +++ b/administrator/components/com_workflow/src/Model/WorkflowModel.php @@ -297,7 +297,12 @@ public function setDefault($pk, $value = 1) if ($value) { // Unset other default item - if ($table->load(array('default' => '1'))) + if ($table->load( + [ + 'default' => '1', + 'extension' => $table->get('extension') + ] + )) { $table->default = 0; $table->modified = $date; diff --git a/administrator/components/com_workflow/src/Table/WorkflowTable.php b/administrator/components/com_workflow/src/Table/WorkflowTable.php index faedf915b6f1..a9f7267bb39b 100644 --- a/administrator/components/com_workflow/src/Table/WorkflowTable.php +++ b/administrator/components/com_workflow/src/Table/WorkflowTable.php @@ -144,7 +144,7 @@ public function check() } else { - $db = $this->getDbo(); + $db = $this->getDbo(); $query = $db->getQuery(true); $query @@ -192,7 +192,7 @@ public function store($updateNulls = true) { // Existing item $this->modified_by = $user->id; - $this->modified = $date->toSql(); + $this->modified = $date->toSql(); } else { @@ -219,10 +219,15 @@ public function store($updateNulls = true) $this->modified_by = $this->created_by; } - if ($this->default == '1') + if ((int) $this->default === 1) { // Verify that the default is unique for this workflow - if ($table->load(array('default' => '1'))) + if ($table->load( + [ + 'default' => '1', + 'extension' => $this->extension + ] + )) { $table->default = 0; $table->store(); diff --git a/administrator/language/en-GB/com_joomlaupdate.ini b/administrator/language/en-GB/com_joomlaupdate.ini index 06aecff2d5b2..b2dd8d7fabb0 100644 --- a/administrator/language/en-GB/com_joomlaupdate.ini +++ b/administrator/language/en-GB/com_joomlaupdate.ini @@ -59,7 +59,7 @@ COM_JOOMLAUPDATE_SELF_EMPTYSTATE_TITLE="A new version of the Joomla Update Compo 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'm prepared for the update and have made a backup." +COM_JOOMLAUPDATE_UPDATE_CONFIRM_BACKUP="I'm prepared for the update and have made a backup of the files and database." 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." diff --git a/api/components/com_languages/src/Controller/OverridesController.php b/api/components/com_languages/src/Controller/OverridesController.php index 9ebb27ff5db9..fc376fbe2e3b 100644 --- a/api/components/com_languages/src/Controller/OverridesController.php +++ b/api/components/com_languages/src/Controller/OverridesController.php @@ -87,14 +87,14 @@ protected function save($recordKey = null) /** @var \Joomla\CMS\MVC\Model\AdminModel $model */ $model = $this->getModel(Inflector::singularize($this->contentType)); - $model->setState('filter.language', $this->input->post->get('lang_code')); - $model->setState('filter.client', $this->input->post->get('app')); - if (!$model) { throw new \RuntimeException(Text::_('JLIB_APPLICATION_ERROR_MODEL_CREATE')); } + $model->setState('filter.language', $this->input->post->get('lang_code')); + $model->setState('filter.client', $this->input->post->get('app')); + $data = $this->input->get('data', json_decode($this->input->json->getRaw(), true), 'array'); // TODO: Not the cleanest thing ever but it works... diff --git a/build/media_source/com_media/scss/components/_media-breadcrumb.scss b/build/media_source/com_media/scss/components/_media-breadcrumb.scss index 21fdc086d519..faffa71558c6 100644 --- a/build/media_source/com_media/scss/components/_media-breadcrumb.scss +++ b/build/media_source/com_media/scss/components/_media-breadcrumb.scss @@ -1,11 +1,11 @@ .media-breadcrumb { display: flex; padding: 0; - margin: 0 auto 0 0; + margin-inline-end: auto; font-size: .9rem; line-height: $toolbar-height; background: transparent; - border-left: 1px solid $border-color; + border-inline-start: 1px solid $border-color; ol { display: flex; @@ -20,15 +20,16 @@ } .media-breadcrumb-item { - padding: 0 8px 0 22px; + padding-inline-end: 8px; + padding-inline-start: 22px; background-color: $breadcrumbs-bg; &:first-of-type { - padding-left: 16px; + padding-inline-start: 16px; } &:last-of-type { background-color: $breadcrumbs-current-bg; &::after { - border-left-color: $breadcrumbs-current-bg; + border-inline-start-color: $breadcrumbs-current-bg; } } &:hover { @@ -42,7 +43,7 @@ position: absolute; top: 0; bottom: 0; - left: 100%; + inset-inline-start: 100%; z-index: 2; display: block; width: 0; @@ -51,45 +52,12 @@ content: "" !important; border-top: 23px solid transparent; border-bottom: 23px solid transparent; - border-left: 10px solid transparent; + border-inline-start: 10px solid transparent; } &::before { - border-left-color: $border-color; + border-inline-start-color: $border-color; } &::after { - border-left-color: $breadcrumbs-bg; + border-inline-start-color: $breadcrumbs-bg; } } - -.breadcrumb-item + .breadcrumb-item::before { - display: none; -} - -// RTL override - -html[dir=rtl] .media-breadcrumb { - margin: 0 0 0 auto; -} - -html[dir=rtl] .media-breadcrumb-item::after, .media-breadcrumb-item::before { - right: 100%; - border-right: 10px solid transparent; - border-left: 0; -} - -html[dir=rtl] .media-breadcrumb-item { - padding: 0 22px 0 8px; -} - -html[dir=rtl] .media-breadcrumb-item::before { - border-right-color: #fafafa; -} - -html[dir=rtl] .media-breadcrumb-item:first-of-type { - padding-right: 16px; - padding-left: 0; -} - -html[dir=rtl] .media-breadcrumb-item:last-of-type::after { - border-right: 10px solid #fff; -} diff --git a/build/media_source/plg_editors_codemirror/js/joomla-editor-codemirror.w-c.es6.js b/build/media_source/plg_editors_codemirror/js/joomla-editor-codemirror.w-c.es6.js index ecef691e569e..ddb2ded4c233 100644 --- a/build/media_source/plg_editors_codemirror/js/joomla-editor-codemirror.w-c.es6.js +++ b/build/media_source/plg_editors_codemirror/js/joomla-editor-codemirror.w-c.es6.js @@ -6,6 +6,13 @@ class CodemirrorEditor extends HTMLElement { this.host = window.location.origin; this.element = this.querySelector('textarea'); this.refresh = this.refresh.bind(this); + + // Observer instance to refresh the Editor when it become visible, eg after Tab switching + this.intersectionObserver = new IntersectionObserver((entries) => { + if (entries[0].isIntersecting && this.instance) { + this.instance.refresh(); + } + }, { threshold: 0 }); } static get observedAttributes() { @@ -124,11 +131,17 @@ class CodemirrorEditor extends HTMLElement { this.instance = window.CodeMirror.fromTextArea(this.element, this.options); this.instance.disable = (disabled) => this.setOption('readOnly', disabled ? 'nocursor' : false); Joomla.editors.instances[this.element.id] = this.instance; + + // Watch when the element in viewport, and refresh the editor + this.intersectionObserver.observe(this); } disconnectedCallback() { // Remove from the Joomla API delete Joomla.editors.instances[this.element.id]; + + // Remove from observer + this.intersectionObserver.unobserve(this); } refresh(element) { diff --git a/build/media_source/plg_editors_tinymce/js/tinymce.es6.js b/build/media_source/plg_editors_tinymce/js/tinymce.es6.js index 795dc92d7f13..aad5d4592ef9 100644 --- a/build/media_source/plg_editors_tinymce/js/tinymce.es6.js +++ b/build/media_source/plg_editors_tinymce/js/tinymce.es6.js @@ -33,12 +33,14 @@ toggleButton.removeAttribute('disabled'); toggleButton.addEventListener('click', () => { if (Joomla.editors.instances[currentEditor.id].instance.isHidden()) { - toggleIcon.setAttribute('class', 'icon-eye'); Joomla.editors.instances[currentEditor.id].instance.show(); } else { - toggleIcon.setAttribute('class', 'icon-eye-slash'); Joomla.editors.instances[currentEditor.id].instance.hide(); } + + if (toggleIcon) { + toggleIcon.setAttribute('class', Joomla.editors.instances[currentEditor.id].instance.isHidden() ? 'icon-eye' : 'icon-eye-slash'); + } }); } }); diff --git a/build/media_source/templates/administrator/atum/scss/blocks/_icons.scss b/build/media_source/templates/administrator/atum/scss/blocks/_icons.scss index 671ac513c78b..5528b46ec864 100644 --- a/build/media_source/templates/administrator/atum/scss/blocks/_icons.scss +++ b/build/media_source/templates/administrator/atum/scss/blocks/_icons.scss @@ -38,7 +38,6 @@ border-color: $warning; } - .#{$jicon-css-prefix}-archive, .#{$jicon-css-prefix}-folder, .#{$fa-css-prefix}-folder { color: var(--template-text-dark); diff --git a/build/media_source/templates/administrator/atum/scss/blocks/_login.scss b/build/media_source/templates/administrator/atum/scss/blocks/_login.scss index 08a068b30771..dd28e05015eb 100644 --- a/build/media_source/templates/administrator/atum/scss/blocks/_login.scss +++ b/build/media_source/templates/administrator/atum/scss/blocks/_login.scss @@ -84,30 +84,18 @@ .form-control-feedback { position: absolute; - right: 0; + inset-inline-end: 0; bottom: -1.5rem; font-size: ($font-size-base * .75); - text-align: right; - - [dir=rtl] & { - right: auto; - left: 0; - text-align: left; - } + text-align: end; } .form-control-hint { position: absolute; top: .1rem; - right: 0; + inset-inline-end: 0; font-size: ($font-size-base * .75); - text-align: right; - - [dir=rtl] & { - right: auto; - left: 0; - text-align: left; - } + text-align: end; } } diff --git a/layouts/joomla/content/category_default.php b/layouts/joomla/content/category_default.php index 0b5b36ea4bc2..5ba6d8ea049e 100644 --- a/layouts/joomla/content/category_default.php +++ b/layouts/joomla/content/category_default.php @@ -51,50 +51,47 @@ $tagsData = $category->tags->itemTags; ?> -
-
- get('show_page_heading')) : ?> -

- escape($params->get('page_heading')); ?> -

- +
+ get('show_page_heading')) : ?> +

+ escape($params->get('page_heading')); ?> +

+ - get('show_category_title', 1)) : ?> - <> - title, '', $extension . '.category.title'); ?> - > - - + get('show_category_title', 1)) : ?> + <> + title, '', $extension . '.category.title'); ?> + > + + - get('show_cat_tags', 1)) : ?> - - + get('show_cat_tags', 1)) : ?> + + - get('show_description', 1) || $params->def('show_description_image', 1)) : ?> -
- get('show_description_image') && $category->getParams()->get('image')) : ?> - getParams()->get('image_alt')) && empty($category->getParams()->get('image_alt_empty')) ? '' : 'alt="' . htmlspecialchars($category->getParams()->get('image_alt'), ENT_COMPAT, 'UTF-8') . '"'; ?> - > - - - get('show_description') && $category->description) : ?> - description, '', $extension . '.category.description'); ?> - - -
- - loadTemplate($displayData->subtemplatename); ?> + get('show_description', 1) || $params->def('show_description_image', 1)) : ?> +
+ get('show_description_image') && $category->getParams()->get('image')) : ?> + getParams()->get('image_alt')) && empty($category->getParams()->get('image_alt_empty')) ? '' : 'alt="' . htmlspecialchars($category->getParams()->get('image_alt'), ENT_COMPAT, 'UTF-8') . '"'; ?> + > + + + get('show_description') && $category->description) : ?> + description, '', $extension . '.category.description'); ?> + + +
+ + loadTemplate($displayData->subtemplatename); ?> - maxLevel != 0 && $displayData->get('children')) : ?> -
- get('show_category_heading_title_text', 1) == 1) : ?> -

- -

- - loadTemplate('children'); ?> -
- -
+ maxLevel != 0 && $displayData->get('children')) : ?> +
+ get('show_category_heading_title_text', 1) == 1) : ?> +

+ +

+ + loadTemplate('children'); ?> +
+
- diff --git a/layouts/joomla/content/icons/edit_lock.php b/layouts/joomla/content/icons/edit_lock.php index e22160aa5055..3b8def519104 100644 --- a/layouts/joomla/content/icons/edit_lock.php +++ b/layouts/joomla/content/icons/edit_lock.php @@ -11,15 +11,18 @@ use Joomla\CMS\Language\Text; -if (isset($displayData['article'])) +if (isset($displayData['ariaDescribed'])) { - $article = $displayData['article']; + $aria_described = $displayData['ariaDescribed']; +} +elseif (isset($displayData['article'])) +{ + $article = $displayData['article']; $aria_described = 'editarticle-' . (int) $article->id; } - -if (isset($displayData['contact'])) +elseif (isset($displayData['contact'])) { - $contact = $displayData['contact']; + $contact = $displayData['contact']; $aria_described = 'editcontact-' . (int) $contact->id; } diff --git a/layouts/joomla/form/field/list-fancy-select.php b/layouts/joomla/form/field/list-fancy-select.php index ed97de16f4aa..8820fe0fee47 100644 --- a/layouts/joomla/form/field/list-fancy-select.php +++ b/layouts/joomla/form/field/list-fancy-select.php @@ -110,4 +110,4 @@ ?> -> +> diff --git a/libraries/src/Application/ConsoleApplication.php b/libraries/src/Application/ConsoleApplication.php index 391d00a8ec69..8b218c56a26a 100644 --- a/libraries/src/Application/ConsoleApplication.php +++ b/libraries/src/Application/ConsoleApplication.php @@ -10,10 +10,13 @@ \defined('JPATH_PLATFORM') or die; +use InvalidArgumentException; use Joomla\CMS\Console; use Joomla\CMS\Extension\ExtensionManagerTrait; +use Joomla\CMS\Factory; use Joomla\CMS\Language\Language; use Joomla\CMS\Plugin\PluginHelper; +use Joomla\CMS\Router\Router; use Joomla\CMS\Version; use Joomla\Console\Application; use Joomla\DI\Container; @@ -434,4 +437,27 @@ public function setName(string $name): void { throw new \RuntimeException('The console application name cannot be changed'); } + + /** + * Returns the application Router object. + * + * @param string $name The name of the application. + * @param array $options An optional associative array of configuration settings. + * + * @return Router + * + * @since __DEPLOY_VERSION__ + * @throws \InvalidArgumentException + */ + public static function getRouter($name = null, array $options = array()) + { + if (empty($name)) + { + throw new InvalidArgumentException('A router name must be set in console application.'); + } + + $options['mode'] = Factory::getApplication()->get('sef'); + + return Router::getInstance($name, $options); + } } diff --git a/libraries/src/Cache/Cache.php b/libraries/src/Cache/Cache.php index 9bc636965ad4..4d3693cd8b08 100644 --- a/libraries/src/Cache/Cache.php +++ b/libraries/src/Cache/Cache.php @@ -595,7 +595,7 @@ public static function getWorkarounds($data, $options = array()) * @param string $data Cached data * @param array $options Array of options * - * @return array + * @return array Data to be cached * * @since 1.7.0 */ @@ -688,9 +688,13 @@ public static function setWorkarounds($data, $options = []) { $oldScriptStr = $options['headerbefore'][$now][strtolower($type)]; - if ($oldScriptStr != $currentScriptStr) + // Save only the appended declaration. + if (\is_array($oldScriptStr) && \is_array($currentScriptStr)) + { + $newvalue[strtolower($type)] = array_diff_key($currentScriptStr, $oldScriptStr); + } + else { - // Save only the appended declaration. $newvalue[strtolower($type)] = StringHelper::substr($currentScriptStr, StringHelper::strlen($oldScriptStr)); } } diff --git a/libraries/src/Form/Field/SubformField.php b/libraries/src/Form/Field/SubformField.php index 867a4cd8be5c..c477f34c52dc 100644 --- a/libraries/src/Form/Field/SubformField.php +++ b/libraries/src/Form/Field/SubformField.php @@ -173,6 +173,17 @@ public function __set($name, $value) break; + case 'value': + // We allow a json encoded string or an array + if (is_string($value)) + { + $value = json_decode($value, true); + } + + $this->value = $value !== null ? (array) $value : null; + + break; + default: parent::__set($name, $value); } diff --git a/libraries/src/HTML/HTMLHelper.php b/libraries/src/HTML/HTMLHelper.php index b09bda11ad0e..b538febff82e 100644 --- a/libraries/src/HTML/HTMLHelper.php +++ b/libraries/src/HTML/HTMLHelper.php @@ -632,13 +632,15 @@ protected static function includeRelativeFiles($folder, $file, $relative, $detec /** * Gets a URL, cleans the Joomla specific params and returns an object * - * @param string $url The relative or absolute URL to use for the src attribute. + * @param string $url The relative or absolute URL to use for the src attribute. * * @return object * @example { - * url: 'string', - * width: integer, - * height: integer, + * url: 'string', + * attributes: [ + * width: integer, + * height: integer, + * ] * } * * @since 4.0.0 diff --git a/libraries/src/MVC/Controller/AdminController.php b/libraries/src/MVC/Controller/AdminController.php index 11ae6242cec8..6f455f220a3c 100644 --- a/libraries/src/MVC/Controller/AdminController.php +++ b/libraries/src/MVC/Controller/AdminController.php @@ -12,7 +12,6 @@ use Joomla\CMS\Application\CMSApplication; use Joomla\CMS\Component\ComponentHelper; -use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\Factory\MVCFactoryInterface; use Joomla\CMS\MVC\Model\BaseDatabaseModel; @@ -224,7 +223,7 @@ public function publish() { if ($errors) { - Factory::getApplication()->enqueueMessage(Text::plural($this->text_prefix . '_N_ITEMS_FAILED_PUBLISHING', \count($cid)), 'error'); + $this->app->enqueueMessage(Text::plural($this->text_prefix . '_N_ITEMS_FAILED_PUBLISHING', \count($cid)), 'error'); } else { diff --git a/libraries/src/Mail/MailTemplate.php b/libraries/src/Mail/MailTemplate.php index d60ef39b87f0..994fc90f1adb 100644 --- a/libraries/src/Mail/MailTemplate.php +++ b/libraries/src/Mail/MailTemplate.php @@ -190,6 +190,12 @@ public function send() $mail = self::getTemplate($this->template_id, $this->language); + // If the Mail Template was not found in the db, we cannot send an email. + if ($mail === null) + { + return false; + } + /** @var Registry $params */ $params = $mail->params; $app = Factory::getApplication(); @@ -370,7 +376,7 @@ protected function replaceTags($text, $tags) * @param string $key Template identifier * @param string $language Language code of the template * - * @return object An object with the data of the mail + * @return object|null An object with the data of the mail, or null if the template not found in the db. * * @since 4.0.0 */ diff --git a/libraries/src/Uri/Uri.php b/libraries/src/Uri/Uri.php index e27c98385f36..6d7f0175c071 100644 --- a/libraries/src/Uri/Uri.php +++ b/libraries/src/Uri/Uri.php @@ -148,12 +148,14 @@ public static function base($pathonly = false) static::$base['prefix'] = $uri->toString(array('scheme', 'host', 'port')); static::$base['path'] = rtrim($uri->toString(array('path')), '/\\'); - if (\defined('JPATH_BASE') && \defined('JPATH_ADMINISTRATOR')) + if (\defined('JPATH_BASE') && \defined('JPATH_ADMINISTRATOR') && JPATH_BASE == JPATH_ADMINISTRATOR) { - if (JPATH_BASE == JPATH_ADMINISTRATOR) - { - static::$base['path'] .= '/administrator'; - } + static::$base['path'] .= '/administrator'; + } + + if (\defined('JPATH_BASE') && \defined('JPATH_API') && JPATH_BASE == JPATH_API) + { + static::$base['path'] .= '/api'; } } else diff --git a/plugins/fields/imagelist/tmpl/imagelist.php b/plugins/fields/imagelist/tmpl/imagelist.php index 700e5281139c..ea8c42ac939e 100644 --- a/plugins/fields/imagelist/tmpl/imagelist.php +++ b/plugins/fields/imagelist/tmpl/imagelist.php @@ -37,7 +37,7 @@ if ($fieldParams->get('directory', '/') !== '/') { - $imageInfo = Image::getImageFileProperties('images/' . $fieldParams->get('directory') . '/' . $imageFilePath); + $imageInfo = Image::getImageFileProperties(JPATH_ROOT . '/images/' . $fieldParams->get('directory') . '/' . $imageFilePath); $buffer .= sprintf('', $imageInfo->width, @@ -49,7 +49,7 @@ } else { - $imageInfo = Image::getImageFileProperties('images/' . $imageFilePath); + $imageInfo = Image::getImageFileProperties(JPATH_ROOT . '/images/' . $imageFilePath); $buffer .= sprintf('', $imageInfo->width, diff --git a/plugins/sampledata/blog/blog.php b/plugins/sampledata/blog/blog.php index 47d40aca5ca9..cf41cb6d150b 100644 --- a/plugins/sampledata/blog/blog.php +++ b/plugins/sampledata/blog/blog.php @@ -565,12 +565,14 @@ public function onAjaxSampledataApplyStep1() 'featured' => 1, 'tags' => array_map('strval', $tagIds), 'images' => array( - 'image_intro' => 'images/sampledata/cassiopeia/nasa1-1200.jpg', + 'image_intro' => 'images/sampledata/cassiopeia/nasa1-1200.jpg#' + . 'joomlaImage://local-images/sampledata/cassiopeia/nasa1-1200.jpg?width=1200&height=400', 'float_intro' => '', 'image_intro_alt' => Text::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_CONTENT_ARTICLE_2_INTROIMAGE_ALT'), 'image_intro_alt_empty' => '', 'image_intro_caption' => '', - 'image_fulltext' => 'images/sampledata/cassiopeia/nasa1-400.jpg', + 'image_fulltext' => 'images/sampledata/cassiopeia/nasa1-400.jpg#' + . 'joomlaImage://local-images/sampledata/cassiopeia/nasa1-400.jpg?width=400&height=400', 'float_fulltext' => 'float-start', 'image_fulltext_alt' => '', 'image_fulltext_alt_empty' => 1, @@ -583,12 +585,14 @@ public function onAjaxSampledataApplyStep1() 'featured' => 1, 'tags' => array_map('strval', $tagIds), 'images' => array( - 'image_intro' => 'images/sampledata/cassiopeia/nasa2-1200.jpg', + 'image_intro' => 'images/sampledata/cassiopeia/nasa2-1200.jpg#' + . 'joomlaImage://local-images/sampledata/cassiopeia/nasa2-1200.jpg?width=1200&height=400', 'float_intro' => '', 'image_intro_alt' => '', 'image_intro_alt_empty' => 1, 'image_intro_caption' => '', - 'image_fulltext' => 'images/sampledata/cassiopeia/nasa2-400.jpg', + 'image_fulltext' => 'images/sampledata/cassiopeia/nasa2-400.jpg#' + . 'joomlaImage://local-images/sampledata/cassiopeia/nasa2-400.jpg?width=400&height=400', 'float_fulltext' => 'float-start', 'image_fulltext_alt' => '', 'image_fulltext_alt_empty' => 1, @@ -602,12 +606,14 @@ public function onAjaxSampledataApplyStep1() 'featured' => 1, 'tags' => array_map('strval', $tagIds), 'images' => array( - 'image_intro' => 'images/sampledata/cassiopeia/nasa3-1200.jpg', + 'image_intro' => 'images/sampledata/cassiopeia/nasa3-1200.jpg#' + . 'joomlaImage://local-images/sampledata/cassiopeia/nasa3-1200.jpg?width=1200&height=400', 'float_intro' => '', 'image_intro_alt' => '', 'image_intro_alt_empty' => 1, 'image_intro_caption' => '', - 'image_fulltext' => 'images/sampledata/cassiopeia/nasa3-400.jpg', + 'image_fulltext' => 'images/sampledata/cassiopeia/nasa3-400.jpg#' + . 'joomlaImage://local-images/sampledata/cassiopeia/nasa3-400.jpg?width=400&height=400', 'float_fulltext' => 'float-start', 'image_fulltext_alt' => Text::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_CONTENT_ARTICLE_4_FULLTEXTIMAGE_ALT'), 'image_fulltext_alt_empty' => '', @@ -620,16 +626,18 @@ public function onAjaxSampledataApplyStep1() 'featured' => 1, 'tags' => array_map('strval', $tagIds), 'images' => array( - 'image_intro' => 'images/sampledata/cassiopeia/nasa4-1200.jpg', + 'image_intro' => 'images/sampledata/cassiopeia/nasa4-1200.jpg#' + . 'joomlaImage://local-images/sampledata/cassiopeia/nasa4-1200.jpg?width=1200&height=400', 'float_intro' => '', 'image_intro_alt' => '', 'image_intro_alt_empty' => 1, 'image_intro_caption' => '', - 'image_fulltext' => 'images/sampledata/cassiopeia/nasa4-400.jpg', + 'image_fulltext' => 'images/sampledata/cassiopeia/nasa4-400.jpg#' + . 'joomlaImage://local-images/sampledata/cassiopeia/nasa4-400.jpg?width=400&height=400', 'float_fulltext' => 'float-start', 'image_fulltext_alt' => '', 'image_fulltext_alt_empty' => 1, - 'image_fulltext_caption' => 'www.nasa.gov/multimedia/imagegallery', + 'image_fulltext_caption' => 'www.nasa.gov/multimedia/imagegallery', ), ), // Category 2 = Joomla - marketing texts @@ -637,7 +645,8 @@ public function onAjaxSampledataApplyStep1() // Article 6 - Millions 'catid' => $catIds[2], 'images' => array( - 'image_intro' => 'images/sampledata/cassiopeia/nasa1-640.jpg', + 'image_intro' => 'images/sampledata/cassiopeia/nasa1-640.jpg#' + . 'joomlaImage://local-images/sampledata/cassiopeia/nasa1-640.jpg?width=640&height=320', 'float_intro' => '', 'image_intro_alt' => '', 'image_intro_alt_empty' => 1, @@ -648,7 +657,8 @@ public function onAjaxSampledataApplyStep1() // Article 7 - Love 'catid' => $catIds[2], 'images' => array( - 'image_intro' => 'images/sampledata/cassiopeia/nasa2-640.jpg', + 'image_intro' => 'images/sampledata/cassiopeia/nasa2-640.jpg#' + . 'joomlaImage://local-images/sampledata/cassiopeia/nasa2-640.jpg?width=640&height=320', 'float_intro' => '', 'image_intro_alt' => '', 'image_intro_alt_empty' => 1, @@ -659,7 +669,8 @@ public function onAjaxSampledataApplyStep1() // Article 8 - Joomla 'catid' => $catIds[2], 'images' => array( - 'image_intro' => 'images/sampledata/cassiopeia/nasa3-640.jpg', + 'image_intro' => 'images/sampledata/cassiopeia/nasa3-640.jpg#' + . 'joomlaImage://local-images/sampledata/cassiopeia/nasa3-640.jpg?width=640&height=320', 'float_intro' => '', 'image_intro_alt' => '', 'image_intro_alt_empty' => 1, @@ -675,7 +686,8 @@ public function onAjaxSampledataApplyStep1() 'image_intro_alt' => '', 'image_intro_alt_empty' => '', 'image_intro_caption' => '', - 'image_fulltext' => 'images/sampledata/cassiopeia/nasa4-400.jpg', + 'image_fulltext' => 'images/sampledata/cassiopeia/nasa4-400.jpg#' + . 'joomlaImage://local-images/sampledata/cassiopeia/nasa4-400.jpg?width=400&height=400', 'float_fulltext' => 'float-end', 'image_fulltext_alt' => '', 'image_fulltext_alt_empty' => 1, @@ -1635,7 +1647,7 @@ public function onAjaxSampledataApplyStep3() 'showtitle' => 0, 'params' => array( 'prepare_content' => 0, - 'backgroundimage' => 'images/banners/banner.jpg', + 'backgroundimage' => 'images/banners/banner.jpg#joomlaImage://local-images/banners/banner.jpg?width=1140&height=600', 'layout' => 'cassiopeia:banner', 'moduleclass_sfx' => '', 'cache' => 1, ```
wojsmol commented 2 years ago

https://github.com/joomla/joomla-cms/pull/36575/files?authenticity_token=Ohs%2FnZSaIwCyYE8qxXp%2FzZCeFO4jTfvGSy6GfCgvMaKy5FvWH%2BuNlOPPWKXaQf8WtFWF3l43kRr%2FOKM%2BPUFivQ%3D%3D&file-filters%5B%5D=.ini