We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PR w związku ze zmianą oryginału joomla/joomla-cms#36575 Poniżej zmiany w oryginale:
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 @@ <?php echo $item->contact; ?> </td> <td class="text-center btns d-none d-md-table-cell itemnumber"> - <a class="btn <?php echo ($item->count_published > 0) ? 'btn-success' : 'btn-secondary'; ?>" href="<?php echo Route::_('index.php?option=com_banners&view=banners&filter[client_id]=' . (int) $item->id . '&filter[published]=1'); ?>"> - <?php echo $item->count_published; ?></a> + <a class="btn <?php echo ($item->count_published > 0) ? 'btn-success' : 'btn-secondary'; ?>" href="<?php echo Route::_('index.php?option=com_banners&view=banners&filter[client_id]=' . (int) $item->id . '&filter[published]=1'); ?>" + aria-describedby="tip-publish<?php echo $i; ?>"> + <?php echo $item->count_published; ?> + </a> + <div role="tooltip" id="tip-publish<?php echo $i; ?>"> + <?php echo Text::_('COM_BANNERS_COUNT_PUBLISHED_ITEMS'); ?> + </div> </td> <td class="text-center btns d-none d-md-table-cell itemnumber"> - <a class="btn <?php echo ($item->count_unpublished > 0) ? 'btn-danger' : 'btn-secondary'; ?>" href="<?php echo Route::_('index.php?option=com_banners&view=banners&filter[client_id]=' . (int) $item->id . '&filter[published]=0'); ?>"> - <?php echo $item->count_unpublished; ?></a> + <a class="btn <?php echo ($item->count_unpublished > 0) ? 'btn-danger' : 'btn-secondary'; ?>" href="<?php echo Route::_('index.php?option=com_banners&view=banners&filter[client_id]=' . (int) $item->id . '&filter[published]=0'); ?>" + aria-describedby="tip-unpublish<?php echo $i; ?>"> + <?php echo $item->count_unpublished; ?> + </a> + <div role="tooltip" id="tip-unpublish<?php echo $i; ?>"> + <?php echo Text::_('COM_BANNERS_COUNT_UNPUBLISHED_ITEMS'); ?> + </div> </td> <td class="text-center btns d-none d-md-table-cell itemnumber"> - <a class="btn <?php echo ($item->count_archived > 0) ? 'btn-info' : 'btn-secondary'; ?>" href="<?php echo Route::_('index.php?option=com_banners&view=banners&filter[client_id]=' . (int) $item->id . '&filter[published]=2'); ?>"> - <?php echo $item->count_archived; ?></a> + <a class="btn <?php echo ($item->count_archived > 0) ? 'btn-info' : 'btn-secondary'; ?>" href="<?php echo Route::_('index.php?option=com_banners&view=banners&filter[client_id]=' . (int) $item->id . '&filter[published]=2'); ?>" + aria-describedby="tip-archived<?php echo $i; ?>"> + <?php echo $item->count_archived; ?> + </a> + <div role="tooltip" id="tip-archived<?php echo $i; ?>"> + <?php echo Text::_('COM_BANNERS_COUNT_ARCHIVED_ITEMS'); ?> + </div> </td> <td class="text-center btns d-none d-md-table-cell itemnumber"> - <a class="btn <?php echo ($item->count_trashed > 0) ? 'btn-inverse' : 'btn-secondary'; ?>" href="<?php echo Route::_('index.php?option=com_banners&view=banners&filter[client_id]=' . (int) $item->id . '&filter[published]=-2'); ?>"> - <?php echo $item->count_trashed; ?></a> + <a class="btn <?php echo ($item->count_trashed > 0) ? 'btn-dark' : 'btn-secondary'; ?>" href="<?php echo Route::_('index.php?option=com_banners&view=banners&filter[client_id]=' . (int) $item->id . '&filter[published]=-2'); ?>" + aria-describedby="tip-trashed<?php echo $i; ?>"> + <?php echo $item->count_trashed; ?> + </a> + <div role="tooltip" id="tip-trashed<?php echo $i; ?>"> + <?php echo Text::_('COM_BANNERS_COUNT_TRASHED_ITEMS'); ?> + </div> </td> <td class="small d-none d-md-table-cell"> <?php if ($item->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 @@ <?php echo $this->form->getInput('extension'); ?> <input type="hidden" name="task" value=""> + <input type="hidden" name="return" value="<?php echo $input->getBase64('return'); ?>"> <input type="hidden" name="forcedLanguage" value="<?php echo $input->get('forcedLanguage', '', 'cmd'); ?>"> <?php echo HTMLHelper::_('form.token'); ?> </div> 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 @@ <fields name="metadata" label="JGLOBAL_FIELDSET_METADATA_OPTIONS"> <fieldset name="jmetadata" - label="JGLOBAL_FIELDSET_METADATA_OPTIONS"> + label="JGLOBAL_FIELDSET_METADATA_OPTIONS"> <field name="robots" diff --git a/administrator/components/com_content/src/Model/ArticleModel.php b/administrator/components/com_content/src/Model/ArticleModel.php index 7376a433dfad..9ced66d6e8f8 100644 --- a/administrator/components/com_content/src/Model/ArticleModel.php +++ b/administrator/components/com_content/src/Model/ArticleModel.php @@ -499,7 +499,9 @@ public function getForm($data = array(), $loadData = true) $record = new \stdClass; // Get ID of the article from input, for frontend, we use a_id while backend uses id - $articleIdFromInput = (int) $app->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" /> <field diff --git a/administrator/components/com_menus/src/Controller/ItemsController.php b/administrator/components/com_menus/src/Controller/ItemsController.php index 6fc524e2b0b5..47c8bb725ffb 100644 --- a/administrator/components/com_menus/src/Controller/ItemsController.php +++ b/administrator/components/com_menus/src/Controller/ItemsController.php @@ -41,7 +41,7 @@ public function __construct($config = array(), MVCFactoryInterface $factory = nu { parent::__construct($config, $factory, $app, $input); - $this->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; ?> -<div> - <div class="<?php echo $className . '-category' . $displayData->pageclass_sfx; ?>"> - <?php if ($params->get('show_page_heading')) : ?> - <h1> - <?php echo $displayData->escape($params->get('page_heading')); ?> - </h1> - <?php endif; ?> +<div class="<?php echo $className . '-category' . $displayData->pageclass_sfx; ?>"> + <?php if ($params->get('show_page_heading')) : ?> + <h1> + <?php echo $displayData->escape($params->get('page_heading')); ?> + </h1> + <?php endif; ?> - <?php if ($params->get('show_category_title', 1)) : ?> - <<?php echo $htag; ?>> - <?php echo HTMLHelper::_('content.prepare', $category->title, '', $extension . '.category.title'); ?> - </<?php echo $htag; ?>> - <?php endif; ?> - <?php echo $afterDisplayTitle; ?> + <?php if ($params->get('show_category_title', 1)) : ?> + <<?php echo $htag; ?>> + <?php echo HTMLHelper::_('content.prepare', $category->title, '', $extension . '.category.title'); ?> + </<?php echo $htag; ?>> + <?php endif; ?> + <?php echo $afterDisplayTitle; ?> - <?php if ($params->get('show_cat_tags', 1)) : ?> - <?php echo LayoutHelper::render('joomla.content.tags', $tagsData); ?> - <?php endif; ?> + <?php if ($params->get('show_cat_tags', 1)) : ?> + <?php echo LayoutHelper::render('joomla.content.tags', $tagsData); ?> + <?php endif; ?> - <?php if ($beforeDisplayContent || $afterDisplayContent || $params->get('show_description', 1) || $params->def('show_description_image', 1)) : ?> - <div class="category-desc"> - <?php if ($params->get('show_description_image') && $category->getParams()->get('image')) : ?> - <?php $alt = empty($category->getParams()->get('image_alt')) && empty($category->getParams()->get('image_alt_empty')) ? '' : 'alt="' . htmlspecialchars($category->getParams()->get('image_alt'), ENT_COMPAT, 'UTF-8') . '"'; ?> - <img src="<?php echo $category->getParams()->get('image'); ?>" <?php echo $alt; ?>> - <?php endif; ?> - <?php echo $beforeDisplayContent; ?> - <?php if ($params->get('show_description') && $category->description) : ?> - <?php echo HTMLHelper::_('content.prepare', $category->description, '', $extension . '.category.description'); ?> - <?php endif; ?> - <?php echo $afterDisplayContent; ?> - </div> - <?php endif; ?> - <?php echo $displayData->loadTemplate($displayData->subtemplatename); ?> + <?php if ($beforeDisplayContent || $afterDisplayContent || $params->get('show_description', 1) || $params->def('show_description_image', 1)) : ?> + <div class="category-desc"> + <?php if ($params->get('show_description_image') && $category->getParams()->get('image')) : ?> + <?php $alt = empty($category->getParams()->get('image_alt')) && empty($category->getParams()->get('image_alt_empty')) ? '' : 'alt="' . htmlspecialchars($category->getParams()->get('image_alt'), ENT_COMPAT, 'UTF-8') . '"'; ?> + <img src="<?php echo $category->getParams()->get('image'); ?>" <?php echo $alt; ?>> + <?php endif; ?> + <?php echo $beforeDisplayContent; ?> + <?php if ($params->get('show_description') && $category->description) : ?> + <?php echo HTMLHelper::_('content.prepare', $category->description, '', $extension . '.category.description'); ?> + <?php endif; ?> + <?php echo $afterDisplayContent; ?> + </div> + <?php endif; ?> + <?php echo $displayData->loadTemplate($displayData->subtemplatename); ?> - <?php if ($displayData->maxLevel != 0 && $displayData->get('children')) : ?> - <div class="cat-children"> - <?php if ($params->get('show_category_heading_title_text', 1) == 1) : ?> - <h3> - <?php echo Text::_('JGLOBAL_SUBCATEGORIES'); ?> - </h3> - <?php endif; ?> - <?php echo $displayData->loadTemplate('children'); ?> - </div> - <?php endif; ?> - </div> + <?php if ($displayData->maxLevel != 0 && $displayData->get('children')) : ?> + <div class="cat-children"> + <?php if ($params->get('show_category_heading_title_text', 1) == 1) : ?> + <h3> + <?php echo Text::_('JGLOBAL_SUBCATEGORIES'); ?> + </h3> + <?php endif; ?> + <?php echo $displayData->loadTemplate('children'); ?> + </div> + <?php endif; ?> </div> - 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 @@ ?> -<joomla-field-fancy-select <?php echo $attr2; ?>><?php echo implode($html); ?></joomla-field-fancy-select> +<joomla-field-fancy-select <?php echo $attr2; ?>><?php echo implode($html); ?></joomla-field-fancy-select> 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('<img loading="lazy" width="%s" height="%s" src="images/%s/%s"%s alt="">', $imageInfo->width, @@ -49,7 +49,7 @@ } else { - $imageInfo = Image::getImageFileProperties('images/' . $imageFilePath); + $imageInfo = Image::getImageFileProperties(JPATH_ROOT . '/images/' . $imageFilePath); $buffer .= sprintf('<img loading="lazy" width="%s" height="%s" src="images/%s"%s>', $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,
The text was updated successfully, but these errors were encountered:
https://github.com/joomla/joomla-cms/pull/36575/files?authenticity_token=Ohs%2FnZSaIwCyYE8qxXp%2FzZCeFO4jTfvGSy6GfCgvMaKy5FvWH%2BuNlOPPWKXaQf8WtFWF3l43kRr%2FOKM%2BPUFivQ%3D%3D&file-filters%5B%5D=.ini
Sorry, something went wrong.
101269b
wojsmol
zwiastunsw
No branches or pull requests
PR w związku ze zmianą oryginału joomla/joomla-cms#36575 Poniżej zmiany w oryginale:
Click to expand the diff!
The text was updated successfully, but these errors were encountered: