From 719015008c63da90aa75eec6d7f5daeb603378f2 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 16 Jun 2023 11:46:55 +0100 Subject: [PATCH 001/126] New Radio/Checkbox option for interactive target type Add required option for text and radio/checkbox target types to allow us to force the user to interact with the target field even if its not required in the DOM --- .../components/com_guidedtours/forms/step.xml | 15 +++++++++ .../src/Extension/GuidedtoursComponent.php | 7 +++++ .../com_guidedtours/src/Model/StepModel.php | 31 +++++++++++++++++++ .../com_guidedtours/src/Model/StepsModel.php | 11 +++++++ .../com_guidedtours/src/Model/TourModel.php | 4 +++ .../com_guidedtours/tmpl/step/edit.php | 1 + .../language/en-GB/com_guidedtours.ini | 5 ++- .../js/guidedtours.es6.js | 31 ++++++++++++++++++- installation/sql/mysql/extensions.sql | 1 + .../guidedtours/src/Extension/GuidedTours.php | 10 +++--- 10 files changed, 110 insertions(+), 6 deletions(-) diff --git a/administrator/components/com_guidedtours/forms/step.xml b/administrator/components/com_guidedtours/forms/step.xml index 57f56e364cdf9..c67ca370d2660 100644 --- a/administrator/components/com_guidedtours/forms/step.xml +++ b/administrator/components/com_guidedtours/forms/step.xml @@ -120,10 +120,25 @@ > + + + + + + $v) + { + if (strpos($k, "params_") === 0) + { + unset($data[$k]); + $k = substr($k, 7); + $data["params"][$k] = $v; + } + } + + $registry = new Registry($data["params"]); + $data["params"] = $registry->toString(); + return parent::save($data); } @@ -260,6 +279,18 @@ public function getItem($pk = null) // Set the step's tour id $result->tour_id = $tourId; } + + // Convert params[] data to params_ data + if (isset($result->params) && is_array($result->params)) + { + foreach ($result->params as $k => $v) + { + $param = "params_" . $k; + $result->$param = $v; + } + unset($result->params); + } + } return $result; diff --git a/administrator/components/com_guidedtours/src/Model/StepsModel.php b/administrator/components/com_guidedtours/src/Model/StepsModel.php index 14c6c3584070a..b3a5c0a766038 100644 --- a/administrator/components/com_guidedtours/src/Model/StepsModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepsModel.php @@ -16,6 +16,7 @@ use Joomla\Database\DatabaseQuery; use Joomla\Database\ParameterType; use Joomla\Utilities\ArrayHelper; +use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -231,6 +232,16 @@ public function getItems() foreach ($items as $item) { $item->title = Text::_($item->title); $item->description = Text::_($item->description); + + // Convert params[] data to params_ data + if (isset($item->params) ) + { + if (property_exists($item, 'params')) { + $registry = new Registry($item->params); + $item->params = $registry->toString(); + } + } + } return $items; diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index bc23ae4f008cf..5e0b94b5a66db 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -355,6 +355,7 @@ public function duplicate(&$pks) 'checked_out_time', 'checked_out', 'language', + 'params', 'note', ] ) @@ -384,6 +385,7 @@ public function duplicate(&$pks) $db->quoteName('modified'), $db->quoteName('modified_by'), $db->quoteName('language'), + $db->quoteName('params'), $db->quoteName('note'), ] ); @@ -404,6 +406,7 @@ public function duplicate(&$pks) ParameterType::STRING, ParameterType::INTEGER, ParameterType::STRING, + ParameterType::STRING, ParameterType::STRING, ]; @@ -426,6 +429,7 @@ public function duplicate(&$pks) $date, $user->id, $step->language, + $step->params, $step->note, ], $dataTypes diff --git a/administrator/components/com_guidedtours/tmpl/step/edit.php b/administrator/components/com_guidedtours/tmpl/step/edit.php index 4f6b8a87ee0fc..a8093dc9a3b9a 100644 --- a/administrator/components/com_guidedtours/tmpl/step/edit.php +++ b/administrator/components/com_guidedtours/tmpl/step/edit.php @@ -68,6 +68,7 @@ 'type', 'url', 'interactive_type', + 'params_required', 'note', ]; diff --git a/administrator/language/en-GB/com_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.ini index 76e37e496ba9f..4529c79b736dd 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -17,6 +17,7 @@ COM_GUIDEDTOURS_FIELD_VALUE_INTERACTIVESTEP_TYPE_BUTTON="Button" COM_GUIDEDTOURS_FIELD_VALUE_INTERACTIVESTEP_TYPE_FORM_SUBMIT="Form Submit" COM_GUIDEDTOURS_FIELD_VALUE_INTERACTIVESTEP_TYPE_OTHER="Other" COM_GUIDEDTOURS_FIELD_VALUE_INTERACTIVESTEP_TYPE_TEXT_FIELD="Text Field" +COM_GUIDEDTOURS_FIELD_VALUE_INTERACTIVESTEP_TYPE_CHECKBOX_RADIO_FIELD="Checkbox/Radio" COM_GUIDEDTOURS_FIELD_VALUE_STEP_TYPE_INTERACTIVE="Interactive" COM_GUIDEDTOURS_FIELD_VALUE_STEP_TYPE_NEXT="Next" COM_GUIDEDTOURS_FIELD_VALUE_STEP_TYPE_REDIRECT="Redirect" @@ -74,6 +75,8 @@ COM_GUIDEDTOURS_TYPE_INTERACTIVE_STEP_DESC="Select Form Submit to submi COM_GUIDEDTOURS_TYPE_INTERACTIVE_STEP_LABEL="Interactive Type" COM_GUIDEDTOURS_TYPE_REDIRECT_URL_DESC="Enter the relative URL of the page you want the step to redirect to, eg administrator/index.php?option=com_guidedtours&view=tours for the tours' list page." COM_GUIDEDTOURS_TYPE_REDIRECT_URL_LABEL="URL" +COM_GUIDEDTOURS_TYPE_INPUT_REQUIRED_LABEL="Value Required/Box Must be Checked" +COM_GUIDEDTOURS_TYPE_INPUT_REQUIRED_DESC="To move forward to the next step of the tour the user is require to provide a value in the target element or click the checkbox/radio option" COM_GUIDEDTOURS_URL_LABEL="URL" COM_GUIDEDTOURS_URL_DESC="Enter the relative URL of the page from where you want to Start the tour, e.g administrator/index.php?option=com_guidedtours&view=tours for the tours' list page." -COM_GUIDEDTOURS_XML_DESCRIPTION="Component for managing Guided Tours functionality." +COM_GUIDEDTOURS_XML_DESCRIPTION="Component for managing Guided Tours functionality." \ No newline at end of file diff --git a/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js b/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js index c60927dacc9d4..4b50977b7d925 100644 --- a/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js +++ b/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js @@ -74,6 +74,7 @@ function addStepToTourButton(tour, stepObj, buttons) { buttons, id: stepObj.id, arrow: true, + params: (typeof stepObj.params !== 'undefined' && stepObj.params !== '') ? JSON.parse(stepObj.params) : [], beforeShowPromise() { return new Promise((resolve) => { // Set graceful fallbacks in case there is an issue with the target. @@ -130,7 +131,7 @@ function addStepToTourButton(tour, stepObj, buttons) { // The 'next' button should always be enabled if the target input field of type 'text' has a value if ( target.tagName.toLowerCase() === 'input' - && target.hasAttribute('required') + && (target.hasAttribute('required') || (this.options.params.required || 0)) && (['email', 'password', 'search', 'tel', 'text', 'url'].includes(target.type)) ) { if (target.value.trim().length) { @@ -140,6 +141,18 @@ function addStepToTourButton(tour, stepObj, buttons) { primaryButton.setAttribute('disabled', 'disabled'); primaryButton.classList.add('disabled'); } + } else if ( + target.tagName.toLowerCase() === 'input' + && (target.hasAttribute('required') || (this.options.params.required || 0)) + && ['checkbox', 'radio'].includes(target.type) + ) { + if (target.checked) { + primaryButton.removeAttribute('disabled'); + primaryButton.classList.remove('disabled'); + } else { + primaryButton.setAttribute('disabled', 'disabled'); + primaryButton.classList.add('disabled'); + } } cancelButton.addEventListener('keydown', (event) => { @@ -194,6 +207,7 @@ function addStepToTourButton(tour, stepObj, buttons) { url: stepObj.url, type: stepObj.type, interactive_type: stepObj.interactive_type, + params: stepObj.params, }, }); } else { @@ -202,6 +216,7 @@ function addStepToTourButton(tour, stepObj, buttons) { url: stepObj.url, type: stepObj.type, interactive_type: stepObj.interactive_type, + params: stepObj.params, }, }); } @@ -373,6 +388,19 @@ function startTour(obj) { } break; + case 'checkbox_radio': + ele.step_id = index; + if (ele.tagName.toLowerCase() === 'input' && (ele.hasAttribute('required')) && ['checkbox', 'radio'].includes(ele.type)) { + ['click'].forEach((eventName) => ele.addEventListener(eventName, (event) => { + if (event.target.checked) { + enableButton(event); + } else { + disableButton(event); + } + })); + } + break; + case 'button': tour.next(); break; @@ -389,6 +417,7 @@ function startTour(obj) { if ( (obj && obj.steps[index].type !== 'interactive') || (obj && obj.steps[index].interactive_type === 'text') + || (obj && obj.steps[index].interactive_type === 'checkbox_radio') || (obj && obj.steps[index].interactive_type === 'other') ) { pushNextButton(buttons, obj.steps[index]); diff --git a/installation/sql/mysql/extensions.sql b/installation/sql/mysql/extensions.sql index bd13932b11059..fbae6f6dea792 100644 --- a/installation/sql/mysql/extensions.sql +++ b/installation/sql/mysql/extensions.sql @@ -997,6 +997,7 @@ CREATE TABLE IF NOT EXISTS `#__guidedtour_steps` ( `checked_out` int unsigned, `language` varchar(7) NOT NULL, `note` varchar(255) NOT NULL DEFAULT '', + `params` text NOT NULL, PRIMARY KEY (`id`), KEY `idx_tour` (`tour_id`), KEY `idx_state` (`published`), diff --git a/plugins/system/guidedtours/src/Extension/GuidedTours.php b/plugins/system/guidedtours/src/Extension/GuidedTours.php index 4ccbc796f3865..7ea6661b1c062 100644 --- a/plugins/system/guidedtours/src/Extension/GuidedTours.php +++ b/plugins/system/guidedtours/src/Extension/GuidedTours.php @@ -48,10 +48,11 @@ final class GuidedTours extends CMSPlugin implements SubscriberInterface * @since 4.3.0 */ protected $stepInteractiveType = [ - GuidedtoursComponent::STEP_INTERACTIVETYPE_FORM_SUBMIT => 'submit', - GuidedtoursComponent::STEP_INTERACTIVETYPE_TEXT => 'text', - GuidedtoursComponent::STEP_INTERACTIVETYPE_OTHER => 'other', - GuidedtoursComponent::STEP_INTERACTIVETYPE_BUTTON => 'button', + GuidedtoursComponent::STEP_INTERACTIVETYPE_FORM_SUBMIT => 'submit', + GuidedtoursComponent::STEP_INTERACTIVETYPE_TEXT => 'text', + GuidedtoursComponent::STEP_INTERACTIVETYPE_OTHER => 'other', + GuidedtoursComponent::STEP_INTERACTIVETYPE_BUTTON => 'button', + GuidedtoursComponent::STEP_INTERACTIVETYPE_CHECKBOX_RADIO => 'checkbox_radio', ]; /** @@ -224,6 +225,7 @@ private function getTour(int $tourId) $temp->target = $step->target; $temp->type = $this->stepType[$step->type]; $temp->interactive_type = $this->stepInteractiveType[$step->interactive_type]; + $temp->params = $step->params; $temp->url = $step->url; // Replace 'images/' to '../images/' when using an image from /images in backend. From aa99cc343a6ffcde6546e705c6606f904d5beda5 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 16 Jun 2023 12:18:29 +0100 Subject: [PATCH 002/126] Put advanced options on second tab in step editing --- .../components/com_guidedtours/forms/step.xml | 37 ++++++++++++------- .../com_guidedtours/src/Model/StepModel.php | 29 --------------- .../com_guidedtours/src/Model/StepsModel.php | 10 ----- .../com_guidedtours/tmpl/step/edit.php | 5 ++- .../language/en-GB/com_guidedtours.ini | 1 + 5 files changed, 28 insertions(+), 54 deletions(-) diff --git a/administrator/components/com_guidedtours/forms/step.xml b/administrator/components/com_guidedtours/forms/step.xml index c67ca370d2660..8d027fb3e823b 100644 --- a/administrator/components/com_guidedtours/forms/step.xml +++ b/administrator/components/com_guidedtours/forms/step.xml @@ -125,20 +125,6 @@ - - - - - + + +
+ +
+ + + + + +
+
+
+ diff --git a/administrator/components/com_guidedtours/src/Model/StepModel.php b/administrator/components/com_guidedtours/src/Model/StepModel.php index 97377a016272a..7f56955a3450e 100644 --- a/administrator/components/com_guidedtours/src/Model/StepModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepModel.php @@ -105,24 +105,6 @@ public function save($data) $data['published'] = 0; } - // Convert params_ data to params[] data - if (!isset($data["params"])) - { - $data["params"] = array(); - } - foreach ($data as $k => $v) - { - if (strpos($k, "params_") === 0) - { - unset($data[$k]); - $k = substr($k, 7); - $data["params"][$k] = $v; - } - } - - $registry = new Registry($data["params"]); - $data["params"] = $registry->toString(); - return parent::save($data); } @@ -280,17 +262,6 @@ public function getItem($pk = null) $result->tour_id = $tourId; } - // Convert params[] data to params_ data - if (isset($result->params) && is_array($result->params)) - { - foreach ($result->params as $k => $v) - { - $param = "params_" . $k; - $result->$param = $v; - } - unset($result->params); - } - } return $result; diff --git a/administrator/components/com_guidedtours/src/Model/StepsModel.php b/administrator/components/com_guidedtours/src/Model/StepsModel.php index b3a5c0a766038..c0712dcff1388 100644 --- a/administrator/components/com_guidedtours/src/Model/StepsModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepsModel.php @@ -232,16 +232,6 @@ public function getItems() foreach ($items as $item) { $item->title = Text::_($item->title); $item->description = Text::_($item->description); - - // Convert params[] data to params_ data - if (isset($item->params) ) - { - if (property_exists($item, 'params')) { - $registry = new Registry($item->params); - $item->params = $registry->toString(); - } - } - } return $items; diff --git a/administrator/components/com_guidedtours/tmpl/step/edit.php b/administrator/components/com_guidedtours/tmpl/step/edit.php index a8093dc9a3b9a..bc4b2234ae0c6 100644 --- a/administrator/components/com_guidedtours/tmpl/step/edit.php +++ b/administrator/components/com_guidedtours/tmpl/step/edit.php @@ -27,6 +27,8 @@ } $lang = Factory::getLanguage()->getTag(); + +$this->useCoreUI = true; ?>
diff --git a/administrator/language/en-GB/com_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.ini index 4529c79b736dd..5b7e774f01b45 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -75,6 +75,7 @@ COM_GUIDEDTOURS_TYPE_INTERACTIVE_STEP_DESC="Select Form Submit to submi COM_GUIDEDTOURS_TYPE_INTERACTIVE_STEP_LABEL="Interactive Type" COM_GUIDEDTOURS_TYPE_REDIRECT_URL_DESC="Enter the relative URL of the page you want the step to redirect to, eg administrator/index.php?option=com_guidedtours&view=tours for the tours' list page." COM_GUIDEDTOURS_TYPE_REDIRECT_URL_LABEL="URL" +COM_GUIDEDTOURS_FIELD_ADVANCED_LABEL="Advanced Field Options" COM_GUIDEDTOURS_TYPE_INPUT_REQUIRED_LABEL="Value Required/Box Must be Checked" COM_GUIDEDTOURS_TYPE_INPUT_REQUIRED_DESC="To move forward to the next step of the tour the user is require to provide a value in the target element or click the checkbox/radio option" COM_GUIDEDTOURS_URL_LABEL="URL" From c35540aaa873a6c881df3c12aa49e31f07ac6d9e Mon Sep 17 00:00:00 2001 From: Hans Kuijpers Date: Mon, 19 Jun 2023 10:07:39 +0100 Subject: [PATCH 003/126] handle required value for tests on text type input fields --- .../js/guidedtours.es6.js | 39 ++++++++++++++++--- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js b/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js index 4b50977b7d925..45c09ab829d15 100644 --- a/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js +++ b/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js @@ -74,7 +74,7 @@ function addStepToTourButton(tour, stepObj, buttons) { buttons, id: stepObj.id, arrow: true, - params: (typeof stepObj.params !== 'undefined' && stepObj.params !== '') ? JSON.parse(stepObj.params) : [], + params: stepObj.params, beforeShowPromise() { return new Promise((resolve) => { // Set graceful fallbacks in case there is an issue with the target. @@ -132,9 +132,17 @@ function addStepToTourButton(tour, stepObj, buttons) { if ( target.tagName.toLowerCase() === 'input' && (target.hasAttribute('required') || (this.options.params.required || 0)) - && (['email', 'password', 'search', 'tel', 'text', 'url'].includes(target.type)) + && ['email', 'password', 'search', 'tel', 'text', 'url'].includes(target.type) ) { - if (target.value.trim().length) { + if ((this.options.params.requiredvalue || '') !== '') { + if (target.value.trim() === this.options.params.requiredvalue) { + primaryButton.removeAttribute('disabled'); + primaryButton.classList.remove('disabled'); + } else { + primaryButton.setAttribute('disabled', 'disabled'); + primaryButton.classList.add('disabled'); + } + } else if (target.value.trim().length) { primaryButton.removeAttribute('disabled'); primaryButton.classList.remove('disabled'); } else { @@ -365,6 +373,12 @@ function startTour(obj) { && obj.steps[index].target && obj.steps[index].type === 'interactive' ) { + if (typeof obj.steps[index].params === 'string' && obj.steps[index].params !== '') { + obj.steps[index].params = JSON.parse(obj.steps[index].params); + } else { + obj.steps[index].params = []; + } + const ele = document.querySelector(obj.steps[index].target); if (ele) { if (obj && obj.steps && obj.steps[index] && obj.steps[index].interactive_type) { @@ -377,9 +391,18 @@ function startTour(obj) { case 'text': ele.step_id = index; - if (ele.hasAttribute('required') && ['email', 'password', 'search', 'tel', 'text', 'url'].includes(ele.type)) { + if ( + (ele.hasAttribute('required') || (obj.steps[index].params.required || 0)) + && ['email', 'password', 'search', 'tel', 'text', 'url'].includes(ele.type) + ) { ['input', 'focus'].forEach((eventName) => ele.addEventListener(eventName, (event) => { - if (event.target.value.trim().length) { + if ((obj.steps[index].params.requiredvalue || '') !== '') { + if (event.target.value.trim() === obj.steps[index].params.requiredvalue) { + enableButton(event); + } else { + disableButton(event); + } + } else if (event.target.value.trim().length) { enableButton(event); } else { disableButton(event); @@ -390,7 +413,11 @@ function startTour(obj) { case 'checkbox_radio': ele.step_id = index; - if (ele.tagName.toLowerCase() === 'input' && (ele.hasAttribute('required')) && ['checkbox', 'radio'].includes(ele.type)) { + if ( + ele.tagName.toLowerCase() === 'input' + && (ele.hasAttribute('required') || (obj.steps[index].params.required || 0)) + && ['checkbox', 'radio'].includes(ele.type) + ) { ['click'].forEach((eventName) => ele.addEventListener(eventName, (event) => { if (event.target.checked) { enableButton(event); From fa9672f770b1a3aa7cdee9a147786905119aa11f Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Mon, 19 Jun 2023 10:08:56 +0100 Subject: [PATCH 004/126] handle required value for tests on text type input fields - store data in new params field in steps table --- .../components/com_guidedtours/forms/step.xml | 14 +++++++++++ .../com_guidedtours/src/Model/StepsModel.php | 7 ++++++ .../com_guidedtours/src/Table/StepTable.php | 24 +++++++++++++++++++ .../language/en-GB/com_guidedtours.ini | 2 ++ 4 files changed, 47 insertions(+) diff --git a/administrator/components/com_guidedtours/forms/step.xml b/administrator/components/com_guidedtours/forms/step.xml index 8d027fb3e823b..21171c0190eeb 100644 --- a/administrator/components/com_guidedtours/forms/step.xml +++ b/administrator/components/com_guidedtours/forms/step.xml @@ -209,6 +209,20 @@ + + + + + diff --git a/administrator/components/com_guidedtours/src/Model/StepsModel.php b/administrator/components/com_guidedtours/src/Model/StepsModel.php index c0712dcff1388..05ac1c7ac890e 100644 --- a/administrator/components/com_guidedtours/src/Model/StepsModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepsModel.php @@ -232,6 +232,13 @@ public function getItems() foreach ($items as $item) { $item->title = Text::_($item->title); $item->description = Text::_($item->description); + + if (isset($item->params)) { + $params = new Registry($item->params); + if (isset($item->params->requiredvalue) && !empty($item->params->requiredvalue)) { + $item->params->requiredvalue = Text::_($item->params->requiredvalue); + } + } } return $items; diff --git a/administrator/components/com_guidedtours/src/Table/StepTable.php b/administrator/components/com_guidedtours/src/Table/StepTable.php index df31d503587fe..126ca7fbb2736 100644 --- a/administrator/components/com_guidedtours/src/Table/StepTable.php +++ b/administrator/components/com_guidedtours/src/Table/StepTable.php @@ -10,11 +10,13 @@ namespace Joomla\Component\Guidedtours\Administrator\Table; +use Joomla\CMS\Access\Rules; use Joomla\CMS\Factory; use Joomla\CMS\Table\Table; use Joomla\CMS\User\CurrentUserInterface; use Joomla\CMS\User\CurrentUserTrait; use Joomla\Database\DatabaseDriver; +use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -49,6 +51,28 @@ public function __construct(DatabaseDriver $db) parent::__construct('#__guidedtour_steps', 'id', $db); } + /** + * Overloaded bind function. + * + * @param array $array named array + * @param string $ignore An optional array or space separated list of properties + * to ignore while binding. + * + * @return mixed Null if operation was satisfactory, otherwise returns an error + * + * @see Table::bind() + * @since __DEPLOY_VERSION__ + */ + public function bind($array, $ignore = '') + { + if (isset($array['params']) && \is_array($array['params'])) { + $registry = new Registry($array['params']); + $array['params'] = (string) $registry; + } + + return parent::bind($array, $ignore); + } + /** * Stores a step. * diff --git a/administrator/language/en-GB/com_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.ini index 5b7e774f01b45..1233fa665748b 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -78,6 +78,8 @@ COM_GUIDEDTOURS_TYPE_REDIRECT_URL_LABEL="URL" COM_GUIDEDTOURS_FIELD_ADVANCED_LABEL="Advanced Field Options" COM_GUIDEDTOURS_TYPE_INPUT_REQUIRED_LABEL="Value Required/Box Must be Checked" COM_GUIDEDTOURS_TYPE_INPUT_REQUIRED_DESC="To move forward to the next step of the tour the user is require to provide a value in the target element or click the checkbox/radio option" +COM_GUIDEDTOURS_TYPE_INPUT_REQUIRED_VALUE_LABEL="The Value The User Must Enter" +COM_GUIDEDTOURS_TYPE_INPUT_REQUIRED_VALUE_DESC="When the text field has a specific required value to move forard to the next step in the tour you can add it here" COM_GUIDEDTOURS_URL_LABEL="URL" COM_GUIDEDTOURS_URL_DESC="Enter the relative URL of the page from where you want to Start the tour, e.g administrator/index.php?option=com_guidedtours&view=tours for the tours' list page." COM_GUIDEDTOURS_XML_DESCRIPTION="Component for managing Guided Tours functionality." \ No newline at end of file From fad0c9fa20dcd8e2971fcb7b7db616e0c8b5e57c Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 21 Jun 2023 09:50:15 +0100 Subject: [PATCH 005/126] Add support for select list interactive type Reduce duplicated code for enabling/disabling navigation buttons - more can be done! When target element is specified in a step but it doesn't exist in the DOM we need to end the tour as we have probably navigated to another page --- .../components/com_guidedtours/forms/step.xml | 5 +- .../src/Extension/GuidedtoursComponent.php | 11 +- .../language/en-GB/com_guidedtours.ini | 1 + .../js/guidedtours.es6.js | 147 ++++++++++++------ .../guidedtours/src/Extension/GuidedTours.php | 1 + 5 files changed, 114 insertions(+), 51 deletions(-) diff --git a/administrator/components/com_guidedtours/forms/step.xml b/administrator/components/com_guidedtours/forms/step.xml index 21171c0190eeb..ac89e35ef2bcc 100644 --- a/administrator/components/com_guidedtours/forms/step.xml +++ b/administrator/components/com_guidedtours/forms/step.xml @@ -121,6 +121,7 @@ + @@ -200,7 +201,7 @@ type="list" label="COM_GUIDEDTOURS_TYPE_INPUT_REQUIRED_LABEL" description="COM_GUIDEDTOURS_TYPE_INPUT_REQUIRED_DESC" - showon=".type:2[AND].interactive_type:2,5" + showon=".type:2[AND].interactive_type:2,5,6" filter="integer" validate="options" default="1" @@ -214,7 +215,7 @@ type="text" label="COM_GUIDEDTOURS_TYPE_INPUT_REQUIRED_VALUE_LABEL" description="COM_GUIDEDTOURS_TYPE_INPUT_REQUIRED_VALUE_DESC" - showon=".type:2[AND].interactive_type:2[AND]required:1" + showon=".type:2[AND].interactive_type:2,6[AND]required:1" filter="safehtml" size="80" default="" diff --git a/administrator/components/com_guidedtours/src/Extension/GuidedtoursComponent.php b/administrator/components/com_guidedtours/src/Extension/GuidedtoursComponent.php index 3c2a31e88af26..4962b2e5e051e 100644 --- a/administrator/components/com_guidedtours/src/Extension/GuidedtoursComponent.php +++ b/administrator/components/com_guidedtours/src/Extension/GuidedtoursComponent.php @@ -101,13 +101,20 @@ class GuidedtoursComponent extends MVCComponent implements BootableExtensionInte public const STEP_INTERACTIVETYPE_OTHER = 3; /** - * An interactive step for other fields. + * An interactive step for checkbox/radio fields * * @since __DEPLOY_VERSION__ */ public const STEP_INTERACTIVETYPE_CHECKBOX_RADIO = 5; - /** + /** + * An interactive step for select element fields + * + * @since __DEPLOY_VERSION__ + */ + public const STEP_INTERACTIVETYPE_SELECT = 6; + + /** * Booting the extension. This is the function to set up the environment of the extension like * registering new class loaders, etc. * diff --git a/administrator/language/en-GB/com_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.ini index 1233fa665748b..12cd6740b6b01 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -18,6 +18,7 @@ COM_GUIDEDTOURS_FIELD_VALUE_INTERACTIVESTEP_TYPE_FORM_SUBMIT="Form Submit" COM_GUIDEDTOURS_FIELD_VALUE_INTERACTIVESTEP_TYPE_OTHER="Other" COM_GUIDEDTOURS_FIELD_VALUE_INTERACTIVESTEP_TYPE_TEXT_FIELD="Text Field" COM_GUIDEDTOURS_FIELD_VALUE_INTERACTIVESTEP_TYPE_CHECKBOX_RADIO_FIELD="Checkbox/Radio" +COM_GUIDEDTOURS_FIELD_VALUE_INTERACTIVESTEP_TYPE_SELECT_LIST="Select List" COM_GUIDEDTOURS_FIELD_VALUE_STEP_TYPE_INTERACTIVE="Interactive" COM_GUIDEDTOURS_FIELD_VALUE_STEP_TYPE_NEXT="Next" COM_GUIDEDTOURS_FIELD_VALUE_STEP_TYPE_REDIRECT="Redirect" diff --git a/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js b/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js index 45c09ab829d15..4605ae96edffa 100644 --- a/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js +++ b/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js @@ -66,6 +66,17 @@ function setFocus(primaryButton, secondaryButton, cancelButton) { } } +function enableButton(eventElement) { + const element = eventElement instanceof Event ? document.querySelector(`.step-next-button-${eventElement.currentTarget.step_id}`) : eventElement; + element.removeAttribute('disabled'); + element.classList.remove('disabled'); +} +function disableButton(eventElement) { + const element = eventElement instanceof Event ? document.querySelector(`.step-next-button-${eventElement.currentTarget.step_id}`) : eventElement; + element.setAttribute('disabled', 'disabled'); + element.classList.add('disabled'); +} + function addStepToTourButton(tour, stepObj, buttons) { const step = new Shepherd.Step(tour, { title: stepObj.title, @@ -117,6 +128,14 @@ function addStepToTourButton(tour, stepObj, buttons) { const element = this.getElement(); const target = this.getTarget(); + // if target element doesn't exist e.g. because we have navigated to a new page mid-tour then end the tour here! + // Take care though since some steps have no target to we check for these too + if (!target && this.options.attachTo.element) { + emptyStorage(); + this.cancel(); + return; + } + // Force the screen reader to only read the content of the popup after a refresh element.setAttribute('aria-live', 'assertive'); @@ -128,39 +147,64 @@ function addStepToTourButton(tour, stepObj, buttons) { const primaryButton = element.querySelector('.shepherd-button-primary'); const secondaryButton = element.querySelector('.shepherd-button-secondary'); - // The 'next' button should always be enabled if the target input field of type 'text' has a value - if ( - target.tagName.toLowerCase() === 'input' - && (target.hasAttribute('required') || (this.options.params.required || 0)) - && ['email', 'password', 'search', 'tel', 'text', 'url'].includes(target.type) - ) { - if ((this.options.params.requiredvalue || '') !== '') { - if (target.value.trim() === this.options.params.requiredvalue) { - primaryButton.removeAttribute('disabled'); - primaryButton.classList.remove('disabled'); - } else { - primaryButton.setAttribute('disabled', 'disabled'); - primaryButton.classList.add('disabled'); + // Check to see if the 'next' button should be enabled before showing the step based on being required or + // matcching the required value + switch (this.options.attachTo.interactive_type) { + case 'text': + if ( + target.tagName.toLowerCase() === 'input' + && (target.hasAttribute('required') || (this.options.params.required || 0)) + && ['email', 'password', 'search', 'tel', 'text', 'url'].includes(target.type) + ) { + if ((this.options.params.requiredvalue || '') !== '') { + if (target.value.trim() === this.options.params.requiredvalue) { + enableButton(primaryButton); + } else { + disableButton(primaryButton); + } + } else if (target.value.trim().length) { + enableButton(primaryButton); + } else { + disableButton(primaryButton); + } } - } else if (target.value.trim().length) { - primaryButton.removeAttribute('disabled'); - primaryButton.classList.remove('disabled'); - } else { - primaryButton.setAttribute('disabled', 'disabled'); - primaryButton.classList.add('disabled'); - } - } else if ( - target.tagName.toLowerCase() === 'input' - && (target.hasAttribute('required') || (this.options.params.required || 0)) - && ['checkbox', 'radio'].includes(target.type) - ) { - if (target.checked) { - primaryButton.removeAttribute('disabled'); - primaryButton.classList.remove('disabled'); - } else { - primaryButton.setAttribute('disabled', 'disabled'); - primaryButton.classList.add('disabled'); - } + break; + + case 'checkbox_radio': + if ( + target.tagName.toLowerCase() === 'input' + && (target.hasAttribute('required') || (this.options.params.required || 0)) + && ['checkbox', 'radio'].includes(target.type) + ) { + if (target.checked) { + enableButton(primaryButton); + } else { + disableButton(primaryButton); + } + } + break; + + case 'select': + if ( + target.tagName.toLowerCase() === 'select' + && (target.hasAttribute('required') || (this.options.params.required || 0)) + ) { + if ((this.options.params.requiredvalue || '') !== '') { + if (target.value.trim() === this.options.params.requiredvalue) { + enableButton(primaryButton); + } else { + disableButton(primaryButton); + } + } else if (target.value.trim().length) { + enableButton(primaryButton); + } else { + disableButton(primaryButton); + } + } + break; + + default: + break; } cancelButton.addEventListener('keydown', (event) => { @@ -303,17 +347,6 @@ function addBackButton(buttons, step) { }); } -function enableButton(event) { - const element = document.querySelector(`.step-next-button-${event.currentTarget.step_id}`); - element.removeAttribute('disabled'); - element.classList.remove('disabled'); -} -function disableButton(event) { - const element = document.querySelector(`.step-next-button-${event.currentTarget.step_id}`); - element.setAttribute('disabled', 'disabled'); - element.classList.add('disabled'); -} - function startTour(obj) { // We store the tour id to restart on site refresh sessionStorage.setItem('tourId', obj.id); @@ -353,7 +386,7 @@ function startTour(obj) { ind = 1; } - // Now let's add all follow up steps + // Now let's add all followup steps const len = obj.steps.length; let buttons; @@ -428,6 +461,28 @@ function startTour(obj) { } break; + case 'select': + ele.step_id = index; + if ( + ele.tagName.toLowerCase() === 'select' + && (ele.hasAttribute('required') || (obj.steps[index].params.required || 0)) + ) { + ['change'].forEach((eventName) => ele.addEventListener(eventName, (event) => { + if ((obj.steps[index].params.requiredvalue || '') !== '') { + if (event.target.value.trim() === obj.steps[index].params.requiredvalue) { + enableButton(event); + } else { + disableButton(event); + } + } else if (event.target.value.trim().length) { + enableButton(event); + } else { + disableButton(event); + } + })); + } + break; + case 'button': tour.next(); break; @@ -443,9 +498,7 @@ function startTour(obj) { if (index < len - 1) { if ( (obj && obj.steps[index].type !== 'interactive') - || (obj && obj.steps[index].interactive_type === 'text') - || (obj && obj.steps[index].interactive_type === 'checkbox_radio') - || (obj && obj.steps[index].interactive_type === 'other') + || (obj && ['text', 'checkbox_radio', 'select', 'other'].includes(obj.steps[index].interactive_type)) ) { pushNextButton(buttons, obj.steps[index]); } diff --git a/plugins/system/guidedtours/src/Extension/GuidedTours.php b/plugins/system/guidedtours/src/Extension/GuidedTours.php index 7ea6661b1c062..2a3f121e1a47e 100644 --- a/plugins/system/guidedtours/src/Extension/GuidedTours.php +++ b/plugins/system/guidedtours/src/Extension/GuidedTours.php @@ -53,6 +53,7 @@ final class GuidedTours extends CMSPlugin implements SubscriberInterface GuidedtoursComponent::STEP_INTERACTIVETYPE_OTHER => 'other', GuidedtoursComponent::STEP_INTERACTIVETYPE_BUTTON => 'button', GuidedtoursComponent::STEP_INTERACTIVETYPE_CHECKBOX_RADIO => 'checkbox_radio', + GuidedtoursComponent::STEP_INTERACTIVETYPE_SELECT => 'select', ]; /** From 0ddc801634ef1b11fbc09be039f6e482fcfccdb7 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 21 Jun 2023 09:53:55 +0100 Subject: [PATCH 006/126] Remove redundant use statement --- .../components/com_guidedtours/src/Model/StepModel.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/administrator/components/com_guidedtours/src/Model/StepModel.php b/administrator/components/com_guidedtours/src/Model/StepModel.php index 7f56955a3450e..a06d3093133d5 100644 --- a/administrator/components/com_guidedtours/src/Model/StepModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepModel.php @@ -15,7 +15,6 @@ use Joomla\CMS\MVC\Model\AdminModel; use Joomla\CMS\Object\CMSObject; use Joomla\CMS\Table\Table; -use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -261,7 +260,6 @@ public function getItem($pk = null) // Set the step's tour id $result->tour_id = $tourId; } - } return $result; From 8b0b6a5b6b546bb57494a422fdc0e55f2f1863a7 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 21 Jun 2023 10:11:05 +0100 Subject: [PATCH 007/126] allow text field to support textarea too --- .../plg_system_guidedtours/js/guidedtours.es6.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js b/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js index 4605ae96edffa..7356fd9205912 100644 --- a/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js +++ b/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js @@ -152,9 +152,11 @@ function addStepToTourButton(tour, stepObj, buttons) { switch (this.options.attachTo.interactive_type) { case 'text': if ( - target.tagName.toLowerCase() === 'input' - && (target.hasAttribute('required') || (this.options.params.required || 0)) - && ['email', 'password', 'search', 'tel', 'text', 'url'].includes(target.type) + (target.hasAttribute('required') || (this.options.params.required || 0)) + && ( + (target.tagName.toLowerCase() === 'input' && ['email', 'password', 'search', 'tel', 'text', 'url'].includes(target.type)) + || target.tagName.toLowerCase() === 'textarea' + ) ) { if ((this.options.params.requiredvalue || '') !== '') { if (target.value.trim() === this.options.params.requiredvalue) { @@ -426,7 +428,10 @@ function startTour(obj) { ele.step_id = index; if ( (ele.hasAttribute('required') || (obj.steps[index].params.required || 0)) - && ['email', 'password', 'search', 'tel', 'text', 'url'].includes(ele.type) + && ( + (ele.tagName.toLowerCase() === 'input' && ['email', 'password', 'search', 'tel', 'text', 'url'].includes(ele.type)) + || ele.tagName.toLowerCase() === 'textarea' + ) ) { ['input', 'focus'].forEach((eventName) => ele.addEventListener(eventName, (event) => { if ((obj.steps[index].params.requiredvalue || '') !== '') { From 041589f6ad3fa60d3ce1ca5a9e23da32fd0f7c40 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 21 Jun 2023 10:30:05 +0100 Subject: [PATCH 008/126] make the required value field a text area --- administrator/components/com_guidedtours/forms/step.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/administrator/components/com_guidedtours/forms/step.xml b/administrator/components/com_guidedtours/forms/step.xml index ac89e35ef2bcc..b9c32f553bd56 100644 --- a/administrator/components/com_guidedtours/forms/step.xml +++ b/administrator/components/com_guidedtours/forms/step.xml @@ -212,12 +212,13 @@ From e96cb4ede3b939ae9ae9de51e2a92885cf2eb568 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 21 Jun 2023 10:40:23 +0100 Subject: [PATCH 009/126] remove Factory::getLanguage --- administrator/components/com_guidedtours/tmpl/step/edit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_guidedtours/tmpl/step/edit.php b/administrator/components/com_guidedtours/tmpl/step/edit.php index bc4b2234ae0c6..73d8666c8f286 100644 --- a/administrator/components/com_guidedtours/tmpl/step/edit.php +++ b/administrator/components/com_guidedtours/tmpl/step/edit.php @@ -26,7 +26,7 @@ throw new GenericDataException("\nThe Tour id was not set!\n", 500); } -$lang = Factory::getLanguage()->getTag(); +$lang = $this->getLanguage()->getTag(); $this->useCoreUI = true; ?> From 8a6acb707021f784dbab83e75b1b0d68015ce33c Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 21 Jun 2023 11:45:17 +0100 Subject: [PATCH 010/126] PHP code style Add missing params field into postgres sql file --- .../components/com_guidedtours/forms/step.xml | 4 +-- .../src/Extension/GuidedtoursComponent.php | 30 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/administrator/components/com_guidedtours/forms/step.xml b/administrator/components/com_guidedtours/forms/step.xml index b9c32f553bd56..42e199a9cf61b 100644 --- a/administrator/components/com_guidedtours/forms/step.xml +++ b/administrator/components/com_guidedtours/forms/step.xml @@ -205,7 +205,7 @@ filter="integer" validate="options" default="1" - > + > @@ -220,7 +220,7 @@ cols="80" rows="3" default="" - > + > diff --git a/administrator/components/com_guidedtours/src/Extension/GuidedtoursComponent.php b/administrator/components/com_guidedtours/src/Extension/GuidedtoursComponent.php index 4962b2e5e051e..b043f9868e192 100644 --- a/administrator/components/com_guidedtours/src/Extension/GuidedtoursComponent.php +++ b/administrator/components/com_guidedtours/src/Extension/GuidedtoursComponent.php @@ -100,21 +100,21 @@ class GuidedtoursComponent extends MVCComponent implements BootableExtensionInte */ public const STEP_INTERACTIVETYPE_OTHER = 3; - /** - * An interactive step for checkbox/radio fields - * - * @since __DEPLOY_VERSION__ - */ - public const STEP_INTERACTIVETYPE_CHECKBOX_RADIO = 5; - - /** - * An interactive step for select element fields - * - * @since __DEPLOY_VERSION__ - */ - public const STEP_INTERACTIVETYPE_SELECT = 6; - - /** + /** + * An interactive step for checkbox/radio fields + * + * @since __DEPLOY_VERSION__ + */ + public const STEP_INTERACTIVETYPE_CHECKBOX_RADIO = 5; + + /** + * An interactive step for select element fields + * + * @since __DEPLOY_VERSION__ + */ + public const STEP_INTERACTIVETYPE_SELECT = 6; + + /** * Booting the extension. This is the function to set up the environment of the extension like * registering new class loaders, etc. * From dec5adfdf1c1042a4249a6f08f77ed8f16423496 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 21 Jun 2023 12:04:50 +0100 Subject: [PATCH 011/126] PHP code style Add missing params field into postgres sql file --- installation/sql/postgresql/extensions.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/installation/sql/postgresql/extensions.sql b/installation/sql/postgresql/extensions.sql index 0c91b45d1fd2f..58b3c67df6c19 100644 --- a/installation/sql/postgresql/extensions.sql +++ b/installation/sql/postgresql/extensions.sql @@ -964,6 +964,7 @@ CREATE TABLE IF NOT EXISTS "#__guidedtour_steps" ( "checked_out" integer, "language" varchar(7) DEFAULT '' NOT NULL, "note" varchar(255) DEFAULT '' NOT NULL, + "params" text NOT NULL, PRIMARY KEY ("id") ); From 2ef9adfb967a268663c29b1f80b922f7729166ef Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 21 Jun 2023 12:15:08 +0100 Subject: [PATCH 012/126] PHP code style Add missing SQL update scripts --- .../sql/updates/mysql/5.0.0-2023-06-21.sql | 1 + .../updates/postgresql/5.0.0-2023-06-21.sql | 1 + .../com_guidedtours/src/Model/StepsModel.php | 12 +++--- .../com_guidedtours/src/Model/TourModel.php | 8 ++-- .../com_guidedtours/src/Table/StepTable.php | 40 +++++++++---------- 5 files changed, 32 insertions(+), 30 deletions(-) create mode 100644 administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-21.sql create mode 100644 administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-21.sql diff --git a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-21.sql b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-21.sql new file mode 100644 index 0000000000000..80eede0c9ade7 --- /dev/null +++ b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-21.sql @@ -0,0 +1 @@ +ALTER TABLE `#__guidedtour_steps` ADD COLUMN `params` text NOT NULL /** CAN FAIL **/; diff --git a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-21.sql b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-21.sql new file mode 100644 index 0000000000000..e363e21e8cd3d --- /dev/null +++ b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-21.sql @@ -0,0 +1 @@ +ALTER TABLE "#__guidedtour_steps" ADD COLUMN "params" text NOT NULL, /** CAN FAIL **/; diff --git a/administrator/components/com_guidedtours/src/Model/StepsModel.php b/administrator/components/com_guidedtours/src/Model/StepsModel.php index 05ac1c7ac890e..cd6d1cbcfb242 100644 --- a/administrator/components/com_guidedtours/src/Model/StepsModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepsModel.php @@ -233,12 +233,12 @@ public function getItems() $item->title = Text::_($item->title); $item->description = Text::_($item->description); - if (isset($item->params)) { - $params = new Registry($item->params); - if (isset($item->params->requiredvalue) && !empty($item->params->requiredvalue)) { - $item->params->requiredvalue = Text::_($item->params->requiredvalue); - } - } + if (isset($item->params)) { + $params = new Registry($item->params); + if (isset($item->params->requiredvalue) && !empty($item->params->requiredvalue)) { + $item->params->requiredvalue = Text::_($item->params->requiredvalue); + } + } } return $items; diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index 5e0b94b5a66db..0a84f6cc54945 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -355,7 +355,7 @@ public function duplicate(&$pks) 'checked_out_time', 'checked_out', 'language', - 'params', + 'params', 'note', ] ) @@ -385,7 +385,7 @@ public function duplicate(&$pks) $db->quoteName('modified'), $db->quoteName('modified_by'), $db->quoteName('language'), - $db->quoteName('params'), + $db->quoteName('params'), $db->quoteName('note'), ] ); @@ -406,7 +406,7 @@ public function duplicate(&$pks) ParameterType::STRING, ParameterType::INTEGER, ParameterType::STRING, - ParameterType::STRING, + ParameterType::STRING, ParameterType::STRING, ]; @@ -429,7 +429,7 @@ public function duplicate(&$pks) $date, $user->id, $step->language, - $step->params, + $step->params, $step->note, ], $dataTypes diff --git a/administrator/components/com_guidedtours/src/Table/StepTable.php b/administrator/components/com_guidedtours/src/Table/StepTable.php index 126ca7fbb2736..252c49fc46888 100644 --- a/administrator/components/com_guidedtours/src/Table/StepTable.php +++ b/administrator/components/com_guidedtours/src/Table/StepTable.php @@ -51,27 +51,27 @@ public function __construct(DatabaseDriver $db) parent::__construct('#__guidedtour_steps', 'id', $db); } - /** - * Overloaded bind function. - * - * @param array $array named array - * @param string $ignore An optional array or space separated list of properties - * to ignore while binding. - * - * @return mixed Null if operation was satisfactory, otherwise returns an error - * - * @see Table::bind() - * @since __DEPLOY_VERSION__ - */ - public function bind($array, $ignore = '') - { - if (isset($array['params']) && \is_array($array['params'])) { - $registry = new Registry($array['params']); - $array['params'] = (string) $registry; - } + /** + * Overloaded bind function. + * + * @param array $array named array + * @param string $ignore An optional array or space separated list of properties + * to ignore while binding. + * + * @return mixed Null if operation was satisfactory, otherwise returns an error + * + * @see Table::bind() + * @since __DEPLOY_VERSION__ + */ + public function bind($array, $ignore = '') + { + if (isset($array['params']) && \is_array($array['params'])) { + $registry = new Registry($array['params']); + $array['params'] = (string) $registry; + } - return parent::bind($array, $ignore); - } + return parent::bind($array, $ignore); + } /** * Stores a step. From 7f7314f2c4370ac674dd3af981258a7dce8d6da0 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 21 Jun 2023 12:24:48 +0100 Subject: [PATCH 013/126] PHP code style Add missing SQL update scripts --- .../guidedtours/src/Extension/GuidedTours.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/system/guidedtours/src/Extension/GuidedTours.php b/plugins/system/guidedtours/src/Extension/GuidedTours.php index 2a3f121e1a47e..95fcf292dbc05 100644 --- a/plugins/system/guidedtours/src/Extension/GuidedTours.php +++ b/plugins/system/guidedtours/src/Extension/GuidedTours.php @@ -48,12 +48,12 @@ final class GuidedTours extends CMSPlugin implements SubscriberInterface * @since 4.3.0 */ protected $stepInteractiveType = [ - GuidedtoursComponent::STEP_INTERACTIVETYPE_FORM_SUBMIT => 'submit', - GuidedtoursComponent::STEP_INTERACTIVETYPE_TEXT => 'text', - GuidedtoursComponent::STEP_INTERACTIVETYPE_OTHER => 'other', - GuidedtoursComponent::STEP_INTERACTIVETYPE_BUTTON => 'button', - GuidedtoursComponent::STEP_INTERACTIVETYPE_CHECKBOX_RADIO => 'checkbox_radio', - GuidedtoursComponent::STEP_INTERACTIVETYPE_SELECT => 'select', + GuidedtoursComponent::STEP_INTERACTIVETYPE_FORM_SUBMIT => 'submit', + GuidedtoursComponent::STEP_INTERACTIVETYPE_TEXT => 'text', + GuidedtoursComponent::STEP_INTERACTIVETYPE_OTHER => 'other', + GuidedtoursComponent::STEP_INTERACTIVETYPE_BUTTON => 'button', + GuidedtoursComponent::STEP_INTERACTIVETYPE_CHECKBOX_RADIO => 'checkbox_radio', + GuidedtoursComponent::STEP_INTERACTIVETYPE_SELECT => 'select', ]; /** @@ -226,7 +226,7 @@ private function getTour(int $tourId) $temp->target = $step->target; $temp->type = $this->stepType[$step->type]; $temp->interactive_type = $this->stepInteractiveType[$step->interactive_type]; - $temp->params = $step->params; + $temp->params = $step->params; $temp->url = $step->url; // Replace 'images/' to '../images/' when using an image from /images in backend. From cb7200f3f64269e2d2f7c2b3fd630dc13d47aa1d Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 21 Jun 2023 12:34:45 +0100 Subject: [PATCH 014/126] PHP code style --- administrator/components/com_guidedtours/tmpl/step/edit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_guidedtours/tmpl/step/edit.php b/administrator/components/com_guidedtours/tmpl/step/edit.php index 546b13b0a82b9..0189ec49899d0 100644 --- a/administrator/components/com_guidedtours/tmpl/step/edit.php +++ b/administrator/components/com_guidedtours/tmpl/step/edit.php @@ -90,7 +90,7 @@
fields = []; + $this->fields = []; $this->hidden_fields = []; echo LayoutHelper::render('joomla.edit.publishingdata', $this); ?>
From 949de7255b08eb2067742915528f5804b58f044a Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 21 Jun 2023 12:48:05 +0100 Subject: [PATCH 015/126] PHP code style --- administrator/components/com_guidedtours/tmpl/step/edit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_guidedtours/tmpl/step/edit.php b/administrator/components/com_guidedtours/tmpl/step/edit.php index 0189ec49899d0..c2a54c8417dc9 100644 --- a/administrator/components/com_guidedtours/tmpl/step/edit.php +++ b/administrator/components/com_guidedtours/tmpl/step/edit.php @@ -81,7 +81,7 @@
- +
From 72cea456d0a185a06454d3783a907a24048f8c09 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 21 Jun 2023 13:51:06 +0100 Subject: [PATCH 016/126] bad cut and paste of SQL :( --- .../com_admin/sql/updates/postgresql/5.0.0-2023-06-21.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-21.sql b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-21.sql index e363e21e8cd3d..a7966de885eef 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-21.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-21.sql @@ -1 +1 @@ -ALTER TABLE "#__guidedtour_steps" ADD COLUMN "params" text NOT NULL, /** CAN FAIL **/; +ALTER TABLE "#__guidedtour_steps" ADD COLUMN "params" text NOT NULL /** CAN FAIL **/; From 94481f98950b3f4293635f0d01e61203cdbe123d Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 21 Jun 2023 15:20:06 +0100 Subject: [PATCH 017/126] reoder use statements --- .../components/com_guidedtours/src/Model/StepsModel.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_guidedtours/src/Model/StepsModel.php b/administrator/components/com_guidedtours/src/Model/StepsModel.php index cd6d1cbcfb242..4848fc9e0d809 100644 --- a/administrator/components/com_guidedtours/src/Model/StepsModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepsModel.php @@ -15,8 +15,8 @@ use Joomla\CMS\MVC\Model\ListModel; use Joomla\Database\DatabaseQuery; use Joomla\Database\ParameterType; -use Joomla\Utilities\ArrayHelper; use Joomla\Registry\Registry; +use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; From d92b11e111996351fb49ad8bf0cd54860170e67d Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 30 Jun 2023 10:13:38 +0100 Subject: [PATCH 018/126] Remove unecessary use Rules --- administrator/components/com_guidedtours/src/Table/StepTable.php | 1 - 1 file changed, 1 deletion(-) diff --git a/administrator/components/com_guidedtours/src/Table/StepTable.php b/administrator/components/com_guidedtours/src/Table/StepTable.php index 252c49fc46888..610b954d2e108 100644 --- a/administrator/components/com_guidedtours/src/Table/StepTable.php +++ b/administrator/components/com_guidedtours/src/Table/StepTable.php @@ -10,7 +10,6 @@ namespace Joomla\Component\Guidedtours\Administrator\Table; -use Joomla\CMS\Access\Rules; use Joomla\CMS\Factory; use Joomla\CMS\Table\Table; use Joomla\CMS\User\CurrentUserInterface; From 34a41154d3602df6c8c6e1081a24c51ed0c98117 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Sun, 2 Jul 2023 11:42:27 +0100 Subject: [PATCH 019/126] Change required field to radiobox/selector Change lanbguage file ordering for label --- administrator/components/com_guidedtours/forms/step.xml | 5 +++-- administrator/language/en-GB/com_guidedtours.ini | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/administrator/components/com_guidedtours/forms/step.xml b/administrator/components/com_guidedtours/forms/step.xml index 42e199a9cf61b..2854e943cbc79 100644 --- a/administrator/components/com_guidedtours/forms/step.xml +++ b/administrator/components/com_guidedtours/forms/step.xml @@ -195,13 +195,14 @@
-
+
Date: Mon, 3 Jul 2023 09:43:42 +0100 Subject: [PATCH 020/126] Language file typo --- administrator/language/en-GB/com_guidedtours.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/com_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.ini index 2d6140ea73d43..effc8cc39fbe0 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -76,7 +76,7 @@ COM_GUIDEDTOURS_TYPE_INTERACTIVE_STEP_DESC="Select Form Submit to submi COM_GUIDEDTOURS_TYPE_INTERACTIVE_STEP_LABEL="Interactive Type" COM_GUIDEDTOURS_TYPE_REDIRECT_URL_DESC="Enter the relative URL of the page you want the step to redirect to, eg administrator/index.php?option=com_guidedtours&view=tours for the tours' list page." COM_GUIDEDTOURS_TYPE_REDIRECT_URL_LABEL="URL" -COM_GUIDEDTOURS_FIELD_REQUIRED_TARGET_VALUE_LABEL="Rewquired Target Element Value Settings" +COM_GUIDEDTOURS_FIELD_REQUIRED_TARGET_VALUE_LABEL="Required Target Element Value Settings" COM_GUIDEDTOURS_TYPE_INPUT_REQUIRED_LABEL="Value Required/Box Must be Checked" COM_GUIDEDTOURS_TYPE_INPUT_REQUIRED_DESC="To move forward to the next step of the tour the user is require to provide a value in the target element or click the checkbox/radio option" COM_GUIDEDTOURS_TYPE_INPUT_REQUIRED_VALUE_LABEL="The Value The User Must Enter" From 1fe8041c394b5616a9c786edd3b8b60cf4368144 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Mon, 3 Jul 2023 15:01:06 +0100 Subject: [PATCH 021/126] change fieldset name for required values Make empty fieldsets and tabs disappear/appear based on showon behaviour of contained fields --- .../components/com_guidedtours/forms/step.xml | 2 +- .../com_guidedtours/tmpl/step/edit.php | 3 +- .../com_guidedtours/joomla.asset.json | 34 +++++++++++++++++ .../com_guidedtours/js/tour-edit.es6.js | 37 +++++++++++++++++++ 4 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 build/media_source/com_guidedtours/joomla.asset.json create mode 100644 build/media_source/com_guidedtours/js/tour-edit.es6.js diff --git a/administrator/components/com_guidedtours/forms/step.xml b/administrator/components/com_guidedtours/forms/step.xml index 2854e943cbc79..bcb011241fdcd 100644 --- a/administrator/components/com_guidedtours/forms/step.xml +++ b/administrator/components/com_guidedtours/forms/step.xml @@ -195,7 +195,7 @@
-
+
document->getWebAssetManager(); $wa->useScript('keepalive') - ->useScript('form.validate'); + ->useScript('form.validate') + ->useScript('com_guidedtours.tour-edit'); if (empty($this->item->tour_id)) { throw new GenericDataException("\nThe Tour id was not set!\n", 500); diff --git a/build/media_source/com_guidedtours/joomla.asset.json b/build/media_source/com_guidedtours/joomla.asset.json new file mode 100644 index 0000000000000..d67f7c5321a63 --- /dev/null +++ b/build/media_source/com_guidedtours/joomla.asset.json @@ -0,0 +1,34 @@ +{ + "$schema": "https://developer.joomla.org/schemas/json-schema/web_assets.json", + "name": "com_guidedtours", + "version": "4.0.0", + "description": "Joomla CMS", + "license": "GPL-2.0-or-later", + "assets": [ + { + "name": "com_guidedtours.tour-edit.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_guidedtours.tour-edit", + "type": "script", + "uri": "com_guidedtours/tour-edit.min.js", + "dependencies": [ + "core" + ], + "attributes": { + "type": "module", + "defer": true + } + } + ] +} diff --git a/build/media_source/com_guidedtours/js/tour-edit.es6.js b/build/media_source/com_guidedtours/js/tour-edit.es6.js new file mode 100644 index 0000000000000..6858160ce31a5 --- /dev/null +++ b/build/media_source/com_guidedtours/js/tour-edit.es6.js @@ -0,0 +1,37 @@ +/** + * @copyright (C) 2018 Open Source Matters, Inc. + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +(() => { + 'use strict'; + + // before 'joomla:showon-processed' is implemented in Showon we must use more frequent 'joomla:showon-show' and'joomla:showon-hide' events + ['joomla:showon-show', 'joomla:showon-hide'].forEach((eventType) => { + document.addEventListener(eventType, () => { + document.querySelectorAll('#guidedtour-dates-form fieldset').forEach((fieldset) => { + // Only hide fieldsets containing field control-group i.e. not radio selectors etc. that may use fieldsets + if (fieldset.querySelectorAll(':scope .control-group').length === 0) { + return; + } + const visibleChildren = fieldset.querySelectorAll(':scope .control-group:not(.hidden)'); + if (visibleChildren.length) { + fieldset.classList.remove('hidden'); + } else { + fieldset.classList.add('hidden'); + } + }); + document.querySelectorAll('#guidedtour-dates-form joomla-tab-element').forEach((tabelement) => { + const tabLabel = document.querySelector(`button[aria-controls="${tabelement.id}"]`); + if (tabLabel) { + const visibleChildren = tabelement.querySelectorAll(':scope .control-group:not(.hidden)'); + if (visibleChildren.length) { + tabLabel.removeAttribute('hidden'); + } else { + tabLabel.setAttribute('hidden', 'hidden'); + } + } + }); + }); + }); +})(); From 896090e72ebe731b51ef12946a8183c19f940a10 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 12 Jul 2023 09:36:16 +0100 Subject: [PATCH 022/126] No need to include reference to es5 javascript 5 at all. --- .../media_source/com_guidedtours/joomla.asset.json | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/build/media_source/com_guidedtours/joomla.asset.json b/build/media_source/com_guidedtours/joomla.asset.json index d67f7c5321a63..32b9bf4a8527c 100644 --- a/build/media_source/com_guidedtours/joomla.asset.json +++ b/build/media_source/com_guidedtours/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_guidedtours.tour-edit.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_guidedtours.tour-edit", "type": "script", From 6acad72ed85d9e423fbed96a1efc23bae30f42da Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Tue, 18 Jul 2023 13:50:50 +0200 Subject: [PATCH 023/126] Add missing can fail installer hint (#41184) --- .../components/com_admin/sql/updates/mysql/5.0.0-2023-07-12.sql | 2 +- .../com_admin/sql/updates/postgresql/5.0.0-2023-07-12.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-07-12.sql b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-07-12.sql index 3e80b56b76e31..882f857346fd7 100644 --- a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-07-12.sql +++ b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-07-12.sql @@ -1,2 +1,2 @@ -ALTER TABLE `#__menu_types` ADD COLUMN `ordering` int NOT NULL DEFAULT 0 AFTER `client_id`; +ALTER TABLE `#__menu_types` ADD COLUMN `ordering` int NOT NULL DEFAULT 0 AFTER `client_id` /** CAN FAIL **/; UPDATE `#__menu_types` SET `ordering` = `id` WHERE `client_id` = 0; diff --git a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-07-12.sql b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-07-12.sql index 9599f3064b837..0c83e0d5360fd 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-07-12.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-07-12.sql @@ -1,2 +1,2 @@ -ALTER TABLE "#__menu_types" ADD COLUMN "ordering" int NOT NULL DEFAULT 0; +ALTER TABLE "#__menu_types" ADD COLUMN "ordering" int NOT NULL DEFAULT 0 /** CAN FAIL **/; UPDATE "#__menu_types" SET "ordering" = "id" WHERE "client_id" = 0; From da6e37357a669c0f851bc67128df4ee92ef8d145 Mon Sep 17 00:00:00 2001 From: Stefan Wendhausen Date: Mon, 3 Jul 2023 09:12:50 +0200 Subject: [PATCH 024/126] [4.4] Unification of the spelling in plg_quickicon_eos.sys.ini (#41099) * Unification of the spelling * Shortening to Joomla 4 Shortening the spelling from Joomla 4.4 to Joomla 4. --- administrator/language/en-GB/plg_quickicon_eos.ini | 10 +++++----- administrator/language/en-GB/plg_quickicon_eos.sys.ini | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/administrator/language/en-GB/plg_quickicon_eos.ini b/administrator/language/en-GB/plg_quickicon_eos.ini index 2a47e0fe6e5bb..f48624b651afb 100644 --- a/administrator/language/en-GB/plg_quickicon_eos.ini +++ b/administrator/language/en-GB/plg_quickicon_eos.ini @@ -3,11 +3,11 @@ ; License GNU General Public License version 2 or later; see LICENSE.txt ; Note : All ini files need to be saved as UTF-8 -PLG_QUICKICON_EOS="Quick Icon - Joomla 4.4 End Of Support Notification" -PLG_QUICKICON_EOS_MESSAGE_ERROR_SUPPORT_ENDED="

Support has ended for your version of Joomla 4.4. Upgrade to Joomla 5 as soon as possible.

" +PLG_QUICKICON_EOS="Quick Icon - Joomla 4 End Of Support Notification" +PLG_QUICKICON_EOS_MESSAGE_ERROR_SUPPORT_ENDED="

Support has ended for your version of Joomla 4. Upgrade to Joomla 5 as soon as possible.

" PLG_QUICKICON_EOS_MESSAGE_INFO_01="

Joomla 5 has arrived! Find out all that Joomla 5 has to offer you. Check the landing page for Joomla 5 features and improvements.

" PLG_QUICKICON_EOS_MESSAGE_INFO_02="

When is the time to upgrade to Joomla 5? Once the extensions your site needs are compatible. Learn how to use the Pre-Update Checker.

" -PLG_QUICKICON_EOS_MESSAGE_WARNING_SECURITY_ONLY="

Joomla 4.4 has entered security only mode. Support ends %1$s. Start planning to upgrade to Joomla 5 today.

" -PLG_QUICKICON_EOS_MESSAGE_WARNING_SUPPORT_ENDING="

Support ends on %1$s for Joomla 4.4 Upgrade to Joomla 5 as soon as possible.

" +PLG_QUICKICON_EOS_MESSAGE_WARNING_SECURITY_ONLY="

Joomla 4 has entered security only mode. Support ends %1$s. Start planning to upgrade to Joomla 5 today.

" +PLG_QUICKICON_EOS_MESSAGE_WARNING_SUPPORT_ENDING="

Support ends on %1$s for Joomla 4 Upgrade to Joomla 5 as soon as possible.

" PLG_QUICKICON_EOS_SNOOZE_BUTTON="Snooze this message for all users" -PLG_QUICKICON_EOS_XML_DESCRIPTION="Checks for the end of support status of Joomla 4.4 and notifies you when visiting the Control Panel page." +PLG_QUICKICON_EOS_XML_DESCRIPTION="Checks for the end of support status of Joomla 4 and notifies you when visiting the Control Panel page." diff --git a/administrator/language/en-GB/plg_quickicon_eos.sys.ini b/administrator/language/en-GB/plg_quickicon_eos.sys.ini index 9e3b85198e25a..3658d04c5d156 100644 --- a/administrator/language/en-GB/plg_quickicon_eos.sys.ini +++ b/administrator/language/en-GB/plg_quickicon_eos.sys.ini @@ -3,5 +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 -PLG_QUICKICON_EOS="Quick Icon - Joomla! End Of Support Notification" -PLG_QUICKICON_EOS_XML_DESCRIPTION="Checks for the end of support status of Joomla and places a notification on the Control Panel page." +PLG_QUICKICON_EOS="Quick Icon - Joomla 4 End Of Support Notification" +PLG_QUICKICON_EOS_XML_DESCRIPTION="Checks for the end of support status of Joomla 4 and notifies you when visiting the Control Panel page." From dc855f7f0f330eba5cf6933a60b98089469a9752 Mon Sep 17 00:00:00 2001 From: Fedir Zinchuk Date: Fri, 21 Jul 2023 14:53:10 +0300 Subject: [PATCH 025/126] [5.0] New onAfterInitialiseDocument event (#40512) * Document event: BeforeCompileHeadEvent * Document event: AfterInitialiseDocumentEvent * Document event, phpcs * Document event, revert classes * Document event, cleanup * Document event, AfterInitialiseDocument Event --- .../Application/AdministratorApplication.php | 9 +++++++- libraries/src/Application/ApiApplication.php | 8 ++++++- libraries/src/Application/SiteApplication.php | 9 +++++++- .../AfterInitialiseDocumentEvent.php | 23 +++++++++++++++++++ libraries/src/Exception/ExceptionHandler.php | 10 ++++++++ 5 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 libraries/src/Event/Application/AfterInitialiseDocumentEvent.php diff --git a/libraries/src/Application/AdministratorApplication.php b/libraries/src/Application/AdministratorApplication.php index dc55973faf264..45a9d5ecc6ffa 100644 --- a/libraries/src/Application/AdministratorApplication.php +++ b/libraries/src/Application/AdministratorApplication.php @@ -11,6 +11,7 @@ use Joomla\Application\Web\WebClient; use Joomla\CMS\Component\ComponentHelper; +use Joomla\CMS\Event\Application\AfterInitialiseDocumentEvent; use Joomla\CMS\Factory; use Joomla\CMS\Filter\InputFilter; use Joomla\CMS\Input\Input; @@ -137,11 +138,17 @@ public function dispatch($component = null) $document->setDescription($this->get('MetaDesc')); $document->setGenerator('Joomla! - Open Source Content Management'); + // Trigger the onAfterInitialiseDocument event. + PluginHelper::importPlugin('system', null, true, $this->getDispatcher()); + $this->dispatchEvent( + 'onAfterInitialiseDocument', + new AfterInitialiseDocumentEvent('onAfterInitialiseDocument', ['subject' => $this, 'document' => $document]) + ); + $contents = ComponentHelper::renderComponent($component); $document->setBuffer($contents, ['type' => 'component']); // Trigger the onAfterDispatch event. - PluginHelper::importPlugin('system'); $this->triggerEvent('onAfterDispatch'); } diff --git a/libraries/src/Application/ApiApplication.php b/libraries/src/Application/ApiApplication.php index 6f49d90d8b769..83f2dab317fa3 100644 --- a/libraries/src/Application/ApiApplication.php +++ b/libraries/src/Application/ApiApplication.php @@ -12,6 +12,7 @@ use Joomla\Application\Web\WebClient; use Joomla\CMS\Access\Exception\AuthenticationFailed; use Joomla\CMS\Component\ComponentHelper; +use Joomla\CMS\Event\Application\AfterInitialiseDocumentEvent; use Joomla\CMS\Factory; use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\Router\ApiRouter; @@ -412,11 +413,16 @@ public function dispatch($component = null) // Set up the params $document = Factory::getDocument(); + // Trigger the onAfterInitialiseDocument event. + $this->dispatchEvent( + 'onAfterInitialiseDocument', + new AfterInitialiseDocumentEvent('onAfterInitialiseDocument', ['subject' => $this, 'document' => $document]) + ); + $contents = ComponentHelper::renderComponent($component); $document->setBuffer($contents, ['type' => 'component']); // Trigger the onAfterDispatch event. - PluginHelper::importPlugin('system'); $this->triggerEvent('onAfterDispatch'); } } diff --git a/libraries/src/Application/SiteApplication.php b/libraries/src/Application/SiteApplication.php index c4898a0f1a858..fec7e795894eb 100644 --- a/libraries/src/Application/SiteApplication.php +++ b/libraries/src/Application/SiteApplication.php @@ -13,6 +13,7 @@ use Joomla\CMS\Cache\CacheControllerFactoryAwareTrait; use Joomla\CMS\Cache\Controller\OutputController; use Joomla\CMS\Component\ComponentHelper; +use Joomla\CMS\Event\Application\AfterInitialiseDocumentEvent; use Joomla\CMS\Factory; use Joomla\CMS\Filter\InputFilter; use Joomla\CMS\Input\Input; @@ -205,11 +206,17 @@ public function dispatch($component = null) $document->setGenerator('Joomla! - Open Source Content Management'); } + // Trigger the onAfterInitialiseDocument event. + PluginHelper::importPlugin('system', null, true, $this->getDispatcher()); + $this->dispatchEvent( + 'onAfterInitialiseDocument', + new AfterInitialiseDocumentEvent('onAfterInitialiseDocument', ['subject' => $this, 'document' => $document]) + ); + $contents = ComponentHelper::renderComponent($component); $document->setBuffer($contents, ['type' => 'component']); // Trigger the onAfterDispatch event. - PluginHelper::importPlugin('system'); $this->triggerEvent('onAfterDispatch'); } diff --git a/libraries/src/Event/Application/AfterInitialiseDocumentEvent.php b/libraries/src/Event/Application/AfterInitialiseDocumentEvent.php new file mode 100644 index 0000000000000..44da371c708e8 --- /dev/null +++ b/libraries/src/Event/Application/AfterInitialiseDocumentEvent.php @@ -0,0 +1,23 @@ + + * @license GNU General Public License version 2 or later; see LICENSE + */ + +namespace Joomla\CMS\Event\Application; + +// phpcs:disable PSR1.Files.SideEffects +\defined('JPATH_PLATFORM') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Event class for AfterInitialiseDocument event + * + * @since __DEPLOY_VERSION__ + */ +class AfterInitialiseDocumentEvent extends ApplicationDocumentEvent +{ +} diff --git a/libraries/src/Exception/ExceptionHandler.php b/libraries/src/Exception/ExceptionHandler.php index bcc4003716e52..d9a4c9a12a5bf 100644 --- a/libraries/src/Exception/ExceptionHandler.php +++ b/libraries/src/Exception/ExceptionHandler.php @@ -11,6 +11,7 @@ use Joomla\CMS\Application\CMSApplication; use Joomla\CMS\Error\AbstractRenderer; +use Joomla\CMS\Event\Application\AfterInitialiseDocumentEvent; use Joomla\CMS\Factory; use Joomla\CMS\Log\Log; @@ -118,6 +119,15 @@ public static function render(\Throwable $error) Factory::$document = $renderer->getDocument(); Factory::getApplication()->loadDocument(Factory::$document); + // Trigger the onAfterInitialiseDocument event. + $app->getDispatcher()->dispatch( + 'onAfterInitialiseDocument', + new AfterInitialiseDocumentEvent('onAfterInitialiseDocument', [ + 'subject' => $app, + 'document' => $renderer->getDocument(), + ]) + ); + $data = $renderer->render($error); // If nothing was rendered, just use the message from the Exception From 16e8b59f0bf6e7a534abc7112d8cd9a268b9e9d0 Mon Sep 17 00:00:00 2001 From: Fedir Zinchuk Date: Fri, 21 Jul 2023 15:29:06 +0300 Subject: [PATCH 026/126] [5.0] Application event classes (#40522) * App events: create * App events: base app event * App events: add couple event classes * App events: doc event * App events: organize * App events, couple more events * App events, formatting * App events, more events * App events, doc to app * App events, use same dispatcher * App events, create to new --------- Co-authored-by: Harald Leithner --- .../Application/AdministratorApplication.php | 14 ++- libraries/src/Application/ApiApplication.php | 22 +++- libraries/src/Application/CMSApplication.php | 61 +++++++--- libraries/src/Application/CliApplication.php | 12 +- .../src/Application/ConsoleApplication.php | 4 +- .../src/Application/DaemonApplication.php | 27 ++++- libraries/src/Application/SiteApplication.php | 14 ++- libraries/src/Application/WebApplication.php | 36 +++++- .../Document/Renderer/Html/MetasRenderer.php | 6 +- libraries/src/Event/AbstractEvent.php | 37 +++--- .../Event/Application/AfterApiRouteEvent.php | 23 ++++ .../Event/Application/AfterCompressEvent.php | 23 ++++ .../Event/Application/AfterDispatchEvent.php | 23 ++++ .../Event/Application/AfterExecuteEvent.php | 23 ++++ .../Application/AfterInitialiseEvent.php | 23 ++++ .../Event/Application/AfterRenderEvent.php | 23 ++++ .../Event/Application/AfterRespondEvent.php | 23 ++++ .../src/Event/Application/AfterRouteEvent.php | 23 ++++ .../Application/ApplicationDocumentEvent.php | 69 +++++++++++ .../Event/Application/ApplicationEvent.php | 70 +++++++++++ .../Event/Application/BeforeApiRouteEvent.php | 69 +++++++++++ .../Application/BeforeCompileHeadEvent.php | 24 ++++ .../Event/Application/BeforeExecuteEvent.php | 36 ++++++ .../Event/Application/BeforeRenderEvent.php | 23 ++++ .../Event/Application/BeforeRespondEvent.php | 23 ++++ .../src/Event/Application/DeamonForkEvent.php | 23 ++++ .../Application/DeamonReceiveSignalEvent.php | 67 +++++++++++ libraries/src/Event/CoreEventAware.php | 112 ++++++++---------- plugins/system/cache/src/Extension/Cache.php | 8 +- 29 files changed, 815 insertions(+), 126 deletions(-) create mode 100644 libraries/src/Event/Application/AfterApiRouteEvent.php create mode 100644 libraries/src/Event/Application/AfterCompressEvent.php create mode 100644 libraries/src/Event/Application/AfterDispatchEvent.php create mode 100644 libraries/src/Event/Application/AfterExecuteEvent.php create mode 100644 libraries/src/Event/Application/AfterInitialiseEvent.php create mode 100644 libraries/src/Event/Application/AfterRenderEvent.php create mode 100644 libraries/src/Event/Application/AfterRespondEvent.php create mode 100644 libraries/src/Event/Application/AfterRouteEvent.php create mode 100644 libraries/src/Event/Application/ApplicationDocumentEvent.php create mode 100644 libraries/src/Event/Application/ApplicationEvent.php create mode 100644 libraries/src/Event/Application/BeforeApiRouteEvent.php create mode 100644 libraries/src/Event/Application/BeforeCompileHeadEvent.php create mode 100644 libraries/src/Event/Application/BeforeExecuteEvent.php create mode 100644 libraries/src/Event/Application/BeforeRenderEvent.php create mode 100644 libraries/src/Event/Application/BeforeRespondEvent.php create mode 100644 libraries/src/Event/Application/DeamonForkEvent.php create mode 100644 libraries/src/Event/Application/DeamonReceiveSignalEvent.php diff --git a/libraries/src/Application/AdministratorApplication.php b/libraries/src/Application/AdministratorApplication.php index 45a9d5ecc6ffa..a40fc7fc35955 100644 --- a/libraries/src/Application/AdministratorApplication.php +++ b/libraries/src/Application/AdministratorApplication.php @@ -11,7 +11,9 @@ use Joomla\Application\Web\WebClient; use Joomla\CMS\Component\ComponentHelper; +use Joomla\CMS\Event\Application\AfterDispatchEvent; use Joomla\CMS\Event\Application\AfterInitialiseDocumentEvent; +use Joomla\CMS\Event\Application\AfterRouteEvent; use Joomla\CMS\Factory; use Joomla\CMS\Filter\InputFilter; use Joomla\CMS\Input\Input; @@ -149,7 +151,10 @@ public function dispatch($component = null) $document->setBuffer($contents, ['type' => 'component']); // Trigger the onAfterDispatch event. - $this->triggerEvent('onAfterDispatch'); + $this->dispatchEvent( + 'onAfterDispatch', + new AfterDispatchEvent('onAfterDispatch', ['subject' => $this]) + ); } /** @@ -454,8 +459,11 @@ protected function route() $this->isHandlingMultiFactorAuthentication(); // Trigger the onAfterRoute event. - PluginHelper::importPlugin('system'); - $this->triggerEvent('onAfterRoute'); + PluginHelper::importPlugin('system', null, true, $this->getDispatcher()); + $this->dispatchEvent( + 'onAfterRoute', + new AfterRouteEvent('onAfterRoute', ['subject' => $this]) + ); } /** diff --git a/libraries/src/Application/ApiApplication.php b/libraries/src/Application/ApiApplication.php index 83f2dab317fa3..b0fd0b419a0c2 100644 --- a/libraries/src/Application/ApiApplication.php +++ b/libraries/src/Application/ApiApplication.php @@ -12,7 +12,10 @@ use Joomla\Application\Web\WebClient; use Joomla\CMS\Access\Exception\AuthenticationFailed; use Joomla\CMS\Component\ComponentHelper; +use Joomla\CMS\Event\Application\AfterApiRouteEvent; use Joomla\CMS\Event\Application\AfterInitialiseDocumentEvent; +use Joomla\CMS\Event\Application\AfterDispatchEvent; +use Joomla\CMS\Event\Application\BeforeApiRouteEvent; use Joomla\CMS\Factory; use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\Router\ApiRouter; @@ -228,8 +231,12 @@ protected function route() $router = $this->getContainer()->get(ApiRouter::class); // Trigger the onBeforeApiRoute event. - PluginHelper::importPlugin('webservices'); - $this->triggerEvent('onBeforeApiRoute', [&$router, $this]); + PluginHelper::importPlugin('webservices', null, true, $this->getDispatcher()); + $this->dispatchEvent( + 'onBeforeApiRoute', + new BeforeApiRouteEvent('onBeforeApiRoute', ['router' => $router, 'subject' => $this]) + ); + $caught404 = false; $method = $this->input->getMethod(); @@ -300,7 +307,10 @@ protected function route() } } - $this->triggerEvent('onAfterApiRoute', [$this]); + $this->dispatchEvent( + 'onAfterApiRoute', + new AfterApiRouteEvent('onAfterApiRoute', ['subject' => $this]) + ); if (!isset($route['vars']['public']) || $route['vars']['public'] === false) { if (!$this->login(['username' => ''], ['silent' => true, 'action' => 'core.login.api'])) { @@ -414,6 +424,7 @@ public function dispatch($component = null) $document = Factory::getDocument(); // Trigger the onAfterInitialiseDocument event. + PluginHelper::importPlugin('system', null, true, $this->getDispatcher()); $this->dispatchEvent( 'onAfterInitialiseDocument', new AfterInitialiseDocumentEvent('onAfterInitialiseDocument', ['subject' => $this, 'document' => $document]) @@ -423,6 +434,9 @@ public function dispatch($component = null) $document->setBuffer($contents, ['type' => 'component']); // Trigger the onAfterDispatch event. - $this->triggerEvent('onAfterDispatch'); + $this->dispatchEvent( + 'onAfterDispatch', + new AfterDispatchEvent('onAfterDispatch', ['subject' => $this]) + ); } } diff --git a/libraries/src/Application/CMSApplication.php b/libraries/src/Application/CMSApplication.php index 1ba20bbf70c72..aae85ccb8eb86 100644 --- a/libraries/src/Application/CMSApplication.php +++ b/libraries/src/Application/CMSApplication.php @@ -12,7 +12,13 @@ use Joomla\Application\SessionAwareWebApplicationTrait; use Joomla\Application\Web\WebClient; use Joomla\CMS\Authentication\Authentication; -use Joomla\CMS\Event\AbstractEvent; +use Joomla\CMS\Event\Application\AfterCompressEvent; +use Joomla\CMS\Event\Application\AfterInitialiseEvent; +use Joomla\CMS\Event\Application\AfterRenderEvent; +use Joomla\CMS\Event\Application\AfterRespondEvent; +use Joomla\CMS\Event\Application\AfterRouteEvent; +use Joomla\CMS\Event\Application\BeforeRenderEvent; +use Joomla\CMS\Event\Application\BeforeRespondEvent; use Joomla\CMS\Event\ErrorEvent; use Joomla\CMS\Exception\ExceptionHandler; use Joomla\CMS\Extension\ExtensionManagerTrait; @@ -303,33 +309,40 @@ public function execute() $this->compress(); // Trigger the onAfterCompress event. - $this->triggerEvent('onAfterCompress'); + $this->dispatchEvent( + 'onAfterCompress', + new AfterCompressEvent('onAfterCompress', ['subject' => $this]) + ); } } catch (\Throwable $throwable) { - /** @var ErrorEvent $event */ - $event = AbstractEvent::create( + $event = new ErrorEvent( 'onError', [ 'subject' => $throwable, - 'eventClass' => ErrorEvent::class, 'application' => $this, ] ); // Trigger the onError event. - $this->triggerEvent('onError', $event); + $this->dispatchEvent('onError', $event); ExceptionHandler::handleException($event->getError()); } // Trigger the onBeforeRespond event. - $this->getDispatcher()->dispatch('onBeforeRespond'); + $this->dispatchEvent( + 'onBeforeRespond', + new BeforeRespondEvent('onBeforeRespond', ['subject' => $this]) + ); // Send the application response. $this->respond(); // Trigger the onAfterRespond event. - $this->getDispatcher()->dispatch('onAfterRespond'); + $this->dispatchEvent( + 'onAfterRespond', + new AfterRespondEvent('onAfterRespond', ['subject' => $this]) + ); } /** @@ -738,11 +751,14 @@ protected function initialiseApp($options = []) $this->set('editor', $editor); // Load the behaviour plugins - PluginHelper::importPlugin('behaviour'); + PluginHelper::importPlugin('behaviour', null, true, $this->getDispatcher()); // Trigger the onAfterInitialise event. - PluginHelper::importPlugin('system'); - $this->triggerEvent('onAfterInitialise'); + PluginHelper::importPlugin('system', null, true, $this->getDispatcher()); + $this->dispatchEvent( + 'onAfterInitialise', + new AfterInitialiseEvent('onAfterInitialise', ['subject' => $this]) + ); } /** @@ -822,7 +838,7 @@ public function login($credentials, $options = []) $response = $authenticate->authenticate($credentials, $options); // Import the user plugin group. - PluginHelper::importPlugin('user'); + PluginHelper::importPlugin('user', null, true, $this->getDispatcher()); if ($response->status === Authentication::STATUS_SUCCESS) { /* @@ -939,7 +955,7 @@ public function logout($userid = null, $options = []) } // Import the user plugin group. - PluginHelper::importPlugin('user'); + PluginHelper::importPlugin('user', null, true, $this->getDispatcher()); // OK, the credentials are built. Lets fire the onLogout event. $results = $this->triggerEvent('onUserLogout', [$parameters, $options]); @@ -1012,8 +1028,11 @@ protected function render() $this->document->parse($this->docOptions); // Trigger the onBeforeRender event. - PluginHelper::importPlugin('system'); - $this->triggerEvent('onBeforeRender'); + PluginHelper::importPlugin('system', null, true, $this->getDispatcher()); + $this->dispatchEvent( + 'onBeforeRender', + new BeforeRenderEvent('onBeforeRender', ['subject' => $this]) + ); $caching = false; @@ -1028,7 +1047,10 @@ protected function render() $this->setBody($data); // Trigger the onAfterRender event. - $this->triggerEvent('onAfterRender'); + $this->dispatchEvent( + 'onAfterRender', + new AfterRenderEvent('onAfterRender', ['subject' => $this]) + ); // Mark afterRender in the profiler. JDEBUG ? $this->profiler->mark('afterRender') : null; @@ -1098,8 +1120,11 @@ protected function route() } // Trigger the onAfterRoute event. - PluginHelper::importPlugin('system'); - $this->triggerEvent('onAfterRoute'); + PluginHelper::importPlugin('system', null, true, $this->getDispatcher()); + $this->dispatchEvent( + 'onAfterRoute', + new AfterRouteEvent('onAfterRoute', ['subject' => $this]) + ); } /** diff --git a/libraries/src/Application/CliApplication.php b/libraries/src/Application/CliApplication.php index 43d3ab2823ea2..dfe6d2512b561 100644 --- a/libraries/src/Application/CliApplication.php +++ b/libraries/src/Application/CliApplication.php @@ -13,6 +13,8 @@ use Joomla\CMS\Application\CLI\CliInput; use Joomla\CMS\Application\CLI\CliOutput; use Joomla\CMS\Application\CLI\Output\Stdout; +use Joomla\CMS\Event\Application\AfterExecuteEvent; +use Joomla\CMS\Event\Application\BeforeExecuteEvent; use Joomla\CMS\Extension\ExtensionManagerTrait; use Joomla\CMS\Factory; use Joomla\CMS\Language\Language; @@ -257,13 +259,19 @@ public function execute() $this->createExtensionNamespaceMap(); // Trigger the onBeforeExecute event - $this->triggerEvent('onBeforeExecute'); + $this->dispatchEvent( + 'onBeforeExecute', + new BeforeExecuteEvent('onBeforeExecute', ['subject' => $this, 'container' => $this->getContainer()]) + ); // Perform application routines. $this->doExecute(); // Trigger the onAfterExecute event. - $this->triggerEvent('onAfterExecute'); + $this->dispatchEvent( + 'onAfterExecute', + new AfterExecuteEvent('onAfterExecute', ['subject' => $this]) + ); } /** diff --git a/libraries/src/Application/ConsoleApplication.php b/libraries/src/Application/ConsoleApplication.php index 2aea95699ec39..6f836a04b0ba9 100644 --- a/libraries/src/Application/ConsoleApplication.php +++ b/libraries/src/Application/ConsoleApplication.php @@ -252,8 +252,8 @@ public function execute() $this->populateHttpHost(); // Import CMS plugin groups to be able to subscribe to events - PluginHelper::importPlugin('system'); - PluginHelper::importPlugin('console'); + PluginHelper::importPlugin('system', null, true, $this->getDispatcher()); + PluginHelper::importPlugin('console', null, true, $this->getDispatcher()); parent::execute(); } diff --git a/libraries/src/Application/DaemonApplication.php b/libraries/src/Application/DaemonApplication.php index 007257e9f81b1..a50cf3b45bdbe 100644 --- a/libraries/src/Application/DaemonApplication.php +++ b/libraries/src/Application/DaemonApplication.php @@ -9,6 +9,10 @@ namespace Joomla\CMS\Application; +use Joomla\CMS\Event\Application\AfterExecuteEvent; +use Joomla\CMS\Event\Application\BeforeExecuteEvent; +use Joomla\CMS\Event\Application\DeamonForkEvent; +use Joomla\CMS\Event\Application\DeamonReceiveSignalEvent; use Joomla\CMS\Filesystem\Folder; use Joomla\CMS\Input\Cli; use Joomla\CMS\Log\Log; @@ -163,7 +167,13 @@ public static function signal($signal) } // Fire the onReceiveSignal event. - static::$instance->triggerEvent('onReceiveSignal', [$signal]); + static::$instance->getDispatcher()->dispatch( + 'onReceiveSignal', + new DeamonReceiveSignalEvent('onReceiveSignal', [ + 'signal' => $signal, + 'subject' => static::$instance, + ]) + ); switch ($signal) { case SIGINT: @@ -345,7 +355,10 @@ public function loadConfiguration($data) public function execute() { // Trigger the onBeforeExecute event - $this->triggerEvent('onBeforeExecute'); + $this->dispatchEvent( + 'onBeforeExecute', + new BeforeExecuteEvent('onBeforeExecute', ['subject' => $this, 'container' => $this->getContainer()]) + ); // Enable basic garbage collection. gc_enable(); @@ -375,7 +388,10 @@ public function execute() } // Trigger the onAfterExecute event. - $this->triggerEvent('onAfterExecute'); + $this->dispatchEvent( + 'onAfterExecute', + new AfterExecuteEvent('onAfterExecute', ['subject' => $this]) + ); } /** @@ -768,7 +784,10 @@ protected function writeProcessIdFile() protected function postFork() { // Trigger the onFork event. - $this->triggerEvent('onFork'); + $this->dispatchEvent( + 'onFork', + new DeamonForkEvent('onFork', ['subject' => $this]) + ); } /** diff --git a/libraries/src/Application/SiteApplication.php b/libraries/src/Application/SiteApplication.php index fec7e795894eb..03d95d8e81cf9 100644 --- a/libraries/src/Application/SiteApplication.php +++ b/libraries/src/Application/SiteApplication.php @@ -13,7 +13,9 @@ use Joomla\CMS\Cache\CacheControllerFactoryAwareTrait; use Joomla\CMS\Cache\Controller\OutputController; use Joomla\CMS\Component\ComponentHelper; +use Joomla\CMS\Event\Application\AfterDispatchEvent; use Joomla\CMS\Event\Application\AfterInitialiseDocumentEvent; +use Joomla\CMS\Event\Application\AfterRouteEvent; use Joomla\CMS\Factory; use Joomla\CMS\Filter\InputFilter; use Joomla\CMS\Input\Input; @@ -217,7 +219,10 @@ public function dispatch($component = null) $document->setBuffer($contents, ['type' => 'component']); // Trigger the onAfterDispatch event. - $this->triggerEvent('onAfterDispatch'); + $this->dispatchEvent( + 'onAfterDispatch', + new AfterDispatchEvent('onAfterDispatch', ['subject' => $this]) + ); } /** @@ -793,8 +798,11 @@ protected function route() } // Trigger the onAfterRoute event. - PluginHelper::importPlugin('system'); - $this->triggerEvent('onAfterRoute'); + PluginHelper::importPlugin('system', null, true, $this->getDispatcher()); + $this->dispatchEvent( + 'onAfterRoute', + new AfterRouteEvent('onAfterRoute', ['subject' => $this]) + ); $Itemid = $this->input->getInt('Itemid', null); $this->authorise($Itemid); diff --git a/libraries/src/Application/WebApplication.php b/libraries/src/Application/WebApplication.php index f69b5261cacf8..2103970c4ff9c 100644 --- a/libraries/src/Application/WebApplication.php +++ b/libraries/src/Application/WebApplication.php @@ -12,6 +12,12 @@ use Joomla\Application\AbstractWebApplication; use Joomla\Application\Web\WebClient; use Joomla\CMS\Document\Document; +use Joomla\CMS\Event\Application\AfterExecuteEvent; +use Joomla\CMS\Event\Application\AfterRenderEvent; +use Joomla\CMS\Event\Application\AfterRespondEvent; +use Joomla\CMS\Event\Application\BeforeExecuteEvent; +use Joomla\CMS\Event\Application\BeforeRenderEvent; +use Joomla\CMS\Event\Application\BeforeRespondEvent; use Joomla\CMS\Factory; use Joomla\CMS\Input\Input; use Joomla\CMS\Language\Language; @@ -154,24 +160,36 @@ public static function getInstance($name = null) public function execute() { // Trigger the onBeforeExecute event. - $this->triggerEvent('onBeforeExecute'); + $this->dispatchEvent( + 'onBeforeExecute', + new BeforeExecuteEvent('onBeforeExecute', ['subject' => $this]) + ); // Perform application routines. $this->doExecute(); // Trigger the onAfterExecute event. - $this->triggerEvent('onAfterExecute'); + $this->dispatchEvent( + 'onAfterExecute', + new AfterExecuteEvent('onAfterExecute', ['subject' => $this]) + ); // If we have an application document object, render it. if ($this->document instanceof Document) { // Trigger the onBeforeRender event. - $this->triggerEvent('onBeforeRender'); + $this->dispatchEvent( + 'onBeforeRender', + new BeforeRenderEvent('onBeforeRender', ['subject' => $this]) + ); // Render the application output. $this->render(); // Trigger the onAfterRender event. - $this->triggerEvent('onAfterRender'); + $this->dispatchEvent( + 'onAfterRender', + new AfterRenderEvent('onAfterRender', ['subject' => $this]) + ); } // If gzip compression is enabled in configuration and the server is compliant, compress the output. @@ -180,13 +198,19 @@ public function execute() } // Trigger the onBeforeRespond event. - $this->triggerEvent('onBeforeRespond'); + $this->dispatchEvent( + 'onBeforeRespond', + new BeforeRespondEvent('onBeforeRespond', ['subject' => $this]) + ); // Send the application response. $this->respond(); // Trigger the onAfterRespond event. - $this->triggerEvent('onAfterRespond'); + $this->dispatchEvent( + 'onAfterRespond', + new AfterRespondEvent('onAfterRespond', ['subject' => $this]) + ); } /** diff --git a/libraries/src/Document/Renderer/Html/MetasRenderer.php b/libraries/src/Document/Renderer/Html/MetasRenderer.php index 6c8b2d2175356..3b4ed61d3537e 100644 --- a/libraries/src/Document/Renderer/Html/MetasRenderer.php +++ b/libraries/src/Document/Renderer/Html/MetasRenderer.php @@ -10,6 +10,7 @@ namespace Joomla\CMS\Document\Renderer\Html; use Joomla\CMS\Document\DocumentRenderer; +use Joomla\CMS\Event\Application\BeforeCompileHeadEvent; use Joomla\CMS\Factory; use Joomla\CMS\Helper\TagsHelper; use Joomla\CMS\Uri\Uri; @@ -58,7 +59,10 @@ public function render($head, $params = [], $content = null) } // Trigger the onBeforeCompileHead event - $app->triggerEvent('onBeforeCompileHead'); + $app->getDispatcher()->dispatch( + 'onBeforeCompileHead', + new BeforeCompileHeadEvent('onBeforeCompileHead', ['subject' => $app, 'document' => $this->_doc]) + ); // Add Script Options as inline asset $scriptOptions = $this->_doc->getScriptOptions(); diff --git a/libraries/src/Event/AbstractEvent.php b/libraries/src/Event/AbstractEvent.php index 40060b4ce8237..8177d1cadd94c 100644 --- a/libraries/src/Event/AbstractEvent.php +++ b/libraries/src/Event/AbstractEvent.php @@ -10,7 +10,6 @@ namespace Joomla\CMS\Event; use Joomla\Event\Event; -use Joomla\Event\Event as BaseEvent; use Joomla\String\Normalise; // phpcs:disable PSR1.Files.SideEffects @@ -37,7 +36,7 @@ * * @since 4.0.0 */ -abstract class AbstractEvent extends BaseEvent +abstract class AbstractEvent extends Event { use CoreEventAware; @@ -57,6 +56,11 @@ abstract class AbstractEvent extends BaseEvent */ public static function create(string $eventName, array $arguments = []) { + // Make sure a non-empty subject argument exists and that it is an object + if (empty($arguments['subject']) || !\is_object($arguments['subject'])) { + throw new \BadMethodCallException("No subject given for the $eventName event"); + } + // Get the class name from the arguments, if specified $eventClassName = ''; @@ -66,11 +70,20 @@ public static function create(string $eventName, array $arguments = []) unset($arguments['eventClass']); } + if (!$eventClassName) { + // Look for known class name. + $eventClassName = self::getEventClassByEventName($eventName); + + if ($eventClassName === Event::class) { + $eventClassName = ''; + } + } + /** - * If the class name isn't set/found determine it from the event name, e.g. TableBeforeLoadEvent from + * If the class name isn't set/found determine it from the event name, e.g. Table\BeforeLoadEvent from * the onTableBeforeLoad event name. */ - if (empty($eventClassName) || !class_exists($eventClassName, true)) { + if (!$eventClassName || !class_exists($eventClassName, true)) { $bareName = strpos($eventName, 'on') === 0 ? substr($eventName, 2) : $eventName; $parts = Normalise::fromCamelCase($bareName, true); $eventClassName = __NAMESPACE__ . '\\' . ucfirst(array_shift($parts)) . '\\'; @@ -78,27 +91,11 @@ public static function create(string $eventName, array $arguments = []) $eventClassName .= 'Event'; } - // Make sure a non-empty subject argument exists and that it is an object - if (!isset($arguments['subject']) || empty($arguments['subject']) || !\is_object($arguments['subject'])) { - throw new \BadMethodCallException("No subject given for the $eventName event"); - } - // Create and return the event object if (class_exists($eventClassName, true)) { return new $eventClassName($eventName, $arguments); } - /** - * The detection code above failed. This is to be expected, it was written back when we only - * had the Table events. It does not address most other core events. So, let's use our - * fancier detection instead. - */ - $eventClassName = self::getEventClassByEventName($eventName); - - if (!empty($eventClassName) && ($eventClassName !== Event::class)) { - return new $eventClassName($eventName, $arguments); - } - return new GenericEvent($eventName, $arguments); } diff --git a/libraries/src/Event/Application/AfterApiRouteEvent.php b/libraries/src/Event/Application/AfterApiRouteEvent.php new file mode 100644 index 0000000000000..81e8d0576d3f9 --- /dev/null +++ b/libraries/src/Event/Application/AfterApiRouteEvent.php @@ -0,0 +1,23 @@ + + * @license GNU General Public License version 2 or later; see LICENSE + */ + +namespace Joomla\CMS\Event\Application; + +// phpcs:disable PSR1.Files.SideEffects +\defined('JPATH_PLATFORM') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Class for AfterApiRoute event + * + * @since __DEPLOY_VERSION__ + */ +class AfterApiRouteEvent extends ApplicationEvent +{ +} diff --git a/libraries/src/Event/Application/AfterCompressEvent.php b/libraries/src/Event/Application/AfterCompressEvent.php new file mode 100644 index 0000000000000..a17801847efc4 --- /dev/null +++ b/libraries/src/Event/Application/AfterCompressEvent.php @@ -0,0 +1,23 @@ + + * @license GNU General Public License version 2 or later; see LICENSE + */ + +namespace Joomla\CMS\Event\Application; + +// phpcs:disable PSR1.Files.SideEffects +\defined('JPATH_PLATFORM') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Class for AfterCompress event + * + * @since __DEPLOY_VERSION__ + */ +class AfterCompressEvent extends ApplicationEvent +{ +} diff --git a/libraries/src/Event/Application/AfterDispatchEvent.php b/libraries/src/Event/Application/AfterDispatchEvent.php new file mode 100644 index 0000000000000..2fe9f84b38efe --- /dev/null +++ b/libraries/src/Event/Application/AfterDispatchEvent.php @@ -0,0 +1,23 @@ + + * @license GNU General Public License version 2 or later; see LICENSE + */ + +namespace Joomla\CMS\Event\Application; + +// phpcs:disable PSR1.Files.SideEffects +\defined('JPATH_PLATFORM') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Class for AfterDispatch event + * + * @since __DEPLOY_VERSION__ + */ +class AfterDispatchEvent extends ApplicationEvent +{ +} diff --git a/libraries/src/Event/Application/AfterExecuteEvent.php b/libraries/src/Event/Application/AfterExecuteEvent.php new file mode 100644 index 0000000000000..0fbdee994e645 --- /dev/null +++ b/libraries/src/Event/Application/AfterExecuteEvent.php @@ -0,0 +1,23 @@ + + * @license GNU General Public License version 2 or later; see LICENSE + */ + +namespace Joomla\CMS\Event\Application; + +// phpcs:disable PSR1.Files.SideEffects +\defined('JPATH_PLATFORM') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Class for AfterExecute event + * + * @since __DEPLOY_VERSION__ + */ +class AfterExecuteEvent extends ApplicationEvent +{ +} diff --git a/libraries/src/Event/Application/AfterInitialiseEvent.php b/libraries/src/Event/Application/AfterInitialiseEvent.php new file mode 100644 index 0000000000000..0fd8d86a08717 --- /dev/null +++ b/libraries/src/Event/Application/AfterInitialiseEvent.php @@ -0,0 +1,23 @@ + + * @license GNU General Public License version 2 or later; see LICENSE + */ + +namespace Joomla\CMS\Event\Application; + +// phpcs:disable PSR1.Files.SideEffects +\defined('JPATH_PLATFORM') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Class for AfterInitialise event + * + * @since __DEPLOY_VERSION__ + */ +class AfterInitialiseEvent extends ApplicationEvent +{ +} diff --git a/libraries/src/Event/Application/AfterRenderEvent.php b/libraries/src/Event/Application/AfterRenderEvent.php new file mode 100644 index 0000000000000..15d2aaa9bc1a7 --- /dev/null +++ b/libraries/src/Event/Application/AfterRenderEvent.php @@ -0,0 +1,23 @@ + + * @license GNU General Public License version 2 or later; see LICENSE + */ + +namespace Joomla\CMS\Event\Application; + +// phpcs:disable PSR1.Files.SideEffects +\defined('JPATH_PLATFORM') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Class for AfterRender event + * + * @since __DEPLOY_VERSION__ + */ +class AfterRenderEvent extends ApplicationEvent +{ +} diff --git a/libraries/src/Event/Application/AfterRespondEvent.php b/libraries/src/Event/Application/AfterRespondEvent.php new file mode 100644 index 0000000000000..ea00ae648b2c3 --- /dev/null +++ b/libraries/src/Event/Application/AfterRespondEvent.php @@ -0,0 +1,23 @@ + + * @license GNU General Public License version 2 or later; see LICENSE + */ + +namespace Joomla\CMS\Event\Application; + +// phpcs:disable PSR1.Files.SideEffects +\defined('JPATH_PLATFORM') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Class for AfterRespond event + * + * @since __DEPLOY_VERSION__ + */ +class AfterRespondEvent extends ApplicationEvent +{ +} diff --git a/libraries/src/Event/Application/AfterRouteEvent.php b/libraries/src/Event/Application/AfterRouteEvent.php new file mode 100644 index 0000000000000..4e5e3fed535c1 --- /dev/null +++ b/libraries/src/Event/Application/AfterRouteEvent.php @@ -0,0 +1,23 @@ + + * @license GNU General Public License version 2 or later; see LICENSE + */ + +namespace Joomla\CMS\Event\Application; + +// phpcs:disable PSR1.Files.SideEffects +\defined('JPATH_PLATFORM') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Class for AfterRoute event + * + * @since __DEPLOY_VERSION__ + */ +class AfterRouteEvent extends ApplicationEvent +{ +} diff --git a/libraries/src/Event/Application/ApplicationDocumentEvent.php b/libraries/src/Event/Application/ApplicationDocumentEvent.php new file mode 100644 index 0000000000000..31599c1545025 --- /dev/null +++ b/libraries/src/Event/Application/ApplicationDocumentEvent.php @@ -0,0 +1,69 @@ + + * @license GNU General Public License version 2 or later; see LICENSE + */ + +namespace Joomla\CMS\Event\Application; + +use Joomla\CMS\Document\Document; + +// phpcs:disable PSR1.Files.SideEffects +\defined('JPATH_PLATFORM') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Class for Application's Document events + * + * @since __DEPLOY_VERSION__ + */ +abstract class ApplicationDocumentEvent extends ApplicationEvent +{ + /** + * Constructor. + * + * @param string $name The event name. + * @param array $arguments The event arguments. + * + * @throws \BadMethodCallException + * + * @since __DEPLOY_VERSION__ + */ + public function __construct($name, array $arguments = []) + { + if (!\array_key_exists('document', $arguments)) { + throw new \BadMethodCallException("Argument 'document' of event {$name} is required but has not been provided"); + } + + parent::__construct($name, $arguments); + } + + /** + * Setter for the document argument. + * + * @param Document $value The value to set + * + * @return Document + * + * @since __DEPLOY_VERSION__ + */ + protected function setDocument(Document $value): Document + { + return $value; + } + + /** + * Get the event's document object + * + * @return Document + * + * @since __DEPLOY_VERSION__ + */ + public function getDocument(): Document + { + return $this->arguments['document']; + } +} diff --git a/libraries/src/Event/Application/ApplicationEvent.php b/libraries/src/Event/Application/ApplicationEvent.php new file mode 100644 index 0000000000000..ea000282df276 --- /dev/null +++ b/libraries/src/Event/Application/ApplicationEvent.php @@ -0,0 +1,70 @@ + + * @license GNU General Public License version 2 or later; see LICENSE + */ + +namespace Joomla\CMS\Event\Application; + +use Joomla\Application\AbstractApplication; +use Joomla\CMS\Event\AbstractImmutableEvent; + +// phpcs:disable PSR1.Files.SideEffects +\defined('JPATH_PLATFORM') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Class for Application events + * + * @since __DEPLOY_VERSION__ + */ +abstract class ApplicationEvent extends AbstractImmutableEvent +{ + /** + * Constructor. + * + * @param string $name The event name. + * @param array $arguments The event arguments. + * + * @throws \BadMethodCallException + * + * @since __DEPLOY_VERSION__ + */ + public function __construct($name, array $arguments = []) + { + if (!\array_key_exists('subject', $arguments)) { + throw new \BadMethodCallException("Argument 'subject' of event {$name} is required but has not been provided"); + } + + parent::__construct($name, $arguments); + } + + /** + * Setter for the subject argument. + * + * @param AbstractApplication $value The value to set + * + * @return AbstractApplication + * + * @since __DEPLOY_VERSION__ + */ + final protected function setSubject(AbstractApplication $value): AbstractApplication + { + return $value; + } + + /** + * Get the event's application object + * + * @return AbstractApplication + * + * @since __DEPLOY_VERSION__ + */ + final public function getApplication(): AbstractApplication + { + return $this->getArgument('subject'); + } +} diff --git a/libraries/src/Event/Application/BeforeApiRouteEvent.php b/libraries/src/Event/Application/BeforeApiRouteEvent.php new file mode 100644 index 0000000000000..c2e6811b1ccb9 --- /dev/null +++ b/libraries/src/Event/Application/BeforeApiRouteEvent.php @@ -0,0 +1,69 @@ + + * @license GNU General Public License version 2 or later; see LICENSE + */ + +namespace Joomla\CMS\Event\Application; + +use Joomla\CMS\Router\ApiRouter; + +// phpcs:disable PSR1.Files.SideEffects +\defined('JPATH_PLATFORM') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Class for BeforeApiRoute event + * + * @since __DEPLOY_VERSION__ + */ +class BeforeApiRouteEvent extends ApplicationEvent +{ + /** + * Constructor. + * + * @param string $name The event name. + * @param array $arguments The event arguments. + * + * @throws \BadMethodCallException + * + * @since __DEPLOY_VERSION__ + */ + public function __construct($name, array $arguments = []) + { + if (!\array_key_exists('router', $arguments)) { + throw new \BadMethodCallException("Argument 'router' of event {$name} is required but has not been provided"); + } + + parent::__construct($name, $arguments); + } + + /** + * Setter for the router argument. + * + * @param ApiRouter $value The value to set + * + * @return ApiRouter + * + * @since __DEPLOY_VERSION__ + */ + protected function setRouter(ApiRouter $value): ApiRouter + { + return $value; + } + + /** + * Get the event's document object + * + * @return ApiRouter + * + * @since __DEPLOY_VERSION__ + */ + public function getRouter(): ApiRouter + { + return $this->arguments['router']; + } +} diff --git a/libraries/src/Event/Application/BeforeCompileHeadEvent.php b/libraries/src/Event/Application/BeforeCompileHeadEvent.php new file mode 100644 index 0000000000000..857c892a5708c --- /dev/null +++ b/libraries/src/Event/Application/BeforeCompileHeadEvent.php @@ -0,0 +1,24 @@ + + * @license GNU General Public License version 2 or later; see LICENSE + */ + +namespace Joomla\CMS\Event\Application; + +// phpcs:disable PSR1.Files.SideEffects + +\defined('JPATH_PLATFORM') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Class for BeforeCompileHead event + * + * @since __DEPLOY_VERSION__ + */ +class BeforeCompileHeadEvent extends ApplicationDocumentEvent +{ +} diff --git a/libraries/src/Event/Application/BeforeExecuteEvent.php b/libraries/src/Event/Application/BeforeExecuteEvent.php new file mode 100644 index 0000000000000..78df637194b60 --- /dev/null +++ b/libraries/src/Event/Application/BeforeExecuteEvent.php @@ -0,0 +1,36 @@ + + * @license GNU General Public License version 2 or later; see LICENSE + */ + +namespace Joomla\CMS\Event\Application; + +use Joomla\DI\Container; + +// phpcs:disable PSR1.Files.SideEffects +\defined('JPATH_PLATFORM') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Class for BeforeExecute event + * + * @since __DEPLOY_VERSION__ + */ +class BeforeExecuteEvent extends ApplicationEvent +{ + /** + * Get the event's container object + * + * @return ?Container + * + * @since __DEPLOY_VERSION__ + */ + public function getContainer(): ?Container + { + return $this->arguments['container'] ?? null; + } +} diff --git a/libraries/src/Event/Application/BeforeRenderEvent.php b/libraries/src/Event/Application/BeforeRenderEvent.php new file mode 100644 index 0000000000000..523af7518aca9 --- /dev/null +++ b/libraries/src/Event/Application/BeforeRenderEvent.php @@ -0,0 +1,23 @@ + + * @license GNU General Public License version 2 or later; see LICENSE + */ + +namespace Joomla\CMS\Event\Application; + +// phpcs:disable PSR1.Files.SideEffects +\defined('JPATH_PLATFORM') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Class for BeforeRender event + * + * @since __DEPLOY_VERSION__ + */ +class BeforeRenderEvent extends ApplicationEvent +{ +} diff --git a/libraries/src/Event/Application/BeforeRespondEvent.php b/libraries/src/Event/Application/BeforeRespondEvent.php new file mode 100644 index 0000000000000..35465b2a398a8 --- /dev/null +++ b/libraries/src/Event/Application/BeforeRespondEvent.php @@ -0,0 +1,23 @@ + + * @license GNU General Public License version 2 or later; see LICENSE + */ + +namespace Joomla\CMS\Event\Application; + +// phpcs:disable PSR1.Files.SideEffects +\defined('JPATH_PLATFORM') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Class for BeforeRespond event + * + * @since __DEPLOY_VERSION__ + */ +class BeforeRespondEvent extends ApplicationEvent +{ +} diff --git a/libraries/src/Event/Application/DeamonForkEvent.php b/libraries/src/Event/Application/DeamonForkEvent.php new file mode 100644 index 0000000000000..e583511f0fce6 --- /dev/null +++ b/libraries/src/Event/Application/DeamonForkEvent.php @@ -0,0 +1,23 @@ + + * @license GNU General Public License version 2 or later; see LICENSE + */ + +namespace Joomla\CMS\Event\Application; + +// phpcs:disable PSR1.Files.SideEffects +\defined('JPATH_PLATFORM') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Class for Fork event for DemonApplication + * + * @since __DEPLOY_VERSION__ + */ +class DeamonForkEvent extends ApplicationEvent +{ +} diff --git a/libraries/src/Event/Application/DeamonReceiveSignalEvent.php b/libraries/src/Event/Application/DeamonReceiveSignalEvent.php new file mode 100644 index 0000000000000..9e068f561c05d --- /dev/null +++ b/libraries/src/Event/Application/DeamonReceiveSignalEvent.php @@ -0,0 +1,67 @@ + + * @license GNU General Public License version 2 or later; see LICENSE + */ + +namespace Joomla\CMS\Event\Application; + +// phpcs:disable PSR1.Files.SideEffects +\defined('JPATH_PLATFORM') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Class for ReceiveSignal event for DemonApplication + * + * @since __DEPLOY_VERSION__ + */ +class DeamonReceiveSignalEvent extends ApplicationEvent +{ + /** + * Constructor. + * + * @param string $name The event name. + * @param array $arguments The event arguments. + * + * @throws \BadMethodCallException + * + * @since __DEPLOY_VERSION__ + */ + public function __construct($name, array $arguments = []) + { + if (!\array_key_exists('signal', $arguments)) { + throw new \BadMethodCallException("Argument 'signal' of event {$name} is required but has not been provided"); + } + + parent::__construct($name, $arguments); + } + + /** + * Setter for the signal argument. + * + * @param integer $value The value to set + * + * @return integer + * + * @since __DEPLOY_VERSION__ + */ + protected function setSignal(int $value): int + { + return $value; + } + + /** + * Get the event's signal object + * + * @return integer + * + * @since __DEPLOY_VERSION__ + */ + public function getSignal(): int + { + return $this->arguments['signal']; + } +} diff --git a/libraries/src/Event/CoreEventAware.php b/libraries/src/Event/CoreEventAware.php index 357e9516dd10e..ebf237803991d 100644 --- a/libraries/src/Event/CoreEventAware.php +++ b/libraries/src/Event/CoreEventAware.php @@ -9,7 +9,6 @@ namespace Joomla\CMS\Event; -use Joomla\CMS\Event\Model\BeforeBatchEvent; use Joomla\CMS\Event\Plugin\System\Webauthn\Ajax as PlgSystemWebauthnAjax; use Joomla\CMS\Event\Plugin\System\Webauthn\AjaxChallenge as PlgSystemWebauthnAjaxChallenge; use Joomla\CMS\Event\Plugin\System\Webauthn\AjaxCreate as PlgSystemWebauthnAjaxCreate; @@ -17,35 +16,6 @@ use Joomla\CMS\Event\Plugin\System\Webauthn\AjaxInitCreate as PlgSystemWebauthnAjaxInitCreate; use Joomla\CMS\Event\Plugin\System\Webauthn\AjaxLogin as PlgSystemWebauthnAjaxLogin; use Joomla\CMS\Event\Plugin\System\Webauthn\AjaxSaveLabel as PlgSystemWebauthnAjaxSaveLabel; -use Joomla\CMS\Event\QuickIcon\GetIconEvent; -use Joomla\CMS\Event\Table\AfterBindEvent; -use Joomla\CMS\Event\Table\AfterCheckinEvent; -use Joomla\CMS\Event\Table\AfterCheckoutEvent; -use Joomla\CMS\Event\Table\AfterDeleteEvent; -use Joomla\CMS\Event\Table\AfterHitEvent; -use Joomla\CMS\Event\Table\AfterLoadEvent; -use Joomla\CMS\Event\Table\AfterMoveEvent; -use Joomla\CMS\Event\Table\AfterPublishEvent; -use Joomla\CMS\Event\Table\AfterReorderEvent; -use Joomla\CMS\Event\Table\AfterResetEvent; -use Joomla\CMS\Event\Table\AfterStoreEvent; -use Joomla\CMS\Event\Table\BeforeBindEvent; -use Joomla\CMS\Event\Table\BeforeCheckinEvent; -use Joomla\CMS\Event\Table\BeforeCheckoutEvent; -use Joomla\CMS\Event\Table\BeforeDeleteEvent; -use Joomla\CMS\Event\Table\BeforeHitEvent; -use Joomla\CMS\Event\Table\BeforeLoadEvent; -use Joomla\CMS\Event\Table\BeforeMoveEvent; -use Joomla\CMS\Event\Table\BeforePublishEvent; -use Joomla\CMS\Event\Table\BeforeReorderEvent; -use Joomla\CMS\Event\Table\BeforeResetEvent; -use Joomla\CMS\Event\Table\BeforeStoreEvent; -use Joomla\CMS\Event\Table\CheckEvent; -use Joomla\CMS\Event\Table\ObjectCreateEvent; -use Joomla\CMS\Event\Table\SetNewTagsEvent; -use Joomla\CMS\Event\View\DisplayEvent; -use Joomla\CMS\Event\Workflow\WorkflowFunctionalityUsedEvent; -use Joomla\CMS\Event\Workflow\WorkflowTransitionEvent; use Joomla\Event\Event; // phpcs:disable PSR1.Files.SideEffects @@ -69,43 +39,58 @@ trait CoreEventAware * @since 4.2.0 */ private static $eventNameToConcreteClass = [ + // Application + 'onBeforeExecute' => Application\BeforeExecuteEvent::class, + 'onAfterExecute' => Application\AfterExecuteEvent::class, + 'onAfterInitialise' => Application\AfterInitialiseEvent::class, + 'onAfterRoute' => Application\AfterRouteEvent::class, + 'onBeforeApiRoute' => Application\BeforeApiRouteEvent::class, + 'onAfterApiRoute' => Application\AfterApiRouteEvent::class, + 'onAfterDispatch' => Application\AfterDispatchEvent::class, + 'onBeforeRender' => Application\BeforeRenderEvent::class, + 'onAfterRender' => Application\AfterRenderEvent::class, + 'onBeforeCompileHead' => Application\BeforeCompileHeadEvent::class, + 'onAfterCompress' => Application\AfterCompressEvent::class, + 'onBeforeRespond' => Application\BeforeRespondEvent::class, + 'onAfterRespond' => Application\AfterRespondEvent::class, + 'onError' => ErrorEvent::class, // Model - 'onBeforeBatch' => BeforeBatchEvent::class, + 'onBeforeBatch' => Model\BeforeBatchEvent::class, // Quickicon - 'onGetIcon' => GetIconEvent::class, + 'onGetIcon' => QuickIcon\GetIconEvent::class, // Table - 'onTableAfterBind' => AfterBindEvent::class, - 'onTableAfterCheckin' => AfterCheckinEvent::class, - 'onTableAfterCheckout' => AfterCheckoutEvent::class, - 'onTableAfterDelete' => AfterDeleteEvent::class, - 'onTableAfterHit' => AfterHitEvent::class, - 'onTableAfterLoad' => AfterLoadEvent::class, - 'onTableAfterMove' => AfterMoveEvent::class, - 'onTableAfterPublish' => AfterPublishEvent::class, - 'onTableAfterReorder' => AfterReorderEvent::class, - 'onTableAfterReset' => AfterResetEvent::class, - 'onTableAfterStore' => AfterStoreEvent::class, - 'onTableBeforeBind' => BeforeBindEvent::class, - 'onTableBeforeCheckin' => BeforeCheckinEvent::class, - 'onTableBeforeCheckout' => BeforeCheckoutEvent::class, - 'onTableBeforeDelete' => BeforeDeleteEvent::class, - 'onTableBeforeHit' => BeforeHitEvent::class, - 'onTableBeforeLoad' => BeforeLoadEvent::class, - 'onTableBeforeMove' => BeforeMoveEvent::class, - 'onTableBeforePublish' => BeforePublishEvent::class, - 'onTableBeforeReorder' => BeforeReorderEvent::class, - 'onTableBeforeReset' => BeforeResetEvent::class, - 'onTableBeforeStore' => BeforeStoreEvent::class, - 'onTableCheck' => CheckEvent::class, - 'onTableObjectCreate' => ObjectCreateEvent::class, - 'onTableSetNewTags' => SetNewTagsEvent::class, + 'onTableAfterBind' => Table\AfterBindEvent::class, + 'onTableAfterCheckin' => Table\AfterCheckinEvent::class, + 'onTableAfterCheckout' => Table\AfterCheckoutEvent::class, + 'onTableAfterDelete' => Table\AfterDeleteEvent::class, + 'onTableAfterHit' => Table\AfterHitEvent::class, + 'onTableAfterLoad' => Table\AfterLoadEvent::class, + 'onTableAfterMove' => Table\AfterMoveEvent::class, + 'onTableAfterPublish' => Table\AfterPublishEvent::class, + 'onTableAfterReorder' => Table\AfterReorderEvent::class, + 'onTableAfterReset' => Table\AfterResetEvent::class, + 'onTableAfterStore' => Table\AfterStoreEvent::class, + 'onTableBeforeBind' => Table\BeforeBindEvent::class, + 'onTableBeforeCheckin' => Table\BeforeCheckinEvent::class, + 'onTableBeforeCheckout' => Table\BeforeCheckoutEvent::class, + 'onTableBeforeDelete' => Table\BeforeDeleteEvent::class, + 'onTableBeforeHit' => Table\BeforeHitEvent::class, + 'onTableBeforeLoad' => Table\BeforeLoadEvent::class, + 'onTableBeforeMove' => Table\BeforeMoveEvent::class, + 'onTableBeforePublish' => Table\BeforePublishEvent::class, + 'onTableBeforeReorder' => Table\BeforeReorderEvent::class, + 'onTableBeforeReset' => Table\BeforeResetEvent::class, + 'onTableBeforeStore' => Table\BeforeStoreEvent::class, + 'onTableCheck' => Table\CheckEvent::class, + 'onTableObjectCreate' => Table\ObjectCreateEvent::class, + 'onTableSetNewTags' => Table\SetNewTagsEvent::class, // View - 'onBeforeDisplay' => DisplayEvent::class, - 'onAfterDisplay' => DisplayEvent::class, + 'onBeforeDisplay' => View\DisplayEvent::class, + 'onAfterDisplay' => View\DisplayEvent::class, // Workflow - 'onWorkflowFunctionalityUsed' => WorkflowFunctionalityUsedEvent::class, - 'onWorkflowAfterTransition' => WorkflowTransitionEvent::class, - 'onWorkflowBeforeTransition' => WorkflowTransitionEvent::class, + 'onWorkflowFunctionalityUsed' => Workflow\WorkflowFunctionalityUsedEvent::class, + 'onWorkflowAfterTransition' => Workflow\WorkflowTransitionEvent::class, + 'onWorkflowBeforeTransition' => Workflow\WorkflowTransitionEvent::class, // Plugin: System, WebAuthn 'onAjaxWebauthn' => PlgSystemWebauthnAjax::class, 'onAjaxWebauthnChallenge' => PlgSystemWebauthnAjaxChallenge::class, @@ -114,6 +99,9 @@ trait CoreEventAware 'onAjaxWebauthnInitcreate' => PlgSystemWebauthnAjaxInitCreate::class, 'onAjaxWebauthnLogin' => PlgSystemWebauthnAjaxLogin::class, 'onAjaxWebauthnSavelabel' => PlgSystemWebauthnAjaxSaveLabel::class, + // Extensions + 'onBeforeExtensionBoot' => BeforeExtensionBootEvent::class, + 'onAfterExtensionBoot' => AfterExtensionBootEvent::class, ]; /** diff --git a/plugins/system/cache/src/Extension/Cache.php b/plugins/system/cache/src/Extension/Cache.php index b530e3cfe409d..6e0a2fb34ad53 100644 --- a/plugins/system/cache/src/Extension/Cache.php +++ b/plugins/system/cache/src/Extension/Cache.php @@ -13,6 +13,7 @@ use Joomla\CMS\Cache\CacheController; use Joomla\CMS\Cache\CacheControllerFactoryInterface; use Joomla\CMS\Document\FactoryInterface as DocumentFactoryInterface; +use Joomla\CMS\Event\AbstractEvent; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\Profiler\Profiler; @@ -177,7 +178,12 @@ public function onAfterRoute(Event $event) $this->profiler->mark('afterCache'); } - $this->getApplication()->triggerEvent('onAfterRespond'); + $this->getDispatcher()->dispatch('onAfterRespond', AbstractEvent::create( + 'onAfterRespond', + [ + 'subject' => $this->getApplication(), + ] + )); } // Closes the application. From 7874bc1937d4e8d432de34266de067d30f3dea18 Mon Sep 17 00:00:00 2001 From: Harald Leithner Date: Sat, 22 Jul 2023 11:35:36 +0200 Subject: [PATCH 027/126] [5.0] b/c plugin - Load class aliases earlier and move es5 assets (#41202) * Move classmap import to the plugin constructor * Move es5 assets to b/c plugin --------- Co-authored-by: Brian Teeman --- .../sql/updates/mysql/5.0.0-2023-03-11.sql | 2 +- .../updates/postgresql/5.0.0-2023-03-11.sql | 2 +- .../language/en-GB/plg_system_compat.ini | 2 + .../templates/atum/joomla.asset.json | 14 - build/build-modules-js/settings.json | 13 - .../com_actionlogs/joomla.asset.json | 13 - .../media_source/com_admin/joomla.asset.json | 13 - .../com_associations/joomla.asset.json | 39 - .../com_banners/joomla.asset.json | 13 - .../media_source/com_cache/joomla.asset.json | 13 - .../com_categories/joomla.asset.json | 13 - .../media_source/com_config/joomla.asset.json | 52 - .../com_contact/joomla.asset.json | 26 - .../com_content/joomla.asset.json | 104 -- .../com_contenthistory/joomla.asset.json | 40 - .../media_source/com_cpanel/joomla.asset.json | 39 - .../media_source/com_fields/joomla.asset.json | 65 - .../media_source/com_finder/joomla.asset.json | 78 -- .../com_installer/joomla.asset.json | 26 - .../com_joomlaupdate/joomla.asset.json | 27 - .../com_languages/joomla.asset.json | 39 - .../media_source/com_mails/joomla.asset.json | 13 - .../media_source/com_media/joomla.asset.json | 26 - .../media_source/com_menus/joomla.asset.json | 91 -- .../com_modules/joomla.asset.json | 65 - .../com_scheduler/joomla.asset.json | 38 - build/media_source/com_tags/joomla.asset.json | 39 - .../com_templates/joomla.asset.json | 39 - .../media_source/com_users/joomla.asset.json | 39 - .../com_workflow/joomla.asset.json | 13 - .../joomla.asset.json | 14 - .../joomla.asset.json | 13 - .../plg_system_compat/es5.asset.json | 1091 +++++++++++++++++ .../plg_system_guidedtours/joomla.asset.json | 13 - .../plg_system_jooa11y/joomla.asset.json | 13 - .../joomla.asset.json | 13 - build/media_source/system/joomla.asset.json | 26 - installation/sql/mysql/base.sql | 2 +- installation/sql/postgresql/base.sql | 2 +- plugins/system/compat/compat.xml | 12 + .../system/compat/src/Extension/Compat.php | 49 +- 41 files changed, 1151 insertions(+), 1093 deletions(-) create mode 100644 build/media_source/plg_system_compat/es5.asset.json diff --git a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-03-11.sql b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-03-11.sql index 8b741b30531b0..0b50ffe7b95c2 100644 --- a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-03-11.sql +++ b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-03-11.sql @@ -1,4 +1,4 @@ DROP TABLE IF EXISTS `#__utf8_conversion`; INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `custom_data`, `ordering`, `state`) VALUES -(0, 'plg_system_compat', 'plugin', 'compat', 'system', 0, 1, 1, 0, 1, '', '{"classes_aliases":"1"}', '', 0, 0); +(0, 'plg_system_compat', 'plugin', 'compat', 'system', 0, 1, 1, 0, 1, '', '{"classes_aliases":"1","es5_assets":"1"}', '', 0, 0); diff --git a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-03-11.sql b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-03-11.sql index 507a178571c8a..dac7b1ebd97fe 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-03-11.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-03-11.sql @@ -1,4 +1,4 @@ DROP TABLE IF EXISTS "#__utf8_conversion"; INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "custom_data", "ordering", "state") VALUES -(0, 'plg_system_compat', 'plugin', 'compat', 'system', 0, 1, 1, 0, 1, '', '{"classes_aliases":"1"}', '', 0, 0); +(0, 'plg_system_compat', 'plugin', 'compat', 'system', 0, 1, 1, 0, 1, '', '{"classes_aliases":"1","es5_assets":"1"}', '', 0, 0); diff --git a/administrator/language/en-GB/plg_system_compat.ini b/administrator/language/en-GB/plg_system_compat.ini index fb29377903581..81cc82175c403 100644 --- a/administrator/language/en-GB/plg_system_compat.ini +++ b/administrator/language/en-GB/plg_system_compat.ini @@ -5,5 +5,7 @@ PLG_COMPAT_FIELD_CLASSES_ALIASES_LABEL="Classes Aliases" PLG_COMPAT_FIELD_CLASSES_ALIASES_DESCRIPTION="Add class aliases for classes which have been renamed or moved to a namespace." +PLG_COMPAT_FIELD_ES5_ASSETS_LABEL="ES5 Assets" +PLG_COMPAT_FIELD_ES5_ASSETS_DESCRIPTION="Activate this option if your extension requires *.es5 assets which has resulted in an exception. The assets provided are empty but prevent the exception." PLG_COMPAT_XML_DESCRIPTION="Provides backward compatibility to the prior major version." PLG_SYSTEM_COMPAT="System - Backward Compatibility" diff --git a/administrator/templates/atum/joomla.asset.json b/administrator/templates/atum/joomla.asset.json index 367b561e400f4..3fefb64813627 100644 --- a/administrator/templates/atum/joomla.asset.json +++ b/administrator/templates/atum/joomla.asset.json @@ -45,20 +45,6 @@ "template.active.language" ] }, - { - "name": "template.atum-es5", - "description": "The file containing the javascript for this template.", - "deprecated": true, - "type": "script", - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "template.atum", "description": "The file containing the javascript for this template.", diff --git a/build/build-modules-js/settings.json b/build/build-modules-js/settings.json index a7fdae9ef780f..c9f7a04454e99 100644 --- a/build/build-modules-js/settings.json +++ b/build/build-modules-js/settings.json @@ -73,19 +73,6 @@ "bootstrap.css" ] }, - { - "name": "bootstrap.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "bootstrap.alert", "type": "script", diff --git a/build/media_source/com_actionlogs/joomla.asset.json b/build/media_source/com_actionlogs/joomla.asset.json index 8294e80aa705c..8b045ccb190dd 100644 --- a/build/media_source/com_actionlogs/joomla.asset.json +++ b/build/media_source/com_actionlogs/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_actionlogs.admin-actionlogs.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_actionlogs.admin-actionlogs", "type": "script", diff --git a/build/media_source/com_admin/joomla.asset.json b/build/media_source/com_admin/joomla.asset.json index 754fc7b10e909..627ed01b2d73f 100644 --- a/build/media_source/com_admin/joomla.asset.json +++ b/build/media_source/com_admin/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_admin.admin-help.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_admin.admin-help", "type": "script", diff --git a/build/media_source/com_associations/joomla.asset.json b/build/media_source/com_associations/joomla.asset.json index a209efd45cbb1..bbf3b05d877c7 100644 --- a/build/media_source/com_associations/joomla.asset.json +++ b/build/media_source/com_associations/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_associations.admin-associations-default.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_associations.admin-associations-default", "type": "script", @@ -29,19 +16,6 @@ "type": "module" } }, - { - "name": "com_associations.admin-associations-modal.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_associations.admin-associations-modal", "type": "script", @@ -53,19 +27,6 @@ "type": "module" } }, - { - "name": "com_associations.associations-edit.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_associations.associations-edit", "type": "script", diff --git a/build/media_source/com_banners/joomla.asset.json b/build/media_source/com_banners/joomla.asset.json index 8d9d1c5f6c249..c3826be31200f 100644 --- a/build/media_source/com_banners/joomla.asset.json +++ b/build/media_source/com_banners/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_banners.admin-banner-edit.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_banners.admin-banner-edit", "type": "script", diff --git a/build/media_source/com_cache/joomla.asset.json b/build/media_source/com_cache/joomla.asset.json index 7c9d6dcedd22c..089bd2cc97a6a 100644 --- a/build/media_source/com_cache/joomla.asset.json +++ b/build/media_source/com_cache/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_cache.admin-cache.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_cache.admin-cache", "type": "script", diff --git a/build/media_source/com_categories/joomla.asset.json b/build/media_source/com_categories/joomla.asset.json index 3107d48a8dd7a..4fc2d4b0f2572 100644 --- a/build/media_source/com_categories/joomla.asset.json +++ b/build/media_source/com_categories/joomla.asset.json @@ -13,19 +13,6 @@ "com_categories.shared-categories-accordion#script" ] }, - { - "name": "com_categories.shared-categories-accordion.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_categories.shared-categories-accordion", "type": "script", diff --git a/build/media_source/com_config/joomla.asset.json b/build/media_source/com_config/joomla.asset.json index 952adab90cc86..dfa94f13a4df5 100644 --- a/build/media_source/com_config/joomla.asset.json +++ b/build/media_source/com_config/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_config.config.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_config.config", "type": "script", @@ -29,19 +16,6 @@ "type": "module" } }, - { - "name": "com_config.modules.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_config.modules", "type": "script", @@ -53,19 +27,6 @@ "type": "module" } }, - { - "name": "com_config.templates.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_config.templates", "type": "script", @@ -77,19 +38,6 @@ "type": "module" } }, - { - "name": "com_config.filters.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_config.filters", "type": "script", diff --git a/build/media_source/com_contact/joomla.asset.json b/build/media_source/com_contact/joomla.asset.json index c0b5dc580d956..cd5a1b75354d1 100644 --- a/build/media_source/com_contact/joomla.asset.json +++ b/build/media_source/com_contact/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_contact.admin-contacts-modal.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_contact.admin-contacts-modal", "type": "script", @@ -29,19 +16,6 @@ "type": "module" } }, - { - "name": "com_contact.contacts-list.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_contact.contacts-list", "type": "script", diff --git a/build/media_source/com_content/joomla.asset.json b/build/media_source/com_content/joomla.asset.json index 1a4966a6d7fe0..29dcc38b1b511 100644 --- a/build/media_source/com_content/joomla.asset.json +++ b/build/media_source/com_content/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_content.admin-article-pagebreak.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_content.admin-article-pagebreak", "type": "script", @@ -30,19 +17,6 @@ "defer": true } }, - { - "name": "com_content.admin-article-readmore.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_content.admin-article-readmore", "type": "script", @@ -54,19 +28,6 @@ "type": "module" } }, - { - "name": "com_content.admin-articles-batch.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_content.admin-articles-batch", "type": "script", @@ -78,19 +39,6 @@ "type": "module" } }, - { - "name": "com_content.admin-articles-stage.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_content.admin-articles-stage", "type": "script", @@ -102,19 +50,6 @@ "type": "module" } }, - { - "name": "com_content.admin-articles-modal.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_content.admin-articles-modal", "type": "script", @@ -126,19 +61,6 @@ "type": "module" } }, - { - "name": "com_content.form-edit.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_content.form-edit", "type": "script", @@ -150,19 +72,6 @@ "type": "module" } }, - { - "name": "com_content.articles-list.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_content.articles-list", "type": "script", @@ -174,19 +83,6 @@ "type": "module" } }, - { - "name": "com_content.articles-status.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_content.articles-status", "type": "script", diff --git a/build/media_source/com_contenthistory/joomla.asset.json b/build/media_source/com_contenthistory/joomla.asset.json index 0b3b2df13092d..db18948043168 100644 --- a/build/media_source/com_contenthistory/joomla.asset.json +++ b/build/media_source/com_contenthistory/joomla.asset.json @@ -5,20 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_contenthistory.admin-compare-compare.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core", - "diff" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_contenthistory.admin-compare-compare", "type": "script", @@ -30,19 +16,6 @@ "type": "module" } }, - { - "name": "com_contenthistory.admin-history-modal.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_contenthistory.admin-history-modal", "type": "script", @@ -54,19 +27,6 @@ "type": "module" } }, - { - "name": "com_contenthistory.admin-history-versions.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_contenthistory.admin-history-versions", "type": "script", diff --git a/build/media_source/com_cpanel/joomla.asset.json b/build/media_source/com_cpanel/joomla.asset.json index 8e0a60e82a183..9dee0564003fa 100644 --- a/build/media_source/com_cpanel/joomla.asset.json +++ b/build/media_source/com_cpanel/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_cpanel.admin-addmodule.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_cpanel.admin-addmodule", "type": "script", @@ -29,19 +16,6 @@ "type": "module" } }, - { - "name": "com_cpanel.admin-cpanel.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_cpanel.admin-cpanel", "type": "script", @@ -53,19 +27,6 @@ "type": "module" } }, - { - "name": "com_cpanel.admin-system-loader.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_cpanel.admin-system-loader", "type": "script", diff --git a/build/media_source/com_fields/joomla.asset.json b/build/media_source/com_fields/joomla.asset.json index 576237e4900ee..f9460fe37997f 100644 --- a/build/media_source/com_fields/joomla.asset.json +++ b/build/media_source/com_fields/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_fields.admin-field-changecontext.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_fields.admin-field-changecontext", "type": "script", @@ -29,19 +16,6 @@ "type": "module" } }, - { - "name": "com_fields.admin-field-edit.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_fields.admin-field-edit", "type": "script", @@ -53,19 +27,6 @@ "type": "module" } }, - { - "name": "com_fields.admin-field-typehaschanged.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_fields.admin-field-typehaschanged", "type": "script", @@ -77,19 +38,6 @@ "type": "module" } }, - { - "name": "com_fields.admin-fields-batch.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_fields.admin-fields-batch", "type": "script", @@ -101,19 +49,6 @@ "type": "module" } }, - { - "name": "com_fields.admin-fields-modal.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_fields.admin-fields-modal", "type": "script", diff --git a/build/media_source/com_finder/joomla.asset.json b/build/media_source/com_finder/joomla.asset.json index ef1485919f488..89c119a19b0c1 100644 --- a/build/media_source/com_finder/joomla.asset.json +++ b/build/media_source/com_finder/joomla.asset.json @@ -10,19 +10,6 @@ "type": "style", "uri": "com_finder/dates.min.css" }, - { - "name": "com_finder.debug.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_finder.debug", "type": "script", @@ -34,19 +21,6 @@ "type": "module" } }, - { - "name": "com_finder.filters.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_finder.filters", "type": "script", @@ -63,19 +37,6 @@ "type": "style", "uri": "com_finder/finder.min.css" }, - { - "name": "com_finder.finder.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_finder.finder", "type": "script", @@ -87,19 +48,6 @@ "type": "module" } }, - { - "name": "com_finder.finder-edit.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_finder.finder-edit", "type": "script", @@ -116,19 +64,6 @@ "type": "style", "uri": "com_finder/indexer.min.css" }, - { - "name": "com_finder.indexer.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_finder.indexer", "type": "script", @@ -140,19 +75,6 @@ "type": "module" } }, - { - "name": "com_finder.maps.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_finder.maps", "type": "script", diff --git a/build/media_source/com_installer/joomla.asset.json b/build/media_source/com_installer/joomla.asset.json index 81151869fb0ad..11bc62d387616 100644 --- a/build/media_source/com_installer/joomla.asset.json +++ b/build/media_source/com_installer/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_installer.changelog.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_installer.changelog", "type": "script", @@ -34,19 +21,6 @@ "type": "style", "uri": "com_installer/installer.min.css" }, - { - "name": "com_installer.installer.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_installer.installer", "type": "script", diff --git a/build/media_source/com_joomlaupdate/joomla.asset.json b/build/media_source/com_joomlaupdate/joomla.asset.json index 6fcf133af3537..c171c1a422325 100644 --- a/build/media_source/com_joomlaupdate/joomla.asset.json +++ b/build/media_source/com_joomlaupdate/joomla.asset.json @@ -5,20 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_joomlaupdate.admin-update-es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core", - "bootstrap.modal" - ], - "attributes": { - "defer": true, - "nomodule": true - } - }, { "name": "com_joomlaupdate.admin-update", "type": "script", @@ -31,19 +17,6 @@ "type": "module" } }, - { - "name": "com_joomlaupdate.default-es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "defer": true, - "nomodule": true - } - }, { "name": "com_joomlaupdate.default", "type": "script", diff --git a/build/media_source/com_languages/joomla.asset.json b/build/media_source/com_languages/joomla.asset.json index e7641d58a3117..cf7586cd3ccc8 100644 --- a/build/media_source/com_languages/joomla.asset.json +++ b/build/media_source/com_languages/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_languages.admin-language-edit-change-flag.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_languages.admin-language-edit-change-flag", "type": "script", @@ -29,19 +16,6 @@ "type": "module" } }, - { - "name": "com_languages.admin-override-edit-refresh-searchstring.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_languages.admin-override-edit-refresh-searchstring", "type": "script", @@ -58,19 +32,6 @@ "type": "style", "uri": "com_languages/overrider.min.css" }, - { - "name": "com_languages.overrider.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_languages.overrider", "type": "script", diff --git a/build/media_source/com_mails/joomla.asset.json b/build/media_source/com_mails/joomla.asset.json index 1b170343c8349..872114528af2b 100644 --- a/build/media_source/com_mails/joomla.asset.json +++ b/build/media_source/com_mails/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_mails.admin-email-template-edit.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_mails.admin-email-template-edit", "type": "script", diff --git a/build/media_source/com_media/joomla.asset.json b/build/media_source/com_media/joomla.asset.json index 8e882bcfc971d..b540e406aee0e 100644 --- a/build/media_source/com_media/joomla.asset.json +++ b/build/media_source/com_media/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_media.edit-images.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_media.edit-images", "type": "script", @@ -34,19 +21,6 @@ "type": "style", "uri": "com_media/media-manager.min.css" }, - { - "name": "com_media.mediamanager.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core", "messages" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_media.mediamanager", "type": "script", diff --git a/build/media_source/com_menus/joomla.asset.json b/build/media_source/com_menus/joomla.asset.json index 2501a56ca9c73..d9af26dcc1424 100644 --- a/build/media_source/com_menus/joomla.asset.json +++ b/build/media_source/com_menus/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_menus.admin-item-edit.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_menus.admin-item-edit", "type": "script", @@ -34,19 +21,6 @@ "type": "style", "uri": "com_menus/admin-item-edit_container.min.css" }, - { - "name": "com_menus.admin-item-edit-container.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_menus.admin-item-edit-container", "type": "script", @@ -58,19 +32,6 @@ "type": "module" } }, - { - "name": "com_menus.admin-item-edit-modules.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_menus.admin-item-edit-modules", "type": "script", @@ -82,19 +43,6 @@ "type": "module" } }, - { - "name": "com_menus.admin-item-modal.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_menus.admin-item-modal", "type": "script", @@ -106,19 +54,6 @@ "type": "module" } }, - { - "name": "com_menus.admin-items-modal.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_menus.admin-items-modal", "type": "script", @@ -130,19 +65,6 @@ "type": "module" } }, - { - "name": "com_menus.admin-menus.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_menus.admin-menus", "type": "script", @@ -154,19 +76,6 @@ "type": "module" } }, - { - "name": "com_menus.batch-body.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_menus.batch-body", "type": "script", diff --git a/build/media_source/com_modules/joomla.asset.json b/build/media_source/com_modules/joomla.asset.json index e1f811c77cc43..93d44bc4e7cb9 100644 --- a/build/media_source/com_modules/joomla.asset.json +++ b/build/media_source/com_modules/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_modules.admin-module-edit.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_modules.admin-module-edit", "type": "script", @@ -29,19 +16,6 @@ "type": "module" } }, - { - "name": "com_modules.admin-module-edit-assignment.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_modules.admin-module-edit-assignment", "type": "script", @@ -53,19 +27,6 @@ "type": "module" } }, - { - "name": "com_modules.admin-module-search.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_modules.admin-module-search", "type": "script", @@ -77,19 +38,6 @@ "type": "module" } }, - { - "name": "com_modules.admin-modules-modal.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_modules.admin-modules-modal", "type": "script", @@ -101,19 +49,6 @@ "type": "module" } }, - { - "name": "com_modules.admin-select-modal.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_modules.admin-select-modal", "type": "script", diff --git a/build/media_source/com_scheduler/joomla.asset.json b/build/media_source/com_scheduler/joomla.asset.json index 2a1148a425e65..4908ee88b07b6 100644 --- a/build/media_source/com_scheduler/joomla.asset.json +++ b/build/media_source/com_scheduler/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GNU General Public License version 2 or later; see LICENSE.txt", "assets": [ - { - "name": "com_scheduler.test-task.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_scheduler.test-task", "type": "script", @@ -29,19 +16,6 @@ "type" : "module" } }, - { - "name": "com_scheduler.admin-view-select-task-search.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_scheduler.admin-view-select-task-search", "type": "script", @@ -53,18 +27,6 @@ "type": "module" } }, - { - "name": "com_scheduler.scheduler-config.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true - } - }, { "name": "com_scheduler.scheduler-config", "type": "script", diff --git a/build/media_source/com_tags/joomla.asset.json b/build/media_source/com_tags/joomla.asset.json index 49bdefed50e73..0170b55735653 100644 --- a/build/media_source/com_tags/joomla.asset.json +++ b/build/media_source/com_tags/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_tags.tag-default.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_tags.tag-default", "type": "script", @@ -29,19 +16,6 @@ "type": "module" } }, - { - "name": "com_tags.tag-list.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_tags.tag-list", "type": "script", @@ -53,19 +27,6 @@ "type": "module" } }, - { - "name": "com_tags.tags-default.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_tags.tags-default", "type": "script", diff --git a/build/media_source/com_templates/joomla.asset.json b/build/media_source/com_templates/joomla.asset.json index 29d9c51b7da61..5eb9e8383bc37 100644 --- a/build/media_source/com_templates/joomla.asset.json +++ b/build/media_source/com_templates/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_templates.admin-template-toggle-assignment.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_templates.admin-template-toggle-assignment", "type": "script", @@ -29,19 +16,6 @@ "type": "module" } }, - { - "name": "com_templates.admin-template-toggle-switch.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_templates.admin-template-toggle-switch", "type": "script", @@ -58,19 +32,6 @@ "type": "style", "uri": "com_templates/admin-templates-default.min.css" }, - { - "name": "com_templates.admin-templates.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_templates.admin-templates", "type": "script", diff --git a/build/media_source/com_users/joomla.asset.json b/build/media_source/com_users/joomla.asset.json index 1772efad5eab9..10fc7a97de56a 100644 --- a/build/media_source/com_users/joomla.asset.json +++ b/build/media_source/com_users/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_users.admin-users-groups.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_users.admin-users-groups", "type": "script", @@ -29,19 +16,6 @@ "type": "module" } }, - { - "name": "com_users.two-factor-focus.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_users.two-factor-focus", "type": "script", @@ -53,19 +27,6 @@ "type": "module" } }, - { - "name": "com_users.two-factor-list.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_users.two-factor-list", "type": "script", diff --git a/build/media_source/com_workflow/joomla.asset.json b/build/media_source/com_workflow/joomla.asset.json index 97c1eba2783e4..ed1cbf269248f 100644 --- a/build/media_source/com_workflow/joomla.asset.json +++ b/build/media_source/com_workflow/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_workflow.admin-items-workflow-buttons.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "com_workflow.admin-items-workflow-buttons", "type": "script", diff --git a/build/media_source/plg_multifactorauth_totp/joomla.asset.json b/build/media_source/plg_multifactorauth_totp/joomla.asset.json index 963c685f93f70..73af3523ff23f 100644 --- a/build/media_source/plg_multifactorauth_totp/joomla.asset.json +++ b/build/media_source/plg_multifactorauth_totp/joomla.asset.json @@ -16,20 +16,6 @@ "attributes": { "type": "module" } - }, - { - "name": "plg_multifactorauth_totp.setup.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "qrcode", - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } } ] } diff --git a/build/media_source/plg_multifactorauth_webauthn/joomla.asset.json b/build/media_source/plg_multifactorauth_webauthn/joomla.asset.json index a4ac342238e1f..df9edd101bc79 100644 --- a/build/media_source/plg_multifactorauth_webauthn/joomla.asset.json +++ b/build/media_source/plg_multifactorauth_webauthn/joomla.asset.json @@ -15,19 +15,6 @@ "attributes": { "defer": true } - }, - { - "name": "plg_multifactorauth_webauthn.webauthn.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } } ] } diff --git a/build/media_source/plg_system_compat/es5.asset.json b/build/media_source/plg_system_compat/es5.asset.json new file mode 100644 index 0000000000000..12c1c780709c2 --- /dev/null +++ b/build/media_source/plg_system_compat/es5.asset.json @@ -0,0 +1,1091 @@ +{ + "$schema": "https://developer.joomla.org/schemas/json-schema/web_assets.json", + "name": "plg_system_compat", + "version": "5.0.0", + "description": "Joomla CMS ES5 b/c entries, the entries are only placeholders without functionality.", + "license": "GPL-2.0-or-later", + "assets": [ + { + "name": "bootstrap.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_actionlogs.admin-actionlogs.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_admin.admin-help.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_associations.admin-associations-default.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_associations.admin-associations-modal.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_associations.associations-edit.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_banners.admin-banner-edit.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_cache.admin-cache.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_categories.shared-categories-accordion.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_config.config.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_config.modules.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_config.templates.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_config.filters.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_contact.admin-contacts-modal.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_contact.contacts-list.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_content.admin-article-pagebreak.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_content.admin-article-readmore.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_content.admin-articles-batch.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_content.admin-articles-stage.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_content.admin-articles-modal.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_content.form-edit.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_content.articles-list.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_content.articles-status.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_contenthistory.admin-compare-compare.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core", + "diff" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_contenthistory.admin-history-modal.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_contenthistory.admin-history-versions.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_cpanel.admin-addmodule.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_cpanel.admin-cpanel.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_cpanel.admin-system-loader.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_fields.admin-field-changecontext.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_fields.admin-field-edit.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_fields.admin-field-typehaschanged.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_fields.admin-fields-batch.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_fields.admin-fields-modal.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_finder.debug.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_finder.filters.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_finder.finder.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_finder.finder-edit.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_finder.indexer.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_finder.maps.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_installer.changelog.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_installer.installer.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_joomlaupdate.admin-update-es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core", + "bootstrap.modal" + ], + "attributes": { + "defer": true, + "nomodule": true + } + }, + { + "name": "com_joomlaupdate.default-es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "defer": true, + "nomodule": true + } + }, + { + "name": "com_languages.admin-language-edit-change-flag.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_languages.admin-override-edit-refresh-searchstring.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_languages.overrider.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_mails.admin-email-template-edit.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_media.edit-images.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_media.mediamanager.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core", "messages" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_menus.admin-item-edit.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_menus.admin-item-edit-container.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_menus.admin-item-edit-modules.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_menus.admin-item-modal.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_menus.admin-items-modal.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_menus.admin-menus.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_menus.batch-body.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_modules.admin-module-edit.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_modules.admin-module-edit-assignment.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_modules.admin-module-search.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_modules.admin-modules-modal.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_modules.admin-select-modal.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_templates.admin-templates.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "showon.es5", + "type": "script", + "deprecated": true, + "dependencies": [ + "core" + ], + "uri": "", + "attributes": { + "defer": true, + "nomodule": true + } + }, + { + "name": "com_scheduler.test-task.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_scheduler.admin-view-select-task-search.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_scheduler.scheduler-config.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true + } + }, + { + "name": "com_tags.tag-default.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_tags.tag-list.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_tags.tags-default.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_templates.admin-template-toggle-assignment.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_templates.admin-template-toggle-switch.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_users.admin-users-groups.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_users.two-factor-focus.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_users.two-factor-list.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "com_workflow.admin-items-workflow-buttons.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "plg_multifactorauth_totp.setup.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "qrcode", + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "plg_multifactorauth_webauthn.webauthn.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "plg_system_guidedtours.guidedtours.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "plg_system_jooa11y.jooa11y-es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "defer": true, + "nomodule": true + } + }, + { + "name": "plg_system_schedulerunner.run-schedule.es5", + "type": "script", + "deprecated": true, + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "template.atum-es5", + "description": "The file containing the javascript for this template.", + "deprecated": true, + "type": "script", + "uri": "", + "dependencies": [ + "core" + ], + "attributes": { + "nomodule": true, + "defer": true + } + }, + { + "name": "keepalive.es5", + "type": "script", + "deprecated": true, + "dependencies": [ + "core" + ], + "uri": "", + "attributes": { + "defer": true, + "nomodule": true + } + } + ] +} diff --git a/build/media_source/plg_system_guidedtours/joomla.asset.json b/build/media_source/plg_system_guidedtours/joomla.asset.json index 4e60d03b521cd..39d745f41dc46 100644 --- a/build/media_source/plg_system_guidedtours/joomla.asset.json +++ b/build/media_source/plg_system_guidedtours/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "plg_system_guidedtours.guidedtours.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "plg_system_guidedtours.guidedtours", "type": "script", diff --git a/build/media_source/plg_system_jooa11y/joomla.asset.json b/build/media_source/plg_system_jooa11y/joomla.asset.json index 109a294372ac5..4f39991313bae 100644 --- a/build/media_source/plg_system_jooa11y/joomla.asset.json +++ b/build/media_source/plg_system_jooa11y/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "plg_system_jooa11y.jooa11y-es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "defer": true, - "nomodule": true - } - }, { "name": "plg_system_jooa11y.jooa11y", "type": "script", diff --git a/build/media_source/plg_system_schedulerunner/joomla.asset.json b/build/media_source/plg_system_schedulerunner/joomla.asset.json index 4dc270600006e..979aecd2cbc96 100644 --- a/build/media_source/plg_system_schedulerunner/joomla.asset.json +++ b/build/media_source/plg_system_schedulerunner/joomla.asset.json @@ -5,19 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "plg_system_schedulerunner.run-schedule.es5", - "type": "script", - "deprecated": true, - "uri": "", - "dependencies": [ - "core" - ], - "attributes": { - "nomodule": true, - "defer": true - } - }, { "name": "plg_system_schedulerunner.run-schedule", "type": "script", diff --git a/build/media_source/system/joomla.asset.json b/build/media_source/system/joomla.asset.json index ab340bc728ec3..1c60511a324f1 100644 --- a/build/media_source/system/joomla.asset.json +++ b/build/media_source/system/joomla.asset.json @@ -11,19 +11,6 @@ "class": "CoreAssetItem", "uri": "system/core.min.js" }, - { - "name": "keepalive.es5", - "type": "script", - "deprecated": true, - "dependencies": [ - "core" - ], - "uri": "", - "attributes": { - "defer": true, - "nomodule": true - } - }, { "name": "keepalive", "type": "script", @@ -123,19 +110,6 @@ "type": "style", "uri": "" }, - { - "name": "showon.es5", - "type": "script", - "deprecated": true, - "dependencies": [ - "core" - ], - "uri": "", - "attributes": { - "defer": true, - "nomodule": true - } - }, { "name": "showon", "type": "script", diff --git a/installation/sql/mysql/base.sql b/installation/sql/mysql/base.sql index 0514a4977d0e6..45affe0354805 100644 --- a/installation/sql/mysql/base.sql +++ b/installation/sql/mysql/base.sql @@ -334,7 +334,7 @@ INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, (0, 'plg_system_accessibility', 'plugin', 'accessibility', 'system', 0, 0, 1, 0, 1, '', '{}', '', 1, 0), (0, 'plg_system_actionlogs', 'plugin', 'actionlogs', 'system', 0, 1, 1, 0, 1, '', '{}', '', 2, 0), (0, 'plg_system_cache', 'plugin', 'cache', 'system', 0, 0, 1, 0, 1, '', '{"browsercache":"0","cachetime":"15"}', '', 3, 0), -(0, 'plg_system_compat', 'plugin', 'compat', 'system', 0, 0, 1, 0, 1, '', '{"classes_aliases":"1"}', '', 4, 0), +(0, 'plg_system_compat', 'plugin', 'compat', 'system', 0, 0, 1, 0, 1, '', '{"classes_aliases":"1","es5_assets":"1"}', '', 4, 0), (0, 'plg_system_debug', 'plugin', 'debug', 'system', 0, 1, 1, 0, 1, '', '{"profile":"1","queries":"1","memory":"1","language_files":"1","language_strings":"1","strip-first":"1","strip-prefix":"","strip-suffix":""}', '', 5, 0), (0, 'plg_system_fields', 'plugin', 'fields', 'system', 0, 1, 1, 0, 1, '', '', '', 6, 0), (0, 'plg_system_highlight', 'plugin', 'highlight', 'system', 0, 1, 1, 0, 1, '', '', '', 7, 0), diff --git a/installation/sql/postgresql/base.sql b/installation/sql/postgresql/base.sql index 4e37522385fcc..6456504b08e9a 100644 --- a/installation/sql/postgresql/base.sql +++ b/installation/sql/postgresql/base.sql @@ -340,7 +340,7 @@ INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", (0, 'plg_system_accessibility', 'plugin', 'accessibility', 'system', 0, 0, 1, 0, 1, '', '{}', '', 1, 0), (0, 'plg_system_actionlogs', 'plugin', 'actionlogs', 'system', 0, 1, 1, 0, 1, '', '{}', '', 2, 0), (0, 'plg_system_cache', 'plugin', 'cache', 'system', 0, 0, 1, 0, 1, '', '{"browsercache":"0","cachetime":"15"}', '', 3, 0), -(0, 'plg_system_compat', 'plugin', 'compat', 'system', 0, 0, 1, 0, 1, '', '{"classes_aliases":"1"}', '', 4, 0), +(0, 'plg_system_compat', 'plugin', 'compat', 'system', 0, 0, 1, 0, 1, '', '{"classes_aliases":"1","es5_assets":"1"}', '', 4, 0), (0, 'plg_system_debug', 'plugin', 'debug', 'system', 0, 1, 1, 0, 1, '', '{"profile":"1","queries":"1","memory":"1","language_files":"1","language_strings":"1","strip-first":"1","strip-prefix":"","strip-suffix":""}', '', 5, 0), (0, 'plg_system_fields', 'plugin', 'fields', 'system', 0, 1, 1, 0, 1, '', '', '', 6, 0), (0, 'plg_system_highlight', 'plugin', 'highlight', 'system', 0, 1, 1, 0, 1, '', '', '', 7, 0), diff --git a/plugins/system/compat/compat.xml b/plugins/system/compat/compat.xml index c6946191e82c2..784b1b1edfa60 100644 --- a/plugins/system/compat/compat.xml +++ b/plugins/system/compat/compat.xml @@ -33,6 +33,18 @@
+ + + +
diff --git a/plugins/system/compat/src/Extension/Compat.php b/plugins/system/compat/src/Extension/Compat.php index 7a458125d63b4..063b914ad33fc 100644 --- a/plugins/system/compat/src/Extension/Compat.php +++ b/plugins/system/compat/src/Extension/Compat.php @@ -10,7 +10,9 @@ namespace Joomla\Plugin\System\Compat\Extension; +use Joomla\CMS\Event\Application\AfterInitialiseDocumentEvent; use Joomla\CMS\Plugin\CMSPlugin; +use Joomla\Event\DispatcherInterface; use Joomla\Event\Event; use Joomla\Event\Priority; use Joomla\Event\SubscriberInterface; @@ -41,27 +43,60 @@ public static function getSubscribedEvents(): array * might be needed by other plugins */ return [ - 'onAfterInitialise' => ['eventAfterInitialise', Priority::HIGH], + 'onAfterInitialiseDocument' => ['onAfterInitialiseDocument', Priority::HIGH], ]; } /** - * We run as early as possible, this should be the first event + * Constructor * - * @param Event $event - * @return void + * @param DispatcherInterface $dispatcher The event dispatcher + * @param array $config An optional associative array of configuration settings. + * Recognized key values include 'name', 'group', 'params', 'language' + * (this list is not meant to be comprehensive). * - * @since __DEPLOY_VERSION__ + * @since 1.5 */ - public function eventAfterInitialise(Event $event) + public function __construct(DispatcherInterface $dispatcher, array $config = []) { + parent::__construct($dispatcher, $config); + + /** + * Normally we should never use the constructor to execute any logic which would + * affect other parts of the cms, but since we need to load class aliases as + * early as possible we load the class aliases in the constructor so system plugins + * which depend on the JPlugin alias for example still are working + */ + /** * Load class names which are deprecated in joomla 4.0 and which will * likely be removed in Joomla 6.0 */ - if ($this->params->get('classes_aliases')) { require_once dirname(__DIR__) . '/classmap/classmap.php'; } } + + /** + * We run as early as possible, this should be the first event + * + * @param Event $event + * @return void + * + * @since __DEPLOY_VERSION__ + */ + public function onAfterInitialiseDocument(AfterInitialiseDocumentEvent $event) + { + /** + * Load the es5 assets stubs, they are needed if an extension + * directly uses a core es5 asset which has no function in Joomla 5+ + * and only provides an empty asset to not throw an exception + */ + if ($this->params->get('es5_assets')) { + $event->getDocument() + ->getWebAssetManager() + ->getRegistry() + ->addRegistryFile('media/plg_system_compat/es5.asset.json'); + } + } } From bc548793b718e9737460a98138df5f89cfe42d02 Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Sat, 22 Jul 2023 14:30:51 +0200 Subject: [PATCH 028/126] Fix excluded files from PR #41065 (#41207) --- build/deleted_file_check.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build/deleted_file_check.php b/build/deleted_file_check.php index 6378d6b260b6f..faff7f022e3d9 100644 --- a/build/deleted_file_check.php +++ b/build/deleted_file_check.php @@ -59,11 +59,9 @@ function usage($command) exit(1); } -// Directories and files to skip for the check (needs to include anything from J3 we want to keep) +// Directories to skip for the check (needs to include anything from J3 we want to keep) $previousReleaseExclude = [ $options['from'] . '/administrator/components/com_search', - $options['from'] . '/administrator/language/en-GB/plg_task_demotasks.ini', - $options['from'] . '/administrator/language/en-GB/plg_task_demotasks.sys.ini', $options['from'] . '/components/com_search', $options['from'] . '/images/sampledata', $options['from'] . '/installation', @@ -173,6 +171,8 @@ function usage($command) "'/administrator/language/en-GB/en-GB.plg_search_weblinks.sys.ini',", "'/administrator/language/en-GB/en-GB.plg_system_weblinks.ini',", "'/administrator/language/en-GB/en-GB.plg_system_weblinks.sys.ini',", + "'/administrator/language/en-GB/plg_task_demotasks.ini',", + "'/administrator/language/en-GB/plg_task_demotasks.sys.ini',", "'/language/en-GB/en-GB.com_search.ini',", "'/language/en-GB/en-GB.mod_search.ini',", "'/language/en-GB/en-GB.mod_search.sys.ini',", From 825027641f0a20e88d2eaca8993af901686105da Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Sun, 23 Jul 2023 16:34:07 +0100 Subject: [PATCH 029/126] [5.0] Rename Login with Web Authentication to Login with Passkeys (#41085) * [5.0] Passkeys * size * fgixes * more * Revert "Auxiliary commit to revert individual files from c8db802d91b0f009be6f03b3ce24f51e01e2f23d" This reverts commit 54a7951d408329a3fa24a80145391a94bb25fe29. * Revert "Auxiliary commit to revert individual files from 8d080250b631945c6284d3b114ea5ec8e31c01b7" This reverts commit e809ddea25d9ce4f2262fe96dd5faf2cd7410ff7. * Revert "Auxiliary commit to revert individual files from c8db802d91b0f009be6f03b3ce24f51e01e2f23d" This reverts commit ee1a4e9b4e936c1bb06fdfc3369875a8b136bb37. * styleguide * missed one * Add image, change login wording following the style guide (#512) * Add image, change login wording following the style guide * Add passkeys image for mfa method --------- Co-authored-by: Richard Fath Co-authored-by: Harald Leithner --- administrator/language/en-GB/com_users.ini | 6 +- .../en-GB/plg_multifactorauth_webauthn.ini | 34 +++++----- .../plg_multifactorauth_webauthn.sys.ini | 4 +- .../language/en-GB/plg_system_webauthn.ini | 62 +++++++++---------- .../en-GB/plg_system_webauthn.sys.ini | 4 +- .../images/passkeys.svg | 14 +++++ .../images/fido-passkey-black.svg | 1 + .../plg_system_webauthn/scss/button.scss | 3 +- .../atum/scss/blocks/_icons.scss | 5 +- .../site/cassiopeia/scss/blocks/_icons.scss | 5 +- .../webauthn/src/Extension/Webauthn.php | 2 +- .../PluginTraits/AdditionalLoginButtons.php | 2 +- 12 files changed, 79 insertions(+), 63 deletions(-) create mode 100644 build/media_source/plg_multifactorauth_webauthn/images/passkeys.svg create mode 100644 build/media_source/plg_system_webauthn/images/fido-passkey-black.svg diff --git a/administrator/language/en-GB/com_users.ini b/administrator/language/en-GB/com_users.ini index 48d696fe4d9bc..56bcedadc5b63 100644 --- a/administrator/language/en-GB/com_users.ini +++ b/administrator/language/en-GB/com_users.ini @@ -66,7 +66,7 @@ COM_USERS_CONFIG_FRONTEND_SHOW_TITLE_LABEL="Show title in frontend" COM_USERS_CONFIG_IMPORT_FAILED="An error was encountered while importing the configuration: %s." COM_USERS_CONFIG_INTEGRATION_SETTINGS_DESC="These settings determine how the Users Component will integrate with other extensions." COM_USERS_CONFIG_LBL_NOGROUP="( no group )" -COM_USERS_CONFIG_MFAONSILENT_DESC="Should the user have to go through Multi-factor Authentication after a silent user login? Silent logins are those which do not require a username and password e.g. the Remember Me feature, WebAuthn etc." +COM_USERS_CONFIG_MFAONSILENT_DESC="Should the user have to go through Multi-factor Authentication after a silent user login? Silent logins are those which do not require a username and password e.g. the Remember Me feature, passkeys etc." COM_USERS_CONFIG_MFAONSILENT_LABEL="Multi-factor Authentication after silent login" COM_USERS_CONFIG_MULTIFACTORAUTH_SETTINGS_DESC="Configure how Multi-factor Authentication works in Joomla." COM_USERS_CONFIG_MULTIFACTORAUTH_SETTINGS_LABEL="Multi-factor Authentication" @@ -78,7 +78,7 @@ COM_USERS_CONFIG_REDIRECTONLOGIN_LABEL="Onboard new users" COM_USERS_CONFIG_REDIRECTURL_DESC="If it's not empty redirects to this URL instead of the Multi-factor Authentication setup page when the option above is enabled. WARNING: This must be a URL inside your site. You cannot log in to an external link or to a different subdomain." COM_USERS_CONFIG_REDIRECTURL_LABEL="Custom redirection URL" COM_USERS_CONFIG_SAVE_FAILED="An error was encountered while saving the configuration: %s." -COM_USERS_CONFIG_SILENTRESPONSES_DESC="For experts. A comma–separated list of Joomla authentication response types which are considered silent logins. The default is cookie (the Remember Me feature) and passwordless (WebAuthn)." +COM_USERS_CONFIG_SILENTRESPONSES_DESC="For experts. A comma–separated list of Joomla authentication response types which are considered silent logins. The default is cookie (the Remember Me feature) and passwordless (passkeys)." COM_USERS_CONFIG_SILENTRESPONSES_LABEL="Silent login authentication response types (for experts)" COM_USERS_CONFIG_USER_OPTIONS="User Options" COM_USERS_CONFIG_MFATRYCOUNT_LABEL="Maximum MFA tries" @@ -360,7 +360,7 @@ COM_USERS_OPTION_SELECT_LEVEL_END="- Select End Level -" COM_USERS_OPTION_SELECT_LEVEL_START="- Select Start Level -" COM_USERS_PASSWORD_RESET_REQUIRED="Password Reset Required" COM_USERS_POSTINSTALL_MULTIFACTORAUTH_ACTION="Enable the new Multi-factor Authentication plugins" -COM_USERS_POSTINSTALL_MULTIFACTORAUTH_BODY="

Joomla! comes with a drastically improved Multi-factor Authentication experience to help you secure the logins of your users.

Unlike the Two Factor Authentication feature in previous versions of Joomla, users no longer have to enter a Security Code with their username and password. The Multi-factor Authentication happens in a separate step after logging into the site. Until they complete their Multi-factor Authentication validation users cannot navigate to other pages or use the site. This makes Multi-factor Authentication phishing–resistant. It also allows for interactive validation methods like WebAuthn (including integration with Windows Hello, Apple TouchID / FaceID and Android Biometric Screen Lock), or sending 6-digit authentication codes by email. Both of these interactive, convenient methods are now available as plugins shipped with Joomla! itself.

" +COM_USERS_POSTINSTALL_MULTIFACTORAUTH_BODY="

Joomla! comes with a drastically improved Multi-factor Authentication experience to help you secure the logins of your users.

Unlike the Two Factor Authentication feature in previous versions of Joomla, users no longer have to enter a Security Code with their username and password. The Multi-factor Authentication happens in a separate step after logging into the site. Until they complete their Multi-factor Authentication validation users cannot navigate to other pages or use the site. This makes Multi-factor Authentication phishing–resistant. It also allows for interactive validation methods like passkeys (including integration with Windows Hello, Apple TouchID / FaceID and Android Biometric Screen Lock), or sending 6-digit authentication codes by email. Both of these interactive, convenient methods are now available as plugins shipped with Joomla! itself.

" COM_USERS_POSTINSTALL_MULTIFACTORAUTH_TITLE="Improved Multi-factor Authentication" COM_USERS_REQUIRE_PASSWORD_RESET="Require Password Reset" COM_USERS_REVIEW_HEADING="Review Date" diff --git a/administrator/language/en-GB/plg_multifactorauth_webauthn.ini b/administrator/language/en-GB/plg_multifactorauth_webauthn.ini index 11adfe91cd382..a3edee65bb718 100644 --- a/administrator/language/en-GB/plg_multifactorauth_webauthn.ini +++ b/administrator/language/en-GB/plg_multifactorauth_webauthn.ini @@ -3,21 +3,21 @@ ; License GNU General Public License version 2 or later; see LICENSE.txt ; Note : All ini files need to be saved as UTF-8 -PLG_MULTIFACTORAUTH_WEBAUTHN="Multi-factor Authentication - Web Authentication" +PLG_MULTIFACTORAUTH_WEBAUTHN="Multi-factor Authentication - Passkeys" PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_CREATE_INVALID_LOGIN_REQUEST="Invalid authentication request." -PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_CREATE_INVALID_PK="The authenticator registration has failed. The authenticator response received from the browser does not match the Public Key issued by the server. This means that someone tried to hack you or something is broken." -PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_CREATE_INVALID_USER="For security reasons you are not allowed to register authenticators on behalf of another user." -PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_CREATE_NO_ATTESTED_DATA="Something went wrong but no further information about the error is available at this time. Please retry registering your authenticator." -PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_CREATE_NO_PK="The server has not issued a Public Key for authenticator registration but somehow received an authenticator registration request from the browser. This means that someone tried to hack you or something is broken." -PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_NOTAVAILABLE_BODY="Your browser doesn't support the WebAuthn standard. Not all browsers are compatible with WebAuthn on all devices just yet." -PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_NOTAVAILABLE_HEAD="Your browser lacks support for WebAuthn" -PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_NOTHTTPS_BODY="Please access the site over HTTPS to enable Multi-factor Authentication with WebAuthn." -PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_NOTHTTPS_HEAD="WebAuthn is only available on HTTPS" -PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_NO_STORED_CREDENTIAL="You have not configured an Authenticator yet or the Authenticator you are trying to use is ineligible." -PLG_MULTIFACTORAUTH_WEBAUTHN_LBL_CONFIGURED="You have already configured your Authenticator. Please note that you can only modify its title from this page." -PLG_MULTIFACTORAUTH_WEBAUTHN_LBL_DISPLAYEDAS="Web Authentication" -PLG_MULTIFACTORAUTH_WEBAUTHN_LBL_INSTRUCTIONS="Use the “%s” button on this page to start the Web Authentication process. Then please follow the instructions given to you by your browser to complete Web Authentication with your preferred Authenticator." -PLG_MULTIFACTORAUTH_WEBAUTHN_LBL_REGISTERKEY="Register your Authenticator" -PLG_MULTIFACTORAUTH_WEBAUTHN_LBL_SHORTINFO="Use WebAuthn with any hardware or software security key." -PLG_MULTIFACTORAUTH_WEBAUTHN_LBL_VALIDATEKEY="Validate with your Authenticator" -PLG_MULTIFACTORAUTH_WEBAUTHN_XML_DESCRIPTION="Use W3C Web Authentication (Webauthn) as a Multi-factor Authentication method. All modern browsers support it. Most browsers offer device-specific authentication protected by a password and/or biometrics (fingerprint sensor, face scan, …)." +PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_CREATE_INVALID_PK="The passkey registration has failed. The passkey response received from the browser does not match the Public Key issued by the server. This means that someone tried to hack you or something is broken." +PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_CREATE_INVALID_USER="For security reasons you are not allowed to register passkeys on behalf of another user." +PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_CREATE_NO_ATTESTED_DATA="Something went wrong but no further information about the error is available at this time. Please retry registering your passkey." +PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_CREATE_NO_PK="The server has not issued a Public Key for passkey registration but somehow received a passkey registration request from the browser. This means that someone tried to hack you or something is broken." +PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_NOTAVAILABLE_BODY="Your browser doesn't support the passkey standard. Not all browsers are compatible with passkeys on all devices just yet." +PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_NOTAVAILABLE_HEAD="Your browser lacks support for passkeys" +PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_NOTHTTPS_BODY="Please access the site over HTTPS to enable Multi-factor Authentication with passkeys." +PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_NOTHTTPS_HEAD="Passkeys is only available on HTTPS" +PLG_MULTIFACTORAUTH_WEBAUTHN_ERR_NO_STORED_CREDENTIAL="You have not configured a passkey yet or the passkey you are trying to use is ineligible." +PLG_MULTIFACTORAUTH_WEBAUTHN_LBL_CONFIGURED="You have already configured your passkey. Please note that you can only modify its title from this page." +PLG_MULTIFACTORAUTH_WEBAUTHN_LBL_DISPLAYEDAS="Passkey" +PLG_MULTIFACTORAUTH_WEBAUTHN_LBL_INSTRUCTIONS="Use the “%s” button on this page to start the Web Authentication process. Then please follow the instructions given to you by your browser to complete Web Authentication with your preferred passkey." +PLG_MULTIFACTORAUTH_WEBAUTHN_LBL_REGISTERKEY="Register your passkey" +PLG_MULTIFACTORAUTH_WEBAUTHN_LBL_SHORTINFO="Use browser passkeys with any hardware or software security key." +PLG_MULTIFACTORAUTH_WEBAUTHN_LBL_VALIDATEKEY="Validate with your passkey" +PLG_MULTIFACTORAUTH_WEBAUTHN_XML_DESCRIPTION="Use browser passkeys as a Multi-factor Authentication method. All modern browsers support it. Most browsers offer device-specific authentication protected by a password and/or biometrics (fingerprint sensor, face scan, …)." diff --git a/administrator/language/en-GB/plg_multifactorauth_webauthn.sys.ini b/administrator/language/en-GB/plg_multifactorauth_webauthn.sys.ini index 8f6890a389ecb..cd6d1e8f0faa4 100644 --- a/administrator/language/en-GB/plg_multifactorauth_webauthn.sys.ini +++ b/administrator/language/en-GB/plg_multifactorauth_webauthn.sys.ini @@ -3,5 +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 -PLG_MULTIFACTORAUTH_WEBAUTHN="Multi-factor Authentication - Web Authentication" -PLG_MULTIFACTORAUTH_WEBAUTHN_XML_DESCRIPTION="Use W3C Web Authentication (Webauthn) as a Multi-factor Authentication method. All modern browsers support it. Most browsers offer device-specific authentication protected by a password and/or biometrics (fingerprint sensor, face scan, …)." +PLG_MULTIFACTORAUTH_WEBAUTHN="Multi-factor Authentication - Passkeys" +PLG_MULTIFACTORAUTH_WEBAUTHN_XML_DESCRIPTION="Use browser passkeys as a Multi-factor Authentication method. All modern browsers support it. Most browsers offer device-specific authentication protected by a password and/or biometrics (fingerprint sensor, face scan, …)." diff --git a/administrator/language/en-GB/plg_system_webauthn.ini b/administrator/language/en-GB/plg_system_webauthn.ini index 5c7f8465f20c5..5c6c8b77e5c59 100644 --- a/administrator/language/en-GB/plg_system_webauthn.ini +++ b/administrator/language/en-GB/plg_system_webauthn.ini @@ -3,49 +3,49 @@ ; License GNU General Public License version 2 or later; see LICENSE.txt ; Note : All ini files need to be saved as UTF-8 -PLG_SYSTEM_WEBAUTHN="System - WebAuthn Passwordless Login" -PLG_SYSTEM_WEBAUTHN_CANNOT_ADD_FOR_A_USER="You cannot add or remove authenticators on behalf of users. Users must login, and set up their own devices." -PLG_SYSTEM_WEBAUTHN_DESCRIPTION="Enables passwordless authentication using the W3C Web Authentication (WebAuthn) API. Please note that the WebAuthn tab in the user profile editor and the WebAuthn login buttons will only be displayed if the user is accessing the site over HTTPS. Furthermore, registering WebAuthn authenticators and using them to log into your site will only work when your site is using a valid certificate, signed by a Certificate Authority the user's browser trusts." +PLG_SYSTEM_WEBAUTHN="System - Passkey (Passwordless) Login" +PLG_SYSTEM_WEBAUTHN_CANNOT_ADD_FOR_A_USER="You cannot add or remove passkeys on behalf of users. Users must login, and set up their own devices." +PLG_SYSTEM_WEBAUTHN_DESCRIPTION="Enables passwordless authentication using passkeys. Please note that the passkeys tab in the user profile editor and the passkeys login buttons will only be displayed if the user is accessing the site over HTTPS. Registering passkeys and using them to log into your site will only work when your site is using a valid certificate, signed by a Certificate Authority the user's browser trusts." PLG_SYSTEM_WEBAUTHN_ERR_CANNOT_FIND_USERNAME="Cannot find the username field in the login module. Sorry, Passwordless authentication will not work on this site unless you use a different login module." PLG_SYSTEM_WEBAUTHN_ERR_CANT_STORE_FOR_GUEST="Cannot possibly store credentials for Guest user!" -PLG_SYSTEM_WEBAUTHN_ERR_CORRUPT_STORED_CREDENTIAL="The stored credentials are corrupt for your user account. Log in using another method, then remove and add again your login authenticator." +PLG_SYSTEM_WEBAUTHN_ERR_CORRUPT_STORED_CREDENTIAL="The stored credentials are corrupt for your user account. Log in using another method, then remove and add again your passkey." PLG_SYSTEM_WEBAUTHN_ERR_CREATE_INVALID_LOGIN_REQUEST="Invalid passwordless login request. Something is broken or this is an attempt to hack the site." -PLG_SYSTEM_WEBAUTHN_ERR_CREATE_INVALID_PK="The authenticator registration has failed. The authenticator response received from the browser does not match the Public Key issued by the server. This means that someone tried to hack you or something is broken." -PLG_SYSTEM_WEBAUTHN_ERR_CREATE_INVALID_USER="For security reasons you are not allowed to register passwordless authentication tokens on behalf of another user." -PLG_SYSTEM_WEBAUTHN_ERR_CREATE_NO_ATTESTED_DATA="Something went wrong but no further information about the error is available at this time. Please retry registering your authenticator." -PLG_SYSTEM_WEBAUTHN_ERR_CREATE_NO_PK="The server has not issued a Public Key for authenticator registration but somehow received an authenticator registration request from the browser. This means that someone tried to hack you or something is broken." +PLG_SYSTEM_WEBAUTHN_ERR_CREATE_INVALID_PK="The passkey registration has failed. The passkey response received from the browser does not match the Public Key issued by the server. This means that someone tried to hack you or something is broken." +PLG_SYSTEM_WEBAUTHN_ERR_CREATE_INVALID_USER="For security reasons you are not allowed to register passkeys on behalf of another user." +PLG_SYSTEM_WEBAUTHN_ERR_CREATE_NO_ATTESTED_DATA="Something went wrong but no further information about the error is available at this time. Please retry registering your passkey." +PLG_SYSTEM_WEBAUTHN_ERR_CREATE_NO_PK="The server has not issued a Public Key for passkey registration but somehow received a passkey registration request from the browser. This means that someone tried to hack you or something is broken." PLG_SYSTEM_WEBAUTHN_ERR_CREDENTIAL_ID_ALREADY_IN_USE="Cannot save credentials. These credentials are already being used by a different user." -PLG_SYSTEM_WEBAUTHN_ERR_EMPTY_USERNAME="You need to enter your username (but NOT your password) before selecting the Web Authentication login button." +PLG_SYSTEM_WEBAUTHN_ERR_EMPTY_USERNAME="You need to enter your username (but NOT your password) before selecting the passkey login button." PLG_SYSTEM_WEBAUTHN_ERR_INVALID_USERNAME="The specified username does not correspond to a user account that has enabled passwordless login on this site." PLG_SYSTEM_WEBAUTHN_ERR_LABEL_NOT_SAVED="Could not save the new label" -PLG_SYSTEM_WEBAUTHN_ERR_NOT_DELETED="Could not remove the authenticator" +PLG_SYSTEM_WEBAUTHN_ERR_NOT_DELETED="Could not remove the passkey" PLG_SYSTEM_WEBAUTHN_ERR_NOUSER="No user account has been found" -PLG_SYSTEM_WEBAUTHN_ERR_NO_BROWSER_SUPPORT="Sorry, your browser does not support the W3C Web Authentication standard for passwordless logins or your site is not being served over HTTPS with a valid certificate, signed by a Certificate Authority your browser trusts. You will need to log into this site using your username and password." -PLG_SYSTEM_WEBAUTHN_ERR_NO_STORED_CREDENTIAL="Cannot find the stored credentials for your login authenticator." -PLG_SYSTEM_WEBAUTHN_ERR_USER_REMOVED="The user for this authenticator seems to no longer exist on this site." -PLG_SYSTEM_WEBAUTHN_ERR_XHR_INITCREATE="Cannot get the authenticator registration information from your site." -PLG_SYSTEM_WEBAUTHN_FIELD_ATTESTATION_SUPPORT_DESC="Only allow authenticators with verifiable cryptographic signatures to be used for WebAuthn logins. Strongly recommended for high security environments. Requires the system temporary directory being writeable by PHP, and the OpenSSL extension. May prevent some cheaper, non-certified authenticators from working at all. Disabling it also prevents Joomla from identifying the make and model of the authenticator you are using (no icon will be displayed next to the Authenticator Name)." +PLG_SYSTEM_WEBAUTHN_ERR_NO_BROWSER_SUPPORT="Sorry, your browser does not support the passkeys standard for passwordless logins or your site is not being served over HTTPS with a valid certificate, signed by a Certificate Authority your browser trusts. You will need to log into this site using your username and password." +PLG_SYSTEM_WEBAUTHN_ERR_NO_STORED_CREDENTIAL="Cannot find the stored credentials for your passkey." +PLG_SYSTEM_WEBAUTHN_ERR_USER_REMOVED="The user for this passkey seems to no longer exist on this site." +PLG_SYSTEM_WEBAUTHN_ERR_XHR_INITCREATE="Cannot get the passkey registration information from your site." +PLG_SYSTEM_WEBAUTHN_FIELD_ATTESTATION_SUPPORT_DESC="Only allow passkeys with verifiable cryptographic signatures to be used for passkey logins. Strongly recommended for high security environments. Requires the system temporary directory being writeable by PHP, and the OpenSSL extension. May prevent some cheaper, non-certified passkeys from working at all. Disabling it also prevents Joomla from identifying the make and model of the passkey you are using (no icon will be displayed next to the passkey Name)." PLG_SYSTEM_WEBAUTHN_FIELD_ATTESTATION_SUPPORT_LABEL="Attestation Support" -PLG_SYSTEM_WEBAUTHN_FIELD_DESC="Lets you manage passwordless login methods using the W3C Web Authentication standard. You need a supported browser and authenticator (eg Google Chrome or Firefox with a FIDO2 certified security key).

MacOS/iOS/watchOS: Touch/Face ID.
Windows: Hello (Fingerprint / Facial Recognition / PIN).
Android: Biometric screen lock.

You can find more details in the WebAuthn Passwordless Login documentation." -PLG_SYSTEM_WEBAUTHN_FIELD_LABEL="W3C Web Authentication (WebAuthn) Login" -PLG_SYSTEM_WEBAUTHN_FIELD_N_AUTHENTICATORS_REGISTERED="%d WebAuthn authenticators already set up: %s" -PLG_SYSTEM_WEBAUTHN_FIELD_N_AUTHENTICATORS_REGISTERED_0="No WebAuthn authenticator has been set up yet" -PLG_SYSTEM_WEBAUTHN_FIELD_N_AUTHENTICATORS_REGISTERED_1="One WebAuthn authenticator already set up: %2$s" -PLG_SYSTEM_WEBAUTHN_HEADER="W3C Web Authentication (WebAuthn) Login" -PLG_SYSTEM_WEBAUTHN_LBL_DEFAULT_AUTHENTICATOR="Generic Authenticator" +PLG_SYSTEM_WEBAUTHN_FIELD_DESC="Lets you manage passwordless login methods using passkeys. You need a supported browser and passkey (eg Google Chrome or Firefox with a FIDO2 certified security key).

MacOS/iOS/watchOS: Touch/Face ID.
Windows: Hello (Fingerprint / Facial Recognition / PIN).
Android: Biometric screen lock.

You can find more details in the Passkey Passwordless Login documentation." +PLG_SYSTEM_WEBAUTHN_FIELD_LABEL="Passkey Login" +PLG_SYSTEM_WEBAUTHN_FIELD_N_AUTHENTICATORS_REGISTERED="%d passkeys already set up: %s" +PLG_SYSTEM_WEBAUTHN_FIELD_N_AUTHENTICATORS_REGISTERED_0="No passkey has been set up yet" +PLG_SYSTEM_WEBAUTHN_FIELD_N_AUTHENTICATORS_REGISTERED_1="One passkey already set up: %2$s" +PLG_SYSTEM_WEBAUTHN_HEADER="Passkey Login" +PLG_SYSTEM_WEBAUTHN_LBL_DEFAULT_AUTHENTICATOR="Generic Passkey" PLG_SYSTEM_WEBAUTHN_LBL_DEFAULT_AUTHENTICATOR_LABEL="%s added on %s" -PLG_SYSTEM_WEBAUTHN_LOGIN_DESC="Login without a password using the W3C Web Authentication (WebAuthn) standard in compatible browsers. You need to have already set up WebAuthn authentication in your user profile." -PLG_SYSTEM_WEBAUTHN_LOGIN_LABEL="Web Authentication" -PLG_SYSTEM_WEBAUTHN_MANAGE_BTN_ADD_LABEL="Add New Authenticator" +PLG_SYSTEM_WEBAUTHN_LOGIN_DESC="Login without a password using the browser passkey standard in compatible browsers. You need to have already set up passkey authentication in your user profile." +PLG_SYSTEM_WEBAUTHN_LOGIN_LABEL="Sign in with a passkey" +PLG_SYSTEM_WEBAUTHN_MANAGE_BTN_ADD_LABEL="Add New Passkey" PLG_SYSTEM_WEBAUTHN_MANAGE_BTN_CANCEL_LABEL="Cancel" PLG_SYSTEM_WEBAUTHN_MANAGE_BTN_DELETE_LABEL="Remove" PLG_SYSTEM_WEBAUTHN_MANAGE_BTN_EDIT_LABEL="Edit Name" PLG_SYSTEM_WEBAUTHN_MANAGE_BTN_SAVE_LABEL="Save" -PLG_SYSTEM_WEBAUTHN_MANAGE_FIELD_KEYLABEL_DESC="A short name for the authenticator used with this passwordless login method." -PLG_SYSTEM_WEBAUTHN_MANAGE_FIELD_KEYLABEL_LABEL="Authenticator Name" +PLG_SYSTEM_WEBAUTHN_MANAGE_FIELD_KEYLABEL_DESC="A short name for the passkey used with this passkeys login method." +PLG_SYSTEM_WEBAUTHN_MANAGE_FIELD_KEYLABEL_LABEL="Passkey Name" PLG_SYSTEM_WEBAUTHN_MANAGE_HEADER_ACTIONS_LABEL="Actions" -PLG_SYSTEM_WEBAUTHN_MANAGE_HEADER_NOMETHODS_LABEL="No authenticators have been set up yet." -PLG_SYSTEM_WEBAUTHN_MSG_DELETED="The authenticator has been removed." +PLG_SYSTEM_WEBAUTHN_MANAGE_HEADER_NOMETHODS_LABEL="No passkeys have been set up yet." +PLG_SYSTEM_WEBAUTHN_MSG_DELETED="The passkey has been removed." PLG_SYSTEM_WEBAUTHN_MSG_SAVED_LABEL="The label has been saved." -PLG_SYSTEM_WEBAUTHN_REQUIRES_GMP="Either of the PHP extensions GMP or BCmath must be loaded to add authenticators." -PLG_SYSTEM_WEBAUTHN_TABLE_CAPTION="WebAuthn Authenticators" +PLG_SYSTEM_WEBAUTHN_REQUIRES_GMP="Either of the PHP extensions GMP or BCmath must be loaded to add passkeys." +PLG_SYSTEM_WEBAUTHN_TABLE_CAPTION="Passkeys" diff --git a/administrator/language/en-GB/plg_system_webauthn.sys.ini b/administrator/language/en-GB/plg_system_webauthn.sys.ini index 5ed4596fcdfcf..21a49757ded2e 100644 --- a/administrator/language/en-GB/plg_system_webauthn.sys.ini +++ b/administrator/language/en-GB/plg_system_webauthn.sys.ini @@ -3,5 +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 -PLG_SYSTEM_WEBAUTHN="System - WebAuthn Passwordless Login" -PLG_SYSTEM_WEBAUTHN_DESCRIPTION="Enables passwordless authentication using the W3C Web Authentication (WebAuthn) API. Please note that the WebAuthn tab in the user profile editor and the WebAuthn login buttons will only be displayed if the user is accessing the site over HTTPS. Furthermore, registering WebAuthn authenticators and using them to log into your site will only work when your site is using a valid certificate, signed by a Certificate Authority the user's browser trusts." +PLG_SYSTEM_WEBAUTHN="System - Passkey (Passwordless) Login" +PLG_SYSTEM_WEBAUTHN_DESCRIPTION="Enables passwordless authentication using passkeys. Please note that the passkeys tab in the user profile editor and the passkeys login buttons will only be displayed if the user is accessing the site over HTTPS. Registering passkeys and using them to log into your site will only work when your site is using a valid certificate, signed by a Certificate Authority the user's browser trusts." diff --git a/build/media_source/plg_multifactorauth_webauthn/images/passkeys.svg b/build/media_source/plg_multifactorauth_webauthn/images/passkeys.svg new file mode 100644 index 0000000000000..4a8edbfd40987 --- /dev/null +++ b/build/media_source/plg_multifactorauth_webauthn/images/passkeys.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/build/media_source/plg_system_webauthn/images/fido-passkey-black.svg b/build/media_source/plg_system_webauthn/images/fido-passkey-black.svg new file mode 100644 index 0000000000000..80d19577c876f --- /dev/null +++ b/build/media_source/plg_system_webauthn/images/fido-passkey-black.svg @@ -0,0 +1 @@ + diff --git a/build/media_source/plg_system_webauthn/scss/button.scss b/build/media_source/plg_system_webauthn/scss/button.scss index b2d153b6525d3..26a20f1cd2dd0 100644 --- a/build/media_source/plg_system_webauthn/scss/button.scss +++ b/build/media_source/plg_system_webauthn/scss/button.scss @@ -1,6 +1,5 @@ button[class*=plg_system_webauthn_login_button] { - max-height: 3rem; - padding: .25rem; + padding: .4rem; span[class*=icon] { display: inline-block; 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 5528b46ec864a..0841d8f677b03 100644 --- a/build/media_source/templates/administrator/atum/scss/blocks/_icons.scss +++ b/build/media_source/templates/administrator/atum/scss/blocks/_icons.scss @@ -73,10 +73,11 @@ // WebAuthn .plg_system_webauthn_login_button svg { - margin-inline-end: 2px; + width: 30px; + margin: 4px; } -.plg_system_webauthn_login_button svg path { +.plg_system_webauthn_login_button svg path, .plg_system_webauthn_login_button svg circle { fill: var(--white); } diff --git a/build/media_source/templates/site/cassiopeia/scss/blocks/_icons.scss b/build/media_source/templates/site/cassiopeia/scss/blocks/_icons.scss index 73230b650c982..1e901c9909480 100644 --- a/build/media_source/templates/site/cassiopeia/scss/blocks/_icons.scss +++ b/build/media_source/templates/site/cassiopeia/scss/blocks/_icons.scss @@ -67,9 +67,10 @@ // WebAuthn .plg_system_webauthn_login_button svg { - margin-inline-end: 2px; + width: 30px; + margin: 4px; } -.plg_system_webauthn_login_button svg path { +.plg_system_webauthn_login_button svg path, .plg_system_webauthn_login_button svg circle { fill: var(--black); } diff --git a/plugins/multifactorauth/webauthn/src/Extension/Webauthn.php b/plugins/multifactorauth/webauthn/src/Extension/Webauthn.php index 91544407601bf..5eef7a60a5232 100644 --- a/plugins/multifactorauth/webauthn/src/Extension/Webauthn.php +++ b/plugins/multifactorauth/webauthn/src/Extension/Webauthn.php @@ -95,7 +95,7 @@ public function onUserMultifactorGetMethod(GetMethod $event): void 'name' => $this->mfaMethodName, 'display' => Text::_('PLG_MULTIFACTORAUTH_WEBAUTHN_LBL_DISPLAYEDAS'), 'shortinfo' => Text::_('PLG_MULTIFACTORAUTH_WEBAUTHN_LBL_SHORTINFO'), - 'image' => 'media/plg_multifactorauth_webauthn/images/webauthn.svg', + 'image' => 'media/plg_multifactorauth_webauthn/images/passkeys.svg', 'allowMultiple' => true, 'allowEntryBatching' => true, ] diff --git a/plugins/system/webauthn/src/PluginTraits/AdditionalLoginButtons.php b/plugins/system/webauthn/src/PluginTraits/AdditionalLoginButtons.php index 95f266c9f0a34..184aa3e76cc54 100644 --- a/plugins/system/webauthn/src/PluginTraits/AdditionalLoginButtons.php +++ b/plugins/system/webauthn/src/PluginTraits/AdditionalLoginButtons.php @@ -76,7 +76,7 @@ public function onUserLoginButtons(Event $event): void UserHelper::genRandomPassword(12) . '-' . UserHelper::genRandomPassword(8); // Get local path to image - $image = HTMLHelper::_('image', 'plg_system_webauthn/webauthn.svg', '', '', true, true); + $image = HTMLHelper::_('image', 'plg_system_webauthn/fido-passkey-black.svg', '', '', true, true); // If you can't find the image then skip it $image = $image ? JPATH_ROOT . substr($image, \strlen(Uri::root(true))) : ''; From 147d788be396356aed6105e2fe2a508318d11674 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Sun, 23 Jul 2023 19:50:37 +0100 Subject: [PATCH 030/126] [5.x] SQL field plugin (#41122) * [5.x] SQL field plugin * added to the plugin params - n0ot sure why but done for consistency --- administrator/language/en-GB/plg_fields_sql.ini | 2 ++ plugins/fields/sql/params/sql.xml | 8 +++++++- plugins/fields/sql/sql.xml | 8 ++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/administrator/language/en-GB/plg_fields_sql.ini b/administrator/language/en-GB/plg_fields_sql.ini index 26552719cbb48..fd483b287cd3e 100644 --- a/administrator/language/en-GB/plg_fields_sql.ini +++ b/administrator/language/en-GB/plg_fields_sql.ini @@ -7,6 +7,8 @@ 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_FORM_LAYOUT_FANCY_SELECT="Enhanced select" +PLG_FIELDS_SQL_PARAMS_HEADER_DESC="Add a string with no value at the top of the dropdown list eg ' - Select Article - '." +PLG_FIELDS_SQL_PARAMS_HEADER_LABEL="Header" PLG_FIELDS_SQL_PARAMS_MULTIPLE_LABEL="Multiple" 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" diff --git a/plugins/fields/sql/params/sql.xml b/plugins/fields/sql/params/sql.xml index ba227f33ec139..20b80f2ecfdfa 100644 --- a/plugins/fields/sql/params/sql.xml +++ b/plugins/fields/sql/params/sql.xml @@ -11,7 +11,13 @@ rows="10" required="true" /> - + + + Date: Sun, 23 Jul 2023 20:28:48 +0100 Subject: [PATCH 031/126] [5.x] Redirect filter (#41166) * [5.x] Redirect filter * camelcase --- administrator/components/com_redirect/forms/filter_links.xml | 2 +- libraries/src/Form/Field/RedirectStatusField.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/administrator/components/com_redirect/forms/filter_links.xml b/administrator/components/com_redirect/forms/filter_links.xml index 7ef5efcf94dbe..40de1f717e458 100644 --- a/administrator/components/com_redirect/forms/filter_links.xml +++ b/administrator/components/com_redirect/forms/filter_links.xml @@ -11,7 +11,7 @@ /> diff --git a/libraries/src/Form/Field/RedirectStatusField.php b/libraries/src/Form/Field/RedirectStatusField.php index 3061668bdb253..8b86851704a5e 100644 --- a/libraries/src/Form/Field/RedirectStatusField.php +++ b/libraries/src/Form/Field/RedirectStatusField.php @@ -26,7 +26,7 @@ class RedirectStatusField extends PredefinedlistField * @var string * @since 3.8.0 */ - public $type = 'Redirect_Status'; + public $type = 'RedirectStatus'; /** * Available statuses From ef60f6791d0c82a95b9287421c39c8eaec82f608 Mon Sep 17 00:00:00 2001 From: heelc29 <66922325+heelc29@users.noreply.github.com> Date: Sun, 23 Jul 2023 21:37:46 +0200 Subject: [PATCH 032/126] [5.0] Replace JPATH_PLATFORM with _JEXEC (#41212) --- libraries/src/Event/Application/AfterApiRouteEvent.php | 2 +- libraries/src/Event/Application/AfterCompressEvent.php | 2 +- libraries/src/Event/Application/AfterDispatchEvent.php | 2 +- libraries/src/Event/Application/AfterExecuteEvent.php | 2 +- .../src/Event/Application/AfterInitialiseDocumentEvent.php | 2 +- libraries/src/Event/Application/AfterInitialiseEvent.php | 2 +- libraries/src/Event/Application/AfterRenderEvent.php | 2 +- libraries/src/Event/Application/AfterRespondEvent.php | 2 +- libraries/src/Event/Application/AfterRouteEvent.php | 2 +- libraries/src/Event/Application/ApplicationDocumentEvent.php | 2 +- libraries/src/Event/Application/ApplicationEvent.php | 2 +- libraries/src/Event/Application/BeforeApiRouteEvent.php | 2 +- libraries/src/Event/Application/BeforeCompileHeadEvent.php | 2 +- libraries/src/Event/Application/BeforeExecuteEvent.php | 2 +- libraries/src/Event/Application/BeforeRenderEvent.php | 2 +- libraries/src/Event/Application/BeforeRespondEvent.php | 2 +- libraries/src/Event/Application/DeamonForkEvent.php | 2 +- libraries/src/Event/Application/DeamonReceiveSignalEvent.php | 2 +- libraries/src/MVC/Model/State.php | 2 +- libraries/src/Service/Provider/Mailer.php | 2 +- libraries/src/WebAuthn/Server.php | 2 +- modules/mod_articles_categories/src/Dispatcher/Dispatcher.php | 2 +- modules/mod_related_items/src/Dispatcher/Dispatcher.php | 2 +- 23 files changed, 23 insertions(+), 23 deletions(-) diff --git a/libraries/src/Event/Application/AfterApiRouteEvent.php b/libraries/src/Event/Application/AfterApiRouteEvent.php index 81e8d0576d3f9..5705267f73842 100644 --- a/libraries/src/Event/Application/AfterApiRouteEvent.php +++ b/libraries/src/Event/Application/AfterApiRouteEvent.php @@ -10,7 +10,7 @@ namespace Joomla\CMS\Event\Application; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Event/Application/AfterCompressEvent.php b/libraries/src/Event/Application/AfterCompressEvent.php index a17801847efc4..34cf11143fe9a 100644 --- a/libraries/src/Event/Application/AfterCompressEvent.php +++ b/libraries/src/Event/Application/AfterCompressEvent.php @@ -10,7 +10,7 @@ namespace Joomla\CMS\Event\Application; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Event/Application/AfterDispatchEvent.php b/libraries/src/Event/Application/AfterDispatchEvent.php index 2fe9f84b38efe..e78fb24dec39c 100644 --- a/libraries/src/Event/Application/AfterDispatchEvent.php +++ b/libraries/src/Event/Application/AfterDispatchEvent.php @@ -10,7 +10,7 @@ namespace Joomla\CMS\Event\Application; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Event/Application/AfterExecuteEvent.php b/libraries/src/Event/Application/AfterExecuteEvent.php index 0fbdee994e645..196fec23845c2 100644 --- a/libraries/src/Event/Application/AfterExecuteEvent.php +++ b/libraries/src/Event/Application/AfterExecuteEvent.php @@ -10,7 +10,7 @@ namespace Joomla\CMS\Event\Application; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Event/Application/AfterInitialiseDocumentEvent.php b/libraries/src/Event/Application/AfterInitialiseDocumentEvent.php index 44da371c708e8..c079cb571eb88 100644 --- a/libraries/src/Event/Application/AfterInitialiseDocumentEvent.php +++ b/libraries/src/Event/Application/AfterInitialiseDocumentEvent.php @@ -10,7 +10,7 @@ namespace Joomla\CMS\Event\Application; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Event/Application/AfterInitialiseEvent.php b/libraries/src/Event/Application/AfterInitialiseEvent.php index 0fd8d86a08717..daa8fad5a364e 100644 --- a/libraries/src/Event/Application/AfterInitialiseEvent.php +++ b/libraries/src/Event/Application/AfterInitialiseEvent.php @@ -10,7 +10,7 @@ namespace Joomla\CMS\Event\Application; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Event/Application/AfterRenderEvent.php b/libraries/src/Event/Application/AfterRenderEvent.php index 15d2aaa9bc1a7..e0097257c91fe 100644 --- a/libraries/src/Event/Application/AfterRenderEvent.php +++ b/libraries/src/Event/Application/AfterRenderEvent.php @@ -10,7 +10,7 @@ namespace Joomla\CMS\Event\Application; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Event/Application/AfterRespondEvent.php b/libraries/src/Event/Application/AfterRespondEvent.php index ea00ae648b2c3..1a3651cf18948 100644 --- a/libraries/src/Event/Application/AfterRespondEvent.php +++ b/libraries/src/Event/Application/AfterRespondEvent.php @@ -10,7 +10,7 @@ namespace Joomla\CMS\Event\Application; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Event/Application/AfterRouteEvent.php b/libraries/src/Event/Application/AfterRouteEvent.php index 4e5e3fed535c1..ccdddcbd6af17 100644 --- a/libraries/src/Event/Application/AfterRouteEvent.php +++ b/libraries/src/Event/Application/AfterRouteEvent.php @@ -10,7 +10,7 @@ namespace Joomla\CMS\Event\Application; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Event/Application/ApplicationDocumentEvent.php b/libraries/src/Event/Application/ApplicationDocumentEvent.php index 31599c1545025..f605ded997799 100644 --- a/libraries/src/Event/Application/ApplicationDocumentEvent.php +++ b/libraries/src/Event/Application/ApplicationDocumentEvent.php @@ -12,7 +12,7 @@ use Joomla\CMS\Document\Document; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Event/Application/ApplicationEvent.php b/libraries/src/Event/Application/ApplicationEvent.php index ea000282df276..17287947c1e96 100644 --- a/libraries/src/Event/Application/ApplicationEvent.php +++ b/libraries/src/Event/Application/ApplicationEvent.php @@ -13,7 +13,7 @@ use Joomla\CMS\Event\AbstractImmutableEvent; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Event/Application/BeforeApiRouteEvent.php b/libraries/src/Event/Application/BeforeApiRouteEvent.php index c2e6811b1ccb9..b5897905309a5 100644 --- a/libraries/src/Event/Application/BeforeApiRouteEvent.php +++ b/libraries/src/Event/Application/BeforeApiRouteEvent.php @@ -12,7 +12,7 @@ use Joomla\CMS\Router\ApiRouter; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Event/Application/BeforeCompileHeadEvent.php b/libraries/src/Event/Application/BeforeCompileHeadEvent.php index 857c892a5708c..fac2e681711e2 100644 --- a/libraries/src/Event/Application/BeforeCompileHeadEvent.php +++ b/libraries/src/Event/Application/BeforeCompileHeadEvent.php @@ -11,7 +11,7 @@ // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Event/Application/BeforeExecuteEvent.php b/libraries/src/Event/Application/BeforeExecuteEvent.php index 78df637194b60..e2cc1f2d565ac 100644 --- a/libraries/src/Event/Application/BeforeExecuteEvent.php +++ b/libraries/src/Event/Application/BeforeExecuteEvent.php @@ -12,7 +12,7 @@ use Joomla\DI\Container; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Event/Application/BeforeRenderEvent.php b/libraries/src/Event/Application/BeforeRenderEvent.php index 523af7518aca9..3841000288011 100644 --- a/libraries/src/Event/Application/BeforeRenderEvent.php +++ b/libraries/src/Event/Application/BeforeRenderEvent.php @@ -10,7 +10,7 @@ namespace Joomla\CMS\Event\Application; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Event/Application/BeforeRespondEvent.php b/libraries/src/Event/Application/BeforeRespondEvent.php index 35465b2a398a8..d55f9c247f06a 100644 --- a/libraries/src/Event/Application/BeforeRespondEvent.php +++ b/libraries/src/Event/Application/BeforeRespondEvent.php @@ -10,7 +10,7 @@ namespace Joomla\CMS\Event\Application; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Event/Application/DeamonForkEvent.php b/libraries/src/Event/Application/DeamonForkEvent.php index e583511f0fce6..5e0a39e402314 100644 --- a/libraries/src/Event/Application/DeamonForkEvent.php +++ b/libraries/src/Event/Application/DeamonForkEvent.php @@ -10,7 +10,7 @@ namespace Joomla\CMS\Event\Application; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Event/Application/DeamonReceiveSignalEvent.php b/libraries/src/Event/Application/DeamonReceiveSignalEvent.php index 9e068f561c05d..a8d5736479527 100644 --- a/libraries/src/Event/Application/DeamonReceiveSignalEvent.php +++ b/libraries/src/Event/Application/DeamonReceiveSignalEvent.php @@ -10,7 +10,7 @@ namespace Joomla\CMS\Event\Application; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/MVC/Model/State.php b/libraries/src/MVC/Model/State.php index c093425c1a345..eb26955ab553d 100644 --- a/libraries/src/MVC/Model/State.php +++ b/libraries/src/MVC/Model/State.php @@ -12,7 +12,7 @@ use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Service/Provider/Mailer.php b/libraries/src/Service/Provider/Mailer.php index 7cd500047f763..4563c32773168 100644 --- a/libraries/src/Service/Provider/Mailer.php +++ b/libraries/src/Service/Provider/Mailer.php @@ -15,7 +15,7 @@ use Joomla\DI\ServiceProviderInterface; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/WebAuthn/Server.php b/libraries/src/WebAuthn/Server.php index 1c343e9c48ea6..3c185be28ac12 100644 --- a/libraries/src/WebAuthn/Server.php +++ b/libraries/src/WebAuthn/Server.php @@ -10,7 +10,7 @@ namespace Joomla\CMS\WebAuthn; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects use Cose\Algorithm\Algorithm; diff --git a/modules/mod_articles_categories/src/Dispatcher/Dispatcher.php b/modules/mod_articles_categories/src/Dispatcher/Dispatcher.php index 5cdb4b9c8105f..06415bd5b7692 100644 --- a/modules/mod_articles_categories/src/Dispatcher/Dispatcher.php +++ b/modules/mod_articles_categories/src/Dispatcher/Dispatcher.php @@ -16,7 +16,7 @@ use Joomla\CMS\Helper\ModuleHelper; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/modules/mod_related_items/src/Dispatcher/Dispatcher.php b/modules/mod_related_items/src/Dispatcher/Dispatcher.php index 8c7e98340ec62..e5424569329ba 100644 --- a/modules/mod_related_items/src/Dispatcher/Dispatcher.php +++ b/modules/mod_related_items/src/Dispatcher/Dispatcher.php @@ -16,7 +16,7 @@ use Joomla\CMS\Helper\ModuleHelper; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** From fe481c49774d7c645393c98f61db226cd4859479 Mon Sep 17 00:00:00 2001 From: joomla-translation-bot <87496051+joomla-translation-bot@users.noreply.github.com> Date: Fri, 30 Jun 2023 15:02:07 +0200 Subject: [PATCH 033/126] Translation Update (#40731) * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * use 4.3-dev branch for translation bot * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update * Language update --------- Co-authored-by: Franciska Perisa <9084265+fancyFranci@users.noreply.github.com> Co-authored-by: Christian Heel <66922325+heelc29@users.noreply.github.com> Co-authored-by: Stefan Wendhausen Co-authored-by: Olivier Buisard Co-authored-by: Harald Leithner --- installation/language/de-LI/joomla.ini | 2 +- installation/language/de-LI/langmetadata.xml | 6 +- installation/language/hr-HR/joomla.ini | 283 +++++++++++++++++++ installation/language/hr-HR/langmetadata.xml | 19 ++ installation/language/id-ID/joomla.ini | 282 ++++++++++++++++++ installation/language/id-ID/langmetadata.xml | 19 ++ installation/language/lt-LT/joomla.ini | 1 + installation/language/pt-PT/joomla.ini | 3 +- templates/system/build_incomplete.html | 2 +- templates/system/fatal-error.html | 2 +- templates/system/incompatible.html | 2 +- 11 files changed, 613 insertions(+), 8 deletions(-) create mode 100644 installation/language/hr-HR/joomla.ini create mode 100644 installation/language/hr-HR/langmetadata.xml create mode 100644 installation/language/id-ID/joomla.ini create mode 100644 installation/language/id-ID/langmetadata.xml diff --git a/installation/language/de-LI/joomla.ini b/installation/language/de-LI/joomla.ini index 8ac9dfb954e98..0a08be15b0d14 100644 --- a/installation/language/de-LI/joomla.ini +++ b/installation/language/de-LI/joomla.ini @@ -156,7 +156,7 @@ INSTL_DEFAULTLANGUAGE_FRONTEND_SET_DEFAULT="Die Sprache mit dem Sprach-Tag „%s INSTL_DEFAULTLANGUAGE_SET_DEFAULT_LANGUAGE="Standardsprache konfigurieren" INSTL_DEFAULTLANGUAGE_TRY_LATER="Weitere Sprachen können auch noch später in der Administration von Joomla! installiert werden." -INSTL_DEFAULTLANGUAGE_NATIVE_LANGUAGE_NAME="Deutsch (Lichtenstein)" ; IMPORTANT NOTE FOR TRANSLATORS: Do not literally translate this line, instead add the localised name of the language. For example Spanish will be Español +INSTL_DEFAULTLANGUAGE_NATIVE_LANGUAGE_NAME="Deutsch (Liechtenstein)" ; IMPORTANT NOTE FOR TRANSLATORS: Do not literally translate this line, instead add the localised name of the language. For example Spanish will be Español ; Database Model INSTL_DATABASE_COULD_NOT_CONNECT="Es konnte keine Verbindung zur Datenbank hergestellt werden. Der Konnektor gab folgenden Fehler zurück: %s." diff --git a/installation/language/de-LI/langmetadata.xml b/installation/language/de-LI/langmetadata.xml index 6c15c79952d2d..2d79f867d3606 100644 --- a/installation/language/de-LI/langmetadata.xml +++ b/installation/language/de-LI/langmetadata.xml @@ -1,6 +1,6 @@ - German (Lichtenstein) + German (Liechtenstein) 4.3.2 2023-05 J!German @@ -11,8 +11,8 @@ joomla.ini - German (Lichtenstein) - Deutsch (Lichtenstein) + German (Liechtenstein) + Deutsch (Liechtenstein) de-LI 0 diff --git a/installation/language/hr-HR/joomla.ini b/installation/language/hr-HR/joomla.ini new file mode 100644 index 0000000000000..8ae116ad230fa --- /dev/null +++ b/installation/language/hr-HR/joomla.ini @@ -0,0 +1,283 @@ +; Joomla! Project +; (C) 2005 Open Source Matters, Inc. +; License GNU General Public License version 2 or later; see LICENSE.txt +; Note : All ini files need to be saved as UTF-8 + +; Fatal error page +; These will be processed by the JavaScript Build +BUILD_FATAL_HEADER="Nažalost, došlo je do problema koji nismo u mogućnosti oporaviti." +BUILD_FATAL_LANGUAGE="Hrvatski" +BUILD_FATAL_TEXT="Server je vratio \"{{statusCode_statusText}}\"" +BUILD_FATAL_URL_TEXT="Pomozite mi riješiti ovo" +; These will be processed by the JavaScript Build +BUILD_INCOMPLETE_HEADER="Nepotpuna postavka okoline" +BUILD_INCOMPLETE_LANGUAGE="Hrvatski" +BUILD_INCOMPLETE_TEXT="Čini se da pokušavate pokrenuti Joomla! iz našeg git reprozitorija. Da biste to učinili, morate prvo dovršiti nekoliko dodatnih koraka." +BUILD_INCOMPLETE_URL_TEXT="Više detalja" +; These will be processed by the JavaScript Build +BUILD_NOXML_HEADER="Vašem PHP-u nedostaje važna biblioteka" +BUILD_NOXML_LANGUAGE="Hrvatski" +BUILD_NOXML_TEXT="Za pokretanje ove Joomla! verzije, vaš host treba koristiti PHP s podrškom za XML biblioteku." +BUILD_NOXML_URL_TEXT="Pomozite mi riješiti ovo" +; These will be processed by the JavaScript Build +BUILD_MIN_PHP_ERROR_HEADER="Nažalost, vaša PHP verzija nije podržana." +BUILD_MIN_PHP_ERROR_LANGUAGE="Hrvatski" +BUILD_MIN_PHP_ERROR_TEXT="Za pokretanje ove Joomla verzije, vaš host treba koristiti PHP verziju {{phpversion}} ili noviju." +BUILD_MIN_PHP_ERROR_URL_TEXT="Pomozite mi riješiti ovo" +; Main Config +INSTL_SELECT_INSTALL_LANG="Odaberite jezik instalacije" +INSTL_SELECT_LANGUAGE_TITLE="Odaberite jezik" +INSTL_SETUP_LOGIN_DATA="Postavke podataka za pristup" +INSTL_WARNJAVASCRIPT="Upozorenje! JavaScript mora biti omogućen za pravilnu Joomla instalaciju." +INSTL_WARNJSON="Vaša PHP instalacija mora imati podršku za JSON da bi se Joomla! mogla instalirati!" +; Precheck view +INSTL_DATABASE_SUPPORT="Podrška baze podataka:" +INSTL_JSON_SUPPORT_AVAILABLE="JSON podrška" +INSTL_MB_LANGUAGE_IS_DEFAULT="MB jezik je osnovni" +INSTL_MB_STRING_OVERLOAD_OFF="MB String Overload isključen" +INSTL_NOTICE_DATABASE_SUPPORT="Nije pronađena podržana baza podataka." +INSTL_NOTICE_JSON_SUPPORT_AVAILABLE="Vaša PHP instalacija mora imati podršku za JSON da bi se Joomla! mogla instalirati!" +INSTL_NOTICE_MBLANG_NOTDEFAULT="PHP mbstring jezik nije neutralan. Ovo možete namjestiti lokalno unošenjem php_value mbstring.language neutral u .htaccess." +INSTL_NOTICE_MBSTRING_OVERLOAD_OFF="PHP mbstring function overload je uključen. Ovo može biti isključeno lokalno unošenjem php_value mbstring.func_overload 0 u .htaccess." +INSTL_NOTICE_PARSE_INI_FILE_AVAILABLE="Potrebne php funkcije parse_ini_file i parse_ini_string onemogućene su na vašem serveru." +INSTL_NOTICE_XML_SUPPORT="XML podrška nije dostupna. Ovo bi trebalo biti omogućeno prema zadanim postavkama u php-u, ali korisnici Ubuntu-a možda će to trebati instalirati izvedbom sudo apt-get install php-xml nakon čega je potrebno resetirati web server." +INSTL_NOTICE_ZLIB_COMPRESSION_SUPPORT="Zlib kompresija nije postavljena. To se može lokalno uključiti unosom zlib.output_compression = On u datoteku php.ini." +INSTL_PARSE_INI_FILE_AVAILABLE="INI Parser podrška" +INSTL_PRECHECK_ACTUAL="Trenutno" +INSTL_PRECHECK_DESC="Ako neka od ovih stavki nije podržana tada vas molimo da poduzmete potrebne radnje da ih ispravite.
Ne možete instalirati Joomlu tako dugo dok vaša instalacija ne zadovolji navedene zahtjeve." +INSTL_PRECHECK_DIRECTIVE="Direktiva" +INSTL_PRECHECK_RECOMMENDED="Preporuka" +INSTL_PRECHECK_RECOMMENDED_SETTINGS_DESC="Ove postavke preporučuju se za PHP kako bi se osigurala potpuna Joomla kompatibilnost." +INSTL_PRECHECK_RECOMMENDED_SETTINGS_TITLE="Preporučene postavke:" +INSTL_PRECHECK_TITLE="Provjera prije instalacije" +INSTL_XML_SUPPORT="XML podrška" +INSTL_ZLIB_COMPRESSION_SUPPORT="Podrška za Zlib kompresiju" +; Database view +INSTL_DATABASE="Konfiguracija baze podataka" +INSTL_DATABASE_ENCRYPTION_CA_LABEL="Putanja do CA datoteke" +INSTL_DATABASE_ENCRYPTION_CERT_LABEL="Putanja do datoteke certifikata" +INSTL_DATABASE_ENCRYPTION_CIPHER_LABEL="Podržani Cipher Suite - paket šifriranja (opcionalno)" +INSTL_DATABASE_ENCRYPTION_KEY_LABEL="Putanja do datoteke privatnog ključa" +INSTL_DATABASE_ENCRYPTION_MODE_LABEL="Enkripcija konekcije" +INSTL_DATABASE_ENCRYPTION_MODE_VALUE_NONE="Standardno (kontrolira poslužitelj)" +INSTL_DATABASE_ENCRYPTION_MODE_VALUE_ONE_WAY="Jednosmjera autentifikacija" +INSTL_DATABASE_ENCRYPTION_MODE_VALUE_TWO_WAY="Dvosmjerna autentifikacija" +INSTL_DATABASE_ENCRYPTION_MSG_CONN_NOT_ENCRYPT="Odabrano je korištenje šifrirane veze s bazom podataka i veza bi se mogla uspostaviti, ali nije šifrirana. Razlog bi mogao biti taj što je poslužitelj baze podataka konfiguriran da se vrati na nešifriranu vezu u slučaju loših parametara šifriranja. Provjeri i ispravi parametre šifriranja baze podataka ili promijeni polje \"Šifriranje veze\" natrag na \"Zadano (kontrolira poslužitelj)\"." +INSTL_DATABASE_ENCRYPTION_MSG_FILE_FIELD_BAD="Datoteka unesena u polje \"%s\" ne postoji ili joj nije moguće pristupiti." +INSTL_DATABASE_ENCRYPTION_MSG_FILE_FIELD_EMPTY="Polje \"%s\" je prazno ili ne sadrži važeću putanju." +INSTL_DATABASE_ENCRYPTION_MSG_LOCALHOST="Unijeli ste \"localhost\" kao naziv hosta. Povezivanje s bazom podataka pomoću šifrirane veze moglo bi biti neuspješno. Ili promijenite \"localhost\" u \"127.0.0.1\" ili \":: 1\" ili drugi naziv hosta ili promijenite polje \"Šifriranje veze\" natrag na \"Zadano (kontrolira poslužitelj) \"." +INSTL_DATABASE_ENCRYPTION_MSG_SRV_NOT_SUPPORTS="Poslužitelj baze podataka ne podržava šifriranje veze. Ili omogući podršku za TLS (često se naziva SSL u dokumentima) na svom poslužitelju baze podataka ili promijeni polje \"Šifriranje veze\" natrag na \"Zadano (kontrolira poslužitelj)\"." +INSTL_DATABASE_ENCRYPTION_VERIFY_SERVER_CERT_LABEL="Provjeri certifikat servera" +INSTL_DATABASE_ERROR_POSTGRESQL_QUERY="PostgreSQL upit na bazu nije uspio." +INSTL_DATABASE_HOST_DESC="Upišite ime hosta, najčešće je \"localhost\" ili ime koje ste dobili od svog hostera." +INSTL_DATABASE_HOST_IS_NOT_LOCALHOST_CREATE_FILE="Nismo mogli kreirati datoteku. Molimo vas da ručno kreirate datoteku naziva \"%1$s\" i učitate je u \"%2$s\" direktorij vašeg Joomla sitea. Nakon toga odaberite \"%3$s\" za nastavak." +INSTL_DATABASE_HOST_IS_NOT_LOCALHOST_DELETE_FILE="Kako bi potvrdili da ste vlasnik ovogh web sitea uklonite datoteku \"%1$s\" koja je kreirana u mapi \"%2$s\" vašeg Joomla sitea. Zatim odaberite \"%3$s\" za nastavak." +INSTL_DATABASE_HOST_IS_NOT_LOCALHOST_GENERAL_MESSAGE="Pokušavate koristiti host baze podataka koji nije na vašem lokalnom poslužitelju. Iz sigurnosnih razloga morate potvrditi vlasništvo nad svojim web hosting računom. Pročitajte dokumentaciju za više informacija." +INSTL_DATABASE_HOST_LABEL="Ime servera" +INSTL_DATABASE_NAME_DESC="Upišite ime baze podataka." +INSTL_DATABASE_NAME_LABEL="Ime Baze podataka" +INSTL_DATABASE_NAME_MSG_MYSQL="Naziv baze podataka nije važeći. Ne smije sadržavati sljedeće znakove: \ /" +INSTL_DATABASE_NAME_MSG_POSTGRES="Ime baze podataka nije važeće. Mora počinjati slovom i nastaviti se alfanumeričkim znakovima." +INSTL_DATABASE_NO_SCHEMA="Ne postoji shema baze podataka za ovaj tip baze podataka." +INSTL_DATABASE_PASSWORD_DESC="Ili lozinka koju ste kreirali ili lozinka dobivena od hostera." +INSTL_DATABASE_PREFIX_DESC="Upišite prefiks tablice ili koristite nasumično generirani." +INSTL_DATABASE_PREFIX_DUPLICATE_DESC="Ako koristite postojeću bazu podataka sa tablicama koje imaju iste prefikse, Joomla će preimenovati postojeće tablice dodajući prefix \"bak_\"." +INSTL_DATABASE_PREFIX_MSG="Prefiks baze podataka mora započinjati sa slovom, kojeg sljede proizvoljni alfanumerički znakovi, a završavati donjom crtom" +INSTL_DATABASE_RESPONSE_ERROR="Proces instalacije nije uspio." +INSTL_DATABASE_TYPE_DESC="Odaberite tip baze podataka." +INSTL_DATABASE_USER_DESC="Ili korisničko ime koje ste kreirali ili korisničko ime dobiveno od hostera." +INSTL_DATABASE_VALIDATION_ERROR="Provjerite vjerodajnice za svoju bazu podataka, vrstu baze podataka, naziv baze podataka ili naziv hosta. Ako imate instaliran MySQL 8, onda pročitajte wiki za više informacija." + +INSTL_CONNECT_DB="Postavke spajanje na bazu podataka" +INSTL_INSTALL_JOOMLA="Instaliraj Joomla" +; Site View +INSTL_ADMIN_EMAIL_DESC="Upišite e-mail adresu Super Administrator korisnika." +INSTL_ADMIN_PASSWORD_DESC="Postavite lozinku za vaš Super Administrator korisnički račun." +INSTL_ADMIN_PASSWORD_LENGTH="Unesite najmanje 12 znakova." +INSTL_ADMIN_USER_DESC="Upišite pravo ime Super korisnika." +INSTL_ADMIN_USERNAME_DESC="Postavite korisničko ime za vaš Super Administrator korisnički račun." +INSTL_LOGIN_DATA="Podaci za prijavu" +INSTL_SETUP_SITE_NAME="Postavke imena sitea" +INSTL_SITE="Glavna konfiguracija" +INSTL_SITE_DEVMODE_LABEL="Detektiran je razvojni način rada" +INSTL_SITE_NAME_DESC="Upišite ime vašeg Joomla sitea." +; Complete view +INSTL_COMPLETE_ERROR_FOLDER_DELETE="Mapa \"%s\" nije moguće izbrisati. Ručno izbrišite mapu." +INSTL_COMPLETE_REMOVE_FOLDER="Uklonite mapu \"%s\"" +INSTL_COMPLETE_CONGRAT="Čestitamo!" +INSTL_COMPLETE_TITLE="Čestitamo! Vaš Joomla site je spreman." +INSTL_COMPLETE_SITE_BTN="Otvori site" +INSTL_COMPLETE_ADMIN_BTN="Otvori administraciju" +INSTL_COMPLETE_FINAL="Instalacija je dovršena" +INSTL_COMPLETE_FINAL_DESC="Vaša Joomla instalacija je sada dovršena i spremna za upotrebu." +INSTL_COMPLETE_ADD_EXTRA_LANGUAGE="Instalacija dodatnih jezika" +INSTL_REMOVE_INST_FOLDER="Jeste li sigurni da želite izbrisati? Potvrdom ćete trajno izbrisati mapu \"%s\"." +; Languages view +INSTL_LANGUAGES="Instalacija dodatnih jezika" +INSTL_LANGUAGES_COLUMN_HEADER_LANGUAGE="Jezik" +INSTL_LANGUAGES_COLUMN_HEADER_LANGUAGE_SELECT="Odaberite jezik" +INSTL_LANGUAGES_COLUMN_HEADER_LANGUAGE_TAG="Oznaka jezika" +INSTL_LANGUAGES_COLUMN_HEADER_VERSION="Verzija" +INSTL_LANGUAGES_DESC="Joomla sučelje dostupno je na nekoliko jezika. Odaberite željene jezike odabirom okvira za potvrdu, a zatim ih preuzmite pritiskom na \"Instaliraj odabrane jezike\".
Napomena: Ova instalacija trajat če oko 10 sekundi za preuzimanje i instalaciju svakog jezika. Kako biste izbjegli vremenske pauze, odaberite najviše 3 jezika za instalaciju." +INSTL_LANGUAGES_MESSAGE_PLEASE_WAIT="Ova radnja trajati će do 10 sekundi po jeziku
Molimo pričekajte dok preuzmemo i instaliramo jezike …" +INSTL_LANGUAGES_NO_LANGUAGE_SELECTED="Nije odabran niti jedan jezik za instalaciju." +INSTL_LANGUAGES_SELECTED="Instaliraj odabrane jezike" +INSTL_LANGUAGES_WARNING_NO_INTERNET="Joomla! se nije mogla spojiti na server za jezike. Molimo završite proces instalacije." +INSTL_LANGUAGES_WARNING_NO_INTERNET2="Napomena: Jezike možete kasnije instalirati pomoću Joomla administracije." +INSTL_LANGUAGES_WARNING_BACK_BUTTON="Povratak na posljednji korak instalacije" +; Default language view +INSTL_DEFAULTLANGUAGE_ADMINISTRATOR="Osnovni jezik za Administratorsko sučelje" +INSTL_DEFAULTLANGUAGE_ADMIN_COULDNT_SET_DEFAULT="Joomla nije mogla postaviti jezik kao zadani. Engleski će se koristiti kao zadani jezik administratorskog sučelja." +INSTL_DEFAULTLANGUAGE_ADMIN_SET_DEFAULT="Joomla je postavila %s kao vaš osnovni jezik za ADMINISTRATORSKO sučelje." +INSTL_DEFAULTLANGUAGE_COLUMN_HEADER_SELECT="Odaberi" +INSTL_DEFAULTLANGUAGE_COLUMN_HEADER_LANGUAGE="Jezik" +INSTL_DEFAULTLANGUAGE_COLUMN_HEADER_TAG="Oznaka" +INSTL_DEFAULTLANGUAGE_COULD_NOT_DOWNLOAD_PACKAGE="Joomla nije uspjela preuzeti ili raspakirati jezični paket sa: %s" +INSTL_DEFAULTLANGUAGE_COULD_NOT_INSTALL_LANGUAGE="Joomla nije mogla instalirati %s jezik." +INSTL_DEFAULTLANGUAGE_DESC="Joomla je instalirala sljedeće jezike. Molimo odaberite osnovni jezik za administratorsko sučelje.." +INSTL_DEFAULTLANGUAGE_DESC_FRONTEND="Joomla je instalirala sljedeće jezike. Molimo odaberite Vaš željeni zadani jezik za Joomla korisničko sučelje." +INSTL_DEFAULTLANGUAGE_FRONTEND="Osnovni jezik sitea" +INSTL_DEFAULTLANGUAGE_FRONTEND_COULDNT_SET_DEFAULT="Joomla nije uspjela postaviti jezik kao zadani. Engleski će se koristiti kao osnovni jezik za web stranicu." +INSTL_DEFAULTLANGUAGE_FRONTEND_SET_DEFAULT="Joomla je postavila %s kao osnovni jezik za SITE." +INSTL_DEFAULTLANGUAGE_SET_DEFAULT_LANGUAGE="Postavite zadani jezik" +INSTL_DEFAULTLANGUAGE_TRY_LATER="Moći ćete to instalirati kasnije koristeći Joomla administratorsko sučelje." + +INSTL_DEFAULTLANGUAGE_NATIVE_LANGUAGE_NAME="Hrvatski (HR)" ; IMPORTANT NOTE FOR TRANSLATORS: Do not literally translate this line, instead add the localised name of the language. For example Spanish will be Español +; Database Model +INSTL_DATABASE_COULD_NOT_CONNECT="Nije moguće povezati se na bazu. Povezivanje vraća poruku greške: %s" +INSTL_DATABASE_COULD_NOT_CREATE_DATABASE="Instalacija se nije mogla povezati na definiranu bazu podataka i nije mogla kreirati bazu. Potvrdite svoje postavke i ako je potrebno ručno kreirajte bazu podataka." +INSTL_DATABASE_COULD_NOT_REFRESH_MANIFEST_CACHE="Nije moguće osvježiti manifest cache za dodatak: %s" +INSTL_DATABASE_ERROR_BACKINGUP="Pojavila se greška prilikom spremanja sigurnosne kopije baze." +INSTL_DATABASE_ERROR_CREATE="Pojavila se greška prilikom izrade baze %s.
Korisnik možda nema dozvolu za kreiranje baze. Potrebna baza može biti izrađena odvojeno prije nego što nastavite sa Joomla instalacijom" +INSTL_DATABASE_ERROR_DELETE="Pojavile su se greške prilikom brisanja baze." +INSTL_DATABASE_ERROR_READING_SQL_FILE="Nije moguće učitati SQL datoteku." +INSTL_DATABASE_FIELD_VALUE_BACKUP="Sigurnosna kopija" +INSTL_DATABASE_FIELD_VALUE_REMOVE="Uklanjanje" +INSTL_DATABASE_FILE_DOES_NOT_EXIST="Datoteka %s ne postoji." +INSTL_DATABASE_FIX_LOWERCASE="Prefiks tablice mora biti malim slovima za PostgreSQL." +INSTL_DATABASE_FIX_TOO_LONG="Prefiks MySQL tablice smije imati najviše 15 znaka" +INSTL_DATABASE_INVALID_DB_DETAILS="Sadržaj baze je pogrešan i/ili prazan." +INSTL_DATABASE_INVALID_MARIADB_VERSION="Potreban je MariaDB %1$s ili više za nastavak instalacije. Vaša verzija je: %2$s" +INSTL_DATABASE_INVALID_MYSQL_VERSION="Potreban je MySQL %1$s ili više za nastavak instalacije. Vaša verzija je: %2$s" +INSTL_DATABASE_INVALID_MYSQLI_VERSION="Potreban je MySQL %1$s ili više za nastavak instalacije. Vaša verzija je: %2$s" +INSTL_DATABASE_INVALID_PGSQL_VERSION="Potreban je PostgreSQL %1$s ili više za nastavak instalacije. Vaša verzija je: %2$s" +INSTL_DATABASE_INVALID_POSTGRESQL_VERSION="Potreban je PostgreSQL %1$s ili više za nastavak instalacije. Vaša verzija je: %2$s" +INSTL_DATABASE_INVALID_TYPE="Odaberite tip baze podataka." +INSTL_DATABASE_NAME_INVALID_CHAR="Niti jedan MySQL identifikator ne može sadržavati NULL ASCII(0x00)." +INSTL_DATABASE_NAME_INVALID_SPACES="MySQL ime baze i tablice ne može početi ili završiti se praznim mjestom (razmaci)." +INSTL_DATABASE_NAME_TOO_LONG="Ime MySQL baze podataka mora imati najviše 64 znaka" +; Controllers +INSTL_COOKIES_NOT_ENABLED="Izgleda da kolačići nisu dozvoljeni u vašem web pregledniku. Nećete moći instalirati aplikaciju ukoliko je ova opcija isključena. Također je moguće da je problem u postavkama session.save_path na serveru. Ako je ovo slučaj, kontaktirajte svog davatelja hosting usluge ako ne znate kako da to sami provjerite i ispravite." +INSTL_HEADER_ERROR="Greška" +; Helpers +INSTL_PAGE_TITLE="Joomla Installer" +; Configuration model +INSTL_ERROR_CONNECT_DB="Nije moguće povezati se na bazu podataka. Povezivanje vraća grešku: %d." +INSTL_STD_OFFLINE_MSG="Pauza zbog održavanja sustava.
Molimo, navratite kasnije." +; Languages model +INSTL_ERROR_INVALID_URL="Neispravan URL" +; Others +INSTL_CONFPROBLEM="Vaša konfiguracijska datoteka ili direktorij nemaju prava za zapisivanje ili je došlo do problema prilikom izrade konfiguracijske datoteke. Morati ćete ručno učitati sljedeći kod. Označite cijeli tekst kôda u prostoru za tekst, zatim ga kopirajte i dodajte u novu datoteku imena 'configuration.php', te datoteku prenesite u osnovni direktorij vaše stranice." +INSTL_DISPLAY_ERRORS="Prikaz grešaka" +INSTL_ERROR="Greška" +INSTL_ERROR_DB="Došlo je do nekih pogrešaka prilikom popunjavanja baze podataka: %s." +INSTL_ERROR_INITIALISE_SCHEMA="Nije moguće inicijalizirati shemu baze podataka." +INSTL_EXTENSION_AVAILABLE="%s Dostupno" +INSTL_FILE_UPLOADS="Upload datoteka" +INSTL_GNU_GPL_LICENSE="GNU općom javnom licencom" +INSTL_HELP_LINK="Pomoć instalacije Joomle" +INSTL_NOTICE_NEEDSTOBEWRITABLE="Možete nastaviti instalaciju ako popravite dozvole." +INSTL_OUTPUT_BUFFERING="Buffering izlaza" +INSTL_PHP_VERSION="PHP verzija" +INSTL_PHP_VERSION_NEWER="PHP verzija >= %s" +INSTL_PROCESS_BUSY="Postupak je u tijeku. Molimo pričekajte …" +INSTL_SESSION_AUTO_START="Auto Start sesije" +INSTL_WRITABLE="Nedovoljna dozvola za kreiranje %s." +INSTL_ZIP_SUPPORT_AVAILABLE="Nativna ZIP podrška" +; Global strings +JADMINISTRATOR="Administrator" +JEMAIL="E-mail" +JERROR="Greška" +JERROR_LAYOUT_ERROR_HAS_OCCURRED_WHILE_PROCESSING_YOUR_REQUEST="Došlo je do greške prilikom procesiranja vašeg zahtjeva." +JGLOBAL_ISFREESOFTWARE="%s je slobodan softver izdan pod %s." +JGLOBAL_LANGUAGE_VERSION_NOT_PLATFORM="Jezični paket ne odgovara ovoj Joomla verziji. Neki prijevodi bi mogli nedostajati i biti će prikazani na engleskom." +JGLOBAL_SELECT_AN_OPTION="Odaberi opciju" +JGLOBAL_SELECT_NO_RESULTS_MATCH="Nijedan rezultat se ne poklapa" +JGLOBAL_SELECT_SOME_OPTIONS="Odaberi neke opcije" +JHIDEPASSWORD="Sakrij lozinku" +JINVALID_TOKEN="Posljednji zahtjev je odbijen jer je sadržavao neispravan sigurnosni token. Molimo osvježite stranicu i pokušajte ponovo." +JINVALID_TOKEN_NOTICE="Sigurnosni token ne odgovara. Zahtjev je prekinut kako bi se spriječila bilo kakva povreda sigurnosti. Molimo pokušajte ponovno." +JNEXT="Sljedeće" +JNO="Ne" +JNOTICE="Napomena" +JOFF="Isključeno" +JON="Uključeno" +JPREVIOUS="Prethodno" +JSHOWPASSWORD="Prikaži lozinku" +JSITE="Site" +JSKIP="Preskoči" +JUSERNAME="Korisničko ime" +JYES="Da" +; Framework strings necessary when no lang pack is available +JLIB_DATABASE_ERROR_CONNECT_MYSQL="Nije moguće spajanje na MySQL." +JLIB_DATABASE_ERROR_DATABASE="Došlo je do greške baze podataka." +JLIB_DATABASE_ERROR_LOAD_DATABASE_DRIVER="Nije moguće učitati upravljački program baze podataka: %s." +JLIB_DATABASE_ERROR_VALID_MAIL="E-mail adresa koju ste unijeli nije ispravna. Molimo unesite drugu e-mail adresu." +JLIB_ENVIRONMENT_SESSION_EXPIRED="Vaša sesija je istekla, molim ponovo učitajte stranu." +JLIB_FILESYSTEM_ERROR_PATH_IS_NOT_A_FOLDER="%1$s: Putanja nije mapa. Putanja: %2$s" +JLIB_FORM_FIELD_INVALID="Neispravno polje: " +JLIB_FORM_VALIDATE_FIELD_INVALID="Neispravno polje: %s" +JLIB_FORM_VALIDATE_FIELD_REQUIRED="Potrebno polje: %s" +JLIB_INSTALLER_ABORT="Odustajanje od instalacije jezika: %s" +JLIB_INSTALLER_ABORT_CREATE_DIRECTORY="Dodatak %1$s: Nije uspjelo kreiranje direktorija: %2$s" +JLIB_INSTALLER_ABORT_NOINSTALLPATH="Instalacijska putanja ne postoji" +JLIB_INSTALLER_ABORT_PACK_INSTALL_ERROR_EXTENSION="Paket %1$s: Došlo je do greške prilikom instalacije dodatka: %2$s." +JLIB_INSTALLER_ABORT_PACK_INSTALL_NO_FILES="Paket %s: Nema datoteka za instalaciju!" +JLIB_INSTALLER_ERROR_DOWNLOAD_SERVER_CONNECT="Greška pri spajanju na server: %s" +JLIB_INSTALLER_ERROR_FAIL_COPY_FILE="JInstaller: :Install: Nije uspjelo kopiranje datoteke %1$s u %2$s." +JLIB_INSTALLER_INSTALL="Instalacija" +JLIB_INSTALLER_NOT_ERROR="Ako se pogreška odnosi na instalaciju TinyMCE jezičnih datoteka to nema nikakvog utjecaja na instalaciju jezika. Neki jezični paketi kreirani prije Joomla! 3.2.0 mogu pokušati instalirati zasebne TinyMCE jezične datoteke. Kako su isti sada uključeni u temeljnu instalaciju oni više ne moraju biti instalirani." +JLIB_INSTALLER_WARNING_UNABLE_TO_INSTALL_CONTENT_LANGUAGE="Nije moguće kreirati jezik sadržaja za %s jezik: %s." +JLIB_UPDATER_ERROR_COLLECTION_FOPEN="PHP postavka allow_url_fopen je onemogućena. Ova postavka mora biti omogućena da bi ažuriranje radilo." +JLIB_UPDATER_ERROR_COLLECTION_OPEN_URL="Ažuriranje: :Kolekcija: Nije moguće otvoriti %s" +JLIB_UPDATER_ERROR_COLLECTION_PARSE_URL="Ažuriranje: :Kolekcija: Nije moguće parsirati %s" +JLIB_UPDATER_ERROR_OPEN_UPDATE_SITE="Ažuriranja: Nije moguće otvoriti site za ažuriranje #%d \"%s\", URL: %s." +JLIB_UTIL_ERROR_CONNECT_DATABASE="JDatabase: :getInstance: Nije moguće spajanje na bazu podataka
joomla.library: %1$s - %2$s." +; Strings for the language debugger +JDEBUG_LANGUAGE_FILES_IN_ERROR="Analiza pogreški u jezičnim datotekama" +JDEBUG_LANGUAGE_UNTRANSLATED_STRING="Neprevedeni nizovi" +JNONE="Ništa" +; Necessary for errors +ADMIN_EMAIL="E-mail administratora" +ADMIN_PASSWORD="Lozinka administratora" +SITE_NAME="Ime Sitea" +; Database types (allows for a more descriptive label than the internal name) +MYSQL="MySQL (PDO)" +MYSQLI="MySQLi" +ORACLE="Oracle" +PGSQL="PostgreSQL (PDO)" +POSTGRESQL="PostgreSQL" +SQLITE="SQLite" +; Javascript message titles +ERROR="Greška" +MESSAGE="Poruka" +NOTICE="Napomena" +WARNING="Upozorenje" +; Javascript ajax error messages +JLIB_JS_AJAX_ERROR_CONNECTION_ABORT="Došlo je do prekida veze prilikom dohvaćanja JSON podataka." +JLIB_JS_AJAX_ERROR_NO_CONTENT="Nema vraćenog sadržaja." +JLIB_JS_AJAX_ERROR_OTHER="Greška kod dohvaćanja JSON podataka: HTTP %d status kôd." +JLIB_JS_AJAX_ERROR_PARSE="Greška prilikom procesiranja JSON podataka:
%s" +JLIB_JS_AJAX_ERROR_TIMEOUT="Isteklo je vrijeme za dohvaćanje JSON podataka." +; Field password messages +JFIELD_PASSWORD_INDICATE_COMPLETE="Lozinka prihvaćena" +JFIELD_PASSWORD_INDICATE_INCOMPLETE="Lozinka ne zadovoljava zahtjevima sitea." +JFIELD_PASSWORD_SPACES_IN_PASSWORD="Lozinka ne smije sadržavati razmake na početku ili na kraju." +JFIELD_PASSWORD_TOO_LONG="Lozinka je predugačka. Lozinke moraju biti kraće od 100 znakova." +JFIELD_PASSWORD_TOO_SHORT_N="Lozinka je prekratka. Lozinke moraju imati minimalno %d znakova." +; Javascript Form Validation Messages +JLIB_FORM_CONTAINS_INVALID_FIELDS="Obrazac nije moguće poslati jer nedostaju potrebni podaci.
Ispravite označena polja i pokušajte ponovo." +JLIB_FORM_FIELD_INVALID_VALUE="Ova vrijednost nije valjana." +JLIB_FORM_FIELD_REQUIRED_CHECK="Jedna opcija mora biti odabrana." +JLIB_FORM_FIELD_REQUIRED_VALUE="Popunite ovo polje" + diff --git a/installation/language/hr-HR/langmetadata.xml b/installation/language/hr-HR/langmetadata.xml new file mode 100644 index 0000000000000..515f7bfc13730 --- /dev/null +++ b/installation/language/hr-HR/langmetadata.xml @@ -0,0 +1,19 @@ + + + Croatian (Croatia) + 4.3.3 + 2023-05 + Joomla! Hrvatska team + (C) 2005 Open Source Matters, Inc. + GNU General Public License version 2 or later; see LICENSE.txt + + joomla.ini + + + Croatian (Croatia) + Croatian (Croatia) + hr-HR + 0 + + + diff --git a/installation/language/id-ID/joomla.ini b/installation/language/id-ID/joomla.ini new file mode 100644 index 0000000000000..4806ea48bcf47 --- /dev/null +++ b/installation/language/id-ID/joomla.ini @@ -0,0 +1,282 @@ +; Joomla! Project +; (C) 2005 Open Source Matters, Inc. +; License GNU General Public License version 2 or later; see LICENSE.txt +; Note : All ini files need to be saved as UTF-8 + +; Fatal error page +; These will be processed by the JavaScript Build +BUILD_FATAL_HEADER="Maaf, ada masalah yang tidak dapat kami pulihkan." +BUILD_FATAL_LANGUAGE="Bahasa Indonesia ID" +BUILD_FATAL_TEXT="Server merespon \"{{statusCode_statusText}}\"" +BUILD_FATAL_URL_TEXT="Bantu saya menyelesaikan masalah ini" +; These will be processed by the JavaScript Build +BUILD_INCOMPLETE_HEADER="Lingkup Setelan Tidak Lengkap" +BUILD_INCOMPLETE_LANGUAGE="Bahasa Indonesia ID" +BUILD_INCOMPLETE_TEXT="Sepertinya Anda mencoba menjalankan Joomla! dari repositori git kami. Untuk melakukannya, Anda harus menyelesaikan beberapa langkah tambahan terlebih dahulu." +BUILD_INCOMPLETE_URL_TEXT="Lebih Detailnya" +; These will be processed by the JavaScript Build +BUILD_NOXML_HEADER="Maaf, PHP tidak memiliki library utama" +BUILD_NOXML_LANGUAGE="Bahasa Indonesia ID" +BUILD_NOXML_TEXT="Host Anda perlu menggunakan PHP dengan dukungan library XML untuk menjalankan versi Joomla!" +BUILD_NOXML_URL_TEXT="Bantu saya menyelesaikan masalah ini" +; These will be processed by the JavaScript Build +BUILD_MIN_PHP_ERROR_HEADER="Maaf, versi PHP anda tidak mendukung." +BUILD_MIN_PHP_ERROR_LANGUAGE="Bahasa Indonesia ID" +BUILD_MIN_PHP_ERROR_TEXT="Host anda memerlukan PHP versi {{phpversion}} atau yang terbaru untuk menjalankan versi Joomla ini." +BUILD_MIN_PHP_ERROR_URL_TEXT="Bantu saya menyelesaikan masalah ini" +; Main Config +INSTL_SELECT_INSTALL_LANG="Pilih Bahasa Instalasi" +INSTL_SELECT_LANGUAGE_TITLE="Pilih Bahasa" +INSTL_SETUP_LOGIN_DATA="Setelan Data Login" +INSTL_WARNJAVASCRIPT="Perhatian! JavaScript harus diaktifkan untuk pemasangan Joomla yang benar." +INSTL_WARNJSON="Konfigurasi JSON harus diaktifkan pada pemasangan PHP Anda untuk melanjutkan proses pemasangan Joomla!" +; Precheck view +INSTL_DATABASE_SUPPORT="Dukungan Database:" +INSTL_JSON_SUPPORT_AVAILABLE="Dukungan JSON" +INSTL_MB_LANGUAGE_IS_DEFAULT="Bahasa MB adalah Bawaan" +INSTL_MB_STRING_OVERLOAD_OFF="MB String Overload Padam" +INSTL_NOTICE_DATABASE_SUPPORT="Tidak ada database mendukung yang ditemukan." +INSTL_NOTICE_JSON_SUPPORT_AVAILABLE="Konfigurasi JSON harus diaktifkan pada pemasangan PHP Anda untuk melanjutkan proses pemasangan Joomla!" +INSTL_NOTICE_MBLANG_NOTDEFAULT="Bahasa mbstring PHP tidak disetel ke netral. Ini dapat diatur secara lokal dengan memasukkan php_value mbstring.language neutral di file .htaccess Anda." +INSTL_NOTICE_MBSTRING_OVERLOAD_OFF="Fungsi PHP mbstring overload telah diaktifkan. Hal ini dapat dimatikan secara lokal dengan memasukkan php_value mbstring.func_overload 0 di berkas .htaccess Anda." +INSTL_NOTICE_PARSE_INI_FILE_AVAILABLE="Fungsi php yang diperlukan parse_ini_file dan parse_ini_string dinonaktifkan di server Anda." +INSTL_NOTICE_XML_SUPPORT="Dukungan XML tidak tersedia. Ini harus diaktifkan secara default di php tetapi pengguna Ubuntu mungkin perlu menginstal ini dengan melakukan Sudo apt-get install php-xml diikuti dengan restart server web." +INSTL_NOTICE_ZLIB_COMPRESSION_SUPPORT="Kompresi Zlib tidak disetel. Ini dapat diaktifkan secara lokal dengan memasukkan zlib.output_compression = On di file php.ini Anda." +INSTL_PARSE_INI_FILE_AVAILABLE="Dukungan INI Parser" +INSTL_PRECHECK_ACTUAL="Aktual" +INSTL_PRECHECK_DESC="Jika salah satu dari item ini tidak didukung, silakan ambil tindakan untuk memperbaikinya.
Anda tidak dapat menginstal Joomla sampai pengaturan Anda memenuhi persyaratan ini." +INSTL_PRECHECK_DIRECTIVE="Direktif" +INSTL_PRECHECK_RECOMMENDED="Disarankan" +INSTL_PRECHECK_RECOMMENDED_SETTINGS_DESC="Pengaturan ini disarankan untuk PHP guna memastikan kompatibilitas penuh dengan Joomla." +INSTL_PRECHECK_RECOMMENDED_SETTINGS_TITLE="Konfigurasi yang disarankan:" +INSTL_PRECHECK_TITLE="Pemeriksaan Pra-pemasangan" +INSTL_XML_SUPPORT="Dukungan XML" +INSTL_ZLIB_COMPRESSION_SUPPORT="Dukungan Kompresi Zlib" +; Database view +INSTL_DATABASE="Konfigurasi Database" +INSTL_DATABASE_ENCRYPTION_CA_LABEL="Jalur ke File CA" +INSTL_DATABASE_ENCRYPTION_CERT_LABEL="Jalur ke File Sertifikat" +INSTL_DATABASE_ENCRYPTION_CIPHER_LABEL="Cipher Suite yang Didukung (opsional)" +INSTL_DATABASE_ENCRYPTION_KEY_LABEL="Jalur ke File Private Key" +INSTL_DATABASE_ENCRYPTION_MODE_LABEL="Enkripsi Koneksi" +INSTL_DATABASE_ENCRYPTION_MODE_VALUE_NONE="Default (dikontrol server)" +INSTL_DATABASE_ENCRYPTION_MODE_VALUE_ONE_WAY="Otentikasi satu arah" +INSTL_DATABASE_ENCRYPTION_MODE_VALUE_TWO_WAY="Otentikasi dua jalur" +INSTL_DATABASE_ENCRYPTION_MSG_CONN_NOT_ENCRYPT="Anda telah memilih untuk menggunakan enkripsi koneksi database, dan koneksi dapat dibuat, tetapi tidak dienkripsi. Alasannya mungkin karena server database dikonfigurasi untuk kembali ke koneksi yang tidak terenkripsi jika terjadi parameter enkripsi yang buruk. Periksa dan perbaiki parameter enkripsi basis data, atau ubah bidang \"Enkripsi Sambungan\" kembali ke \"Default (dikontrol server)\"." +INSTL_DATABASE_ENCRYPTION_MSG_FILE_FIELD_BAD="File yang dimasukkan di kolom \"%s\" tidak ada atau tidak dapat diakses." +INSTL_DATABASE_ENCRYPTION_MSG_FILE_FIELD_EMPTY="Kolom \"%s\" kosong atau tidak berisi jalur yang valid." +INSTL_DATABASE_ENCRYPTION_MSG_LOCALHOST="Anda telah memasukkan \"localhost\" sebagai nama host. Menghubungkan ke database dengan koneksi terenkripsi mungkin gagal dengan ini. Ubah \"localhost\" menjadi \"127.0.0.1\" atau \"::1\" atau nama host lain, atau ubah kolom \"Connection Encryption\" kembali ke \"Default (server dikendalikan)\"." +INSTL_DATABASE_ENCRYPTION_MSG_SRV_NOT_SUPPORTS="Server database tidak mendukung koneksi terenkripsi. Aktifkan dukungan TLS (sering disebut SSL dalam dokumen) di server database Anda, atau ubah kolom \"Connection Encryption\" kembali ke \"Default (server dikendalikan)\"." +INSTL_DATABASE_ENCRYPTION_VERIFY_SERVER_CERT_LABEL="Verifikasi Sertifikat Server" +INSTL_DATABASE_ERROR_POSTGRESQL_QUERY="Query database PostgreSQL gagal." +INSTL_DATABASE_HOST_DESC="Masukkan nama host, biasanya \"localhost\" atau nama yang diberikan oleh host Anda." +INSTL_DATABASE_HOST_IS_NOT_LOCALHOST_CREATE_FILE="Kami tidak dapat membuat file. Harap buat file bernama \"%1$s\" secara manual dan unggah ke folder \"%2$s\" di situs Joomla Anda. Kemudian pilih \"%3$s\" untuk melanjutkan." +INSTL_DATABASE_HOST_IS_NOT_LOCALHOST_DELETE_FILE="Untuk mengonfirmasi bahwa Anda adalah pemilik situs web ini, harap hapus file bernama \"%1$s\" yang telah dibuat di folder \"%2$s\" situs Joomla Anda. Kemudian pilih \"%3$s\" untuk melanjutkan." +INSTL_DATABASE_HOST_IS_NOT_LOCALHOST_GENERAL_MESSAGE="Anda mencoba untuk menggunakan host database yang tidak ada di server lokal Anda. Untuk alasan keamanan, Anda perlu memverifikasi kepemilikan akun hosting web Anda. Silakan baca dokumentasi untuk informasi lebih lanjut." +INSTL_DATABASE_HOST_LABEL="Nama Host" +INSTL_DATABASE_NAME_DESC="Masukkan nama database." +INSTL_DATABASE_NAME_LABEL="Nama Database" +INSTL_DATABASE_NAME_MSG_MYSQL="Nama Database tidak valid. Tidak boleh mengandung karakter berikut: \ /" +INSTL_DATABASE_NAME_MSG_POSTGRES="Nama database tidak valid. Harus dimulai dengan huruf, diikuti dengan karakter alfanumerik." +INSTL_DATABASE_NO_SCHEMA="Tidak ada skema database tersedia untuk tipe database ini." +INSTL_DATABASE_PASSWORD_DESC="Kata sandi yang Anda buat atau kata sandi yang disediakan oleh host Anda." +INSTL_DATABASE_PREFIX_DESC="Masukkan awalan tabel atau gunakan yang dibuat secara acak." +INSTL_DATABASE_PREFIX_MSG="Awalan tabel harus dimulai dengan huruf, dapat diikuti oleh karakter alfanumerik dan garis bawah" +INSTL_DATABASE_RESPONSE_ERROR="Proses instalasi gagal." +INSTL_DATABASE_TYPE_DESC="Pilih tipe database." +INSTL_DATABASE_USER_DESC="Nama pengguna yang Anda buat atau nama pengguna yang disediakan oleh host Anda." +INSTL_DATABASE_VALIDATION_ERROR="Periksa kredensial database Anda, jenis database, nama database atau nama host. Jika Anda telah menginstal MySQL 8, silakan baca ini wiki untuk informasi lebih lanjut." + +INSTL_CONNECT_DB="Konfigurasi Koneksi Database" +INSTL_INSTALL_JOOMLA="Instal Joomla" +; Site View +INSTL_ADMIN_EMAIL_DESC="Masukkan alamat email dari Super User." +INSTL_ADMIN_PASSWORD_DESC="Masukkan kata sandi untuk akun Super User." +INSTL_ADMIN_PASSWORD_LENGTH="Masukkan setidaknya 12 karakter." +INSTL_ADMIN_USER_DESC="Masukkan nama asli anda untuk Super User." +INSTL_ADMIN_USERNAME_DESC="Atur nama pengguna untuk akun Super Administrator Anda." +INSTL_LOGIN_DATA="Data Login" +INSTL_SETUP_SITE_NAME="Pengaturan Nama Situs" +INSTL_SITE="Konfigurasi Utama" +INSTL_SITE_DEVMODE_LABEL="Kami mendeteksi mode pengembangan" +INSTL_SITE_NAME_DESC="Masukkan nama situ Joomla anda." +; Complete view +INSTL_COMPLETE_ERROR_FOLDER_DELETE="Folder \"%s\" tidak dapat dihapus. Mohon hapus manual folder tersebut." +INSTL_COMPLETE_REMOVE_FOLDER="Hapus folder \"%s\"" +INSTL_COMPLETE_CONGRAT="Selamat!" +INSTL_COMPLETE_TITLE="Selamat! Situs Joomla anda telah siap." +INSTL_COMPLETE_SITE_BTN="Selesai & Buka Situs" +INSTL_COMPLETE_ADMIN_BTN="Selesai & Buka Admin" +INSTL_COMPLETE_FINAL="Pemasangan Selesai" +INSTL_COMPLETE_FINAL_DESC="Pemasangan Joomla anda telah selesai dan siap digunakan." +INSTL_COMPLETE_ADD_EXTRA_LANGUAGE="Instal Bahasa Tambahan" +INSTL_REMOVE_INST_FOLDER="Anda yakin ingin menghapus? Konfirmasi anda ini akan menghapus folder \"%s\" secara permanen." +; Languages view +INSTL_LANGUAGES="Instal Bahasa Tambahan" +INSTL_LANGUAGES_COLUMN_HEADER_LANGUAGE="Bahasa" +INSTL_LANGUAGES_COLUMN_HEADER_LANGUAGE_SELECT="Pilih Bahasa" +INSTL_LANGUAGES_COLUMN_HEADER_LANGUAGE_TAG="Tagar Bahasa" +INSTL_LANGUAGES_COLUMN_HEADER_VERSION="Versi" +INSTL_LANGUAGES_DESC="Tampilan Joomla tersedia dalam beberapa bahasa. Pilih bahasa pilihan Anda dengan memilih kotak centang lalu instal dengan memilih tombol Berikutnya \"Pasang Bahasa Terpilih\".
Catatan: Operasi ini akan memakan waktu sekitar 10 detik untuk mengunduh dan menginstal setiap bahasa. Untuk menghindari batas waktu, pilih tidak lebih dari 3 bahasa untuk dipasang." +INSTL_LANGUAGES_MESSAGE_PLEASE_WAIT="Operasi ini akan memakan waktu hingga 10 detik per bahasa untuk diselesaikan
Harap tunggu sementara kami mengunduh dan menginstal bahasa ..." +INSTL_LANGUAGES_NO_LANGUAGE_SELECTED="Tidak ada bahasa yang dipilih untuk dipasang." +INSTL_LANGUAGES_SELECTED="Pasang Bahasa yang Dipilih" +INSTL_LANGUAGES_WARNING_NO_INTERNET="Joomla tidak dapat terhubung ke server bahasa. Silakan selesaikan proses instalasi." +INSTL_LANGUAGES_WARNING_NO_INTERNET2="Catatan: Anda dapat menginstal bahasa nanti dengan menggunakan akun Administrator Joomla." +INSTL_LANGUAGES_WARNING_BACK_BUTTON="Kembali ke langkah pemasangan terakhir" +; Default language view +INSTL_DEFAULTLANGUAGE_ADMINISTRATOR="Bahasa Administrasi Bawaan" +INSTL_DEFAULTLANGUAGE_ADMIN_COULDNT_SET_DEFAULT="Joomla tidak dapat mengatur bahasa sebagai default. Bahasa Inggris akan digunakan sebagai bahasa default untuk Administrator Backend." +INSTL_DEFAULTLANGUAGE_ADMIN_SET_DEFAULT="Joomla telah mengatur %s sebagai bahasa bawaan ADMINISTRATOR Anda." +INSTL_DEFAULTLANGUAGE_COLUMN_HEADER_SELECT="Pilih" +INSTL_DEFAULTLANGUAGE_COLUMN_HEADER_LANGUAGE="Bahasa" +INSTL_DEFAULTLANGUAGE_COLUMN_HEADER_TAG="Tagar" +INSTL_DEFAULTLANGUAGE_COULD_NOT_DOWNLOAD_PACKAGE="Joomla gagal mengunduh atau membongkar paket bahasa dari: %s" +INSTL_DEFAULTLANGUAGE_COULD_NOT_INSTALL_LANGUAGE="Joomla tidak dapat menginstal bahasa %s" +INSTL_DEFAULTLANGUAGE_DESC="Joomla telah menginstal bahasa berikut. Harap pilih bahasa default yang Anda inginkan untuk Administrator Joomla." +INSTL_DEFAULTLANGUAGE_DESC_FRONTEND="Joomla telah menginstal bahasa berikut. Harap pilih bahasa default yang Anda inginkan untuk Joomla Frontend." +INSTL_DEFAULTLANGUAGE_FRONTEND="Bahasa Bawaan Situs" +INSTL_DEFAULTLANGUAGE_FRONTEND_COULDNT_SET_DEFAULT="Joomla tidak dapat mengatur bahasa sebagai default. Bahasa Inggris akan digunakan sebagai bahasa default untuk Halaman Depan Website." +INSTL_DEFAULTLANGUAGE_FRONTEND_SET_DEFAULT="Joomla telah mengatur %s sebagai bahasa bawaan SITUS Anda." +INSTL_DEFAULTLANGUAGE_SET_DEFAULT_LANGUAGE="Setel bahasa default" +INSTL_DEFAULTLANGUAGE_TRY_LATER="Catatan: Anda dapat menginstal bahasa nanti dengan menggunakan akun Administrator Joomla." + +INSTL_DEFAULTLANGUAGE_NATIVE_LANGUAGE_NAME="Bahasa Indonesia" ; IMPORTANT NOTE FOR TRANSLATORS: Do not literally translate this line, instead add the localised name of the language. For example Spanish will be Español +; Database Model +INSTL_DATABASE_COULD_NOT_CONNECT="Tidak dapat terhubung ke database. Respon pesan kesalahan Konektor: %s" +INSTL_DATABASE_COULD_NOT_CREATE_DATABASE="Pemasang tidak dapat terhubung ke database yang ditentukan dan tidak dapat membuat database. Verifikasikan pengaturan Anda dan jika perlu buat secara manual database Anda." +INSTL_DATABASE_COULD_NOT_REFRESH_MANIFEST_CACHE="Tidak dapat menyegarkan cache manifes untuk ekstensi: %s" +INSTL_DATABASE_ERROR_BACKINGUP="Terjadi kesalahan (galat) pada saat membuat cadangan database." +INSTL_DATABASE_ERROR_CREATE="Terjadi kesalahan saat mencoba membuat database %s.
Pengguna mungkin tidak memiliki cukup hak untuk membuat database. Database yang diperlukan mungkin perlu dibuat secara terpisah sebelum Anda dapat menginstal Joomla" +INSTL_DATABASE_ERROR_DELETE="Beberapa kesalahan (galat) telah terjadi pada saat menghapus database." +INSTL_DATABASE_ERROR_READING_SQL_FILE="Tidak bisa membaca file SQL." +INSTL_DATABASE_FIELD_VALUE_BACKUP="Buat Cadangan" +INSTL_DATABASE_FIELD_VALUE_REMOVE="Singkirkan" +INSTL_DATABASE_FILE_DOES_NOT_EXIST="File %s tidak ada." +INSTL_DATABASE_FIX_LOWERCASE="Awalan tabel harus huruf kecil untuk PostgreSQL." +INSTL_DATABASE_FIX_TOO_LONG="Prefiks (awalan) untuk tabel database MySQL tidak boleh lebih dari 15 karakter" +INSTL_DATABASE_INVALID_DB_DETAILS="Detail database yang diberikan salah dan/atau kosong." +INSTL_DATABASE_INVALID_MARIADB_VERSION="Anda memerlukan MySQL %1$s atau lebih tinggi untuk melanjutkan pemasangan. Versi Anda adalah: %2$s" +INSTL_DATABASE_INVALID_MYSQL_VERSION="Anda memerlukan MySQL %1$s atau lebih tinggi untuk melanjutkan pemasangan. Versi Anda adalah: %2$s" +INSTL_DATABASE_INVALID_MYSQLI_VERSION="Anda memerlukan MySQL %1$s atau lebih tinggi untuk melanjutkan pemasangan. Versi Anda adalah: %2$s" +INSTL_DATABASE_INVALID_PGSQL_VERSION="Anda memerlukan PostgreSQL %1$s atau lebih tinggi untuk melanjutkan penginstalan. Versi Anda adalah: %2$s" +INSTL_DATABASE_INVALID_POSTGRESQL_VERSION="Anda memerlukan PostgreSQL %1$s atau lebih tinggi untuk melanjutkan penginstalan. Versi Anda adalah: %2$s" +INSTL_DATABASE_INVALID_TYPE="Silahkan pilih tipe database." +INSTL_DATABASE_NAME_INVALID_CHAR="No MySQL dapat memiliki NULL ASCII (0x00)." +INSTL_DATABASE_NAME_INVALID_SPACES="Nama database MySQL dan nama tabel tidak boleh dimulai atau diakhiri dengan spasi." +INSTL_DATABASE_NAME_TOO_LONG="Panjang nama Database MySQL maksimal 64 karakter." +; Controllers +INSTL_COOKIES_NOT_ENABLED="Cookie tampaknya tidak diaktifkan pada klien browser Anda. Anda tidak akan dapat menginstal aplikasi dengan fitur ini dinonaktifkan. Atau, mungkin juga ada masalah dengan session.save_path server. Jika demikian, silakan berkonsultasi dengan penyedia hosting Anda jika Anda tidak tahu cara memeriksa atau memperbaikinya sendiri." +INSTL_HEADER_ERROR="Galat" +; Helpers +INSTL_PAGE_TITLE="Pemasang Joomla" +; Configuration model +INSTL_ERROR_CONNECT_DB="Tidak dapat terhubung ke database. Respon pesan kesalahan Konektor: %d." +INSTL_STD_OFFLINE_MSG="Situs ini sedang dalam perbaikan.
Silakan periksa kembali nanti." +; Languages model +INSTL_ERROR_INVALID_URL="URL Salah" +; Others +INSTL_CONFPROBLEM="Berkas konfigurasi anda atau folder tidak bisa ditulisi atau terjadi masalah pada pembuatan berkas konfigurasi. Anda harus mengunggah kode berikut secara manual. Klik pada area teks untuk menyorot semua kode dan kemudian salin dan tempel kedalam sebuah berkas teks baru. Berinama berkas ini dengan 'configuration.php' dan unggah berkas tersebut ke folder pangkal situs anda." +INSTL_DISPLAY_ERRORS="Tampilkan Kesalahan" +INSTL_ERROR="Galat" +INSTL_ERROR_DB="Beberapa kesalahan terjadi saat mengisi database: %s." +INSTL_ERROR_INITIALISE_SCHEMA="Tidak dapat menginisialisasi skema database." +INSTL_EXTENSION_AVAILABLE="%s Tersedia" +INSTL_FILE_UPLOADS="Unggah Berkas" +INSTL_GNU_GPL_LICENSE="Lisensi GNU General Public" +INSTL_HELP_LINK="Bantuan instalasi Joomla" +INSTL_NOTICE_NEEDSTOBEWRITABLE="Anda masih dapat melanjutkan instalasi jika Anda memperbaiki izin." +INSTL_OUTPUT_BUFFERING="Penyangga Keluar" +INSTL_PHP_VERSION="Versi PHP" +INSTL_PHP_VERSION_NEWER="Versi PHP >= %s" +INSTL_PROCESS_BUSY="Proses sedang berlangsung. Harap tunggu..." +INSTL_SESSION_AUTO_START="Sesi Mulai Otomatis" +INSTL_WRITABLE="Izin untuk membuat %s tidak memadai." +INSTL_ZIP_SUPPORT_AVAILABLE="Dukungan Native ZIP" +; Global strings +JADMINISTRATOR="Administrator" +JEMAIL="E-mail" +JERROR="Galat" +JERROR_LAYOUT_ERROR_HAS_OCCURRED_WHILE_PROCESSING_YOUR_REQUEST="Sebuah kesalahan telah terjadi saat memproses permintaan Anda." +JGLOBAL_ISFREESOFTWARE="%s adalah perangkat lunak bebas yang dirilis dibawah %s" +JGLOBAL_LANGUAGE_VERSION_NOT_PLATFORM="Paket bahasa tidak cocok dengan versi Joomla ini. Beberapa string mungkin hilang dan akan ditampilkan dalam bahasa Inggris." +JGLOBAL_SELECT_AN_OPTION="Pilih sebuah opsi" +JGLOBAL_SELECT_NO_RESULTS_MATCH="Tidak ada hasil yang sesuai" +JGLOBAL_SELECT_SOME_OPTIONS="Pilih beberapa opsi" +JHIDEPASSWORD="Sembunyikan Kata sandi" +JINVALID_TOKEN="Permintaan terakhir ditolak karena mengandung token keamanan yang tidak benar. Silakan segarkan halaman dan coba lagi." +JINVALID_TOKEN_NOTICE="Token keamanan tidak cocok. Permintaan dibatalkan untuk mencegah pelanggaran keamanan. Silakan coba lagi." +JNEXT="Berikut" +JNO="Tidak" +JNOTICE="Pemberitahuan" +JOFF="Padam" +JON="Nyala" +JPREVIOUS="Sebelum" +JSHOWPASSWORD="Tampilkan Kata sandi" +JSITE="Situs" +JSKIP="Lewati" +JUSERNAME="Nama Pengguna" +JYES="Ya" +; Framework strings necessary when no lang pack is available +JLIB_DATABASE_ERROR_CONNECT_MYSQL="Tidak bisa terhubung dengan MySQL." +JLIB_DATABASE_ERROR_DATABASE="Telah terjadi Galat Database." +JLIB_DATABASE_ERROR_LOAD_DATABASE_DRIVER="Tidak dapat memuat Driver Database: %s." +JLIB_DATABASE_ERROR_VALID_MAIL="Alamat email yang Anda masukkan tidak valid. Masukkan alamat email lain." +JLIB_ENVIRONMENT_SESSION_EXPIRED="Sesi Anda telah berakhir, silakan muat kembali halaman ini." +JLIB_FILESYSTEM_ERROR_PATH_IS_NOT_A_FOLDER="%1$s: Jalur bukan folder. Jalur: %2$s" +JLIB_FORM_FIELD_INVALID="Isian tidak benar: " +JLIB_FORM_VALIDATE_FIELD_INVALID="Kolom tidak valid: %s" +JLIB_FORM_VALIDATE_FIELD_REQUIRED="Kolom diperlukan: %s" +JLIB_INSTALLER_ABORT="Membatalkan pemasangan bahasa: %s" +JLIB_INSTALLER_ABORT_CREATE_DIRECTORY="Ekstensi %1$s: Gagal membuat folder: %2$s" +JLIB_INSTALLER_ABORT_NOINSTALLPATH="Jalur pemasangan tidak ada" +JLIB_INSTALLER_ABORT_PACK_INSTALL_ERROR_EXTENSION="Paket %1$s: Ada kesalahan saat memasang ekstensi: %2$s." +JLIB_INSTALLER_ABORT_PACK_INSTALL_NO_FILES="Paket %s: Tidak ada berkas untuk dipasang!" +JLIB_INSTALLER_ERROR_DOWNLOAD_SERVER_CONNECT="Galat menghubungi server: %s" +JLIB_INSTALLER_ERROR_FAIL_COPY_FILE="JInstaller: :Install: Gagal menyalin berkas %1$s ke %2$s." +JLIB_INSTALLER_INSTALL="Pasang" +JLIB_INSTALLER_NOT_ERROR="Jika kesalahan terkait dengan penginstalan file bahasa TinyMCE, itu tidak berpengaruh pada penginstalan bahasa. Beberapa paket bahasa yang dibuat sebelum Joomla 3.2.0 mungkin mencoba menginstal file bahasa TinyMCE yang terpisah. Karena ini sekarang termasuk dalam inti, mereka tidak perlu lagi diinstal." +JLIB_INSTALLER_WARNING_UNABLE_TO_INSTALL_CONTENT_LANGUAGE="Tidak dapat membuat konten bahasa untuk %s bahasa: %s." +JLIB_UPDATER_ERROR_COLLECTION_FOPEN="Pengaturan PHP allow_url_fopen dinonaktifkan. Pengaturan ini harus diaktifkan agar mesin pembaruan bisa bekerja." +JLIB_UPDATER_ERROR_COLLECTION_OPEN_URL="Pembaruan: :Collection: Tidak dapat membuka %s" +JLIB_UPDATER_ERROR_COLLECTION_PARSE_URL="Pembaruan: :Collection: Tidak dapat parsing %s" +JLIB_UPDATER_ERROR_OPEN_UPDATE_SITE="Pembaruan: Tidak dapat membuka situs pembaruan #%d \"%s\", URL: %s." +JLIB_UTIL_ERROR_CONNECT_DATABASE="JDatabase: :getInstance: Tidak dapat dikoneksikan ke database
joomla.library: %1$s - %2$s." +; Strings for the language debugger +JDEBUG_LANGUAGE_FILES_IN_ERROR="Galat penguraian pada berkas bahasa" +JDEBUG_LANGUAGE_UNTRANSLATED_STRING="String belum diterjemahkan" +JNONE="Tidak ada" +; Necessary for errors +ADMIN_EMAIL="Email Admin" +ADMIN_PASSWORD="Sandi Admin" +SITE_NAME="Nama Situs" +; Database types (allows for a more descriptive label than the internal name) +MYSQL="MySQL (PDO)" +MYSQLI="MySQLi" +ORACLE="Oracle" +PGSQL="PostgreSQL (PDO)" +POSTGRESQL="PostgreSQL" +SQLITE="SQLite" +; Javascript message titles +ERROR="Galat" +MESSAGE="Pesan" +NOTICE="Pemberitahuan" +WARNING="Peringatan" +; Javascript ajax error messages +JLIB_JS_AJAX_ERROR_CONNECTION_ABORT="Koneksi diputuskan saat mengambil data JSON." +JLIB_JS_AJAX_ERROR_NO_CONTENT="Tidak ada konten yang ditampilkan." +JLIB_JS_AJAX_ERROR_OTHER="Terjadi kesalahan saat mengambil data JSON: Kode status HTTP %d." +JLIB_JS_AJAX_ERROR_PARSE="Terjadi kesalahan penguraian saat memproses data JSON berikut:
%s" +JLIB_JS_AJAX_ERROR_TIMEOUT="Waktu habis saat mengambil data JSON." +; Field password messages +JFIELD_PASSWORD_INDICATE_COMPLETE="Kata Sandi diterima" +JFIELD_PASSWORD_INDICATE_INCOMPLETE="Kata sandi tidak memenuhi persyaratan situs." +JFIELD_PASSWORD_SPACES_IN_PASSWORD="Sandi tidak boleh mengandung spasi di awal atau di akhir." +JFIELD_PASSWORD_TOO_LONG="Sandi terlalu panjang. Sandi harus kurang dari 100 karakter." +JFIELD_PASSWORD_TOO_SHORT_N="Sandi terlalu pendek. Sandi harus harus mengandung setidaknya %s karakter." +; Javascript Form Validation Messages +JLIB_FORM_CONTAINS_INVALID_FIELDS="Formulir tidak dapat dikirimkan karena tidak ada data yang diperlukan.
Harap perbaiki kolom yang ditandai dan coba lagi." +JLIB_FORM_FIELD_INVALID_VALUE="Nilai ini tidak valid." +JLIB_FORM_FIELD_REQUIRED_CHECK="Harus memilih salah satu opsi." +JLIB_FORM_FIELD_REQUIRED_VALUE="Silahkan isi kolom ini." + diff --git a/installation/language/id-ID/langmetadata.xml b/installation/language/id-ID/langmetadata.xml new file mode 100644 index 0000000000000..dd7c3c2475663 --- /dev/null +++ b/installation/language/id-ID/langmetadata.xml @@ -0,0 +1,19 @@ + + + Bahasa Indonesia (id) + 4.3.3 + 2023-05 + Joomla! Indonesia + (C) 2005 Open Source Matters, Inc. + GNU General Public License version 2 or later; see LICENSE.txt + + joomla.ini + + + Bahasa Indonesia (id) + Bahasa Indonesia (id) + id + 0 + + + diff --git a/installation/language/lt-LT/joomla.ini b/installation/language/lt-LT/joomla.ini index 83a1c3c900545..40af2c202d9e6 100644 --- a/installation/language/lt-LT/joomla.ini +++ b/installation/language/lt-LT/joomla.ini @@ -81,6 +81,7 @@ INSTL_DATABASE_NAME_MSG_POSTGRES="Duomenų bazės pavadinimas neteisingas. Jis t INSTL_DATABASE_NO_SCHEMA="Šiam duomenų bazės tipui neegzistuoja duomenų bazės schema." INSTL_DATABASE_PASSWORD_DESC="Arba jūsų sukurtas slaptažodis, arba slaptažodis, kurį pateikė jūsų priegloba." INSTL_DATABASE_PREFIX_DESC="Įveskite lentelės priešdėlį arba naudokite atsitiktinai sugeneruotą." +INSTL_DATABASE_PREFIX_DUPLICATE_DESC="Jei naudojate esamą duomenų bazę su lentelėmis su tuo pačiu priešdėliu, Joomla pervadins esamas lenteles pridėdama priešdėlį \"bak_\"." INSTL_DATABASE_PREFIX_MSG="Lentelės priešdėlis turi prasidėti raide, po kurios gali būti raidiniai ir skaitiniai simboliai ir apatinis brūkšnys" INSTL_DATABASE_RESPONSE_ERROR="Diegimo procesas nepavyko." INSTL_DATABASE_TYPE_DESC="Pasirinkite duomenų bazės tipą." diff --git a/installation/language/pt-PT/joomla.ini b/installation/language/pt-PT/joomla.ini index d40b4b14f37ec..bee0f3de5e740 100644 --- a/installation/language/pt-PT/joomla.ini +++ b/installation/language/pt-PT/joomla.ini @@ -62,7 +62,7 @@ INSTL_DATABASE_ENCRYPTION_MODE_LABEL="Encriptação de ligação" INSTL_DATABASE_ENCRYPTION_MODE_VALUE_NONE="Predefinido (controlado pelo servidor)" INSTL_DATABASE_ENCRYPTION_MODE_VALUE_ONE_WAY="Autenticação de sentido único" INSTL_DATABASE_ENCRYPTION_MODE_VALUE_TWO_WAY="Autenticação em dois sentidos" -INSTL_DATABASE_ENCRYPTION_MSG_CONN_NOT_ENCRYPT="Selecionou para utilização o modo de encriptação de ligação à base de dados. Apesar de ser possível estabelecer uma conexão não pode ser encriptada. O motivo pode residir no facto de o servidor da base de dados estar configurado para regredir para uma ligação não encriptada caso os parâmetros de encriptação sejam inválidos. Verifique e corrija os parâmetros de encriptação da base de dados ou altere o campo \"Encriptação de ligação\" de volta para \"Predefinição (controlado pelo servidor)\"." +INSTL_DATABASE_ENCRYPTION_MSG_CONN_NOT_ENCRYPT="Selecionou para utilização o modo de encriptação de ligação à base de dados. Apesar de ser possível estabelecer uma conexão não pode ser encriptada. O motivo pode residir no facto de o servidor da base de dados estar configurado para regredir para uma ligação não encriptada caso os parâmetros de encriptação sejam inválidos. Verifique e corrija os parâmetros de encriptação da base de dados ou altere o campo \"Encriptação de ligação\" de volta para \"Predefinição (controlado pelo servidor)\"." INSTL_DATABASE_ENCRYPTION_MSG_FILE_FIELD_BAD="O ficheiro inserido no campo \"%s\" não existe ou não está acessível." INSTL_DATABASE_ENCRYPTION_MSG_FILE_FIELD_EMPTY="O campo \"%s\" está vazio ou não contém um caminho válido." INSTL_DATABASE_ENCRYPTION_MSG_LOCALHOST="Você digitou \"localhost\" como nome de anfitrião. Ligar à base de dados com encriptação de ligação pode falhar dessa forma. Altere \"localhost\" para \"127.0.0.1\" ou \"::1\" ou um nome de anfitrião diferente, ou altere o campo \"Encriptação de ligação\" de volta para \"Predefinição (controlado pelo servidor)\"." @@ -81,6 +81,7 @@ INSTL_DATABASE_NAME_MSG_POSTGRES="O nome da base de dados é inválido. Deve com INSTL_DATABASE_NO_SCHEMA="Não existe um esquema de base de dados para este tipo de base." INSTL_DATABASE_PASSWORD_DESC="A senha que criou ou a atribuída pelo seu alojamento Web." INSTL_DATABASE_PREFIX_DESC="Introduza um prefixo para a tabela ou use um gerado aleatoriamente." +INSTL_DATABASE_PREFIX_DUPLICATE_DESC="Se estiver a usar uma base de dados contendo tabelas com o mesmo prefixo, o Joomla renomeará as tabelas existentes adicionando o prefixo \"bak_\"." INSTL_DATABASE_PREFIX_MSG="O prefixo de tabela deve começar por uma letra, e seguido, opcionalmente, de caracteres do tipo alfanumérico. Terá de ser terminado por um sobtraço" INSTL_DATABASE_RESPONSE_ERROR="Falha no processo de instalação." INSTL_DATABASE_TYPE_DESC="Escolha o tipo de base de dados." diff --git a/templates/system/build_incomplete.html b/templates/system/build_incomplete.html index 4803ad7dde7b6..212fb641075ed 100644 --- a/templates/system/build_incomplete.html +++ b/templates/system/build_incomplete.html @@ -6,7 +6,7 @@ Joomla: Environment Setup Incomplete - +
diff --git a/templates/system/fatal-error.html b/templates/system/fatal-error.html index b3b66fbfba8fe..84a56fb084a3c 100644 --- a/templates/system/fatal-error.html +++ b/templates/system/fatal-error.html @@ -6,7 +6,7 @@ An Error Occurred: {{statusText}} - +
diff --git a/templates/system/incompatible.html b/templates/system/incompatible.html index ae42c29b990e8..4167e5b259bcc 100644 --- a/templates/system/incompatible.html +++ b/templates/system/incompatible.html @@ -6,7 +6,7 @@ Joomla: unsupported PHP version - +
From 20bf3720d8ea33fccc6354b88092c06f16a79d12 Mon Sep 17 00:00:00 2001 From: heelc29 <66922325+heelc29@users.noreply.github.com> Date: Sat, 1 Jul 2023 23:58:28 +0200 Subject: [PATCH 034/126] [4.3] Update readme (#41088) --- .github/CONTRIBUTING.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 9aceb79e81cad..50b6393e5c76d 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -14,12 +14,12 @@ 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 `4.2-dev` branch as this contains the most recent version of the code. +PRs should usually be made to the `4.3-dev` branch as this contains the most recent version of the code. There are other branches available which serve specific purposes. | Branch | Purpose | | ------ | ------- | | 3.10-dev | Branch for the Joomla 3.x series. The 3.10 series release will now only include security patches. | -| 4.2-dev | Branch for the current minor Joomla version.| -| 4.3-dev | Branch for the next minor Joomla version. New features go into this branch. Commits to 4.2-dev will be applied to this branch as well. | -| 5.0-dev | Branch for the next major Joomla version. | +| 4.3-dev | Branch for the current minor Joomla version.| +| 4.4-dev | Branch for the next minor Joomla version. Commits to 4.3-dev will be applied to this branch as well. | +| 5.0-dev | Branch for the next major Joomla version. New features go into this branch. | From 28907132ebe454b774f40054f82127b8ecfc5fc5 Mon Sep 17 00:00:00 2001 From: jsanders Date: Sun, 2 Jul 2023 02:07:20 +0200 Subject: [PATCH 035/126] Color issue (#40435) --- .../templates/site/cassiopeia/scss/blocks/_global.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/media_source/templates/site/cassiopeia/scss/blocks/_global.scss b/build/media_source/templates/site/cassiopeia/scss/blocks/_global.scss index 5b4e719388436..c456cce3865de 100644 --- a/build/media_source/templates/site/cassiopeia/scss/blocks/_global.scss +++ b/build/media_source/templates/site/cassiopeia/scss/blocks/_global.scss @@ -60,8 +60,8 @@ a { text-decoration: underline; } - &:hover, - &:focus { + &:not(.btn):hover, + &:not(.btn):focus { color: var(--cassiopeia-color-hover); } From 6df06df0e1eaad9ee41062cd9d88c0a91f042700 Mon Sep 17 00:00:00 2001 From: joomla-translation-bot <87496051+joomla-translation-bot@users.noreply.github.com> Date: Sun, 9 Jul 2023 18:59:33 +0200 Subject: [PATCH 036/126] Translation Update (#41100) --- installation/language/af-ZA/langmetadata.xml | 2 +- installation/language/ar-AA/langmetadata.xml | 2 +- installation/language/bg-BG/joomla.ini | 1 + installation/language/bg-BG/langmetadata.xml | 2 +- installation/language/ca-ES/langmetadata.xml | 2 +- installation/language/cs-CZ/langmetadata.xml | 2 +- installation/language/cy-GB/langmetadata.xml | 2 +- installation/language/da-DK/langmetadata.xml | 2 +- installation/language/el-GR/langmetadata.xml | 2 +- installation/language/en-AU/langmetadata.xml | 2 +- installation/language/en-CA/langmetadata.xml | 2 +- installation/language/en-NZ/langmetadata.xml | 2 +- installation/language/en-US/langmetadata.xml | 2 +- installation/language/es-ES/langmetadata.xml | 2 +- installation/language/et-EE/langmetadata.xml | 2 +- installation/language/eu-ES/langmetadata.xml | 2 +- installation/language/fa-AF/langmetadata.xml | 2 +- installation/language/fa-IR/langmetadata.xml | 2 +- installation/language/fi-FI/langmetadata.xml | 2 +- installation/language/fr-FR/langmetadata.xml | 2 +- installation/language/he-IL/langmetadata.xml | 2 +- installation/language/hr-HR/langmetadata.xml | 2 +- installation/language/hu-HU/langmetadata.xml | 2 +- installation/language/id-ID/langmetadata.xml | 2 +- installation/language/it-IT/langmetadata.xml | 2 +- installation/language/ja-JP/langmetadata.xml | 2 +- installation/language/ka-GE/langmetadata.xml | 2 +- installation/language/kk-KZ/langmetadata.xml | 2 +- installation/language/lt-LT/langmetadata.xml | 2 +- installation/language/lv-LV/langmetadata.xml | 2 +- installation/language/mk-MK/langmetadata.xml | 2 +- installation/language/nl-BE/langmetadata.xml | 2 +- installation/language/nl-NL/langmetadata.xml | 2 +- installation/language/pl-PL/langmetadata.xml | 2 +- installation/language/pt-BR/langmetadata.xml | 2 +- installation/language/pt-PT/langmetadata.xml | 2 +- installation/language/ro-RO/langmetadata.xml | 2 +- installation/language/sk-SK/langmetadata.xml | 2 +- installation/language/sl-SI/langmetadata.xml | 2 +- installation/language/sr-YU/langmetadata.xml | 2 +- installation/language/sv-SE/langmetadata.xml | 2 +- installation/language/ta-IN/joomla.ini | 4 ++-- installation/language/ta-IN/langmetadata.xml | 2 +- installation/language/th-TH/langmetadata.xml | 2 +- installation/language/tr-TR/langmetadata.xml | 2 +- installation/language/uk-UA/langmetadata.xml | 2 +- installation/language/ur-PK/langmetadata.xml | 2 +- installation/language/vi-VN/langmetadata.xml | 2 +- installation/language/zh-CN/langmetadata.xml | 2 +- installation/language/zh-TW/langmetadata.xml | 2 +- 50 files changed, 51 insertions(+), 50 deletions(-) diff --git a/installation/language/af-ZA/langmetadata.xml b/installation/language/af-ZA/langmetadata.xml index 02b1d34e26902..9758e3cfce0cd 100644 --- a/installation/language/af-ZA/langmetadata.xml +++ b/installation/language/af-ZA/langmetadata.xml @@ -2,7 +2,7 @@ Afrikaans (Suid-Afrika) 4.3.3 - 2023-05 + 2023-07 Afrikaans Translation Team (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/ar-AA/langmetadata.xml b/installation/language/ar-AA/langmetadata.xml index d58bde269dfaf..731f506ed73ad 100644 --- a/installation/language/ar-AA/langmetadata.xml +++ b/installation/language/ar-AA/langmetadata.xml @@ -2,7 +2,7 @@ Arabic (اللغة العربية) 4.3.3 - 2023-05 + 2023-07 Dr. Ashraf Damra (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/bg-BG/joomla.ini b/installation/language/bg-BG/joomla.ini index a27f12ed17d3e..86c8152872e94 100644 --- a/installation/language/bg-BG/joomla.ini +++ b/installation/language/bg-BG/joomla.ini @@ -81,6 +81,7 @@ INSTL_DATABASE_NAME_MSG_POSTGRES="Некоректно име на базата INSTL_DATABASE_NO_SCHEMA="Не съществува схема за избрания вид база данни." INSTL_DATABASE_PASSWORD_DESC="Въведете парола която сте създали или е предоставена от хостинга Ви." INSTL_DATABASE_PREFIX_DESC="Въведете префикс на таблица или използвайте произволно генерирания." +INSTL_DATABASE_PREFIX_DUPLICATE_DESC="Ако използвате съществуваща база данни с таблици със същия префикс, Joomla ще преименува тези съществуващи таблици, като добави префикса \"bak_\"." INSTL_DATABASE_PREFIX_MSG="Префиксът на таблицата трябва да започва с буква и по избор да бъде последван от буквено -цифрови знаци и долна черта" INSTL_DATABASE_RESPONSE_ERROR="Инсталирането е неуспешно." INSTL_DATABASE_TYPE_DESC="Изберете тип база данни." diff --git a/installation/language/bg-BG/langmetadata.xml b/installation/language/bg-BG/langmetadata.xml index ada4f024bffa9..26e9c2fd78706 100644 --- a/installation/language/bg-BG/langmetadata.xml +++ b/installation/language/bg-BG/langmetadata.xml @@ -2,7 +2,7 @@ Bulgarian (bg-BG) 4.3.3 - 2023-05 + 2023-07 Joomla! Bulgaria (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/ca-ES/langmetadata.xml b/installation/language/ca-ES/langmetadata.xml index 364951e109c08..e6b89537b63fa 100644 --- a/installation/language/ca-ES/langmetadata.xml +++ b/installation/language/ca-ES/langmetadata.xml @@ -2,7 +2,7 @@ Catalan (ca-ES) 4.3.3 - 2023-05 + 2023-07 Catalan Translation Team (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/cs-CZ/langmetadata.xml b/installation/language/cs-CZ/langmetadata.xml index bfff58aec9088..47e9547c34fe0 100644 --- a/installation/language/cs-CZ/langmetadata.xml +++ b/installation/language/cs-CZ/langmetadata.xml @@ -2,7 +2,7 @@ Czech (Čeština) 4.3.3 - 2023-05 + 2023-07 Czech Translation Team (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/cy-GB/langmetadata.xml b/installation/language/cy-GB/langmetadata.xml index 8a4fe47ed2847..e07a1803269c5 100644 --- a/installation/language/cy-GB/langmetadata.xml +++ b/installation/language/cy-GB/langmetadata.xml @@ -2,7 +2,7 @@ Welsh (United Kingdom) 4.3.3 - 2023-05 + 2023-07 Joomla! Project - Welsh Translation Team (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/da-DK/langmetadata.xml b/installation/language/da-DK/langmetadata.xml index 267b87f680bef..ee72aaf04f422 100644 --- a/installation/language/da-DK/langmetadata.xml +++ b/installation/language/da-DK/langmetadata.xml @@ -2,7 +2,7 @@ Danish (Danmark) 4.3.3 - 2023-05 + 2023-07 Danish Translation Team (Transl.: Ronny Buelund) (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/el-GR/langmetadata.xml b/installation/language/el-GR/langmetadata.xml index b2a3ef09b2998..ff16f4212e62c 100644 --- a/installation/language/el-GR/langmetadata.xml +++ b/installation/language/el-GR/langmetadata.xml @@ -2,7 +2,7 @@ Greek (el-GR) 4.3.3 - 2023-05 + 2023-07 Ομάδα Μετάφρασης: joomla. gr (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/en-AU/langmetadata.xml b/installation/language/en-AU/langmetadata.xml index 14ae48c5e7e1f..225715d04d265 100644 --- a/installation/language/en-AU/langmetadata.xml +++ b/installation/language/en-AU/langmetadata.xml @@ -2,7 +2,7 @@ English (Australia) 4.3.3 - 2023-05 + 2023-07 Joomla! Project (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/en-CA/langmetadata.xml b/installation/language/en-CA/langmetadata.xml index 51d691e9fa227..3bf7a5cc13c8a 100644 --- a/installation/language/en-CA/langmetadata.xml +++ b/installation/language/en-CA/langmetadata.xml @@ -2,7 +2,7 @@ English (Canada) 4.3.3 - 2023-05 + 2023-07 Joomla! Project (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/en-NZ/langmetadata.xml b/installation/language/en-NZ/langmetadata.xml index 793307258e8e6..e47d294661d0e 100644 --- a/installation/language/en-NZ/langmetadata.xml +++ b/installation/language/en-NZ/langmetadata.xml @@ -2,7 +2,7 @@ English (New Zealand) 4.3.3 - 2023-05 + 2023-07 Joomla! Project (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/en-US/langmetadata.xml b/installation/language/en-US/langmetadata.xml index 1beb3698fe8dd..df866caeb4672 100644 --- a/installation/language/en-US/langmetadata.xml +++ b/installation/language/en-US/langmetadata.xml @@ -2,7 +2,7 @@ English (United States) 4.3.3 - 2023-05 + 2023-07 Joomla! Project (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/es-ES/langmetadata.xml b/installation/language/es-ES/langmetadata.xml index 485649a5a9467..eb186c15bdc42 100644 --- a/installation/language/es-ES/langmetadata.xml +++ b/installation/language/es-ES/langmetadata.xml @@ -2,7 +2,7 @@ Spanish (Spain) 4.3.3 - 2023-05 + 2023-07 Spanish [es-ES] Translation Team (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/et-EE/langmetadata.xml b/installation/language/et-EE/langmetadata.xml index 1f3c4f4df321c..283d4162eab28 100644 --- a/installation/language/et-EE/langmetadata.xml +++ b/installation/language/et-EE/langmetadata.xml @@ -2,7 +2,7 @@ Estonian 4.3.3 - 2023-05 + 2023-07 Joomla! Project (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/eu-ES/langmetadata.xml b/installation/language/eu-ES/langmetadata.xml index 74437db57bd68..0492479a48904 100644 --- a/installation/language/eu-ES/langmetadata.xml +++ b/installation/language/eu-ES/langmetadata.xml @@ -2,7 +2,7 @@ Basque 4.3.3 - 2023-05 + 2023-07 Joomla! Basque Translation Team (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/fa-AF/langmetadata.xml b/installation/language/fa-AF/langmetadata.xml index 4f32b21987fd3..7012a731818bb 100644 --- a/installation/language/fa-AF/langmetadata.xml +++ b/installation/language/fa-AF/langmetadata.xml @@ -2,7 +2,7 @@ فارسی (دری) 4.3.3 - 2023-05 + 2023-07 JoomlaPersian Translation Team (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/fa-IR/langmetadata.xml b/installation/language/fa-IR/langmetadata.xml index 0856687a5dd4b..9415d1ae9062e 100644 --- a/installation/language/fa-IR/langmetadata.xml +++ b/installation/language/fa-IR/langmetadata.xml @@ -2,7 +2,7 @@ Persian (پارسی) 4.3.3 - 2023-05 + 2023-07 JoomlaFarsi.Com Team (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/fi-FI/langmetadata.xml b/installation/language/fi-FI/langmetadata.xml index 05cf96efbd54b..77f33382897c0 100644 --- a/installation/language/fi-FI/langmetadata.xml +++ b/installation/language/fi-FI/langmetadata.xml @@ -2,7 +2,7 @@ Finnish (Suomi) 4.3.3 - 2023-05 + 2023-07 Finnish translation team: Joomla.fi (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/fr-FR/langmetadata.xml b/installation/language/fr-FR/langmetadata.xml index 08f4afee71145..01b28cb2a3c73 100644 --- a/installation/language/fr-FR/langmetadata.xml +++ b/installation/language/fr-FR/langmetadata.xml @@ -2,7 +2,7 @@ French (fr-FR) 4.3.3 - 2023-05 + 2023-07 Joomla! Project - French translation team (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/he-IL/langmetadata.xml b/installation/language/he-IL/langmetadata.xml index 04111f7557bc1..d38223124ba4a 100644 --- a/installation/language/he-IL/langmetadata.xml +++ b/installation/language/he-IL/langmetadata.xml @@ -2,7 +2,7 @@ Hebrew (Israel) 4.3.3 - 2023-05 + 2023-07 Joomla! Project (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/hr-HR/langmetadata.xml b/installation/language/hr-HR/langmetadata.xml index 515f7bfc13730..4898794af7926 100644 --- a/installation/language/hr-HR/langmetadata.xml +++ b/installation/language/hr-HR/langmetadata.xml @@ -2,7 +2,7 @@ Croatian (Croatia) 4.3.3 - 2023-05 + 2023-07 Joomla! Hrvatska team (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/hu-HU/langmetadata.xml b/installation/language/hu-HU/langmetadata.xml index 3b19192abb3f1..f78ec9e8e978d 100644 --- a/installation/language/hu-HU/langmetadata.xml +++ b/installation/language/hu-HU/langmetadata.xml @@ -2,7 +2,7 @@ Hungarian (Magyar) 4.3.3 - 2023-05 + 2023-07 Joomla! Magyarország (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/id-ID/langmetadata.xml b/installation/language/id-ID/langmetadata.xml index dd7c3c2475663..3faedaea8e6fa 100644 --- a/installation/language/id-ID/langmetadata.xml +++ b/installation/language/id-ID/langmetadata.xml @@ -2,7 +2,7 @@ Bahasa Indonesia (id) 4.3.3 - 2023-05 + 2023-07 Joomla! Indonesia (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/it-IT/langmetadata.xml b/installation/language/it-IT/langmetadata.xml index 56cf5e330e260..f2f35a9243ad9 100644 --- a/installation/language/it-IT/langmetadata.xml +++ b/installation/language/it-IT/langmetadata.xml @@ -2,7 +2,7 @@ Italiano (it-IT) 4.3.3 - 2023-05 + 2023-07 Joomla! Project (Italian Translation Team) (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/ja-JP/langmetadata.xml b/installation/language/ja-JP/langmetadata.xml index c69160fb9dc39..6139b40ba6588 100644 --- a/installation/language/ja-JP/langmetadata.xml +++ b/installation/language/ja-JP/langmetadata.xml @@ -2,7 +2,7 @@ Japanese (ja-JP) 4.3.3 - 2023-05 + 2023-07 Joomla!じゃぱん (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/ka-GE/langmetadata.xml b/installation/language/ka-GE/langmetadata.xml index c126b005ffca9..4b6c395f12596 100644 --- a/installation/language/ka-GE/langmetadata.xml +++ b/installation/language/ka-GE/langmetadata.xml @@ -2,7 +2,7 @@ Georgian (Georgia) 4.3.3 - 2023-05 + 2023-07 Georgian Translation Team (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/kk-KZ/langmetadata.xml b/installation/language/kk-KZ/langmetadata.xml index 41888f0bb7a6b..570081e62cc6f 100644 --- a/installation/language/kk-KZ/langmetadata.xml +++ b/installation/language/kk-KZ/langmetadata.xml @@ -2,7 +2,7 @@ Kazakh (Kazakhstan) 4.3.3 - 2023-05 + 2023-07 Sarvarov Akylkerey (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/lt-LT/langmetadata.xml b/installation/language/lt-LT/langmetadata.xml index d0021a9d7b2de..001c2968a58b6 100644 --- a/installation/language/lt-LT/langmetadata.xml +++ b/installation/language/lt-LT/langmetadata.xml @@ -2,7 +2,7 @@ Lithuanian (Lithuania) 4.3.3 - 2023-05 + 2023-07 Oskaras Jankauskas (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/lv-LV/langmetadata.xml b/installation/language/lv-LV/langmetadata.xml index c91d1910838ef..6c4ea5284254e 100644 --- a/installation/language/lv-LV/langmetadata.xml +++ b/installation/language/lv-LV/langmetadata.xml @@ -2,7 +2,7 @@ Latvian (Latvia) 4.3.3 - 2023-05 + 2023-07 Joomla! Projekts (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/mk-MK/langmetadata.xml b/installation/language/mk-MK/langmetadata.xml index 9dbe3e8e0df4a..061394ec79356 100644 --- a/installation/language/mk-MK/langmetadata.xml +++ b/installation/language/mk-MK/langmetadata.xml @@ -2,7 +2,7 @@ Macedonian (Macedonia) 4.3.3 - 2023-05 + 2023-07 Joomla! Project (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/nl-BE/langmetadata.xml b/installation/language/nl-BE/langmetadata.xml index 7caa781a5bbf2..5e2948c16664b 100644 --- a/installation/language/nl-BE/langmetadata.xml +++ b/installation/language/nl-BE/langmetadata.xml @@ -2,7 +2,7 @@ Dutch (Belgium) 4.3.3 - 2023-05 + 2023-07 Dutch (BE) translation team (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/nl-NL/langmetadata.xml b/installation/language/nl-NL/langmetadata.xml index 2b80c76b8f66c..92be8ba935ed4 100644 --- a/installation/language/nl-NL/langmetadata.xml +++ b/installation/language/nl-NL/langmetadata.xml @@ -2,7 +2,7 @@ Dutch (nl-NL) 4.3.3 - 2023-05 + 2023-07 Dutch Translation Team (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/pl-PL/langmetadata.xml b/installation/language/pl-PL/langmetadata.xml index eecfce0395278..8cc37eb0ebb21 100644 --- a/installation/language/pl-PL/langmetadata.xml +++ b/installation/language/pl-PL/langmetadata.xml @@ -2,7 +2,7 @@ Polish (Poland) 4.3.3 - 2023-05 + 2023-07 Projekt Joomla! (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/pt-BR/langmetadata.xml b/installation/language/pt-BR/langmetadata.xml index 7bd02dcbdd10b..2a8d68ab39b32 100644 --- a/installation/language/pt-BR/langmetadata.xml +++ b/installation/language/pt-BR/langmetadata.xml @@ -2,7 +2,7 @@ Português Brasil (pt-BR) 4.3.3 - 2023-05 + 2023-07 Projeto Joomla! (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/pt-PT/langmetadata.xml b/installation/language/pt-PT/langmetadata.xml index 163cee3c72c7e..2069c4e86f610 100644 --- a/installation/language/pt-PT/langmetadata.xml +++ b/installation/language/pt-PT/langmetadata.xml @@ -2,7 +2,7 @@ Português (Portugal) 4.3.3 - 2023-05 + 2023-07 Comunidade JoomlaPortugal (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/ro-RO/langmetadata.xml b/installation/language/ro-RO/langmetadata.xml index 622e1510081d8..7b8771b663b3c 100644 --- a/installation/language/ro-RO/langmetadata.xml +++ b/installation/language/ro-RO/langmetadata.xml @@ -2,7 +2,7 @@ Română (România) 4.3.3 - 2023-05 + 2023-07 Horia Negura - Quanta (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/sk-SK/langmetadata.xml b/installation/language/sk-SK/langmetadata.xml index f94ca63083101..8bc3c468d026b 100644 --- a/installation/language/sk-SK/langmetadata.xml +++ b/installation/language/sk-SK/langmetadata.xml @@ -2,7 +2,7 @@ Slovak (Slovakia) 4.3.3 - 2023-05 + 2023-07 Slovak translation team : Peter Michnica (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/sl-SI/langmetadata.xml b/installation/language/sl-SI/langmetadata.xml index 2617ea85ec635..1b7eb01101260 100644 --- a/installation/language/sl-SI/langmetadata.xml +++ b/installation/language/sl-SI/langmetadata.xml @@ -2,7 +2,7 @@ Slovenščina (Slovenija) 4.3.3 - 2023-05 + 2023-07 Slovenska prevajalska ekipa (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/sr-YU/langmetadata.xml b/installation/language/sr-YU/langmetadata.xml index c2d85b0cf1279..83f8af2f01b62 100644 --- a/installation/language/sr-YU/langmetadata.xml +++ b/installation/language/sr-YU/langmetadata.xml @@ -2,7 +2,7 @@ Srpski Latinica (Republika Srbija) 4.3.3 - 2023-05 + 2023-07 Goran Nešić - UIX Web Design & Saša Matić Bardak.RS (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/sv-SE/langmetadata.xml b/installation/language/sv-SE/langmetadata.xml index aac307c135b8b..ede2b5ec9e9a5 100644 --- a/installation/language/sv-SE/langmetadata.xml +++ b/installation/language/sv-SE/langmetadata.xml @@ -2,7 +2,7 @@ Swedish (Sweden) 4.3.3 - 2023-05 + 2023-07 Swedish Translation Team - SvenskJoomla (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/ta-IN/joomla.ini b/installation/language/ta-IN/joomla.ini index 38144320276c1..b1a7be817c372 100644 --- a/installation/language/ta-IN/joomla.ini +++ b/installation/language/ta-IN/joomla.ini @@ -228,7 +228,7 @@ JLIB_FILESYSTEM_ERROR_PATH_IS_NOT_A_FOLDER="%1$s: பாதை ஒரு கோ JLIB_FORM_FIELD_INVALID="செல்லாத புலம்: " JLIB_FORM_VALIDATE_FIELD_INVALID="செல்லாத புலம்: %s" JLIB_FORM_VALIDATE_FIELD_REQUIRED="தேவைப்படும் புலம்: %s" -JLIB_INSTALLER_ABORT="மொழி நிறுவல் ரத்து செய்யப்பட்டது: %s" +JLIB_INSTALLER_ABORT="மொழி நிறுவல் கைவிடப்படுகிறது: %s" JLIB_INSTALLER_ABORT_CREATE_DIRECTORY="நீட்சி %1$s: கோப்பகம் உருவாக்குதல் தோல்வியுற்றது: %2$s" JLIB_INSTALLER_ABORT_NOINSTALLPATH="நிறுவும் பாதை இல்லை." JLIB_INSTALLER_ABORT_PACK_INSTALL_ERROR_EXTENSION="தொகுப்பு %1$s: ஒரு நீட்சியை நிறுவுவதில் பிழை: %2$s" @@ -264,7 +264,7 @@ MESSAGE="செய்தி" NOTICE="அறிவிப்பு" WARNING="எச்சரிக்கை" ; Javascript ajax error messages -JLIB_JS_AJAX_ERROR_CONNECTION_ABORT="JSON தரவு பெறும்போது (fetching) இணைப்பு ரத்து செய்தல் (connection abort) ஏற்பட்டுள்ளது." +JLIB_JS_AJAX_ERROR_CONNECTION_ABORT="JSON தரவு பெறும்போது (fetching) இணைப்பு கைவிடப்படல் (connection abort) ஏற்பட்டுள்ளது." JLIB_JS_AJAX_ERROR_NO_CONTENT="உள்ளடக்கம் எதுவும் திரும்பப்பெறப்படவில்லை." JLIB_JS_AJAX_ERROR_OTHER="JSON தரவு பெறும்போது (fetching) பிழை ஏற்பட்டுள்ளது: HTTP %d நிலை குறியீடு (Status Code)." JLIB_JS_AJAX_ERROR_PARSE="கீழ்க்கண்ட JSON தரவு செயலாக்கத்தின்போது (processing) அலகிடல் (parse) பிழை ஏற்பட்டுள்ளது:
%s" diff --git a/installation/language/ta-IN/langmetadata.xml b/installation/language/ta-IN/langmetadata.xml index 16bffe6d9beb2..9bf3ac3f780f4 100644 --- a/installation/language/ta-IN/langmetadata.xml +++ b/installation/language/ta-IN/langmetadata.xml @@ -2,7 +2,7 @@ Tamil (India) 4.3.3 - 2023-05 + 2023-07 Ilagnayeru 'MIG' Manickam, Elango Samy Manim (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/th-TH/langmetadata.xml b/installation/language/th-TH/langmetadata.xml index 355fd2b5e3a1e..f815ce39c74bd 100644 --- a/installation/language/th-TH/langmetadata.xml +++ b/installation/language/th-TH/langmetadata.xml @@ -2,7 +2,7 @@ Thai (ภาษาไทย) 4.3.3 - 2023-05 + 2023-07 Thai Translation Team (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/tr-TR/langmetadata.xml b/installation/language/tr-TR/langmetadata.xml index 6b6d1785a3d8d..f50ede3e24824 100644 --- a/installation/language/tr-TR/langmetadata.xml +++ b/installation/language/tr-TR/langmetadata.xml @@ -2,7 +2,7 @@ Turkish (Türkiye) 4.3.3 - 2023-05 + 2023-07 Joomla! Türkiye (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/uk-UA/langmetadata.xml b/installation/language/uk-UA/langmetadata.xml index e839fdda8b5ae..491885c1326af 100644 --- a/installation/language/uk-UA/langmetadata.xml +++ b/installation/language/uk-UA/langmetadata.xml @@ -2,7 +2,7 @@ Ukrainian (uk-UA) 4.3.3 - 2023-05 + 2023-07 Joomla! Project - Ukrainian translation team (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/ur-PK/langmetadata.xml b/installation/language/ur-PK/langmetadata.xml index f0481ad2160bb..2caf1b83de008 100644 --- a/installation/language/ur-PK/langmetadata.xml +++ b/installation/language/ur-PK/langmetadata.xml @@ -2,7 +2,7 @@ 4.3.3 - 2023-05 + 2023-07 (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/vi-VN/langmetadata.xml b/installation/language/vi-VN/langmetadata.xml index 4e5229a3723a2..35a32d6808c28 100644 --- a/installation/language/vi-VN/langmetadata.xml +++ b/installation/language/vi-VN/langmetadata.xml @@ -2,7 +2,7 @@ Tiếng Việt (Việt Nam) 4.3.3 - 2023-05 + 2023-07 Joomla! Project (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/zh-CN/langmetadata.xml b/installation/language/zh-CN/langmetadata.xml index eccb194f2361c..a25efc8751c10 100644 --- a/installation/language/zh-CN/langmetadata.xml +++ b/installation/language/zh-CN/langmetadata.xml @@ -2,7 +2,7 @@ 简体中文(中国) 4.3.3 - 2023-05 + 2023-07 逐浪中文网 joomlachina.org.cn 周永建 (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/zh-TW/langmetadata.xml b/installation/language/zh-TW/langmetadata.xml index 51d79eca88629..4d7a59ae2e4bc 100644 --- a/installation/language/zh-TW/langmetadata.xml +++ b/installation/language/zh-TW/langmetadata.xml @@ -2,7 +2,7 @@ 正體中文 (臺灣) 4.3.3 - 2023-05 + 2023-07 Joomla! 專案 (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt From cf6f36938fc7459af4827cb0949e0f72a27bdf32 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Fri, 14 Jul 2023 19:23:34 +0100 Subject: [PATCH 037/126] [4.3] typo (#41121) --- libraries/src/Form/Field/GroupedlistField.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/src/Form/Field/GroupedlistField.php b/libraries/src/Form/Field/GroupedlistField.php index 9b0fe90d8a93f..a56ea8568a29f 100644 --- a/libraries/src/Form/Field/GroupedlistField.php +++ b/libraries/src/Form/Field/GroupedlistField.php @@ -145,7 +145,7 @@ protected function getGroups() } /** - * Method to get the field input markup fora grouped list. + * Method to get the field input markup for a grouped list. * Multiselect is enabled by using the multiple attribute. * * @return string The field input markup. From 7bc40fd0c0a85fd6d34ea9d9e71b392489252dac Mon Sep 17 00:00:00 2001 From: Juri Hahn <36074425+jurihahn@users.noreply.github.com> Date: Fri, 14 Jul 2023 20:56:22 +0200 Subject: [PATCH 038/126] fix on change JavaScript event on color form field with layout advanced (#41126) --- layouts/joomla/form/field/color/advanced.php | 1 + 1 file changed, 1 insertion(+) diff --git a/layouts/joomla/form/field/color/advanced.php b/layouts/joomla/form/field/color/advanced.php index 24a27ec303b34..9dc89dda7fdb0 100644 --- a/layouts/joomla/form/field/color/advanced.php +++ b/layouts/joomla/form/field/color/advanced.php @@ -66,6 +66,7 @@ $disabled = $disabled ? ' disabled' : ''; $readonly = $readonly ? ' readonly' : ''; $hint = strlen($hint) ? ' placeholder="' . $this->escape($hint) . '"' : ' placeholder="' . $placeholder . '"'; +$onchange = $onchange ? ' onchange="' . $onchange . '"' : ''; $required = $required ? ' required' : ''; $autocomplete = !empty($autocomplete) ? ' autocomplete="' . $autocomplete . '"' : ''; From d358aeb08504e3195efa7c075ebc00d40e9844ce Mon Sep 17 00:00:00 2001 From: heelc29 <66922325+heelc29@users.noreply.github.com> Date: Fri, 14 Jul 2023 22:26:52 +0200 Subject: [PATCH 039/126] [4.3] check of invalid json 'joomla.asset.json' (#41135) --- .../components/com_templates/src/Model/TemplateModel.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_templates/src/Model/TemplateModel.php b/administrator/components/com_templates/src/Model/TemplateModel.php index ac1d16a87692a..9d5094fc3fa54 100644 --- a/administrator/components/com_templates/src/Model/TemplateModel.php +++ b/administrator/components/com_templates/src/Model/TemplateModel.php @@ -959,7 +959,7 @@ public function save($data) $data['source'] = str_replace(["\r\n", "\r"], "\n", $data['source']); // If the asset file for the template ensure we have valid template so we don't instantly destroy it - if ($fileName === '/joomla.asset.json' && json_decode($data['source']) === null) { + if (str_ends_with($fileName, '/joomla.asset.json') && json_decode($data['source']) === null) { $this->setError(Text::_('COM_TEMPLATES_ERROR_ASSET_FILE_INVALID_JSON')); return false; From 249ca35da135a10f3894fdae631cebfe1cca7b65 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Fri, 14 Jul 2023 21:53:33 +0100 Subject: [PATCH 040/126] [4.3] Colour fields doc blocks (#41128) --- layouts/joomla/form/field/color/advanced.php | 4 ++-- layouts/joomla/form/field/color/simple.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/layouts/joomla/form/field/color/advanced.php b/layouts/joomla/form/field/color/advanced.php index 9dc89dda7fdb0..f26ce92d89831 100644 --- a/layouts/joomla/form/field/color/advanced.php +++ b/layouts/joomla/form/field/color/advanced.php @@ -43,8 +43,8 @@ * @var boolean $hasValue Has this field a value assigned? * @var array $options Options available for this field. * @var array $checked Is this field checked? - * @var array $position Is this field checked? - * @var array $control Is this field checked? + * @var array $position Position of input. + * @var array $control The forms control. * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output * @var array $dataAttributes Miscellaneous data attributes for eg, data-*. */ diff --git a/layouts/joomla/form/field/color/simple.php b/layouts/joomla/form/field/color/simple.php index cfa1923581fde..2ed3e632ead10 100644 --- a/layouts/joomla/form/field/color/simple.php +++ b/layouts/joomla/form/field/color/simple.php @@ -45,8 +45,8 @@ * @var boolean $hasValue Has this field a value assigned? * @var array $options Options available for this field. * @var array $checked Is this field checked? - * @var array $position Is this field checked? - * @var array $control Is this field checked? + * @var array $position Position of input. + * @var array $control The forms control. * @var array $colors The specified colors * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output * @var array $dataAttributes Miscellaneous data attribute for eg, data-*. From 97c3addc11086f217e2daf71f570c4ee272bb16d Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Fri, 14 Jul 2023 22:23:30 +0100 Subject: [PATCH 041/126] [4.3] guided tours module count (#40447) --- .../modules/mod_guidedtours/tmpl/default.php | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/administrator/modules/mod_guidedtours/tmpl/default.php b/administrator/modules/mod_guidedtours/tmpl/default.php index 3a8c84d790d2b..35bd48ae286a9 100644 --- a/administrator/modules/mod_guidedtours/tmpl/default.php +++ b/administrator/modules/mod_guidedtours/tmpl/default.php @@ -25,16 +25,16 @@ ->getWebAssetManager() ->useScript('bootstrap.dropdown'); -$lang = $app->getLanguage(); - -$extension = $app->getInput()->get('option'); - -$listTours = []; -$allTours = []; +$lang = $app->getLanguage(); +$extension = $app->getInput()->get('option'); +$listTours = []; +$allTours = []; +$toursCount = $params->get('tourscount', 7); foreach ($tours as $tour) : - if (count(array_intersect(['*', $extension], $tour->extensions))) : + if ($toursCount > 0 && count(array_intersect(['*', $extension], $tour->extensions))) : $listTours[] = $tour; + $toursCount--; endif; $uri = new Uri($tour->url); @@ -64,10 +64,7 @@
diff --git a/plugins/content/joomla/src/Extension/Joomla.php b/plugins/content/joomla/src/Extension/Joomla.php index 9d3f9864a12b0..45fb000338cf9 100644 --- a/plugins/content/joomla/src/Extension/Joomla.php +++ b/plugins/content/joomla/src/Extension/Joomla.php @@ -10,17 +10,23 @@ namespace Joomla\Plugin\Content\Joomla\Extension; +use Joomla\CMS\Cache\CacheControllerFactory; use Joomla\CMS\Component\ComponentHelper; +use Joomla\CMS\Factory; +use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Language; use Joomla\CMS\Language\Text; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Table\CoreContent; +use Joomla\CMS\Uri\Uri; use Joomla\CMS\User\UserFactoryAwareTrait; use Joomla\CMS\Workflow\WorkflowServiceInterface; use Joomla\Component\Workflow\Administrator\Table\StageTable; use Joomla\Component\Workflow\Administrator\Table\WorkflowTable; use Joomla\Database\DatabaseAwareTrait; use Joomla\Database\ParameterType; +use Joomla\Event\EventInterface; +use Joomla\Registry\Registry; use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects @@ -210,6 +216,413 @@ public function onContentBeforeChangeState($context, $pks, $value) return $result; } + /** + * Add autogenerated schema data for content and contacts + * + * @param EventInterface $event The event object + * + * @return void + */ + public function onSchemaBeforeCompileHead(EventInterface $event) + { + if (!$this->getApplication()->isClient('site')) { + return; + } + + $context = $event->getArgument('context'); + $schema = $event->getArgument('subject'); + + list($extension, $view, $id) = explode('.', $context); + + if ($extension === 'com_content' && $this->params->get('schema_content', 1)) { + $this->injectContentSchema($context, $schema); + } elseif ($extension === 'com_contact' && $this->params->get('schema_contact', 1)) { + $this->injectContactSchema($context, $schema); + } + } + + /** + * Inject com_content schemas if needed + * + * @param string $context The com_content context like com_content.article.5 + * @param Registry $schema The overall schema object to manipulate + * + * @return void + * + * @since __DEPLOY_VERSION__ + */ + private function injectContentSchema(string $context, Registry $schema) + { + $app = $this->getApplication(); + $db = $this->getDatabase(); + + list($extension, $view, $id) = explode('.', $context); + + // Check if there is alrady a schema for the item, then skip it + $mySchema = $schema->toArray(); + + if (!isset($mySchema['@graph']) || !is_array($mySchema['@graph'])) { + return; + } + + $baseId = Uri::root() . '#/schema/'; + $schemaId = $baseId . str_replace('.', '/', $context); + + foreach ($mySchema['@graph'] as $entry) { + // Someone added our context already, no need to add automated data + if (isset($entry['@id']) && $entry['@id'] == $schemaId) { + return; + } + } + + $additionalSchema = []; + + $component = $this->getApplication()->bootComponent('com_content')->getMVCFactory(); + + $enableCache = $this->params->get('schema_cache', 1); + + $cache = Factory::getContainer()->get(CacheControllerFactory::class) + ->createCacheController('Callback', ['lifetime' => $app->get('cachetime'), 'caching' => $enableCache, 'defaultgroup' => 'schemaorg']); + + // Add article data + if ($view == 'article' && $id > 0) { + $additionalSchema = $cache->get(function ($id) use ($component, $baseId) { + $model = $component->createModel('Article', 'Site'); + + $article = $model->getItem($id); + + if (empty($article->id)) { + return; + } + + $article->images = new Registry($article->images); + + $articleSchema = $this->createArticleSchema($article); + + $articleSchema['isPartOf'] = ['@id' => $baseId . 'WebPage/base']; + + return $articleSchema; + }, [$id]); + } elseif (in_array($view, ['category', 'featured', 'archive'])) { + $additionalSchema = $cache->get(function ($view, $id) use ($component, $baseId, $app, $db) { + $menu = $app->getMenu()->getActive(); + $schemaId = $baseId . 'com_content/' . $view . ($view == 'category' ? '/' . $id : ''); + + $additionalSchema = [ + '@type' => 'Blog', + '@id' => $schemaId, + 'isPartOf' => ['@id' => $baseId . 'WebPage/base'], + 'name' => htmlentities($menu->title), + 'blogPost' => [], + ]; + + if ($menu->getParams()->get('menu-meta_description')) { + $additionalSchema['description'] = htmlentities($menu->getParams()->get('menu-meta_description')); + } + + $model = $component->createModel($view, 'Site'); + + $articles = $model->getItems(); + + $articleIds = ArrayHelper::getColumn($articles, 'id'); + + if (!empty($articleIds)) { + $query = $db->getQuery(true); + + $aContext = 'com_content.article'; + + // Load the schema data from the database + $query = $db->getQuery(true) + ->select('*') + ->from($db->quoteName('#__schemaorg')) + ->whereIn($db->quoteName('itemId'), $articleIds) + ->where($db->quoteName('context') . ' = :context') + ->bind(':context', $aContext, ParameterType::STRING); + + $schemas = $db->setQuery($query)->loadObjectList('itemId'); + + foreach ($articles as $article) { + if (isset($schemas[$article->id])) { + $localSchema = new Registry($schemas[$article->id]->schema); + + $localSchema->set('@id', $baseId . str_replace('.', '/', $aContext) . '/' . (int) $article->id); + + $additionalSchema['blogPost'][] = $localSchema->toArray(); + + continue; + } + + // No schema found, fallback to default one + $article->images = new Registry($article->images); + + $articleSchema = $this->createArticleSchema($article); + + // Set to BlogPosting + $articleSchema['@type'] = 'BlogPosting'; + + $additionalSchema['blogPost'][] = $articleSchema; + } + } + }, [$view, $id]); + } + + if (!empty($additionalSchema)) { + $mySchema['@graph'][] = $additionalSchema; + } + + $schema->set('@graph', $mySchema['@graph']); + } + + /** + * Returns a finished Article schema type based on a given joomla article + * + * @param object $article An article to extract schema data from + * + * @return array + * + * @since __DEPLOY_VERSION__ + */ + private function createArticleSchema(object $article) + { + $baseId = Uri::root() . '#/schema/'; + $schemaId = $baseId . 'com_content/article/' . (int) $article->id; + + $schema = []; + + $schema['@type'] = 'Article'; + $schema['@id'] = $schemaId; + $schema['name'] = $article->title; + $schema['headline'] = $article->title; + + $schema['inLanguage'] = $article->language === '*' ? $this->getApplication()->get('language') : $article->language; + + // Author information + if ($article->params->get('show_author') && !empty($article->author)) { + $author = []; + + $author['@type'] = 'Person'; + $author['name'] = $article->created_by_alias ?: $article->author; + + if ($article->params->get('link_author') == true && !empty($article->contact_link)) { + $author['url'] = $article->contact_link; + } + + $schema['author'] = $author; + } + + // Images + if ($article->images->get('image_intro')) { + $schema['thumbnailUrl'] = HTMLHelper::_('cleanImageUrl', $article->images->get('image_intro'))->url; + } + + if ($article->images->get('image_fulltext')) { + $schema['image'] = HTMLHelper::_('cleanImageUrl', $article->images->get('image_fulltext'))->url; + } + + // Categories + $categories = []; + + // Parent category if not root + if ($article->params->get('show_parent_category') && !empty($article->parent_id) && $article->parent_id > 1) { + $categories[] = $article->parent_title; + } + + // Current category + if ($article->params->get('show_category')) { + $categories[] = $article->category_title; + } + + if (!empty($categories)) { + $schema['articleSection'] = implode(', ', $categories); + } + + // Dates + if ($article->params->get('show_publish_date')) { + $schema['dateCreated'] = Factory::getDate($article->created)->toISO8601(); + } + + if ($article->params->get('show_modify_date')) { + $schema['dateModified'] = Factory::getDate($article->modified)->toISO8601(); + } + + // Hits + if ($article->params->get('show_hits')) { + $counter = []; + + $counter['@type'] = 'InteractionCounter'; + $counter['userInteractionCount'] = $article->hits; + + $schema['interactionStatistic'] = $counter; + } + + return $schema; + } + + /** + * Inject com_contact schemas if needed + * + * @param string $context The com_contact context like com_contact.contact.5 + * @param Registry $schema The overall schema object to manipulate + * + * @return void + * + * @since __DEPLOY_VERSION__ + */ + private function injectContactSchema(string $context, Registry $schema) + { + $app = $this->getApplication(); + $db = $this->getDatabase(); + + list($extension, $view, $id) = explode('.', $context); + + // Check if there is alrady a schema for the item, then skip it + $mySchema = $schema->toArray(); + + if (!isset($mySchema['@graph']) || !is_array($mySchema['@graph'])) { + return; + } + + $baseId = Uri::root() . '#/schema/'; + $schemaId = $baseId . str_replace('.', '/', $context); + + foreach ($mySchema['@graph'] as $entry) { + // Someone added our context already, no need to add automated data + if (isset($entry['@id']) && $entry['@id'] == $schemaId) { + return; + } + } + + $additionalSchema = []; + + $component = $this->getApplication()->bootComponent('com_contact')->getMVCFactory(); + + $enableCache = $this->params->get('schema_cache', 1); + + $cache = Factory::getContainer()->get(CacheControllerFactory::class) + ->createCacheController('Callback', ['lifetime' => $app->get('cachetime'), 'caching' => $enableCache, 'defaultgroup' => 'schemaorg']); + + // Add contact data + if ($view == 'contact' && $id > 0) { + $additionalSchema = $cache->get(function ($id) use ($component, $baseId) { + $model = $component->createModel('Contact', 'Site'); + + $contact = $model->getItem($id); + + if (empty($contact->id)) { + return; + } + + $contactSchema = $this->createContactSchema($contact); + + $contactSchema['isPartOf'] = ['@id' => $baseId . 'WebPage/base']; + + return $contactSchema; + }, [$id]); + + $mySchema['@graph'][] = $additionalSchema; + } elseif ($view === 'featured') { + $additionalSchemas = $cache->get(function ($graph) use ($component, $baseId) { + $model = $component->createModel('Featured', 'Site'); + + $contacts = $model->getItems(); + + $allSchemas = []; + + foreach ($contacts as $contact) { + foreach ($graph as $entry) { + $schemaId = $baseId . 'com_contact/contact/' . (int) $contact->id; + + // Someone added our context already, no need to add automated data + if (isset($entry['@id']) && $entry['@id'] == $schemaId) { + return; + } + } + + $contactSchema = $this->createContactSchema($contact); + + $contactSchema['isPartOf'] = ['@id' => $baseId . 'WebPage/base']; + + $allSchemas[] = $contactSchema; + } + + return $allSchemas; + }, [$mySchema['@graph']]); + + foreach ($additionalSchemas as $additionalSchema) { + $mySchema['@graph'][] = $additionalSchema; + } + } + + $schema->set('@graph', $mySchema['@graph']); + } + + /** + * Returns a finished Person schema type based on a given joomla contact + * + * @param object $contact A contact to extract schema data from + * + * @return array + * + * @since __DEPLOY_VERSION__ + */ + private function createContactSchema(object $contact) + { + $baseId = Uri::root() . '#/schema/'; + $schemaId = $baseId . 'com_contact/contact/' . (int) $contact->id; + + $schema = []; + + $schema['@type'] = 'Person'; + $schema['@id'] = $schemaId; + $schema['name'] = $contact->name; + + if ($contact->image && $contact->params->get('show_image')) { + $schema['image'] = HTMLHelper::_('cleanImageUrl', $contact->image)->url; + } + + if ($contact->con_position && $contact->params->get('show_position')) { + $schema['jobTitle'] = $contact->con_position; + } + + $schema['address'] = []; + + if ($contact->params->get('show_street_address') && $contact->address) { + $schema['address']['streetAddress'] = $contact->address; + } + + if ($contact->params->get('show_suburb') && $contact->suburb) { + $schema['address']['addressLocality'] = $contact->suburb; + } + + if ($contact->params->get('show_state') && $contact->state) { + $schema['address']['addressRegion'] = $contact->state; + } + + if ($contact->params->get('show_postcode') && $contact->postcode) { + $schema['address']['postalCode'] = $contact->postcode; + } + + if ($contact->params->get('show_country') && $contact->country) { + $schema['address']['addressCountry'] = $contact->country; + } + + if ($contact->params->get('show_telephone') && $contact->telephone) { + $schema['address']['telephone'] = $contact->telephone; + } elseif ($contact->params->get('show_mobile') && $contact->mobile) { + $schema['address']['telephone'] = $contact->mobile; + } + + if ($contact->params->get('show_fax') && $contact->fax) { + $schema['address']['faxNumber'] = $contact->fax; + } + + if ($contact->params->get('show_webpage') && $contact->webpage) { + $schema['address']['url'] = $contact->webpage; + } + + return $schema; + } + /** * Checks if a given category can be deleted * diff --git a/plugins/schemaorg/blogposting/blogposting.xml b/plugins/schemaorg/blogposting/blogposting.xml new file mode 100755 index 0000000000000..95b0811d5cadc --- /dev/null +++ b/plugins/schemaorg/blogposting/blogposting.xml @@ -0,0 +1,43 @@ + + + plg_schemaorg_blogposting + Joomla! Project + 2023-07 + (C) 2023 Open Source Matters, Inc. + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + __DEPLOY_VERSION__ + PLG_SCHEMAORG_BLOGPOSTING_XML_DESCRIPTION + Joomla\Plugin\Schemaorg\Blogposting + + services + src + + + language/en-GB/plg_schemaorg_blogposting.ini + language/en-GB/plg_schemaorg_blogposting.sys.ini + + + +
+ + +
+
+
+
diff --git a/plugins/schemaorg/blogposting/forms/schemaorg.xml b/plugins/schemaorg/blogposting/forms/schemaorg.xml new file mode 100755 index 0000000000000..d6c722a735cfd --- /dev/null +++ b/plugins/schemaorg/blogposting/forms/schemaorg.xml @@ -0,0 +1,201 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ diff --git a/plugins/schemaorg/blogposting/services/provider.php b/plugins/schemaorg/blogposting/services/provider.php new file mode 100644 index 0000000000000..cb214f669c6a1 --- /dev/null +++ b/plugins/schemaorg/blogposting/services/provider.php @@ -0,0 +1,47 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Extension\PluginInterface; +use Joomla\CMS\Factory; +use Joomla\CMS\Plugin\PluginHelper; +use Joomla\DI\Container; +use Joomla\DI\ServiceProviderInterface; +use Joomla\Event\DispatcherInterface; +use Joomla\Plugin\Schemaorg\Blogposting\Extension\Blogposting; + +return new class () implements ServiceProviderInterface { + /** + * Registers the service provider with a DI container. + * + * @param Container $container The DI container. + * + * @return void + * + * @since __DEPLOY_VERSION__ + */ + public function register(Container $container) + { + $container->set( + PluginInterface::class, + function (Container $container) { + $dispatcher = $container->get(DispatcherInterface::class); + $plugin = new Blogposting( + $dispatcher, + (array) PluginHelper::getPlugin('schemaorg', 'blogposting') + ); + $plugin->setApplication(Factory::getApplication()); + + return $plugin; + } + ); + } +}; diff --git a/plugins/schemaorg/blogposting/src/Extension/Blogposting.php b/plugins/schemaorg/blogposting/src/Extension/Blogposting.php new file mode 100755 index 0000000000000..48338b9fd245d --- /dev/null +++ b/plugins/schemaorg/blogposting/src/Extension/Blogposting.php @@ -0,0 +1,59 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + + * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace + */ + +namespace Joomla\Plugin\Schemaorg\Blogposting\Extension; + +use Joomla\CMS\Plugin\CMSPlugin; +use Joomla\CMS\Schemaorg\SchemaorgPluginTrait; +use Joomla\Event\SubscriberInterface; + +// phpcs:disable PSR1.Files.SideEffects +\defined('_JEXEC') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Schemaorg Plugin + * + * @since __DEPLOY_VERSION__ + */ +final class Blogposting extends CMSPlugin implements SubscriberInterface +{ + use SchemaorgPluginTrait; + + /** + * Load the language file on instantiation. + * + * @var boolean + * @since __DEPLOY_VERSION__ + */ + protected $autoloadLanguage = true; + + /** + * The name of the schema form + * + * @var string + * @since __DEPLOY_VERSION__ + */ + protected $pluginName = 'BlogPosting'; + + /** + * To add plugin specific functions + * + * @param array $schema Schema form + * + * @return array Updated schema form + */ + public function customCleanup(array $schema) + { + return $this->cleanupDate($schema, ['datePublished', 'dateModified']); + } +} diff --git a/plugins/schemaorg/book/book.xml b/plugins/schemaorg/book/book.xml new file mode 100755 index 0000000000000..522c2b30137d8 --- /dev/null +++ b/plugins/schemaorg/book/book.xml @@ -0,0 +1,43 @@ + + + plg_schemaorg_book + Joomla! Project + 2023-07 + (C) 2023 Open Source Matters, Inc. + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + __DEPLOY_VERSION__ + PLG_SCHEMAORG_BOOK_XML_DESCRIPTION + Joomla\Plugin\Schemaorg\Book + + services + src + + + language/en-GB/plg_schemaorg_book.ini + language/en-GB/plg_schemaorg_book.sys.ini + + + +
+ + +
+
+
+
diff --git a/plugins/schemaorg/book/forms/schemaorg.xml b/plugins/schemaorg/book/forms/schemaorg.xml new file mode 100755 index 0000000000000..055c8216c84cd --- /dev/null +++ b/plugins/schemaorg/book/forms/schemaorg.xml @@ -0,0 +1,215 @@ + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ diff --git a/plugins/schemaorg/book/services/provider.php b/plugins/schemaorg/book/services/provider.php new file mode 100644 index 0000000000000..880b95f382e81 --- /dev/null +++ b/plugins/schemaorg/book/services/provider.php @@ -0,0 +1,49 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Extension\PluginInterface; +use Joomla\CMS\Factory; +use Joomla\CMS\Plugin\PluginHelper; +use Joomla\DI\Container; +use Joomla\DI\ServiceProviderInterface; +use Joomla\Event\DispatcherInterface; +use Joomla\Plugin\Schemaorg\Book\Extension\Book; + +return new class () implements ServiceProviderInterface { + /** + * Registers the service provider with a DI container. + * + * @param Container $container The DI container. + * + * @return void + * + * @since __DEPLOY_VERSION__ + */ + public function register(Container $container) + { + $container->set( + PluginInterface::class, + function (Container $container) { + $dispatcher = $container->get(DispatcherInterface::class); + + $plugin = new Book( + $dispatcher, + (array) PluginHelper::getPlugin('schemaorg', 'book') + ); + + $plugin->setApplication(Factory::getApplication()); + + return $plugin; + } + ); + } +}; diff --git a/plugins/schemaorg/book/src/Extension/Book.php b/plugins/schemaorg/book/src/Extension/Book.php new file mode 100755 index 0000000000000..bfcffde26af12 --- /dev/null +++ b/plugins/schemaorg/book/src/Extension/Book.php @@ -0,0 +1,59 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + + * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace + */ + +namespace Joomla\Plugin\Schemaorg\Book\Extension; + +use Joomla\CMS\Plugin\CMSPlugin; +use Joomla\CMS\Schemaorg\SchemaorgPluginTrait; +use Joomla\Event\SubscriberInterface; + +// phpcs:disable PSR1.Files.SideEffects +\defined('_JEXEC') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Schemaorg Plugin + * + * @since __DEPLOY_VERSION__ + */ +final class Book extends CMSPlugin implements SubscriberInterface +{ + use SchemaorgPluginTrait; + + /** + * Load the language file on instantiation. + * + * @var boolean + * @since __DEPLOY_VERSION__ + */ + protected $autoloadLanguage = true; + + /** + * The name of the schema form + * + * @var string + * @since __DEPLOY_VERSION__ + */ + protected $pluginName = 'Book'; + + /** + * To add plugin specific functions + * + * @param array $schema Schema form + * + * @return array Updated schema form + */ + public function customCleanup(array $schema) + { + return $this->cleanupDate($schema, ['datePublished']); + } +} diff --git a/plugins/schemaorg/event/event.xml b/plugins/schemaorg/event/event.xml new file mode 100755 index 0000000000000..c581f1b500e4f --- /dev/null +++ b/plugins/schemaorg/event/event.xml @@ -0,0 +1,45 @@ + + + plg_schemaorg_event + Joomla! Project + 2023-07 + + (C) 2023 Open Source Matters, Inc. + + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + __DEPLOY_VERSION__ + PLG_SCHEMAORG_EVENT_XML_DESCRIPTION + Joomla\Plugin\Schemaorg\Event + + services + src + + + language/en-GB/plg_schemaorg_event.ini + language/en-GB/plg_schemaorg_event.sys.ini + + + +
+ + +
+
+
+
diff --git a/plugins/schemaorg/event/forms/schemaorg.xml b/plugins/schemaorg/event/forms/schemaorg.xml new file mode 100755 index 0000000000000..bb4519437d31c --- /dev/null +++ b/plugins/schemaorg/event/forms/schemaorg.xml @@ -0,0 +1,280 @@ + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ diff --git a/plugins/schemaorg/event/services/provider.php b/plugins/schemaorg/event/services/provider.php new file mode 100644 index 0000000000000..45735fdba0971 --- /dev/null +++ b/plugins/schemaorg/event/services/provider.php @@ -0,0 +1,48 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Extension\PluginInterface; +use Joomla\CMS\Factory; +use Joomla\CMS\Plugin\PluginHelper; +use Joomla\DI\Container; +use Joomla\DI\ServiceProviderInterface; +use Joomla\Event\DispatcherInterface; +use Joomla\Plugin\Schemaorg\Event\Extension\Event; + +return new class () implements ServiceProviderInterface { + /** + * Registers the service provider with a DI container. + * + * @param Container $container The DI container. + * + * @return void + * + * @since __DEPLOY_VERSION__ + */ + public function register(Container $container) + { + $container->set( + PluginInterface::class, + function (Container $container) { + $dispatcher = $container->get(DispatcherInterface::class); + $plugin = new Event( + $dispatcher, + (array) PluginHelper::getPlugin('schemaorg', 'event') + ); + + $plugin->setApplication(Factory::getApplication()); + + return $plugin; + } + ); + } +}; diff --git a/plugins/schemaorg/event/src/Extension/Event.php b/plugins/schemaorg/event/src/Extension/Event.php new file mode 100755 index 0000000000000..fc2c58a381344 --- /dev/null +++ b/plugins/schemaorg/event/src/Extension/Event.php @@ -0,0 +1,60 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + + * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace + */ + +namespace Joomla\Plugin\Schemaorg\Event\Extension; + +use Joomla\CMS\Plugin\CMSPlugin; +use Joomla\CMS\Schemaorg\SchemaorgPluginTrait; +use Joomla\Event\SubscriberInterface; + +// phpcs:disable PSR1.Files.SideEffects +\defined('_JEXEC') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Schemaorg Plugin + * + * @since __DEPLOY_VERSION__ + */ +final class Event extends CMSPlugin implements SubscriberInterface +{ + use SchemaorgPluginTrait; + + /** + * Load the language file on instantiation. + * + * @var boolean + * @since __DEPLOY_VERSION__ + */ + protected $autoloadLanguage = true; + + /** + * The name of the schema form + * + * @var string + * @since __DEPLOY_VERSION__ + */ + protected $pluginName = 'Event'; + + /** + * To add plugin specific functions + * + * @param array $schema Schema form + * + * @return array Updated schema form + */ + public function customCleanup(array $schema) + { + return $this->cleanupDate($schema, ['startDate']); + } +} diff --git a/plugins/schemaorg/jobposting/forms/schemaorg.xml b/plugins/schemaorg/jobposting/forms/schemaorg.xml new file mode 100755 index 0000000000000..d30c7f79625fc --- /dev/null +++ b/plugins/schemaorg/jobposting/forms/schemaorg.xml @@ -0,0 +1,441 @@ + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ diff --git a/plugins/schemaorg/jobposting/jobposting.xml b/plugins/schemaorg/jobposting/jobposting.xml new file mode 100755 index 0000000000000..3a885d8481e0b --- /dev/null +++ b/plugins/schemaorg/jobposting/jobposting.xml @@ -0,0 +1,45 @@ + + + plg_schemaorg_jobposting + Joomla! Project + 2023-07 + + (C) 2023 Open Source Matters, Inc. + + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + __DEPLOY_VERSION__ + PLG_SCHEMAORG_JOBPOSTING_XML_DESCRIPTION + Joomla\Plugin\Schemaorg\JobPosting + + services + src + + + language/en-GB/plg_schemaorg_jobposting.ini + language/en-GB/plg_schemaorg_jobposting.sys.ini + + + +
+ + +
+
+
+
diff --git a/plugins/schemaorg/jobposting/services/provider.php b/plugins/schemaorg/jobposting/services/provider.php new file mode 100644 index 0000000000000..4c094429e32b8 --- /dev/null +++ b/plugins/schemaorg/jobposting/services/provider.php @@ -0,0 +1,48 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Extension\PluginInterface; +use Joomla\CMS\Factory; +use Joomla\CMS\Plugin\PluginHelper; +use Joomla\DI\Container; +use Joomla\DI\ServiceProviderInterface; +use Joomla\Event\DispatcherInterface; +use Joomla\Plugin\Schemaorg\JobPosting\Extension\JobPosting; + +return new class () implements ServiceProviderInterface { + /** + * Registers the service provider with a DI container. + * + * @param Container $container The DI container. + * + * @return void + * + * @since __DEPLOY_VERSION__ + */ + public function register(Container $container) + { + $container->set( + PluginInterface::class, + function (Container $container) { + $dispatcher = $container->get(DispatcherInterface::class); + $plugin = new JobPosting( + $dispatcher, + (array) PluginHelper::getPlugin('schemaorg', 'jobposting') + ); + + $plugin->setApplication(Factory::getApplication()); + + return $plugin; + } + ); + } +}; diff --git a/plugins/schemaorg/jobposting/src/Extension/JobPosting.php b/plugins/schemaorg/jobposting/src/Extension/JobPosting.php new file mode 100755 index 0000000000000..09b1b34d28649 --- /dev/null +++ b/plugins/schemaorg/jobposting/src/Extension/JobPosting.php @@ -0,0 +1,62 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + + * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace + */ + +namespace Joomla\Plugin\Schemaorg\JobPosting\Extension; + +use Joomla\CMS\Plugin\CMSPlugin; +use Joomla\CMS\Schemaorg\SchemaorgPluginTrait; +use Joomla\Event\SubscriberInterface; + +// phpcs:disable PSR1.Files.SideEffects +\defined('_JEXEC') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Schemaorg Plugin + * + * @since __DEPLOY_VERSION__ + */ +final class JobPosting extends CMSPlugin implements SubscriberInterface +{ + use SchemaorgPluginTrait; + + /** + * Load the language file on instantiation. + * + * @var boolean + * @since __DEPLOY_VERSION__ + */ + protected $autoloadLanguage = true; + + /** + * The name of the schema form + * + * @var string + * @since __DEPLOY_VERSION__ + */ + protected $pluginName = 'JobPosting'; + + /** + * To add plugin specific functions + * + * @param array $schema Schema form + * + * @return array Updated schema form + */ + public function customCleanup(array $schema) + { + $schema = $this->cleanupDate($schema, ['datePosted', 'validThrough']); + + return $schema; + } +} diff --git a/plugins/schemaorg/organization/forms/schemaorg.xml b/plugins/schemaorg/organization/forms/schemaorg.xml new file mode 100755 index 0000000000000..33826bcfc3f38 --- /dev/null +++ b/plugins/schemaorg/organization/forms/schemaorg.xml @@ -0,0 +1,126 @@ + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+
+ diff --git a/plugins/schemaorg/organization/organization.xml b/plugins/schemaorg/organization/organization.xml new file mode 100755 index 0000000000000..aed4e84cdbfef --- /dev/null +++ b/plugins/schemaorg/organization/organization.xml @@ -0,0 +1,45 @@ + + + plg_schemaorg_organization + Joomla! Project + 2023-07 + + (C) 2023 Open Source Matters, Inc. + + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + __DEPLOY_VERSION__ + PLG_SCHEMAORG_ORGANIZATION_XML_DESCRIPTION + Joomla\Plugin\Schemaorg\Organization + + services + src + + + language/en-GB/plg_schemaorg_organization.ini + language/en-GB/plg_schemaorg_organization.sys.ini + + + +
+ + +
+
+
+
diff --git a/plugins/schemaorg/organization/services/provider.php b/plugins/schemaorg/organization/services/provider.php new file mode 100644 index 0000000000000..e4cbb61cd6921 --- /dev/null +++ b/plugins/schemaorg/organization/services/provider.php @@ -0,0 +1,47 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Extension\PluginInterface; +use Joomla\CMS\Factory; +use Joomla\CMS\Plugin\PluginHelper; +use Joomla\DI\Container; +use Joomla\DI\ServiceProviderInterface; +use Joomla\Event\DispatcherInterface; +use Joomla\Plugin\Schemaorg\Organization\Extension\Organization; + +return new class () implements ServiceProviderInterface { + /** + * Registers the service provider with a DI container. + * + * @param Container $container The DI container. + * + * @return void + * + * @since __DEPLOY_VERSION__ + */ + public function register(Container $container) + { + $container->set( + PluginInterface::class, + function (Container $container) { + $dispatcher = $container->get(DispatcherInterface::class); + $plugin = new Organization( + $dispatcher, + (array) PluginHelper::getPlugin('schemaorg', 'organization') + ); + $plugin->setApplication(Factory::getApplication()); + + return $plugin; + } + ); + } +}; diff --git a/plugins/schemaorg/organization/src/Extension/Organization.php b/plugins/schemaorg/organization/src/Extension/Organization.php new file mode 100755 index 0000000000000..fc2394771a6d2 --- /dev/null +++ b/plugins/schemaorg/organization/src/Extension/Organization.php @@ -0,0 +1,47 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + + * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace + */ + +namespace Joomla\Plugin\Schemaorg\Organization\Extension; + +use Joomla\CMS\Plugin\CMSPlugin; +use Joomla\CMS\Schemaorg\SchemaorgPluginTrait; +use Joomla\Event\SubscriberInterface; + +// phpcs:disable PSR1.Files.SideEffects +\defined('_JEXEC') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Schemaorg Plugin + * + * @since __DEPLOY_VERSION__ + */ +final class Organization extends CMSPlugin implements SubscriberInterface +{ + use SchemaorgPluginTrait; + + /** + * Load the language file on instantiation. + * + * @var boolean + * @since __DEPLOY_VERSION__ + */ + protected $autoloadLanguage = true; + + /** + * The name of the schema form + * + * @var string + * @since __DEPLOY_VERSION__ + */ + protected $pluginName = 'Organization'; +} diff --git a/plugins/schemaorg/person/forms/schemaorg.xml b/plugins/schemaorg/person/forms/schemaorg.xml new file mode 100755 index 0000000000000..afd0c88cd506c --- /dev/null +++ b/plugins/schemaorg/person/forms/schemaorg.xml @@ -0,0 +1,112 @@ + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ diff --git a/plugins/schemaorg/person/person.xml b/plugins/schemaorg/person/person.xml new file mode 100755 index 0000000000000..8d52eec5d21b8 --- /dev/null +++ b/plugins/schemaorg/person/person.xml @@ -0,0 +1,45 @@ + + + plg_schemaorg_person + Joomla! Project + 2023-07 + + (C) 2023 Open Source Matters, Inc. + + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + __DEPLOY_VERSION__ + PLG_SCHEMAORG_PERSON_XML_DESCRIPTION + Joomla\Plugin\Schemaorg\Person + + services + src + + + language/en-GB/plg_schemaorg_person.ini + language/en-GB/plg_schemaorg_person.sys.ini + + + +
+ + +
+
+
+
diff --git a/plugins/schemaorg/person/services/provider.php b/plugins/schemaorg/person/services/provider.php new file mode 100644 index 0000000000000..eeabbb502352f --- /dev/null +++ b/plugins/schemaorg/person/services/provider.php @@ -0,0 +1,48 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Extension\PluginInterface; +use Joomla\CMS\Factory; +use Joomla\CMS\Plugin\PluginHelper; +use Joomla\DI\Container; +use Joomla\DI\ServiceProviderInterface; +use Joomla\Event\DispatcherInterface; +use Joomla\Plugin\Schemaorg\Person\Extension\Person; + +return new class () implements ServiceProviderInterface { + /** + * Registers the service provider with a DI container. + * + * @param Container $container The DI container. + * + * @return void + * + * @since __DEPLOY_VERSION__ + */ + public function register(Container $container) + { + $container->set( + PluginInterface::class, + function (Container $container) { + $dispatcher = $container->get(DispatcherInterface::class); + $plugin = new Person( + $dispatcher, + (array) PluginHelper::getPlugin('schemaorg', 'person') + ); + + $plugin->setApplication(Factory::getApplication()); + + return $plugin; + } + ); + } +}; diff --git a/plugins/schemaorg/person/src/Extension/Person.php b/plugins/schemaorg/person/src/Extension/Person.php new file mode 100755 index 0000000000000..67b265129e47c --- /dev/null +++ b/plugins/schemaorg/person/src/Extension/Person.php @@ -0,0 +1,47 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + + * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace + */ + +namespace Joomla\Plugin\Schemaorg\Person\Extension; + +use Joomla\CMS\Plugin\CMSPlugin; +use Joomla\CMS\Schemaorg\SchemaorgPluginTrait; +use Joomla\Event\SubscriberInterface; + +// phpcs:disable PSR1.Files.SideEffects +\defined('_JEXEC') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Schemaorg Plugin + * + * @since __DEPLOY_VERSION__ + */ +final class Person extends CMSPlugin implements SubscriberInterface +{ + use SchemaorgPluginTrait; + + /** + * Load the language file on instantiation. + * + * @var boolean + * @since __DEPLOY_VERSION__ + */ + protected $autoloadLanguage = true; + + /** + * The name of the schema form + * + * @var string + * @since __DEPLOY_VERSION__ + */ + protected $pluginName = 'Person'; +} diff --git a/plugins/schemaorg/recipe/forms/duration.xml b/plugins/schemaorg/recipe/forms/duration.xml new file mode 100755 index 0000000000000..1ecb84405d63c --- /dev/null +++ b/plugins/schemaorg/recipe/forms/duration.xml @@ -0,0 +1,14 @@ +
+ + + + diff --git a/plugins/schemaorg/recipe/forms/schemaorg.xml b/plugins/schemaorg/recipe/forms/schemaorg.xml new file mode 100755 index 0000000000000..80fd779913e8c --- /dev/null +++ b/plugins/schemaorg/recipe/forms/schemaorg.xml @@ -0,0 +1,269 @@ + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ diff --git a/plugins/schemaorg/recipe/recipe.xml b/plugins/schemaorg/recipe/recipe.xml new file mode 100755 index 0000000000000..2be7f56b245fa --- /dev/null +++ b/plugins/schemaorg/recipe/recipe.xml @@ -0,0 +1,45 @@ + + + plg_schemaorg_recipe + Joomla! Project + 2023-07 + + (C) 2023 Open Source Matters, Inc. + + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + __DEPLOY_VERSION__ + PLG_SCHEMAORG_RECIPE_XML_DESCRIPTION + Joomla\Plugin\Schemaorg\Recipe + + services + src + + + language/en-GB/plg_schemaorg_recipe.ini + language/en-GB/plg_schemaorg_recipe.sys.ini + + + +
+ + +
+
+
+
diff --git a/plugins/schemaorg/recipe/services/provider.php b/plugins/schemaorg/recipe/services/provider.php new file mode 100644 index 0000000000000..28e682a1f0858 --- /dev/null +++ b/plugins/schemaorg/recipe/services/provider.php @@ -0,0 +1,48 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Extension\PluginInterface; +use Joomla\CMS\Factory; +use Joomla\CMS\Plugin\PluginHelper; +use Joomla\DI\Container; +use Joomla\DI\ServiceProviderInterface; +use Joomla\Event\DispatcherInterface; +use Joomla\Plugin\Schemaorg\Recipe\Extension\Recipe; + +return new class () implements ServiceProviderInterface { + /** + * Registers the service provider with a DI container. + * + * @param Container $container The DI container. + * + * @return void + * + * @since __DEPLOY_VERSION__ + */ + public function register(Container $container) + { + $container->set( + PluginInterface::class, + function (Container $container) { + $dispatcher = $container->get(DispatcherInterface::class); + $plugin = new Recipe( + $dispatcher, + (array) PluginHelper::getPlugin('schemaorg', 'recipe') + ); + + $plugin->setApplication(Factory::getApplication()); + + return $plugin; + } + ); + } +}; diff --git a/plugins/schemaorg/recipe/src/Extension/Recipe.php b/plugins/schemaorg/recipe/src/Extension/Recipe.php new file mode 100755 index 0000000000000..f0c7136a14864 --- /dev/null +++ b/plugins/schemaorg/recipe/src/Extension/Recipe.php @@ -0,0 +1,65 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + + * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace + */ + +namespace Joomla\Plugin\Schemaorg\Recipe\Extension; + +use Joomla\CMS\Plugin\CMSPlugin; +use Joomla\CMS\Schemaorg\SchemaorgPluginTrait; +use Joomla\Event\SubscriberInterface; + +// phpcs:disable PSR1.Files.SideEffects +\defined('_JEXEC') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Schemaorg Plugin + * + * @since __DEPLOY_VERSION__ + */ +final class Recipe extends CMSPlugin implements SubscriberInterface +{ + use SchemaorgPluginTrait; + + /** + * Load the language file on instantiation. + * + * @var boolean + * @since __DEPLOY_VERSION__ + */ + protected $autoloadLanguage = true; + + /** + * The name of the schema form + * + * @var string + * @since __DEPLOY_VERSION__ + */ + protected $pluginName = 'Recipe'; + + /** + * To add plugin specific functions + * + * @param array $schema Schema form + * + * @return array Updated schema form + */ + public function customCleanup(array $schema) + { + $schema = $this->normalizeDurationsToISO($schema, ['cookTime', 'prepTime']); + + $schema = $this->convertToArray($schema, ['recipeIngredient']); + + $schema = $this->cleanupDate($schema, ['datePublished']); + + return $schema; + } +} diff --git a/plugins/system/schemaorg/forms/schemaorg.xml b/plugins/system/schemaorg/forms/schemaorg.xml new file mode 100755 index 0000000000000..3db47bf5690bc --- /dev/null +++ b/plugins/system/schemaorg/forms/schemaorg.xml @@ -0,0 +1,26 @@ + +
+ +
+ + + + + +
+
+
diff --git a/plugins/system/schemaorg/schemaorg.xml b/plugins/system/schemaorg/schemaorg.xml new file mode 100755 index 0000000000000..43cc6b9566d91 --- /dev/null +++ b/plugins/system/schemaorg/schemaorg.xml @@ -0,0 +1,80 @@ + + + plg_system_schemaorg + Joomla! Project + 2023-07 + + (C) 2023 Open Source Matters, Inc. + + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + __DEPLOY_VERSION__ + PLG_SYSTEM_SCHEMAORG_XML_DESCRIPTION + Joomla\Plugin\System\Schemaorg + + services + src + + + language/en-GB/plg_system_schemaorg.ini + language/en-GB/plg_system_schemaorg.sys.ini + + + +
+ + + + + + + + + + + + +
+ + +
+
+
+
+
diff --git a/plugins/system/schemaorg/services/provider.php b/plugins/system/schemaorg/services/provider.php new file mode 100644 index 0000000000000..8259a319508f7 --- /dev/null +++ b/plugins/system/schemaorg/services/provider.php @@ -0,0 +1,51 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Extension\PluginInterface; +use Joomla\CMS\Factory; +use Joomla\CMS\Plugin\PluginHelper; +use Joomla\Database\DatabaseInterface; +use Joomla\DI\Container; +use Joomla\DI\ServiceProviderInterface; +use Joomla\Event\DispatcherInterface; +use Joomla\Plugin\System\Schemaorg\Extension\Schemaorg; + +return new class () implements ServiceProviderInterface { + /** + * Registers the service provider with a DI container. + * + * @param Container $container The DI container. + * + * @return void + * + * @since __DEPLOY_VERSION__ + */ + public function register(Container $container) + { + $container->set( + PluginInterface::class, + function (Container $container) { + $dispatcher = $container->get(DispatcherInterface::class); + + $plugin = new Schemaorg( + $dispatcher, + (array) PluginHelper::getPlugin('system', 'schemaorg') + ); + + $plugin->setApplication(Factory::getApplication()); + $plugin->setDatabase(Factory::getContainer()->get(DatabaseInterface::class)); + + return $plugin; + } + ); + } +}; diff --git a/plugins/system/schemaorg/src/Extension/Schemaorg.php b/plugins/system/schemaorg/src/Extension/Schemaorg.php new file mode 100755 index 0000000000000..b7981eeaaa0ad --- /dev/null +++ b/plugins/system/schemaorg/src/Extension/Schemaorg.php @@ -0,0 +1,488 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +namespace Joomla\Plugin\System\Schemaorg\Extension; + +use Joomla\CMS\Event\AbstractEvent; +use Joomla\CMS\Factory; +use Joomla\CMS\Form\Form; +use Joomla\CMS\HTML\HTMLHelper; +use Joomla\CMS\Helper\ModuleHelper; +use Joomla\CMS\Language\Text; +use Joomla\CMS\Plugin\CMSPlugin; +use Joomla\CMS\Plugin\PluginHelper; +use Joomla\CMS\Router\Route; +use Joomla\CMS\Schemaorg\SchemaorgServiceInterface; +use Joomla\CMS\Uri\Uri; +use Joomla\CMS\User\UserFactory; +use Joomla\Database\DatabaseAwareTrait; +use Joomla\Database\ParameterType; +use Joomla\Event\EventInterface; +use Joomla\Event\SubscriberInterface; +use Joomla\Registry\Registry; + +// phpcs:disable PSR1.Files.SideEffects +\defined('_JEXEC') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Schemaorg System Plugin + * + * @since __DEPLOY_VERSION__ + */ +final class Schemaorg extends CMSPlugin implements SubscriberInterface +{ + // use SchemaorgPluginTrait; + use DatabaseAwareTrait; + + /** + * Load the language file on instantiation. + * + * @var boolean + * @since __DEPLOY_VERSION__ + */ + protected $autoloadLanguage = true; + + /** + * Returns an array of events this subscriber will listen to. + * + * @return array + * + * @since __DEPLOY_VERSION__ + */ + public static function getSubscribedEvents(): array + { + return [ + 'onBeforeCompileHead' => 'onBeforeCompileHead', + 'onContentPrepareData' => 'onContentPrepareData', + 'onContentPrepareForm' => 'onContentPrepareForm', + 'onContentAfterSave' => 'onContentAfterSave', + ]; + } + + /** + * Runs on content preparation + * + * @param EventInterface $event The event + * + * @since __DEPLOY_VERSION__ + * + */ + public function onContentPrepareData(EventInterface $event) + { + $context = $event->getArgument('0'); + $data = $event->getArgument('1'); + + $app = $this->getApplication(); + + if ($app->isClient('site') || !$this->isSupported($context)) { + return true; + } + + $data = (object) $data; + + $itemId = $data->id ?? 0; + + // Check if the form already has some data + if ($itemId > 0) { + $db = $this->getDatabase(); + + $query = $db->getQuery(true) + ->select('*') + ->from($db->quoteName('#__schemaorg')) + ->where($db->quoteName('itemId') . '= :itemId') + ->bind(':itemId', $itemId, ParameterType::INTEGER) + ->where($db->quoteName('context') . '= :context') + ->bind(':context', $context, ParameterType::STRING); + + $results = $db->setQuery($query)->loadAssoc(); + + if (empty($results)) { + return false; + } + + $schemaType = $results['schemaType']; + $data->schema['schemaType'] = $schemaType; + + $schema = new Registry($results['schema']); + + $data->schema[$schemaType] = $schema->toArray(); + } + + $dispatcher = Factory::getApplication()->getDispatcher(); + + $event = AbstractEvent::create( + 'onSchemaPrepareData', + [ + 'subject' => $data, + 'context' => $context, + ] + ); + + PluginHelper::importPlugin('schemaorg'); + $eventResult = $dispatcher->dispatch('onSchemaPrepareData', $event); + + return true; + } + + /** + * The form event. + * + * @param EventInterface $event The event + * + * @since __DEPLOY_VERSION__ + */ + public function onContentPrepareForm(EventInterface $event) + { + /** + * @var Form + */ + $form = $event->getArgument('0'); + $context = $form->getName(); + + $app = $this->getApplication(); + + if (!$app->isClient('administrator') || !$this->isSupported($context)) { + return true; + } + + // Load the form fields + $form->loadFile(JPATH_PLUGINS . '/' . $this->_type . '/' . $this->_name . '/forms/schemaorg.xml'); + + // The user should configure the plugin first + if (!$this->params->get('baseType')) { + $form->removeField('schemaType', 'schema'); + + $plugin = PluginHelper::getPlugin('system', 'schemaorg'); + + $user = $this->getApplication()->getIdentity(); + + $infoText = Text::_('PLG_SYSTEM_SCHEMAORG_FIELD_SCHEMA_DESCRIPTION_NOT_CONFIGURATED'); + + // If edit permission are available, offer a link + if ($user->authorise('core.edit', 'com_plugins')) { + $infoText = Text::sprintf('PLG_SYSTEM_SCHEMAORG_FIELD_SCHEMA_DESCRIPTION_NOT_CONFIGURATED_ADMIN', (int) $plugin->id); + } + + $form->setFieldAttribute('schemainfo', 'description', $infoText, 'schema'); + + return true; + } + + $dispatcher = Factory::getApplication()->getDispatcher(); + + $event = AbstractEvent::create( + 'onSchemaPrepareForm', + [ + 'subject' => $form, + ] + ); + + PluginHelper::importPlugin('schemaorg'); + $eventResult = $dispatcher->dispatch('onSchemaPrepareForm', $event); + + return true; + } + + /** + * Saves form field data in the database + * + * @param EventInterface $event + * + * @return boolean + * + * @since __DEPLOY_VERSION__ + * + */ + public function onContentAfterSave(EventInterface $event) + { + $context = $event->getArgument('0'); + $table = $event->getArgument('1'); + $isNew = $event->getArgument('2'); + $data = $event->getArgument('3'); + + $app = $this->getApplication(); + $db = $this->getDatabase(); + + if (!$app->isClient('administrator') || !$this->isSupported($context)) { + return true; + } + + $itemId = (int) $table->id; + + if (empty($data['schema']) || empty($data['schema']['schemaType']) || $data['schema']['schemaType'] === 'None') { + $query = $db->getQuery(true); + + $query->delete($db->quoteName('#__schemaorg')) + ->where($db->quoteName('itemId') . '= :itemId') + ->bind(':itemId', $itemId, ParameterType::INTEGER) + ->where($db->quoteName('context') . '= :context') + ->bind(':context', $context, ParameterType::STRING); + + $db->setQuery($query)->execute(); + + return true; + } + + $query = $db->getQuery(true); + + $query->select('*') + ->from($db->quoteName('#__schemaorg')) + ->where($db->quoteName('itemId') . '= :itemId') + ->bind(':itemId', $itemId, ParameterType::INTEGER) + ->where($db->quoteName('context') . '= :context') + ->bind(':context', $context, ParameterType::STRING); + + $entry = $db->setQuery($query)->loadObject(); + + if (empty($entry->id)) { + $entry = new \stdClass(); + } + + $entry->itemId = (int) $table->getId(); + $entry->context = $context; + + if (isset($data['schema']['schemaType'])) { + $entry->schemaType = $data['schema']['schemaType']; + + if (isset($data['schema'][$entry->schemaType])) { + $entry->schema = (new Registry($data['schema'][$entry->schemaType]))->toString(); + } + } + + PluginHelper::importPlugin('schemaorg'); + + $dispatcher = $app->getDispatcher(); + + $event = AbstractEvent::create( + 'onSchemaPrepareSave', + [ + 'subject' => $entry, + 'context' => $context, + 'table' => $table, + 'isNew' => $isNew, + 'schema' => $data['schema'], + ] + ); + + $eventResult = $dispatcher->dispatch('onSchemaPrepareSave', $event); + + if (!isset($entry->schemaType)) { + return true; + } + + if (!empty($entry->id)) { + $db->updateObject('#__schemaorg', $entry, 'id'); + } else { + $db->insertObject('#__schemaorg', $entry, 'id'); + } + + return true; + } + + + /** + * This event is triggered before the framework creates the Head section of the Document + * + * @since __DEPLOY_VERSION__ + */ + public function onBeforeCompileHead() + { + $app = $this->getApplication(); + $baseType = $this->params->get('baseType'); + + $itemId = (int) $app->getInput()->getInt('id'); + $option = $app->getInput()->get('option'); + $view = $app->getInput()->get('view'); + $context = $option . '.' . $view; + + // We need the plugin configured at least once to add structured data + if (!$app->isClient('site') || !in_array($baseType, ['organization', 'person']) || !$this->isSupported($context)) { + return; + } + + $domain = Uri::root(); + + $isPerson = $baseType === 'person'; + + $schema = new Registry(); + + $baseSchema = []; + + $baseSchema['@context'] = 'https://schema.org'; + $baseSchema['@graph'] = []; + + // Add base tag Person/Organization + $baseId = $domain . '#/schema/' . ucfirst($baseType) . '/base'; + + $siteSchema = []; + + $siteSchema['@type'] = ucfirst($this->params->get('baseType')); + $siteSchema['@id'] = $baseId; + + $name = $this->params->get('name'); + + if ($isPerson && $this->params->get('userId') > 0) { + $user = Factory::getContainer()->get(UserFactory::class)->loadUserById($this->params->get('userId')); + + $name = $user ? $user->name : ''; + } + + if ($name) { + $siteSchema['name'] = $name; + } + + $siteSchema['url'] = $domain; + + // Image + $image = $this->params->get('image') ? HTMLHelper::_('cleanimageUrl', $this->params->get('image')) : false; + + if ($image !== false) { + $siteSchema['logo'] = [ + '@type' => 'ImageObject', + '@id' => $domain . '#/schema/ImageObject/logo', + 'url' => $image->url, + 'contentUrl' => $image->url, + 'width' => $image->attributes['width'] ?? 0, + 'height' => $image->attributes['height'] ?? 0, + ]; + + $siteSchema['image'] = ['@id' => $siteSchema['logo']['@id']]; + } + + // Social media accounts + $socialMedia = (array) $this->params->get('socialmedia', []); + + if (!empty($socialMedia)) { + $siteSchema['sameAs'] = []; + } + + foreach ($socialMedia as $social) { + $siteSchema['sameAs'][] = $social->url; + } + + $baseSchema['@graph'][] = $siteSchema; + + // Add WebSite + $webSiteId = $domain . '#/schema/WebSite/base'; + + $webSiteSchema = []; + + $webSiteSchema['@type'] = 'WebSite'; + $webSiteSchema['@id'] = $webSiteId; + $webSiteSchema['url'] = $domain; + $webSiteSchema['name'] = $app->get('sitename'); + $webSiteSchema['publisher'] = ['@id' => $baseId]; + + // We support Finder actions + $finder = ModuleHelper::getModule('mod_finder'); + + if (!empty($finder->id)) { + $webSiteSchema['potentialAction'] = [ + '@type' => 'SearchAction', + 'target' => Route::_('index.php?option=com_finder&view=search&q={search_term_string}', true, Route::TLS_IGNORE, true), + 'query-input' => 'required name=search_term_string', + ]; + } + + $baseSchema['@graph'][] = $webSiteSchema; + + // Add WebPage + $webPageId = $domain . '#/schema/WebPage/base'; + + $webPageSchema = []; + + $webPageSchema['@type'] = 'WebPage'; + $webPageSchema['@id'] = $webPageId; + $webPageSchema['url'] = htmlspecialchars(Uri::getInstance()->toString()); + $webPageSchema['name'] = $app->getDocument()->getTitle(); + $webPageSchema['description'] = $app->getDocument()->getDescription(); + $webPageSchema['isPartOf'] = ['@id' => $webSiteId]; + $webPageSchema['about'] = ['@id' => $baseId]; + $webPageSchema['inLanguage'] = $app->getLanguage()->getTag(); + + // We support Breadcrumb linking + $breadcrumbs = ModuleHelper::getModule('mod_breadcrumbs'); + + if (!empty($breadcrumbs->id)) { + $webPageSchema['breadcrumb'] = ['@id' => $domain . '#/schema/BreadcrumbList/' . (int) $breadcrumbs->id]; + } + + $baseSchema['@graph'][] = $webPageSchema; + + if ($itemId > 0) { + // Load the table data from the database + $db = $this->getDatabase(); + $query = $db->getQuery(true) + ->select('*') + ->from($db->quoteName('#__schemaorg')) + ->where($db->quoteName('itemId') . ' = :itemId') + ->bind(':itemId', $itemId, ParameterType::INTEGER) + ->where($db->quoteName('context') . ' = :context') + ->bind(':context', $context, ParameterType::STRING); + + $result = $db->setQuery($query)->loadObject(); + + if ($result) { + $localSchema = new Registry($result->schema); + + $localSchema->set('@id', $domain . '#/schema/' . str_replace('.', '/', $context) . '/' . (int) $result->itemId); + $localSchema->set('isPartOf', ['@id' => $webPageId]); + + $itemSchema = $localSchema->toArray(); + + $baseSchema['@graph'][] = $itemSchema; + } + } + + $schema->loadArray($baseSchema); + + $event = AbstractEvent::create( + 'onSchemaBeforeCompileHead', + [ + 'subject' => $schema, + 'context' => $context . '.' . $itemId, + ] + ); + + PluginHelper::importPlugin('schemaorg'); + $eventResult = $app->getDispatcher()->dispatch('onSchemaBeforeCompileHead', $event); + + $schemaString = $schema->toString(); + + if ($schemaString !== '{}') { + $wa = $this->getApplication()->getDocument()->getWebAssetManager(); + $wa->addInlineScript($schemaString, ['position' => 'after'], ['type' => 'application/ld+json']); + } + } + + /** + * Check if the current plugin should execute schemaorg related activities + * + * @param string $context + * + * @return boolean + * + * @since _DEPLOY_VERSION__ + */ + protected function isSupported($context) + { + $parts = explode('.', $context); + + // We need at least the extension + view for loading the table fields + if (count($parts) < 2) { + return false; + } + + $component = $this->getApplication()->bootComponent($parts[0]); + + return $component instanceof SchemaorgServiceInterface; + } +} From 5059d4c191345f9e9e6a5ce01b5f31526f6341b7 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Tue, 25 Jul 2023 14:14:42 +0100 Subject: [PATCH 058/126] [5.x] schemaorg plugins mark as core (#41227) This PR adds the missing code so that the new system and schemaorg plugins are listed as core extensions in the extension manager --- libraries/src/Extension/ExtensionHelper.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libraries/src/Extension/ExtensionHelper.php b/libraries/src/Extension/ExtensionHelper.php index 748869c1f8608..5f6dccb78a6ff 100644 --- a/libraries/src/Extension/ExtensionHelper.php +++ b/libraries/src/Extension/ExtensionHelper.php @@ -279,6 +279,15 @@ class ExtensionHelper ['plugin', 'blog', 'sampledata', 0], ['plugin', 'multilang', 'sampledata', 0], + // Core plugin extensions - schemaorg + ['plugin', 'blogposting', 'schemaorg', 0], + ['plugin', 'book', 'schemaorg', 0], + ['plugin', 'event', 'schemaorg', 0], + ['plugin', 'jobposting', 'schemaorg', 0], + ['plugin', 'organization', 'schemaorg', 0], + ['plugin', 'person', 'schemaorg', 0], + ['plugin', 'recipe', 'schemaorg', 0], + // Core plugin extensions - system ['plugin', 'accessibility', 'system', 0], ['plugin', 'actionlogs', 'system', 0], @@ -299,6 +308,7 @@ class ExtensionHelper ['plugin', 'redirect', 'system', 0], ['plugin', 'remember', 'system', 0], ['plugin', 'schedulerunner', 'system', 0], + ['plugin', 'schemaorg', 'system', 0], ['plugin', 'sef', 'system', 0], ['plugin', 'sessiongc', 'system', 0], ['plugin', 'shortcut', 'system', 0], From 8b2cb15bf6d39e2621d81b972d5967e75cb38a2a Mon Sep 17 00:00:00 2001 From: Harald Leithner Date: Tue, 25 Jul 2023 16:08:12 +0200 Subject: [PATCH 059/126] Revert part of #40429 There was an error loading the language base path using the framework OutputFilter. --- libraries/src/Application/ApplicationHelper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/src/Application/ApplicationHelper.php b/libraries/src/Application/ApplicationHelper.php index cb42657430bdc..aa6b64d774c72 100644 --- a/libraries/src/Application/ApplicationHelper.php +++ b/libraries/src/Application/ApplicationHelper.php @@ -11,7 +11,7 @@ use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; -use Joomla\Filter\OutputFilter; +use Joomla\CMS\Filter\OutputFilter; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; From 6d2104f49ea05c88459ac157563390d75b3df737 Mon Sep 17 00:00:00 2001 From: Harald Leithner Date: Tue, 25 Jul 2023 16:08:43 +0200 Subject: [PATCH 060/126] Joomla! 5.0.0 Alpha 3 --- .../com_contact/src/Extension/ContactComponent.php | 2 +- .../com_content/src/Extension/ContentComponent.php | 2 +- administrator/language/en-GB/install.xml | 2 +- administrator/language/en-GB/langmetadata.xml | 2 +- administrator/manifests/files/joomla.xml | 4 ++-- administrator/manifests/packages/pkg_en-GB.xml | 2 +- api/language/en-GB/install.xml | 2 +- api/language/en-GB/langmetadata.xml | 2 +- installation/language/en-GB/langmetadata.xml | 2 +- language/en-GB/install.xml | 2 +- language/en-GB/langmetadata.xml | 2 +- .../src/Event/Application/AfterApiRouteEvent.php | 2 +- .../src/Event/Application/AfterCompressEvent.php | 2 +- .../src/Event/Application/AfterDispatchEvent.php | 2 +- .../src/Event/Application/AfterExecuteEvent.php | 2 +- .../Application/AfterInitialiseDocumentEvent.php | 2 +- .../src/Event/Application/AfterInitialiseEvent.php | 2 +- .../src/Event/Application/AfterRenderEvent.php | 2 +- .../src/Event/Application/AfterRespondEvent.php | 2 +- .../src/Event/Application/AfterRouteEvent.php | 2 +- .../Event/Application/ApplicationDocumentEvent.php | 8 ++++---- .../src/Event/Application/ApplicationEvent.php | 8 ++++---- .../src/Event/Application/BeforeApiRouteEvent.php | 8 ++++---- .../Event/Application/BeforeCompileHeadEvent.php | 2 +- .../src/Event/Application/BeforeExecuteEvent.php | 4 ++-- .../src/Event/Application/BeforeRenderEvent.php | 2 +- .../src/Event/Application/BeforeRespondEvent.php | 2 +- .../src/Event/Application/DeamonForkEvent.php | 2 +- .../Event/Application/DeamonReceiveSignalEvent.php | 8 ++++---- .../Form/Field/SchemaorgComponentSectionsField.php | 6 +++--- libraries/src/Plugin/CMSPlugin.php | 2 +- libraries/src/Schemaorg/SchemaorgPluginTrait.php | 10 +++++----- libraries/src/Schemaorg/SchemaorgServiceTrait.php | 2 +- libraries/src/Service/Provider/Input.php | 4 ++-- libraries/src/Session/Storage/JoomlaStorage.php | 4 ++-- libraries/src/Version.php | 8 ++++---- plugins/content/joomla/src/Extension/Joomla.php | 8 ++++---- plugins/schemaorg/blogposting/blogposting.xml | 2 +- .../schemaorg/blogposting/services/provider.php | 2 +- .../blogposting/src/Extension/Blogposting.php | 6 +++--- plugins/schemaorg/book/book.xml | 2 +- plugins/schemaorg/book/services/provider.php | 2 +- plugins/schemaorg/book/src/Extension/Book.php | 6 +++--- plugins/schemaorg/event/event.xml | 2 +- plugins/schemaorg/event/services/provider.php | 2 +- plugins/schemaorg/event/src/Extension/Event.php | 6 +++--- plugins/schemaorg/jobposting/jobposting.xml | 2 +- plugins/schemaorg/jobposting/services/provider.php | 2 +- .../jobposting/src/Extension/JobPosting.php | 6 +++--- plugins/schemaorg/organization/organization.xml | 2 +- .../schemaorg/organization/services/provider.php | 2 +- .../organization/src/Extension/Organization.php | 6 +++--- plugins/schemaorg/person/person.xml | 2 +- plugins/schemaorg/person/services/provider.php | 2 +- plugins/schemaorg/person/src/Extension/Person.php | 6 +++--- plugins/schemaorg/recipe/recipe.xml | 2 +- plugins/schemaorg/recipe/services/provider.php | 2 +- plugins/schemaorg/recipe/src/Extension/Recipe.php | 6 +++--- plugins/system/compat/src/Extension/Compat.php | 6 +++--- plugins/system/schemaorg/schemaorg.xml | 2 +- plugins/system/schemaorg/services/provider.php | 2 +- .../system/schemaorg/src/Extension/Schemaorg.php | 14 +++++++------- 62 files changed, 112 insertions(+), 112 deletions(-) diff --git a/administrator/components/com_contact/src/Extension/ContactComponent.php b/administrator/components/com_contact/src/Extension/ContactComponent.php index 2d299fafc8199..59e298d289f1d 100644 --- a/administrator/components/com_contact/src/Extension/ContactComponent.php +++ b/administrator/components/com_contact/src/Extension/ContactComponent.php @@ -162,7 +162,7 @@ protected function getStateColumnForSection(string $section = null) * * @return array * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function getSchemaorgContexts(): array { diff --git a/administrator/components/com_content/src/Extension/ContentComponent.php b/administrator/components/com_content/src/Extension/ContentComponent.php index 3b1901bece103..72919646ae63b 100644 --- a/administrator/components/com_content/src/Extension/ContentComponent.php +++ b/administrator/components/com_content/src/Extension/ContentComponent.php @@ -189,7 +189,7 @@ public function getContexts(): array * * @return array * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function getSchemaorgContexts(): array { diff --git a/administrator/language/en-GB/install.xml b/administrator/language/en-GB/install.xml index e75be62d10cd7..70306b0f2edca 100644 --- a/administrator/language/en-GB/install.xml +++ b/administrator/language/en-GB/install.xml @@ -3,7 +3,7 @@ English (en-GB) en-GB 5.0.0 - 2023-06 + 2023-07 Joomla! Project admin@joomla.org www.joomla.org diff --git a/administrator/language/en-GB/langmetadata.xml b/administrator/language/en-GB/langmetadata.xml index ee4015e5501f9..6109065d2ae01 100644 --- a/administrator/language/en-GB/langmetadata.xml +++ b/administrator/language/en-GB/langmetadata.xml @@ -2,7 +2,7 @@ English (en-GB) 5.0.0 - 2023-06 + 2023-07 Joomla! Project admin@joomla.org www.joomla.org diff --git a/administrator/manifests/files/joomla.xml b/administrator/manifests/files/joomla.xml index 2e7ecbe122f1e..248fc777e1829 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 - 5.0.0-alpha3-dev - 2023-06 + 5.0.0-alpha3 + 2023-07 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 5404544260c30..e15a26cfb7490 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 5.0.0.1 - 2023-06 + 2023-07 Joomla! Project admin@joomla.org www.joomla.org diff --git a/api/language/en-GB/install.xml b/api/language/en-GB/install.xml index 0faa8a6a9e111..de6dfdbbec7a5 100644 --- a/api/language/en-GB/install.xml +++ b/api/language/en-GB/install.xml @@ -3,7 +3,7 @@ English (en-GB) en-GB 5.0.0 - 2023-06 + 2023-07 Joomla! Project admin@joomla.org www.joomla.org diff --git a/api/language/en-GB/langmetadata.xml b/api/language/en-GB/langmetadata.xml index 6af874d0b4509..e9c303293a180 100644 --- a/api/language/en-GB/langmetadata.xml +++ b/api/language/en-GB/langmetadata.xml @@ -2,7 +2,7 @@ English (en-GB) 5.0.0 - 2023-06 + 2023-07 Joomla! Project admin@joomla.org www.joomla.org diff --git a/installation/language/en-GB/langmetadata.xml b/installation/language/en-GB/langmetadata.xml index 08c478f6fd2fe..d2f37873d18f4 100644 --- a/installation/language/en-GB/langmetadata.xml +++ b/installation/language/en-GB/langmetadata.xml @@ -2,7 +2,7 @@ English (United Kingdom) 5.0.0 - 2023-06 + 2023-07 Joomla! Project (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/language/en-GB/install.xml b/language/en-GB/install.xml index 22ce1871a21e9..bfb9ce3175490 100644 --- a/language/en-GB/install.xml +++ b/language/en-GB/install.xml @@ -3,7 +3,7 @@ English (en-GB) en-GB 5.0.0 - 2023-06 + 2023-07 Joomla! Project admin@joomla.org www.joomla.org diff --git a/language/en-GB/langmetadata.xml b/language/en-GB/langmetadata.xml index 761cd65844e2a..e06362304463f 100644 --- a/language/en-GB/langmetadata.xml +++ b/language/en-GB/langmetadata.xml @@ -2,7 +2,7 @@ English (en-GB) 5.0.0 - 2023-06 + 2023-07 Joomla! Project admin@joomla.org www.joomla.org diff --git a/libraries/src/Event/Application/AfterApiRouteEvent.php b/libraries/src/Event/Application/AfterApiRouteEvent.php index 5705267f73842..b760484b384bf 100644 --- a/libraries/src/Event/Application/AfterApiRouteEvent.php +++ b/libraries/src/Event/Application/AfterApiRouteEvent.php @@ -16,7 +16,7 @@ /** * Class for AfterApiRoute event * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ class AfterApiRouteEvent extends ApplicationEvent { diff --git a/libraries/src/Event/Application/AfterCompressEvent.php b/libraries/src/Event/Application/AfterCompressEvent.php index 34cf11143fe9a..9e45b6a6a60f6 100644 --- a/libraries/src/Event/Application/AfterCompressEvent.php +++ b/libraries/src/Event/Application/AfterCompressEvent.php @@ -16,7 +16,7 @@ /** * Class for AfterCompress event * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ class AfterCompressEvent extends ApplicationEvent { diff --git a/libraries/src/Event/Application/AfterDispatchEvent.php b/libraries/src/Event/Application/AfterDispatchEvent.php index e78fb24dec39c..afff10460e7f7 100644 --- a/libraries/src/Event/Application/AfterDispatchEvent.php +++ b/libraries/src/Event/Application/AfterDispatchEvent.php @@ -16,7 +16,7 @@ /** * Class for AfterDispatch event * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ class AfterDispatchEvent extends ApplicationEvent { diff --git a/libraries/src/Event/Application/AfterExecuteEvent.php b/libraries/src/Event/Application/AfterExecuteEvent.php index 196fec23845c2..f7ea8d355477a 100644 --- a/libraries/src/Event/Application/AfterExecuteEvent.php +++ b/libraries/src/Event/Application/AfterExecuteEvent.php @@ -16,7 +16,7 @@ /** * Class for AfterExecute event * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ class AfterExecuteEvent extends ApplicationEvent { diff --git a/libraries/src/Event/Application/AfterInitialiseDocumentEvent.php b/libraries/src/Event/Application/AfterInitialiseDocumentEvent.php index c079cb571eb88..1f1ce49393507 100644 --- a/libraries/src/Event/Application/AfterInitialiseDocumentEvent.php +++ b/libraries/src/Event/Application/AfterInitialiseDocumentEvent.php @@ -16,7 +16,7 @@ /** * Event class for AfterInitialiseDocument event * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ class AfterInitialiseDocumentEvent extends ApplicationDocumentEvent { diff --git a/libraries/src/Event/Application/AfterInitialiseEvent.php b/libraries/src/Event/Application/AfterInitialiseEvent.php index daa8fad5a364e..fc33412ea5af9 100644 --- a/libraries/src/Event/Application/AfterInitialiseEvent.php +++ b/libraries/src/Event/Application/AfterInitialiseEvent.php @@ -16,7 +16,7 @@ /** * Class for AfterInitialise event * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ class AfterInitialiseEvent extends ApplicationEvent { diff --git a/libraries/src/Event/Application/AfterRenderEvent.php b/libraries/src/Event/Application/AfterRenderEvent.php index e0097257c91fe..9b4eeda01a9c9 100644 --- a/libraries/src/Event/Application/AfterRenderEvent.php +++ b/libraries/src/Event/Application/AfterRenderEvent.php @@ -16,7 +16,7 @@ /** * Class for AfterRender event * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ class AfterRenderEvent extends ApplicationEvent { diff --git a/libraries/src/Event/Application/AfterRespondEvent.php b/libraries/src/Event/Application/AfterRespondEvent.php index 1a3651cf18948..3ed99cb769b3a 100644 --- a/libraries/src/Event/Application/AfterRespondEvent.php +++ b/libraries/src/Event/Application/AfterRespondEvent.php @@ -16,7 +16,7 @@ /** * Class for AfterRespond event * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ class AfterRespondEvent extends ApplicationEvent { diff --git a/libraries/src/Event/Application/AfterRouteEvent.php b/libraries/src/Event/Application/AfterRouteEvent.php index ccdddcbd6af17..d65e7b0ed5f40 100644 --- a/libraries/src/Event/Application/AfterRouteEvent.php +++ b/libraries/src/Event/Application/AfterRouteEvent.php @@ -16,7 +16,7 @@ /** * Class for AfterRoute event * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ class AfterRouteEvent extends ApplicationEvent { diff --git a/libraries/src/Event/Application/ApplicationDocumentEvent.php b/libraries/src/Event/Application/ApplicationDocumentEvent.php index f605ded997799..e1bc35be7d223 100644 --- a/libraries/src/Event/Application/ApplicationDocumentEvent.php +++ b/libraries/src/Event/Application/ApplicationDocumentEvent.php @@ -18,7 +18,7 @@ /** * Class for Application's Document events * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ abstract class ApplicationDocumentEvent extends ApplicationEvent { @@ -30,7 +30,7 @@ abstract class ApplicationDocumentEvent extends ApplicationEvent * * @throws \BadMethodCallException * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function __construct($name, array $arguments = []) { @@ -48,7 +48,7 @@ public function __construct($name, array $arguments = []) * * @return Document * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected function setDocument(Document $value): Document { @@ -60,7 +60,7 @@ protected function setDocument(Document $value): Document * * @return Document * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function getDocument(): Document { diff --git a/libraries/src/Event/Application/ApplicationEvent.php b/libraries/src/Event/Application/ApplicationEvent.php index 17287947c1e96..a6ca2067056bd 100644 --- a/libraries/src/Event/Application/ApplicationEvent.php +++ b/libraries/src/Event/Application/ApplicationEvent.php @@ -19,7 +19,7 @@ /** * Class for Application events * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ abstract class ApplicationEvent extends AbstractImmutableEvent { @@ -31,7 +31,7 @@ abstract class ApplicationEvent extends AbstractImmutableEvent * * @throws \BadMethodCallException * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function __construct($name, array $arguments = []) { @@ -49,7 +49,7 @@ public function __construct($name, array $arguments = []) * * @return AbstractApplication * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ final protected function setSubject(AbstractApplication $value): AbstractApplication { @@ -61,7 +61,7 @@ final protected function setSubject(AbstractApplication $value): AbstractApplica * * @return AbstractApplication * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ final public function getApplication(): AbstractApplication { diff --git a/libraries/src/Event/Application/BeforeApiRouteEvent.php b/libraries/src/Event/Application/BeforeApiRouteEvent.php index b5897905309a5..3f3dd65d3b4c9 100644 --- a/libraries/src/Event/Application/BeforeApiRouteEvent.php +++ b/libraries/src/Event/Application/BeforeApiRouteEvent.php @@ -18,7 +18,7 @@ /** * Class for BeforeApiRoute event * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ class BeforeApiRouteEvent extends ApplicationEvent { @@ -30,7 +30,7 @@ class BeforeApiRouteEvent extends ApplicationEvent * * @throws \BadMethodCallException * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function __construct($name, array $arguments = []) { @@ -48,7 +48,7 @@ public function __construct($name, array $arguments = []) * * @return ApiRouter * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected function setRouter(ApiRouter $value): ApiRouter { @@ -60,7 +60,7 @@ protected function setRouter(ApiRouter $value): ApiRouter * * @return ApiRouter * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function getRouter(): ApiRouter { diff --git a/libraries/src/Event/Application/BeforeCompileHeadEvent.php b/libraries/src/Event/Application/BeforeCompileHeadEvent.php index fac2e681711e2..b1467a17ce4ab 100644 --- a/libraries/src/Event/Application/BeforeCompileHeadEvent.php +++ b/libraries/src/Event/Application/BeforeCompileHeadEvent.php @@ -17,7 +17,7 @@ /** * Class for BeforeCompileHead event * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ class BeforeCompileHeadEvent extends ApplicationDocumentEvent { diff --git a/libraries/src/Event/Application/BeforeExecuteEvent.php b/libraries/src/Event/Application/BeforeExecuteEvent.php index e2cc1f2d565ac..717c641ee3fa8 100644 --- a/libraries/src/Event/Application/BeforeExecuteEvent.php +++ b/libraries/src/Event/Application/BeforeExecuteEvent.php @@ -18,7 +18,7 @@ /** * Class for BeforeExecute event * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ class BeforeExecuteEvent extends ApplicationEvent { @@ -27,7 +27,7 @@ class BeforeExecuteEvent extends ApplicationEvent * * @return ?Container * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function getContainer(): ?Container { diff --git a/libraries/src/Event/Application/BeforeRenderEvent.php b/libraries/src/Event/Application/BeforeRenderEvent.php index 3841000288011..86ccf4c7355f9 100644 --- a/libraries/src/Event/Application/BeforeRenderEvent.php +++ b/libraries/src/Event/Application/BeforeRenderEvent.php @@ -16,7 +16,7 @@ /** * Class for BeforeRender event * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ class BeforeRenderEvent extends ApplicationEvent { diff --git a/libraries/src/Event/Application/BeforeRespondEvent.php b/libraries/src/Event/Application/BeforeRespondEvent.php index d55f9c247f06a..3524a312a25fe 100644 --- a/libraries/src/Event/Application/BeforeRespondEvent.php +++ b/libraries/src/Event/Application/BeforeRespondEvent.php @@ -16,7 +16,7 @@ /** * Class for BeforeRespond event * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ class BeforeRespondEvent extends ApplicationEvent { diff --git a/libraries/src/Event/Application/DeamonForkEvent.php b/libraries/src/Event/Application/DeamonForkEvent.php index 5e0a39e402314..e8ab36a654d9f 100644 --- a/libraries/src/Event/Application/DeamonForkEvent.php +++ b/libraries/src/Event/Application/DeamonForkEvent.php @@ -16,7 +16,7 @@ /** * Class for Fork event for DemonApplication * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ class DeamonForkEvent extends ApplicationEvent { diff --git a/libraries/src/Event/Application/DeamonReceiveSignalEvent.php b/libraries/src/Event/Application/DeamonReceiveSignalEvent.php index a8d5736479527..ff55fb038515c 100644 --- a/libraries/src/Event/Application/DeamonReceiveSignalEvent.php +++ b/libraries/src/Event/Application/DeamonReceiveSignalEvent.php @@ -16,7 +16,7 @@ /** * Class for ReceiveSignal event for DemonApplication * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ class DeamonReceiveSignalEvent extends ApplicationEvent { @@ -28,7 +28,7 @@ class DeamonReceiveSignalEvent extends ApplicationEvent * * @throws \BadMethodCallException * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function __construct($name, array $arguments = []) { @@ -46,7 +46,7 @@ public function __construct($name, array $arguments = []) * * @return integer * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected function setSignal(int $value): int { @@ -58,7 +58,7 @@ protected function setSignal(int $value): int * * @return integer * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function getSignal(): int { diff --git a/libraries/src/Form/Field/SchemaorgComponentSectionsField.php b/libraries/src/Form/Field/SchemaorgComponentSectionsField.php index 5cd233c71a9e0..b982ee9214e4e 100755 --- a/libraries/src/Form/Field/SchemaorgComponentSectionsField.php +++ b/libraries/src/Form/Field/SchemaorgComponentSectionsField.php @@ -14,7 +14,7 @@ /** * Form Field class for the Joomla Framework. * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ class SchemaorgComponentSectionsField extends ComponentsField { @@ -22,7 +22,7 @@ class SchemaorgComponentSectionsField extends ComponentsField * The form field type. * * @var string - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected $type = 'SchemaorgComponentSections'; /** @@ -30,7 +30,7 @@ class SchemaorgComponentSectionsField extends ComponentsField * * @return array An array of JHtml options. * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected function getOptions() { diff --git a/libraries/src/Plugin/CMSPlugin.php b/libraries/src/Plugin/CMSPlugin.php index 2c645e4e37cb1..01cdc625bf483 100644 --- a/libraries/src/Plugin/CMSPlugin.php +++ b/libraries/src/Plugin/CMSPlugin.php @@ -392,7 +392,7 @@ public function setApplication(CMSApplicationInterface $application): void * * @return string * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected function text(string $key): string { diff --git a/libraries/src/Schemaorg/SchemaorgPluginTrait.php b/libraries/src/Schemaorg/SchemaorgPluginTrait.php index 777d8de4d9dfb..2ea3af76630c7 100755 --- a/libraries/src/Schemaorg/SchemaorgPluginTrait.php +++ b/libraries/src/Schemaorg/SchemaorgPluginTrait.php @@ -18,7 +18,7 @@ /** * Trait for component schemaorg plugins. * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ trait SchemaorgPluginTrait { @@ -43,7 +43,7 @@ trait SchemaorgPluginTrait * * @return array * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public static function getSubscribedEvents(): array { @@ -59,7 +59,7 @@ public static function getSubscribedEvents(): array * * @return boolean * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected function addSchemaType(EventInterface $event) { @@ -112,7 +112,7 @@ public function onSchemaPrepareForm(EventInterface $event) * * @return array * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected function cleanupSchema(array $data) { @@ -323,7 +323,7 @@ protected function customCleanup(array $schema) * * @return boolean * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected function isSupported($context) { diff --git a/libraries/src/Schemaorg/SchemaorgServiceTrait.php b/libraries/src/Schemaorg/SchemaorgServiceTrait.php index 1d725ea0f41f7..2a7068832605e 100755 --- a/libraries/src/Schemaorg/SchemaorgServiceTrait.php +++ b/libraries/src/Schemaorg/SchemaorgServiceTrait.php @@ -20,7 +20,7 @@ trait SchemaorgServiceTrait * * @return MVCFactoryInterface * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ abstract public function getMVCFactory(): MVCFactoryInterface; } diff --git a/libraries/src/Service/Provider/Input.php b/libraries/src/Service/Provider/Input.php index 596a6e1bc56e3..507194a9ff33d 100644 --- a/libraries/src/Service/Provider/Input.php +++ b/libraries/src/Service/Provider/Input.php @@ -24,7 +24,7 @@ * @note It is strongly recommended that extensions get the input object from the application and DO NOT use this * service container. * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ class Input implements ServiceProviderInterface { @@ -35,7 +35,7 @@ class Input implements ServiceProviderInterface * * @return void * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function register(Container $container) { diff --git a/libraries/src/Session/Storage/JoomlaStorage.php b/libraries/src/Session/Storage/JoomlaStorage.php index 4b37b9a56b4e6..1d725901ff17d 100644 --- a/libraries/src/Session/Storage/JoomlaStorage.php +++ b/libraries/src/Session/Storage/JoomlaStorage.php @@ -44,7 +44,7 @@ class JoomlaStorage extends NativeStorage * The domain to set in the session cookie * * @var string - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ private $cookieDomain = ''; @@ -52,7 +52,7 @@ class JoomlaStorage extends NativeStorage * The path to set in the session cookie * * @var string - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ private $cookiePath = '/'; diff --git a/libraries/src/Version.php b/libraries/src/Version.php index c081f9f98d981..ec3e4e1a1cba0 100644 --- a/libraries/src/Version.php +++ b/libraries/src/Version.php @@ -66,7 +66,7 @@ final class Version * @var string * @since 3.8.0 */ - public const EXTRA_VERSION = 'alpha3-dev'; + public const EXTRA_VERSION = 'alpha3'; /** * Development status. @@ -74,7 +74,7 @@ final class Version * @var string * @since 3.5 */ - public const DEV_STATUS = 'Development'; + public const DEV_STATUS = 'Alpha'; /** * Code name. @@ -90,7 +90,7 @@ final class Version * @var string * @since 3.5 */ - public const RELDATE = '27-June-2023'; + public const RELDATE = '25-July-2023'; /** * Release time. @@ -98,7 +98,7 @@ final class Version * @var string * @since 3.5 */ - public const RELTIME = '17:12'; + public const RELTIME = '15:08'; /** * Release timezone. diff --git a/plugins/content/joomla/src/Extension/Joomla.php b/plugins/content/joomla/src/Extension/Joomla.php index 45fb000338cf9..0f8584b9d60a1 100644 --- a/plugins/content/joomla/src/Extension/Joomla.php +++ b/plugins/content/joomla/src/Extension/Joomla.php @@ -249,7 +249,7 @@ public function onSchemaBeforeCompileHead(EventInterface $event) * * @return void * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ private function injectContentSchema(string $context, Registry $schema) { @@ -380,7 +380,7 @@ private function injectContentSchema(string $context, Registry $schema) * * @return array * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ private function createArticleSchema(object $article) { @@ -466,7 +466,7 @@ private function createArticleSchema(object $article) * * @return void * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ private function injectContactSchema(string $context, Registry $schema) { @@ -563,7 +563,7 @@ private function injectContactSchema(string $context, Registry $schema) * * @return array * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ private function createContactSchema(object $contact) { diff --git a/plugins/schemaorg/blogposting/blogposting.xml b/plugins/schemaorg/blogposting/blogposting.xml index 95b0811d5cadc..4cad619f2ae28 100755 --- a/plugins/schemaorg/blogposting/blogposting.xml +++ b/plugins/schemaorg/blogposting/blogposting.xml @@ -7,7 +7,7 @@ GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org - __DEPLOY_VERSION__ + 5.0.0 PLG_SCHEMAORG_BLOGPOSTING_XML_DESCRIPTION Joomla\Plugin\Schemaorg\Blogposting diff --git a/plugins/schemaorg/blogposting/services/provider.php b/plugins/schemaorg/blogposting/services/provider.php index cb214f669c6a1..40e888af6eb5d 100644 --- a/plugins/schemaorg/blogposting/services/provider.php +++ b/plugins/schemaorg/blogposting/services/provider.php @@ -26,7 +26,7 @@ * * @return void * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function register(Container $container) { diff --git a/plugins/schemaorg/blogposting/src/Extension/Blogposting.php b/plugins/schemaorg/blogposting/src/Extension/Blogposting.php index 48338b9fd245d..5aa2e05ffbf03 100755 --- a/plugins/schemaorg/blogposting/src/Extension/Blogposting.php +++ b/plugins/schemaorg/blogposting/src/Extension/Blogposting.php @@ -23,7 +23,7 @@ /** * Schemaorg Plugin * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ final class Blogposting extends CMSPlugin implements SubscriberInterface { @@ -33,7 +33,7 @@ final class Blogposting extends CMSPlugin implements SubscriberInterface * Load the language file on instantiation. * * @var boolean - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected $autoloadLanguage = true; @@ -41,7 +41,7 @@ final class Blogposting extends CMSPlugin implements SubscriberInterface * The name of the schema form * * @var string - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected $pluginName = 'BlogPosting'; diff --git a/plugins/schemaorg/book/book.xml b/plugins/schemaorg/book/book.xml index 522c2b30137d8..c74e3274237e8 100755 --- a/plugins/schemaorg/book/book.xml +++ b/plugins/schemaorg/book/book.xml @@ -7,7 +7,7 @@ GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org - __DEPLOY_VERSION__ + 5.0.0 PLG_SCHEMAORG_BOOK_XML_DESCRIPTION Joomla\Plugin\Schemaorg\Book diff --git a/plugins/schemaorg/book/services/provider.php b/plugins/schemaorg/book/services/provider.php index 880b95f382e81..eec2591fc7001 100644 --- a/plugins/schemaorg/book/services/provider.php +++ b/plugins/schemaorg/book/services/provider.php @@ -26,7 +26,7 @@ * * @return void * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function register(Container $container) { diff --git a/plugins/schemaorg/book/src/Extension/Book.php b/plugins/schemaorg/book/src/Extension/Book.php index bfcffde26af12..a432b2696d811 100755 --- a/plugins/schemaorg/book/src/Extension/Book.php +++ b/plugins/schemaorg/book/src/Extension/Book.php @@ -23,7 +23,7 @@ /** * Schemaorg Plugin * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ final class Book extends CMSPlugin implements SubscriberInterface { @@ -33,7 +33,7 @@ final class Book extends CMSPlugin implements SubscriberInterface * Load the language file on instantiation. * * @var boolean - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected $autoloadLanguage = true; @@ -41,7 +41,7 @@ final class Book extends CMSPlugin implements SubscriberInterface * The name of the schema form * * @var string - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected $pluginName = 'Book'; diff --git a/plugins/schemaorg/event/event.xml b/plugins/schemaorg/event/event.xml index c581f1b500e4f..5d135f550e998 100755 --- a/plugins/schemaorg/event/event.xml +++ b/plugins/schemaorg/event/event.xml @@ -9,7 +9,7 @@ GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org - __DEPLOY_VERSION__ + 5.0.0 PLG_SCHEMAORG_EVENT_XML_DESCRIPTION Joomla\Plugin\Schemaorg\Event diff --git a/plugins/schemaorg/event/services/provider.php b/plugins/schemaorg/event/services/provider.php index 45735fdba0971..015b48013356a 100644 --- a/plugins/schemaorg/event/services/provider.php +++ b/plugins/schemaorg/event/services/provider.php @@ -26,7 +26,7 @@ * * @return void * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function register(Container $container) { diff --git a/plugins/schemaorg/event/src/Extension/Event.php b/plugins/schemaorg/event/src/Extension/Event.php index fc2c58a381344..05cd42e126f78 100755 --- a/plugins/schemaorg/event/src/Extension/Event.php +++ b/plugins/schemaorg/event/src/Extension/Event.php @@ -24,7 +24,7 @@ /** * Schemaorg Plugin * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ final class Event extends CMSPlugin implements SubscriberInterface { @@ -34,7 +34,7 @@ final class Event extends CMSPlugin implements SubscriberInterface * Load the language file on instantiation. * * @var boolean - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected $autoloadLanguage = true; @@ -42,7 +42,7 @@ final class Event extends CMSPlugin implements SubscriberInterface * The name of the schema form * * @var string - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected $pluginName = 'Event'; diff --git a/plugins/schemaorg/jobposting/jobposting.xml b/plugins/schemaorg/jobposting/jobposting.xml index 3a885d8481e0b..5c5085f05677d 100755 --- a/plugins/schemaorg/jobposting/jobposting.xml +++ b/plugins/schemaorg/jobposting/jobposting.xml @@ -9,7 +9,7 @@ GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org - __DEPLOY_VERSION__ + 5.0.0 PLG_SCHEMAORG_JOBPOSTING_XML_DESCRIPTION Joomla\Plugin\Schemaorg\JobPosting diff --git a/plugins/schemaorg/jobposting/services/provider.php b/plugins/schemaorg/jobposting/services/provider.php index 4c094429e32b8..3142b80c76548 100644 --- a/plugins/schemaorg/jobposting/services/provider.php +++ b/plugins/schemaorg/jobposting/services/provider.php @@ -26,7 +26,7 @@ * * @return void * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function register(Container $container) { diff --git a/plugins/schemaorg/jobposting/src/Extension/JobPosting.php b/plugins/schemaorg/jobposting/src/Extension/JobPosting.php index 09b1b34d28649..f4b019f1bd0f3 100755 --- a/plugins/schemaorg/jobposting/src/Extension/JobPosting.php +++ b/plugins/schemaorg/jobposting/src/Extension/JobPosting.php @@ -24,7 +24,7 @@ /** * Schemaorg Plugin * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ final class JobPosting extends CMSPlugin implements SubscriberInterface { @@ -34,7 +34,7 @@ final class JobPosting extends CMSPlugin implements SubscriberInterface * Load the language file on instantiation. * * @var boolean - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected $autoloadLanguage = true; @@ -42,7 +42,7 @@ final class JobPosting extends CMSPlugin implements SubscriberInterface * The name of the schema form * * @var string - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected $pluginName = 'JobPosting'; diff --git a/plugins/schemaorg/organization/organization.xml b/plugins/schemaorg/organization/organization.xml index aed4e84cdbfef..e2eb6a23736e8 100755 --- a/plugins/schemaorg/organization/organization.xml +++ b/plugins/schemaorg/organization/organization.xml @@ -9,7 +9,7 @@ GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org - __DEPLOY_VERSION__ + 5.0.0 PLG_SCHEMAORG_ORGANIZATION_XML_DESCRIPTION Joomla\Plugin\Schemaorg\Organization diff --git a/plugins/schemaorg/organization/services/provider.php b/plugins/schemaorg/organization/services/provider.php index e4cbb61cd6921..42a8a05d00c27 100644 --- a/plugins/schemaorg/organization/services/provider.php +++ b/plugins/schemaorg/organization/services/provider.php @@ -26,7 +26,7 @@ * * @return void * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function register(Container $container) { diff --git a/plugins/schemaorg/organization/src/Extension/Organization.php b/plugins/schemaorg/organization/src/Extension/Organization.php index fc2394771a6d2..6155bc1231185 100755 --- a/plugins/schemaorg/organization/src/Extension/Organization.php +++ b/plugins/schemaorg/organization/src/Extension/Organization.php @@ -23,7 +23,7 @@ /** * Schemaorg Plugin * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ final class Organization extends CMSPlugin implements SubscriberInterface { @@ -33,7 +33,7 @@ final class Organization extends CMSPlugin implements SubscriberInterface * Load the language file on instantiation. * * @var boolean - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected $autoloadLanguage = true; @@ -41,7 +41,7 @@ final class Organization extends CMSPlugin implements SubscriberInterface * The name of the schema form * * @var string - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected $pluginName = 'Organization'; } diff --git a/plugins/schemaorg/person/person.xml b/plugins/schemaorg/person/person.xml index 8d52eec5d21b8..b26d73cd68396 100755 --- a/plugins/schemaorg/person/person.xml +++ b/plugins/schemaorg/person/person.xml @@ -9,7 +9,7 @@ GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org - __DEPLOY_VERSION__ + 5.0.0 PLG_SCHEMAORG_PERSON_XML_DESCRIPTION Joomla\Plugin\Schemaorg\Person diff --git a/plugins/schemaorg/person/services/provider.php b/plugins/schemaorg/person/services/provider.php index eeabbb502352f..1e7954d46b650 100644 --- a/plugins/schemaorg/person/services/provider.php +++ b/plugins/schemaorg/person/services/provider.php @@ -26,7 +26,7 @@ * * @return void * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function register(Container $container) { diff --git a/plugins/schemaorg/person/src/Extension/Person.php b/plugins/schemaorg/person/src/Extension/Person.php index 67b265129e47c..9c5ea3fc82e88 100755 --- a/plugins/schemaorg/person/src/Extension/Person.php +++ b/plugins/schemaorg/person/src/Extension/Person.php @@ -23,7 +23,7 @@ /** * Schemaorg Plugin * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ final class Person extends CMSPlugin implements SubscriberInterface { @@ -33,7 +33,7 @@ final class Person extends CMSPlugin implements SubscriberInterface * Load the language file on instantiation. * * @var boolean - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected $autoloadLanguage = true; @@ -41,7 +41,7 @@ final class Person extends CMSPlugin implements SubscriberInterface * The name of the schema form * * @var string - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected $pluginName = 'Person'; } diff --git a/plugins/schemaorg/recipe/recipe.xml b/plugins/schemaorg/recipe/recipe.xml index 2be7f56b245fa..9554887e96d42 100755 --- a/plugins/schemaorg/recipe/recipe.xml +++ b/plugins/schemaorg/recipe/recipe.xml @@ -9,7 +9,7 @@ GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org - __DEPLOY_VERSION__ + 5.0.0 PLG_SCHEMAORG_RECIPE_XML_DESCRIPTION Joomla\Plugin\Schemaorg\Recipe diff --git a/plugins/schemaorg/recipe/services/provider.php b/plugins/schemaorg/recipe/services/provider.php index 28e682a1f0858..e38a1189486aa 100644 --- a/plugins/schemaorg/recipe/services/provider.php +++ b/plugins/schemaorg/recipe/services/provider.php @@ -26,7 +26,7 @@ * * @return void * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function register(Container $container) { diff --git a/plugins/schemaorg/recipe/src/Extension/Recipe.php b/plugins/schemaorg/recipe/src/Extension/Recipe.php index f0c7136a14864..e46f87d63594d 100755 --- a/plugins/schemaorg/recipe/src/Extension/Recipe.php +++ b/plugins/schemaorg/recipe/src/Extension/Recipe.php @@ -23,7 +23,7 @@ /** * Schemaorg Plugin * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ final class Recipe extends CMSPlugin implements SubscriberInterface { @@ -33,7 +33,7 @@ final class Recipe extends CMSPlugin implements SubscriberInterface * Load the language file on instantiation. * * @var boolean - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected $autoloadLanguage = true; @@ -41,7 +41,7 @@ final class Recipe extends CMSPlugin implements SubscriberInterface * The name of the schema form * * @var string - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected $pluginName = 'Recipe'; diff --git a/plugins/system/compat/src/Extension/Compat.php b/plugins/system/compat/src/Extension/Compat.php index 063b914ad33fc..246f3389ee5ae 100644 --- a/plugins/system/compat/src/Extension/Compat.php +++ b/plugins/system/compat/src/Extension/Compat.php @@ -24,7 +24,7 @@ /** * Joomla! Compat Plugin. * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ final class Compat extends CMSPlugin implements SubscriberInterface { @@ -33,7 +33,7 @@ final class Compat extends CMSPlugin implements SubscriberInterface * * @return array * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public static function getSubscribedEvents(): array { @@ -83,7 +83,7 @@ public function __construct(DispatcherInterface $dispatcher, array $config = []) * @param Event $event * @return void * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function onAfterInitialiseDocument(AfterInitialiseDocumentEvent $event) { diff --git a/plugins/system/schemaorg/schemaorg.xml b/plugins/system/schemaorg/schemaorg.xml index 43cc6b9566d91..ac73d8973b19f 100755 --- a/plugins/system/schemaorg/schemaorg.xml +++ b/plugins/system/schemaorg/schemaorg.xml @@ -9,7 +9,7 @@ GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org - __DEPLOY_VERSION__ + 5.0.0 PLG_SYSTEM_SCHEMAORG_XML_DESCRIPTION Joomla\Plugin\System\Schemaorg diff --git a/plugins/system/schemaorg/services/provider.php b/plugins/system/schemaorg/services/provider.php index 8259a319508f7..2807f9a42aa58 100644 --- a/plugins/system/schemaorg/services/provider.php +++ b/plugins/system/schemaorg/services/provider.php @@ -27,7 +27,7 @@ * * @return void * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function register(Container $container) { diff --git a/plugins/system/schemaorg/src/Extension/Schemaorg.php b/plugins/system/schemaorg/src/Extension/Schemaorg.php index b7981eeaaa0ad..ace28ebeb50ee 100755 --- a/plugins/system/schemaorg/src/Extension/Schemaorg.php +++ b/plugins/system/schemaorg/src/Extension/Schemaorg.php @@ -35,7 +35,7 @@ /** * Schemaorg System Plugin * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ final class Schemaorg extends CMSPlugin implements SubscriberInterface { @@ -46,7 +46,7 @@ final class Schemaorg extends CMSPlugin implements SubscriberInterface * Load the language file on instantiation. * * @var boolean - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ protected $autoloadLanguage = true; @@ -55,7 +55,7 @@ final class Schemaorg extends CMSPlugin implements SubscriberInterface * * @return array * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public static function getSubscribedEvents(): array { @@ -72,7 +72,7 @@ public static function getSubscribedEvents(): array * * @param EventInterface $event The event * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 * */ public function onContentPrepareData(EventInterface $event) @@ -137,7 +137,7 @@ public function onContentPrepareData(EventInterface $event) * * @param EventInterface $event The event * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function onContentPrepareForm(EventInterface $event) { @@ -198,7 +198,7 @@ public function onContentPrepareForm(EventInterface $event) * * @return boolean * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 * */ public function onContentAfterSave(EventInterface $event) @@ -291,7 +291,7 @@ public function onContentAfterSave(EventInterface $event) /** * This event is triggered before the framework creates the Head section of the Document * - * @since __DEPLOY_VERSION__ + * @since 5.0.0 */ public function onBeforeCompileHead() { From 26fc0e870531841e4aae7afa5fb671a8d64747bc Mon Sep 17 00:00:00 2001 From: Harald Leithner Date: Tue, 25 Jul 2023 18:02:03 +0200 Subject: [PATCH 061/126] Reset to dev --- administrator/manifests/files/joomla.xml | 2 +- libraries/src/Version.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/administrator/manifests/files/joomla.xml b/administrator/manifests/files/joomla.xml index 248fc777e1829..703f7fc57bcf7 100644 --- a/administrator/manifests/files/joomla.xml +++ b/administrator/manifests/files/joomla.xml @@ -6,7 +6,7 @@ www.joomla.org (C) 2019 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt - 5.0.0-alpha3 + 5.0.0-alpha4-dev 2023-07 FILES_JOOMLA_XML_DESCRIPTION diff --git a/libraries/src/Version.php b/libraries/src/Version.php index ec3e4e1a1cba0..88384a083accd 100644 --- a/libraries/src/Version.php +++ b/libraries/src/Version.php @@ -66,7 +66,7 @@ final class Version * @var string * @since 3.8.0 */ - public const EXTRA_VERSION = 'alpha3'; + public const EXTRA_VERSION = 'alpha4-dev'; /** * Development status. @@ -74,7 +74,7 @@ final class Version * @var string * @since 3.5 */ - public const DEV_STATUS = 'Alpha'; + public const DEV_STATUS = 'Development'; /** * Code name. @@ -98,7 +98,7 @@ final class Version * @var string * @since 3.5 */ - public const RELTIME = '15:08'; + public const RELTIME = '17:01'; /** * Release timezone. From 16f6e3af366c6f816ae9e27f49c52beaac232419 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Tue, 25 Jul 2023 17:42:50 +0100 Subject: [PATCH 062/126] [5.0] schemaorg missing namespace (#41237) Removes the code that disables phpcs checking for a missing namespace as it is present. fixes some codestyle at the same time codereview and if it passes phpcs checks --- plugins/schemaorg/blogposting/src/Extension/Blogposting.php | 4 +--- plugins/schemaorg/book/src/Extension/Book.php | 6 ++---- plugins/schemaorg/event/src/Extension/Event.php | 3 --- plugins/schemaorg/jobposting/src/Extension/JobPosting.php | 3 --- .../schemaorg/organization/src/Extension/Organization.php | 6 ++---- plugins/schemaorg/person/src/Extension/Person.php | 2 -- plugins/schemaorg/recipe/src/Extension/Recipe.php | 2 -- 7 files changed, 5 insertions(+), 21 deletions(-) diff --git a/plugins/schemaorg/blogposting/src/Extension/Blogposting.php b/plugins/schemaorg/blogposting/src/Extension/Blogposting.php index 5aa2e05ffbf03..c55458f76be15 100755 --- a/plugins/schemaorg/blogposting/src/Extension/Blogposting.php +++ b/plugins/schemaorg/blogposting/src/Extension/Blogposting.php @@ -1,13 +1,11 @@ * @license GNU General Public License version 2 or later; see LICENSE.txt - - * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace */ namespace Joomla\Plugin\Schemaorg\Blogposting\Extension; diff --git a/plugins/schemaorg/book/src/Extension/Book.php b/plugins/schemaorg/book/src/Extension/Book.php index a432b2696d811..1fdda1b50ec79 100755 --- a/plugins/schemaorg/book/src/Extension/Book.php +++ b/plugins/schemaorg/book/src/Extension/Book.php @@ -2,12 +2,10 @@ /** * @package Joomla.Plugin - * @subpackage Schemaorg.book - * + * @subpackage Schemaorg.book + * * @copyright (C) 2023 Open Source Matters, Inc. * @license GNU General Public License version 2 or later; see LICENSE.txt - - * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace */ namespace Joomla\Plugin\Schemaorg\Book\Extension; diff --git a/plugins/schemaorg/event/src/Extension/Event.php b/plugins/schemaorg/event/src/Extension/Event.php index 05cd42e126f78..702330dabf197 100755 --- a/plugins/schemaorg/event/src/Extension/Event.php +++ b/plugins/schemaorg/event/src/Extension/Event.php @@ -3,12 +3,9 @@ /** * @package Joomla.Plugin * @subpackage Schemaorg.event - * @subpackage Schemaorg.event * * @copyright (C) 2023 Open Source Matters, Inc. * @license GNU General Public License version 2 or later; see LICENSE.txt - - * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace */ namespace Joomla\Plugin\Schemaorg\Event\Extension; diff --git a/plugins/schemaorg/jobposting/src/Extension/JobPosting.php b/plugins/schemaorg/jobposting/src/Extension/JobPosting.php index f4b019f1bd0f3..e56f62f587aed 100755 --- a/plugins/schemaorg/jobposting/src/Extension/JobPosting.php +++ b/plugins/schemaorg/jobposting/src/Extension/JobPosting.php @@ -3,12 +3,9 @@ /** * @package Joomla.Plugin * @subpackage Schemaorg.jobposting - * @subpackage Schemaorg.jobposting * * @copyright (C) 2023 Open Source Matters, Inc. * @license GNU General Public License version 2 or later; see LICENSE.txt - - * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace */ namespace Joomla\Plugin\Schemaorg\JobPosting\Extension; diff --git a/plugins/schemaorg/organization/src/Extension/Organization.php b/plugins/schemaorg/organization/src/Extension/Organization.php index 6155bc1231185..1ccb7e5f4131c 100755 --- a/plugins/schemaorg/organization/src/Extension/Organization.php +++ b/plugins/schemaorg/organization/src/Extension/Organization.php @@ -2,12 +2,10 @@ /** * @package Joomla.Plugin -* @subpackage Schemaorg.organization -* + * @subpackage Schemaorg.organization + * * @copyright (C) 2023 Open Source Matters, Inc. * @license GNU General Public License version 2 or later; see LICENSE.txt - - * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace */ namespace Joomla\Plugin\Schemaorg\Organization\Extension; diff --git a/plugins/schemaorg/person/src/Extension/Person.php b/plugins/schemaorg/person/src/Extension/Person.php index 9c5ea3fc82e88..34a174f7c5c4d 100755 --- a/plugins/schemaorg/person/src/Extension/Person.php +++ b/plugins/schemaorg/person/src/Extension/Person.php @@ -6,8 +6,6 @@ * * @copyright (C) 2023 Open Source Matters, Inc. * @license GNU General Public License version 2 or later; see LICENSE.txt - - * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace */ namespace Joomla\Plugin\Schemaorg\Person\Extension; diff --git a/plugins/schemaorg/recipe/src/Extension/Recipe.php b/plugins/schemaorg/recipe/src/Extension/Recipe.php index e46f87d63594d..92320159dc17a 100755 --- a/plugins/schemaorg/recipe/src/Extension/Recipe.php +++ b/plugins/schemaorg/recipe/src/Extension/Recipe.php @@ -6,8 +6,6 @@ * * @copyright (C) 2023 Open Source Matters, Inc. * @license GNU General Public License version 2 or later; see LICENSE.txt - - * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace */ namespace Joomla\Plugin\Schemaorg\Recipe\Extension; From 9c69035339e2a559525c5dc61339665191bebb5d Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Tue, 25 Jul 2023 17:45:03 +0100 Subject: [PATCH 063/126] [5.0] schemaorg missing copyright (#41234) * [5.0] schemaorg missing copyright Adds missing copyright statement code review First reported https://github.com/joomla/joomla-cms/pull/41151#discussion_r1261749182 https://github.com/joomla/joomla-cms/pull/41151#discussion_r1261749351 * Update libraries/src/Schemaorg/SchemaorgServiceTrait.php Co-authored-by: Richard Fath --------- Co-authored-by: Richard Fath --- libraries/src/Schemaorg/SchemaorgServiceInterface.php | 7 +++++++ libraries/src/Schemaorg/SchemaorgServiceTrait.php | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/libraries/src/Schemaorg/SchemaorgServiceInterface.php b/libraries/src/Schemaorg/SchemaorgServiceInterface.php index 63b58a26306de..f4a9195b3bfbc 100755 --- a/libraries/src/Schemaorg/SchemaorgServiceInterface.php +++ b/libraries/src/Schemaorg/SchemaorgServiceInterface.php @@ -1,5 +1,12 @@ + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + namespace Joomla\CMS\Schemaorg; // phpcs:disable PSR1.Files.SideEffects diff --git a/libraries/src/Schemaorg/SchemaorgServiceTrait.php b/libraries/src/Schemaorg/SchemaorgServiceTrait.php index 2a7068832605e..3f444aaa43f69 100755 --- a/libraries/src/Schemaorg/SchemaorgServiceTrait.php +++ b/libraries/src/Schemaorg/SchemaorgServiceTrait.php @@ -1,5 +1,12 @@ + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + namespace Joomla\CMS\Schemaorg; use Joomla\CMS\MVC\Factory\MVCFactoryInterface; From a2439bc1f37fdcbc51b8a9299f4b4fd87a58ba99 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Tue, 25 Jul 2023 17:45:30 +0100 Subject: [PATCH 064/126] [5.0] Schemaorg missing string (#41232) Every .sys.ini file has an XML_DESCRIPTION string and every .ini file has the same string. This must have been done for a reason and this one language file is missing the string Core Review (originally reported and dismissed https://github.com/joomla/joomla-cms/pull/41151#discussion_r1261731953) --- administrator/language/en-GB/plg_schemaorg_jobposting.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/administrator/language/en-GB/plg_schemaorg_jobposting.ini b/administrator/language/en-GB/plg_schemaorg_jobposting.ini index 82fe7821a1786..cc1721ee0768a 100755 --- a/administrator/language/en-GB/plg_schemaorg_jobposting.ini +++ b/administrator/language/en-GB/plg_schemaorg_jobposting.ini @@ -48,3 +48,4 @@ PLG_SCHEMAORG_JOBPOSTING_FIELD_URL_LABEL="URL" PLG_SCHEMAORG_JOBPOSTING_FIELD_VALIDTHROUGH_LABEL="Valid Through" PLG_SCHEMAORG_JOBPOSTING_FIELD_VALUE_LABEL="Value" PLG_SCHEMAORG_JOBPOSTING="Schema.org - JobPosting" +PLG_SCHEMAORG_JOBPOSTING_XML_DESCRIPTION="Adds JobPosting as a new schema type in existing schemas." From ebda94cec992868b83a93689c0a8749902bc998e Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Tue, 25 Jul 2023 17:55:16 +0100 Subject: [PATCH 065/126] [5.0] schemaorg xml (#41235) This is just codestyle changes removing extra spaces and new lines which came from my misformatted code suggestions And a missing xml definition in a file header code review --- .../schemaorg/blogposting/forms/schemaorg.xml | 400 +++++++------ plugins/schemaorg/book/forms/schemaorg.xml | 420 +++++++------ plugins/schemaorg/event/event.xml | 88 ++- plugins/schemaorg/event/forms/schemaorg.xml | 551 +++++++++--------- .../schemaorg/jobposting/forms/schemaorg.xml | 8 +- plugins/schemaorg/jobposting/jobposting.xml | 88 ++- .../organization/forms/schemaorg.xml | 247 ++++---- .../schemaorg/organization/organization.xml | 88 ++- plugins/schemaorg/person/forms/schemaorg.xml | 225 +++---- plugins/schemaorg/person/person.xml | 88 ++- plugins/schemaorg/recipe/forms/duration.xml | 29 +- plugins/schemaorg/recipe/forms/schemaorg.xml | 538 ++++++++--------- plugins/schemaorg/recipe/recipe.xml | 88 ++- plugins/system/schemaorg/schemaorg.xml | 156 +++-- 14 files changed, 1488 insertions(+), 1526 deletions(-) diff --git a/plugins/schemaorg/blogposting/forms/schemaorg.xml b/plugins/schemaorg/blogposting/forms/schemaorg.xml index d6c722a735cfd..0286923639019 100755 --- a/plugins/schemaorg/blogposting/forms/schemaorg.xml +++ b/plugins/schemaorg/blogposting/forms/schemaorg.xml @@ -1,201 +1,199 @@ - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
-
-
- + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ diff --git a/plugins/schemaorg/book/forms/schemaorg.xml b/plugins/schemaorg/book/forms/schemaorg.xml index 055c8216c84cd..b2ef2f1959eb0 100755 --- a/plugins/schemaorg/book/forms/schemaorg.xml +++ b/plugins/schemaorg/book/forms/schemaorg.xml @@ -1,215 +1,205 @@ - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
-
-
- + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ diff --git a/plugins/schemaorg/event/event.xml b/plugins/schemaorg/event/event.xml index 5d135f550e998..10b4b8b200b92 100755 --- a/plugins/schemaorg/event/event.xml +++ b/plugins/schemaorg/event/event.xml @@ -1,45 +1,43 @@ - - - plg_schemaorg_event - Joomla! Project - 2023-07 - - (C) 2023 Open Source Matters, Inc. - - GNU General Public License version 2 or later; see LICENSE.txt - admin@joomla.org - www.joomla.org - 5.0.0 - PLG_SCHEMAORG_EVENT_XML_DESCRIPTION - Joomla\Plugin\Schemaorg\Event - - services - src - - - language/en-GB/plg_schemaorg_event.ini - language/en-GB/plg_schemaorg_event.sys.ini - - - -
- - -
-
-
-
+ + + plg_schemaorg_event + Joomla! Project + 2023-07 + (C) 2023 Open Source Matters, Inc. + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + 5.0.0 + PLG_SCHEMAORG_EVENT_XML_DESCRIPTION + Joomla\Plugin\Schemaorg\Event + + services + src + + + language/en-GB/plg_schemaorg_event.ini + language/en-GB/plg_schemaorg_event.sys.ini + + + +
+ + +
+
+
+
diff --git a/plugins/schemaorg/event/forms/schemaorg.xml b/plugins/schemaorg/event/forms/schemaorg.xml index bb4519437d31c..0f65a6f5d6416 100755 --- a/plugins/schemaorg/event/forms/schemaorg.xml +++ b/plugins/schemaorg/event/forms/schemaorg.xml @@ -1,280 +1,271 @@ - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -
- - - - - - - -
-
-
- + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ diff --git a/plugins/schemaorg/jobposting/forms/schemaorg.xml b/plugins/schemaorg/jobposting/forms/schemaorg.xml index d30c7f79625fc..1c92176d85f53 100755 --- a/plugins/schemaorg/jobposting/forms/schemaorg.xml +++ b/plugins/schemaorg/jobposting/forms/schemaorg.xml @@ -361,7 +361,7 @@ >
- + + > @@ -431,9 +431,9 @@ label="PLG_SCHEMAORG_BOOK_FIELD_GENERIC_VALUE_LABEL" /> - +
- +
diff --git a/plugins/schemaorg/jobposting/jobposting.xml b/plugins/schemaorg/jobposting/jobposting.xml index 5c5085f05677d..db9258bdc7f4d 100755 --- a/plugins/schemaorg/jobposting/jobposting.xml +++ b/plugins/schemaorg/jobposting/jobposting.xml @@ -1,45 +1,43 @@ - - - plg_schemaorg_jobposting - Joomla! Project - 2023-07 - - (C) 2023 Open Source Matters, Inc. - - GNU General Public License version 2 or later; see LICENSE.txt - admin@joomla.org - www.joomla.org - 5.0.0 - PLG_SCHEMAORG_JOBPOSTING_XML_DESCRIPTION - Joomla\Plugin\Schemaorg\JobPosting - - services - src - - - language/en-GB/plg_schemaorg_jobposting.ini - language/en-GB/plg_schemaorg_jobposting.sys.ini - - - -
- - -
-
-
-
+ + + plg_schemaorg_jobposting + Joomla! Project + 2023-07 + (C) 2023 Open Source Matters, Inc. + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + 5.0.0 + PLG_SCHEMAORG_JOBPOSTING_XML_DESCRIPTION + Joomla\Plugin\Schemaorg\JobPosting + + services + src + + + language/en-GB/plg_schemaorg_jobposting.ini + language/en-GB/plg_schemaorg_jobposting.sys.ini + + + +
+ + +
+
+
+
\ No newline at end of file diff --git a/plugins/schemaorg/organization/forms/schemaorg.xml b/plugins/schemaorg/organization/forms/schemaorg.xml index 33826bcfc3f38..0ba1732f7fa22 100755 --- a/plugins/schemaorg/organization/forms/schemaorg.xml +++ b/plugins/schemaorg/organization/forms/schemaorg.xml @@ -1,126 +1,121 @@ - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - -
-
-
- + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+
+ diff --git a/plugins/schemaorg/organization/organization.xml b/plugins/schemaorg/organization/organization.xml index e2eb6a23736e8..72a3beb17c983 100755 --- a/plugins/schemaorg/organization/organization.xml +++ b/plugins/schemaorg/organization/organization.xml @@ -1,45 +1,43 @@ - - - plg_schemaorg_organization - Joomla! Project - 2023-07 - - (C) 2023 Open Source Matters, Inc. - - GNU General Public License version 2 or later; see LICENSE.txt - admin@joomla.org - www.joomla.org - 5.0.0 - PLG_SCHEMAORG_ORGANIZATION_XML_DESCRIPTION - Joomla\Plugin\Schemaorg\Organization - - services - src - - - language/en-GB/plg_schemaorg_organization.ini - language/en-GB/plg_schemaorg_organization.sys.ini - - - -
- - -
-
-
-
+ + + plg_schemaorg_organization + Joomla! Project + 2023-07 + (C) 2023 Open Source Matters, Inc. + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + 5.0.0 + PLG_SCHEMAORG_ORGANIZATION_XML_DESCRIPTION + Joomla\Plugin\Schemaorg\Organization + + services + src + + + language/en-GB/plg_schemaorg_organization.ini + language/en-GB/plg_schemaorg_organization.sys.ini + + + +
+ + +
+
+
+
\ No newline at end of file diff --git a/plugins/schemaorg/person/forms/schemaorg.xml b/plugins/schemaorg/person/forms/schemaorg.xml index afd0c88cd506c..8cd9b79e3bd61 100755 --- a/plugins/schemaorg/person/forms/schemaorg.xml +++ b/plugins/schemaorg/person/forms/schemaorg.xml @@ -1,112 +1,113 @@ - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
-
-
- + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ diff --git a/plugins/schemaorg/person/person.xml b/plugins/schemaorg/person/person.xml index b26d73cd68396..622bc3ebfc6d2 100755 --- a/plugins/schemaorg/person/person.xml +++ b/plugins/schemaorg/person/person.xml @@ -1,45 +1,43 @@ - - - plg_schemaorg_person - Joomla! Project - 2023-07 - - (C) 2023 Open Source Matters, Inc. - - GNU General Public License version 2 or later; see LICENSE.txt - admin@joomla.org - www.joomla.org - 5.0.0 - PLG_SCHEMAORG_PERSON_XML_DESCRIPTION - Joomla\Plugin\Schemaorg\Person - - services - src - - - language/en-GB/plg_schemaorg_person.ini - language/en-GB/plg_schemaorg_person.sys.ini - - - -
- - -
-
-
-
+ + + plg_schemaorg_person + Joomla! Project + 2023-07 + (C) 2023 Open Source Matters, Inc. + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + 5.0.0 + PLG_SCHEMAORG_PERSON_XML_DESCRIPTION + Joomla\Plugin\Schemaorg\Person + + services + src + + + language/en-GB/plg_schemaorg_person.ini + language/en-GB/plg_schemaorg_person.sys.ini + + + +
+ + +
+
+
+
\ No newline at end of file diff --git a/plugins/schemaorg/recipe/forms/duration.xml b/plugins/schemaorg/recipe/forms/duration.xml index 1ecb84405d63c..ccadf4d92867b 100755 --- a/plugins/schemaorg/recipe/forms/duration.xml +++ b/plugins/schemaorg/recipe/forms/duration.xml @@ -1,14 +1,15 @@ -
- - - - + +
+ + + + diff --git a/plugins/schemaorg/recipe/forms/schemaorg.xml b/plugins/schemaorg/recipe/forms/schemaorg.xml index 80fd779913e8c..ac61e6e158009 100755 --- a/plugins/schemaorg/recipe/forms/schemaorg.xml +++ b/plugins/schemaorg/recipe/forms/schemaorg.xml @@ -1,269 +1,269 @@ - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
-
-
- + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ diff --git a/plugins/schemaorg/recipe/recipe.xml b/plugins/schemaorg/recipe/recipe.xml index 9554887e96d42..d143bfa8b6f9d 100755 --- a/plugins/schemaorg/recipe/recipe.xml +++ b/plugins/schemaorg/recipe/recipe.xml @@ -1,45 +1,43 @@ - - - plg_schemaorg_recipe - Joomla! Project - 2023-07 - - (C) 2023 Open Source Matters, Inc. - - GNU General Public License version 2 or later; see LICENSE.txt - admin@joomla.org - www.joomla.org - 5.0.0 - PLG_SCHEMAORG_RECIPE_XML_DESCRIPTION - Joomla\Plugin\Schemaorg\Recipe - - services - src - - - language/en-GB/plg_schemaorg_recipe.ini - language/en-GB/plg_schemaorg_recipe.sys.ini - - - -
- - -
-
-
-
+ + + plg_schemaorg_recipe + Joomla! Project + 2023-07 + (C) 2023 Open Source Matters, Inc. + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + 5.0.0 + PLG_SCHEMAORG_RECIPE_XML_DESCRIPTION + Joomla\Plugin\Schemaorg\Recipe + + services + src + + + language/en-GB/plg_schemaorg_recipe.ini + language/en-GB/plg_schemaorg_recipe.sys.ini + + + +
+ + +
+
+
+
\ No newline at end of file diff --git a/plugins/system/schemaorg/schemaorg.xml b/plugins/system/schemaorg/schemaorg.xml index ac73d8973b19f..53f9be13c945e 100755 --- a/plugins/system/schemaorg/schemaorg.xml +++ b/plugins/system/schemaorg/schemaorg.xml @@ -1,80 +1,76 @@ - - - plg_system_schemaorg - Joomla! Project - 2023-07 - - (C) 2023 Open Source Matters, Inc. - - GNU General Public License version 2 or later; see LICENSE.txt - admin@joomla.org - www.joomla.org - 5.0.0 - PLG_SYSTEM_SCHEMAORG_XML_DESCRIPTION - Joomla\Plugin\System\Schemaorg - - services - src - - - language/en-GB/plg_system_schemaorg.ini - language/en-GB/plg_system_schemaorg.sys.ini - - - -
- - - - - - - - - - - - -
- - -
-
-
-
-
+ + + plg_system_schemaorg + Joomla! Project + 2023-07 + (C) 2023 Open Source Matters, Inc. + GNU General Public License version 2 or later; see LICENSE.txt + admin@joomla.org + www.joomla.org + 5.0.0 + PLG_SYSTEM_SCHEMAORG_XML_DESCRIPTION + Joomla\Plugin\System\Schemaorg + + services + src + + + language/en-GB/plg_system_schemaorg.ini + language/en-GB/plg_system_schemaorg.sys.ini + + + +
+ + + + + + + + + + + +
+ + +
+
+
+
+
\ No newline at end of file From 3643ddde1d6d4311ebe68f766b4779c4e1551100 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Tue, 25 Jul 2023 18:22:54 +0100 Subject: [PATCH 066/126] [5.0] schemaorg spelling alrady\already (#41241) code review only --- plugins/content/joomla/src/Extension/Joomla.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/content/joomla/src/Extension/Joomla.php b/plugins/content/joomla/src/Extension/Joomla.php index 0f8584b9d60a1..7d0acf8ee9514 100644 --- a/plugins/content/joomla/src/Extension/Joomla.php +++ b/plugins/content/joomla/src/Extension/Joomla.php @@ -258,7 +258,7 @@ private function injectContentSchema(string $context, Registry $schema) list($extension, $view, $id) = explode('.', $context); - // Check if there is alrady a schema for the item, then skip it + // Check if there is already a schema for the item, then skip it $mySchema = $schema->toArray(); if (!isset($mySchema['@graph']) || !is_array($mySchema['@graph'])) { @@ -475,7 +475,7 @@ private function injectContactSchema(string $context, Registry $schema) list($extension, $view, $id) = explode('.', $context); - // Check if there is alrady a schema for the item, then skip it + // Check if there is already a schema for the item, then skip it $mySchema = $schema->toArray(); if (!isset($mySchema['@graph']) || !is_array($mySchema['@graph'])) { From 34a016026a0615291df73eb42ef52181ab6e15e0 Mon Sep 17 00:00:00 2001 From: heelc29 <66922325+heelc29@users.noreply.github.com> Date: Tue, 25 Jul 2023 22:27:45 +0200 Subject: [PATCH 067/126] [5.0] update language strings of eos quickicon plugin (#41248) --- administrator/language/en-GB/plg_quickicon_eos.ini | 14 +++++++------- .../language/en-GB/plg_quickicon_eos.sys.ini | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/administrator/language/en-GB/plg_quickicon_eos.ini b/administrator/language/en-GB/plg_quickicon_eos.ini index f48624b651afb..64e44bf0bda4a 100644 --- a/administrator/language/en-GB/plg_quickicon_eos.ini +++ b/administrator/language/en-GB/plg_quickicon_eos.ini @@ -3,11 +3,11 @@ ; License GNU General Public License version 2 or later; see LICENSE.txt ; Note : All ini files need to be saved as UTF-8 -PLG_QUICKICON_EOS="Quick Icon - Joomla 4 End Of Support Notification" -PLG_QUICKICON_EOS_MESSAGE_ERROR_SUPPORT_ENDED="

Support has ended for your version of Joomla 4. Upgrade to Joomla 5 as soon as possible.

" -PLG_QUICKICON_EOS_MESSAGE_INFO_01="

Joomla 5 has arrived! Find out all that Joomla 5 has to offer you. Check the landing page for Joomla 5 features and improvements.

" -PLG_QUICKICON_EOS_MESSAGE_INFO_02="

When is the time to upgrade to Joomla 5? Once the extensions your site needs are compatible. Learn how to use the Pre-Update Checker.

" -PLG_QUICKICON_EOS_MESSAGE_WARNING_SECURITY_ONLY="

Joomla 4 has entered security only mode. Support ends %1$s. Start planning to upgrade to Joomla 5 today.

" -PLG_QUICKICON_EOS_MESSAGE_WARNING_SUPPORT_ENDING="

Support ends on %1$s for Joomla 4 Upgrade to Joomla 5 as soon as possible.

" +PLG_QUICKICON_EOS="Quick Icon - Joomla 5 End Of Support Notification" +PLG_QUICKICON_EOS_MESSAGE_ERROR_SUPPORT_ENDED="

Support has ended for your version of Joomla 5. Upgrade to Joomla 6 as soon as possible.

" +PLG_QUICKICON_EOS_MESSAGE_INFO_01="

Joomla 6 has arrived! Find out all that Joomla 6 has to offer you. Check the landing page for Joomla 6 features and improvements.

" +PLG_QUICKICON_EOS_MESSAGE_INFO_02="

When is the time to upgrade to Joomla 6? Once the extensions your site needs are compatible. Learn how to use the Pre-Update Checker.

" +PLG_QUICKICON_EOS_MESSAGE_WARNING_SECURITY_ONLY="

Joomla 5 has entered security only mode. Support ends %1$s. Start planning to upgrade to Joomla 6 today.

" +PLG_QUICKICON_EOS_MESSAGE_WARNING_SUPPORT_ENDING="

Support ends on %1$s for Joomla 5 Upgrade to Joomla 6 as soon as possible.

" PLG_QUICKICON_EOS_SNOOZE_BUTTON="Snooze this message for all users" -PLG_QUICKICON_EOS_XML_DESCRIPTION="Checks for the end of support status of Joomla 4 and notifies you when visiting the Control Panel page." +PLG_QUICKICON_EOS_XML_DESCRIPTION="Checks for the end of support status of Joomla 5 and notifies you when visiting the Control Panel page." diff --git a/administrator/language/en-GB/plg_quickicon_eos.sys.ini b/administrator/language/en-GB/plg_quickicon_eos.sys.ini index 3658d04c5d156..78cfc1cff5fdb 100644 --- a/administrator/language/en-GB/plg_quickicon_eos.sys.ini +++ b/administrator/language/en-GB/plg_quickicon_eos.sys.ini @@ -3,5 +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 -PLG_QUICKICON_EOS="Quick Icon - Joomla 4 End Of Support Notification" -PLG_QUICKICON_EOS_XML_DESCRIPTION="Checks for the end of support status of Joomla 4 and notifies you when visiting the Control Panel page." +PLG_QUICKICON_EOS="Quick Icon - Joomla 5 End Of Support Notification" +PLG_QUICKICON_EOS_XML_DESCRIPTION="Checks for the end of support status of Joomla 5 and notifies you when visiting the Control Panel page." From c39b8eb02df4b8985bcdc1eace1bec54944aa6e4 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Tue, 25 Jul 2023 21:28:25 +0100 Subject: [PATCH 068/126] [5.0] scheaeorg return array (#41240) phan reports Type Mismatch - hope I fixed it correctly plugins/schemaorg/blogposting/src/Extension/Blogposting.php:55 PhanTypeMismatchReturn Returning $this->cleanupDate($schema, ['datePublished','dateModified']) of type bool but customCleanup() is declared to return array plugins/schemaorg/book/src/Extension/Book.php:55 PhanTypeMismatchReturn Returning $this->cleanupDate($schema, ['datePublished']) of type bool but customCleanup() is declared to return array plugins/schemaorg/event/src/Extension/Event.php:55 PhanTypeMismatchReturn Returning $this->cleanupDate($schema, ['startDate']) of type bool but customCleanup() is declared to return array plugins/schemaorg/jobposting/src/Extension/JobPosting.php:57 PhanTypeMismatchReturn Returning $schema of type bool but customCleanup() is declared to return array plugins/schemaorg/recipe/src/Extension/Recipe.php:61 PhanTypeMismatchReturn Returning $schema of type bool but customCleanup() is declared to return array --- libraries/src/Schemaorg/SchemaorgPluginTrait.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/src/Schemaorg/SchemaorgPluginTrait.php b/libraries/src/Schemaorg/SchemaorgPluginTrait.php index 2ea3af76630c7..e46bb424a52b2 100755 --- a/libraries/src/Schemaorg/SchemaorgPluginTrait.php +++ b/libraries/src/Schemaorg/SchemaorgPluginTrait.php @@ -286,7 +286,7 @@ protected function convertToArray(array $schema, array $repeatableFields) * @param array $schema Schema form * @param array $dateKeys Keys with date fields * - * @return boolean + * @return array */ protected function cleanupDate(array $schema, array $dateKeys) { From 1b1cdab879750d36ced55cf247b61d27b0860910 Mon Sep 17 00:00:00 2001 From: heelc29 <66922325+heelc29@users.noreply.github.com> Date: Tue, 25 Jul 2023 22:29:10 +0200 Subject: [PATCH 069/126] [5.0] schemaorg utf8 encoding consistent (#41247) --- plugins/schemaorg/blogposting/blogposting.xml | 2 +- plugins/schemaorg/blogposting/forms/schemaorg.xml | 2 +- plugins/schemaorg/book/book.xml | 2 +- plugins/schemaorg/book/forms/schemaorg.xml | 2 +- plugins/schemaorg/event/event.xml | 4 ++-- plugins/schemaorg/event/forms/schemaorg.xml | 2 +- plugins/schemaorg/jobposting/forms/schemaorg.xml | 2 +- plugins/schemaorg/jobposting/jobposting.xml | 4 ++-- plugins/schemaorg/organization/forms/schemaorg.xml | 2 +- plugins/schemaorg/organization/organization.xml | 4 ++-- plugins/schemaorg/person/forms/schemaorg.xml | 2 +- plugins/schemaorg/person/person.xml | 4 ++-- plugins/schemaorg/recipe/forms/duration.xml | 2 +- plugins/schemaorg/recipe/forms/schemaorg.xml | 2 +- plugins/schemaorg/recipe/recipe.xml | 4 ++-- plugins/system/schemaorg/forms/schemaorg.xml | 2 +- plugins/system/schemaorg/schemaorg.xml | 2 +- 17 files changed, 22 insertions(+), 22 deletions(-) diff --git a/plugins/schemaorg/blogposting/blogposting.xml b/plugins/schemaorg/blogposting/blogposting.xml index 4cad619f2ae28..a7bbc65bb61e3 100755 --- a/plugins/schemaorg/blogposting/blogposting.xml +++ b/plugins/schemaorg/blogposting/blogposting.xml @@ -1,4 +1,4 @@ - + plg_schemaorg_blogposting Joomla! Project diff --git a/plugins/schemaorg/blogposting/forms/schemaorg.xml b/plugins/schemaorg/blogposting/forms/schemaorg.xml index 0286923639019..9e2e8a77514f4 100755 --- a/plugins/schemaorg/blogposting/forms/schemaorg.xml +++ b/plugins/schemaorg/blogposting/forms/schemaorg.xml @@ -1,4 +1,4 @@ - +
+ plg_schemaorg_book Joomla! Project diff --git a/plugins/schemaorg/book/forms/schemaorg.xml b/plugins/schemaorg/book/forms/schemaorg.xml index b2ef2f1959eb0..9ed5e1c002819 100755 --- a/plugins/schemaorg/book/forms/schemaorg.xml +++ b/plugins/schemaorg/book/forms/schemaorg.xml @@ -1,4 +1,4 @@ - +
+ plg_schemaorg_event Joomla! Project @@ -9,7 +9,7 @@ www.joomla.org 5.0.0 PLG_SCHEMAORG_EVENT_XML_DESCRIPTION - Joomla\Plugin\Schemaorg\Event + Joomla\Plugin\Schemaorg\Event services src diff --git a/plugins/schemaorg/event/forms/schemaorg.xml b/plugins/schemaorg/event/forms/schemaorg.xml index 0f65a6f5d6416..a0abb1a43d549 100755 --- a/plugins/schemaorg/event/forms/schemaorg.xml +++ b/plugins/schemaorg/event/forms/schemaorg.xml @@ -1,4 +1,4 @@ - +
+
+ plg_schemaorg_jobposting Joomla! Project @@ -9,7 +9,7 @@ www.joomla.org 5.0.0 PLG_SCHEMAORG_JOBPOSTING_XML_DESCRIPTION - Joomla\Plugin\Schemaorg\JobPosting + Joomla\Plugin\Schemaorg\JobPosting services src diff --git a/plugins/schemaorg/organization/forms/schemaorg.xml b/plugins/schemaorg/organization/forms/schemaorg.xml index 0ba1732f7fa22..c758dae44e3f1 100755 --- a/plugins/schemaorg/organization/forms/schemaorg.xml +++ b/plugins/schemaorg/organization/forms/schemaorg.xml @@ -1,4 +1,4 @@ - +
+ plg_schemaorg_organization Joomla! Project @@ -9,7 +9,7 @@ www.joomla.org 5.0.0 PLG_SCHEMAORG_ORGANIZATION_XML_DESCRIPTION - Joomla\Plugin\Schemaorg\Organization + - Joomla\Plugin\Schemaorg\Organization services src diff --git a/plugins/schemaorg/person/forms/schemaorg.xml b/plugins/schemaorg/person/forms/schemaorg.xml index 8cd9b79e3bd61..86c85b599b56f 100755 --- a/plugins/schemaorg/person/forms/schemaorg.xml +++ b/plugins/schemaorg/person/forms/schemaorg.xml @@ -1,4 +1,4 @@ - +
+ plg_schemaorg_person Joomla! Project @@ -9,7 +9,7 @@ www.joomla.org 5.0.0 PLG_SCHEMAORG_PERSON_XML_DESCRIPTION - Joomla\Plugin\Schemaorg\Person + Joomla\Plugin\Schemaorg\Person services src diff --git a/plugins/schemaorg/recipe/forms/duration.xml b/plugins/schemaorg/recipe/forms/duration.xml index ccadf4d92867b..78cbdb5357646 100755 --- a/plugins/schemaorg/recipe/forms/duration.xml +++ b/plugins/schemaorg/recipe/forms/duration.xml @@ -1,4 +1,4 @@ - + +
+ plg_schemaorg_recipe Joomla! Project @@ -9,7 +9,7 @@ www.joomla.org 5.0.0 PLG_SCHEMAORG_RECIPE_XML_DESCRIPTION - Joomla\Plugin\Schemaorg\Recipe + Joomla\Plugin\Schemaorg\Recipe services src diff --git a/plugins/system/schemaorg/forms/schemaorg.xml b/plugins/system/schemaorg/forms/schemaorg.xml index 3db47bf5690bc..e012a47479f39 100755 --- a/plugins/system/schemaorg/forms/schemaorg.xml +++ b/plugins/system/schemaorg/forms/schemaorg.xml @@ -1,4 +1,4 @@ - +
+ plg_system_schemaorg Joomla! Project From 75eb5cfa9f826341533ceefd6781e1c0632bed8c Mon Sep 17 00:00:00 2001 From: heelc29 <66922325+heelc29@users.noreply.github.com> Date: Tue, 25 Jul 2023 22:29:55 +0200 Subject: [PATCH 070/126] [5.0] schemaorg use injected application from plugin provider (#41246) --- libraries/src/Schemaorg/SchemaorgPluginTrait.php | 10 +--------- plugins/system/schemaorg/src/Extension/Schemaorg.php | 1 - 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/libraries/src/Schemaorg/SchemaorgPluginTrait.php b/libraries/src/Schemaorg/SchemaorgPluginTrait.php index e46bb424a52b2..8c7b168b0f0d4 100755 --- a/libraries/src/Schemaorg/SchemaorgPluginTrait.php +++ b/libraries/src/Schemaorg/SchemaorgPluginTrait.php @@ -9,7 +9,6 @@ namespace Joomla\CMS\Schemaorg; -use Joomla\CMS\Application\CMSApplication; use Joomla\CMS\Factory; use Joomla\CMS\Form\Field\ListField; use Joomla\CMS\HTML\HTMLHelper; @@ -22,13 +21,6 @@ */ trait SchemaorgPluginTrait { - /** - * The application object - * - * @var CMSApplication - */ - protected $app; - /** * Define all fields which are media type to clean them * @@ -338,7 +330,7 @@ protected function isSupported($context) return false; } - $component = $this->app->bootComponent($parts[0]); + $component = $this->getApplication()->bootComponent($parts[0]); return $component instanceof SchemaorgServiceInterface; } diff --git a/plugins/system/schemaorg/src/Extension/Schemaorg.php b/plugins/system/schemaorg/src/Extension/Schemaorg.php index ace28ebeb50ee..1d3ece0249aff 100755 --- a/plugins/system/schemaorg/src/Extension/Schemaorg.php +++ b/plugins/system/schemaorg/src/Extension/Schemaorg.php @@ -39,7 +39,6 @@ */ final class Schemaorg extends CMSPlugin implements SubscriberInterface { - // use SchemaorgPluginTrait; use DatabaseAwareTrait; /** From 755442ae1461aeccc09bf7e1406e066d1ef5384d Mon Sep 17 00:00:00 2001 From: heelc29 <66922325+heelc29@users.noreply.github.com> Date: Tue, 25 Jul 2023 22:30:14 +0200 Subject: [PATCH 071/126] [5.0] schemaorg fix deploy version (#41245) --- libraries/src/Schemaorg/SchemaorgServiceInterface.php | 4 ++-- libraries/src/Schemaorg/SchemaorgServiceTrait.php | 2 +- plugins/system/schemaorg/src/Extension/Schemaorg.php | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/src/Schemaorg/SchemaorgServiceInterface.php b/libraries/src/Schemaorg/SchemaorgServiceInterface.php index f4a9195b3bfbc..4728ba9dcb16e 100755 --- a/libraries/src/Schemaorg/SchemaorgServiceInterface.php +++ b/libraries/src/Schemaorg/SchemaorgServiceInterface.php @@ -16,7 +16,7 @@ /** * The schemaorg service. * - * @since _DEPLOY_VERSION__ + * @since 5.0.0 */ interface SchemaorgServiceInterface { @@ -25,7 +25,7 @@ interface SchemaorgServiceInterface * * @return array * - * @since _DEPLOY_VERSION__ + * @since 5.0.0 */ public function getSchemaorgContexts(): array; } diff --git a/libraries/src/Schemaorg/SchemaorgServiceTrait.php b/libraries/src/Schemaorg/SchemaorgServiceTrait.php index 3f444aaa43f69..81f084a3229d9 100755 --- a/libraries/src/Schemaorg/SchemaorgServiceTrait.php +++ b/libraries/src/Schemaorg/SchemaorgServiceTrait.php @@ -18,7 +18,7 @@ /** * Trait for component schemaorg service. * - * @since _DEPLOY_VERSION__ + * @since 5.0.0 */ trait SchemaorgServiceTrait { diff --git a/plugins/system/schemaorg/src/Extension/Schemaorg.php b/plugins/system/schemaorg/src/Extension/Schemaorg.php index 1d3ece0249aff..23a02d5356ae1 100755 --- a/plugins/system/schemaorg/src/Extension/Schemaorg.php +++ b/plugins/system/schemaorg/src/Extension/Schemaorg.php @@ -469,7 +469,7 @@ public function onBeforeCompileHead() * * @return boolean * - * @since _DEPLOY_VERSION__ + * @since 5.0.0 */ protected function isSupported($context) { From b93f5c44317d6caf4ab4b1d1fc703492bceee48c Mon Sep 17 00:00:00 2001 From: heelc29 <66922325+heelc29@users.noreply.github.com> Date: Tue, 25 Jul 2023 22:30:39 +0200 Subject: [PATCH 072/126] [5.0] schemaorg replace JPATH_PLATFORM with _JEXEC (#41244) * [5.0] schemaorg replace JPATH_PLATFORM with _JEXEC * add copyright --- .../src/Form/Field/SchemaorgComponentSectionsField.php | 9 ++++++++- libraries/src/Schemaorg/SchemaorgServiceInterface.php | 2 +- libraries/src/Schemaorg/SchemaorgServiceTrait.php | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/libraries/src/Form/Field/SchemaorgComponentSectionsField.php b/libraries/src/Form/Field/SchemaorgComponentSectionsField.php index b982ee9214e4e..7f191d3d8a2b5 100755 --- a/libraries/src/Form/Field/SchemaorgComponentSectionsField.php +++ b/libraries/src/Form/Field/SchemaorgComponentSectionsField.php @@ -1,5 +1,12 @@ + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + namespace Joomla\CMS\Form\Field; use Joomla\CMS\Factory; @@ -8,7 +15,7 @@ use Joomla\CMS\Schemaorg\SchemaorgServiceInterface; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Schemaorg/SchemaorgServiceInterface.php b/libraries/src/Schemaorg/SchemaorgServiceInterface.php index 4728ba9dcb16e..4e9b83b4d7f2b 100755 --- a/libraries/src/Schemaorg/SchemaorgServiceInterface.php +++ b/libraries/src/Schemaorg/SchemaorgServiceInterface.php @@ -10,7 +10,7 @@ namespace Joomla\CMS\Schemaorg; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** diff --git a/libraries/src/Schemaorg/SchemaorgServiceTrait.php b/libraries/src/Schemaorg/SchemaorgServiceTrait.php index 81f084a3229d9..a2324b998442b 100755 --- a/libraries/src/Schemaorg/SchemaorgServiceTrait.php +++ b/libraries/src/Schemaorg/SchemaorgServiceTrait.php @@ -12,7 +12,7 @@ use Joomla\CMS\MVC\Factory\MVCFactoryInterface; // phpcs:disable PSR1.Files.SideEffects -\defined('JPATH_PLATFORM') or die; +\defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** From d73c1df68de776793c080136c115f5cb8283fe97 Mon Sep 17 00:00:00 2001 From: heelc29 <66922325+heelc29@users.noreply.github.com> Date: Tue, 25 Jul 2023 22:31:16 +0200 Subject: [PATCH 073/126] [5.0] schemaorg language files (#41243) --- administrator/language/en-GB/plg_schemaorg_blogposting.ini | 1 - .../language/en-GB/plg_schemaorg_blogposting.sys.ini | 1 - administrator/language/en-GB/plg_schemaorg_book.ini | 1 - administrator/language/en-GB/plg_schemaorg_book.sys.ini | 1 - administrator/language/en-GB/plg_schemaorg_event.ini | 1 - administrator/language/en-GB/plg_schemaorg_event.sys.ini | 1 - .../language/en-GB/plg_schemaorg_jobposting.sys.ini | 1 - .../language/en-GB/plg_schemaorg_organization.ini | 1 - .../language/en-GB/plg_schemaorg_organization.sys.ini | 2 +- administrator/language/en-GB/plg_schemaorg_person.ini | 1 - administrator/language/en-GB/plg_schemaorg_recipe.ini | 1 - administrator/language/en-GB/plg_schemaorg_recipe.sys.ini | 1 - administrator/language/en-GB/plg_system_schemaorg.ini | 7 ++++++- administrator/language/en-GB/plg_system_schemaorg.sys.ini | 6 +++++- 14 files changed, 12 insertions(+), 14 deletions(-) diff --git a/administrator/language/en-GB/plg_schemaorg_blogposting.ini b/administrator/language/en-GB/plg_schemaorg_blogposting.ini index 8ea94c98bc3ed..5de60c018ca71 100755 --- a/administrator/language/en-GB/plg_schemaorg_blogposting.ini +++ b/administrator/language/en-GB/plg_schemaorg_blogposting.ini @@ -24,4 +24,3 @@ PLG_SCHEMAORG_BLOGPOSTING_FIELD_POSTAL_CODE_LABEL="Postal Code" PLG_SCHEMAORG_BLOGPOSTING_FIELD_STREET_ADDRESS_LABEL="Street Address" PLG_SCHEMAORG_BLOGPOSTING_FIELD_URL_LABEL="Url" PLG_SCHEMAORG_BLOGPOSTING_XML_DESCRIPTION="Adds Blog as a new schema type in existing schemas." - diff --git a/administrator/language/en-GB/plg_schemaorg_blogposting.sys.ini b/administrator/language/en-GB/plg_schemaorg_blogposting.sys.ini index 1aa4d4ec8b127..726e91e09b2cf 100755 --- a/administrator/language/en-GB/plg_schemaorg_blogposting.sys.ini +++ b/administrator/language/en-GB/plg_schemaorg_blogposting.sys.ini @@ -5,4 +5,3 @@ PLG_SCHEMAORG_BLOGPOSTING="Schema.org - BlogPosting" PLG_SCHEMAORG_BLOGPOSTING_XML_DESCRIPTION="Adds Blog as a new schema type in existing schemas." - diff --git a/administrator/language/en-GB/plg_schemaorg_book.ini b/administrator/language/en-GB/plg_schemaorg_book.ini index d37b702a889d3..0302a26bd60d3 100755 --- a/administrator/language/en-GB/plg_schemaorg_book.ini +++ b/administrator/language/en-GB/plg_schemaorg_book.ini @@ -30,4 +30,3 @@ PLG_SCHEMAORG_BOOK_FIELD_POSTAL_CODE_LABEL="Postal Code" PLG_SCHEMAORG_BOOK_FIELD_STREET_ADDRESS_LABEL="Street Address" PLG_SCHEMAORG_BOOK_FIELD_URL_LABEL="Url" PLG_SCHEMAORG_BOOK_XML_DESCRIPTION="Adds Book as a new schema type in existing schemas." - diff --git a/administrator/language/en-GB/plg_schemaorg_book.sys.ini b/administrator/language/en-GB/plg_schemaorg_book.sys.ini index 9123bba8cf6ea..e20dd6144b9d7 100755 --- a/administrator/language/en-GB/plg_schemaorg_book.sys.ini +++ b/administrator/language/en-GB/plg_schemaorg_book.sys.ini @@ -5,4 +5,3 @@ PLG_SCHEMAORG_BOOK="Schema.org - Book" PLG_SCHEMAORG_BOOK_XML_DESCRIPTION="Adds Book as a new schema type in existing schemas." - diff --git a/administrator/language/en-GB/plg_schemaorg_event.ini b/administrator/language/en-GB/plg_schemaorg_event.ini index 25932ff492991..79facc701fb58 100755 --- a/administrator/language/en-GB/plg_schemaorg_event.ini +++ b/administrator/language/en-GB/plg_schemaorg_event.ini @@ -26,4 +26,3 @@ PLG_SCHEMAORG_EVENT_FIELD_START_DATE_LABEL="Start Date" PLG_SCHEMAORG_EVENT_FIELD_STREET_ADDRESS_LABEL="Street Address" PLG_SCHEMAORG_EVENT_FIELD_URL_LABEL="Url" PLG_SCHEMAORG_EVENT_XML_DESCRIPTION="Adds Event as a new schema type in existing schemas." - diff --git a/administrator/language/en-GB/plg_schemaorg_event.sys.ini b/administrator/language/en-GB/plg_schemaorg_event.sys.ini index 92f476732c32e..22e1fb9e318e7 100755 --- a/administrator/language/en-GB/plg_schemaorg_event.sys.ini +++ b/administrator/language/en-GB/plg_schemaorg_event.sys.ini @@ -5,4 +5,3 @@ PLG_SCHEMAORG_EVENT="Schema.org - Event" PLG_SCHEMAORG_EVENT_XML_DESCRIPTION="Adds Event as a new schema type in existing schemas." - diff --git a/administrator/language/en-GB/plg_schemaorg_jobposting.sys.ini b/administrator/language/en-GB/plg_schemaorg_jobposting.sys.ini index 051a54725cd67..38667b694fdcf 100755 --- a/administrator/language/en-GB/plg_schemaorg_jobposting.sys.ini +++ b/administrator/language/en-GB/plg_schemaorg_jobposting.sys.ini @@ -5,4 +5,3 @@ PLG_SCHEMAORG_JOBPOSTING="Schema.org - JobPosting" PLG_SCHEMAORG_JOBPOSTING_XML_DESCRIPTION="Adds JobPosting as a new schema type in existing schemas." - diff --git a/administrator/language/en-GB/plg_schemaorg_organization.ini b/administrator/language/en-GB/plg_schemaorg_organization.ini index 99683fcd86738..a05744b40e54a 100755 --- a/administrator/language/en-GB/plg_schemaorg_organization.ini +++ b/administrator/language/en-GB/plg_schemaorg_organization.ini @@ -17,4 +17,3 @@ PLG_SCHEMAORG_ORGANIZATION_FIELD_POSTAL_CODE_LABEL="Postal Code" PLG_SCHEMAORG_ORGANIZATION_FIELD_STREET_ADDRESS_LABEL="Street Address" PLG_SCHEMAORG_ORGANIZATION_FIELD_URL_LABEL="URL" PLG_SCHEMAORG_ORGANIZATION_XML_DESCRIPTION="Adds Organization as a new schema type in existing schemas." - diff --git a/administrator/language/en-GB/plg_schemaorg_organization.sys.ini b/administrator/language/en-GB/plg_schemaorg_organization.sys.ini index 36766b3444e86..58e04cf03884f 100755 --- a/administrator/language/en-GB/plg_schemaorg_organization.sys.ini +++ b/administrator/language/en-GB/plg_schemaorg_organization.sys.ini @@ -4,4 +4,4 @@ ; Note : All ini files need to be saved as UTF-8 PLG_SCHEMAORG_ORGANIZATION="Schema.org - Organization" -PLG_SCHEMAORG_ORGANIZATION_XML_DESCRIPTION="Adds Organization as a new schema type in existing schemas" \ No newline at end of file +PLG_SCHEMAORG_ORGANIZATION_XML_DESCRIPTION="Adds Organization as a new schema type in existing schemas" diff --git a/administrator/language/en-GB/plg_schemaorg_person.ini b/administrator/language/en-GB/plg_schemaorg_person.ini index b372bfddf9f64..badbef002977a 100755 --- a/administrator/language/en-GB/plg_schemaorg_person.ini +++ b/administrator/language/en-GB/plg_schemaorg_person.ini @@ -16,4 +16,3 @@ PLG_SCHEMAORG_PERSON_FIELD_POSTAL_CODE_LABEL="Postal Code" PLG_SCHEMAORG_PERSON_FIELD_STREET_ADDRESS_LABEL="Street Address" PLG_SCHEMAORG_PERSON_FIELD_URL_LABEL="URL" PLG_SCHEMAORG_PERSON_XML_DESCRIPTION="Adds Person as a new schema type in existing schemas." - diff --git a/administrator/language/en-GB/plg_schemaorg_recipe.ini b/administrator/language/en-GB/plg_schemaorg_recipe.ini index eab97336b2aa2..b9005a3c60ca5 100755 --- a/administrator/language/en-GB/plg_schemaorg_recipe.ini +++ b/administrator/language/en-GB/plg_schemaorg_recipe.ini @@ -36,4 +36,3 @@ PLG_SCHEMAORG_RECIPE_FIELD_TRANS_FAT_LABEL="Trans Fat" PLG_SCHEMAORG_RECIPE_FIELD_UNSATURATED_FAT_LABEL="Unsaturated Fat" PLG_SCHEMAORG_RECIPE_FIELD_YIELD_LABEL="Yield" PLG_SCHEMAORG_RECIPE_XML_DESCRIPTION="Adds Recipe as a new schema type in existing schemas." - diff --git a/administrator/language/en-GB/plg_schemaorg_recipe.sys.ini b/administrator/language/en-GB/plg_schemaorg_recipe.sys.ini index d50a2f4a9f799..afc6bf3960614 100755 --- a/administrator/language/en-GB/plg_schemaorg_recipe.sys.ini +++ b/administrator/language/en-GB/plg_schemaorg_recipe.sys.ini @@ -5,4 +5,3 @@ PLG_SCHEMAORG_RECIPE="Schema.org - Recipe" PLG_SCHEMAORG_RECIPE_XML_DESCRIPTION="Adds Recipe as a new schema type in existing schemas." - diff --git a/administrator/language/en-GB/plg_system_schemaorg.ini b/administrator/language/en-GB/plg_system_schemaorg.ini index 2ad5cb4b75583..efd5f22d44afb 100755 --- a/administrator/language/en-GB/plg_system_schemaorg.ini +++ b/administrator/language/en-GB/plg_system_schemaorg.ini @@ -1,3 +1,8 @@ +; Joomla! Project +; (C) 2023 Open Source Matters, Inc. +; License GNU General Public License version 2 or later; see LICENSE.txt +; Note : All ini files need to be saved as UTF-8 + PLG_SYSTEM_SCHEMAORG="System - Schema.org" PLG_SYSTEM_SCHEMAORG_BASETYPE_DESCRIPTION="Choose whether your website represents an organization or a single person." PLG_SYSTEM_SCHEMAORG_BASETYPE_LABEL="Base Type" @@ -13,4 +18,4 @@ PLG_SYSTEM_SCHEMAORG_NAME_LABEL="Name" PLG_SYSTEM_SCHEMAORG_SOCIALMEDIA_LABEL="Social Media Accounts" PLG_SYSTEM_SCHEMAORG_SOCIALMEDIA_URL_LABEL="URL" PLG_SYSTEM_SCHEMAORG_USER_LABEL="Select User" -PLG_SYSTEM_SCHEMAORG_XML_DESCRIPTION="Adds custom form field in article view and then injects that data in JSON+LD format in the head tag of that particular article." \ No newline at end of file +PLG_SYSTEM_SCHEMAORG_XML_DESCRIPTION="Adds custom form field in article view and then injects that data in JSON+LD format in the head tag of that particular article." diff --git a/administrator/language/en-GB/plg_system_schemaorg.sys.ini b/administrator/language/en-GB/plg_system_schemaorg.sys.ini index 590a4e7b0d41a..2c08ee3667e6f 100755 --- a/administrator/language/en-GB/plg_system_schemaorg.sys.ini +++ b/administrator/language/en-GB/plg_system_schemaorg.sys.ini @@ -1,3 +1,7 @@ +; Joomla! Project +; (C) 2023 Open Source Matters, Inc. +; License GNU General Public License version 2 or later; see LICENSE.txt +; Note : All ini files need to be saved as UTF-8 + PLG_SYSTEM_SCHEMAORG="System - Schema.org" PLG_SYSTEM_SCHEMAORG_XML_DESCRIPTION="Adds custom form field in article view and then injects that data in JSON+LD format in the head tag of that particular article." - From 9a55ff0b7f3556dfe0a93facb242c6367376c551 Mon Sep 17 00:00:00 2001 From: heelc29 <66922325+heelc29@users.noreply.github.com> Date: Tue, 25 Jul 2023 22:31:38 +0200 Subject: [PATCH 074/126] [5.0] schemaorg sort imports (#41242) --- .../components/com_contact/src/Extension/ContactComponent.php | 4 ++-- .../components/com_content/src/Extension/ContentComponent.php | 4 ++-- plugins/system/schemaorg/src/Extension/Schemaorg.php | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/administrator/components/com_contact/src/Extension/ContactComponent.php b/administrator/components/com_contact/src/Extension/ContactComponent.php index 59e298d289f1d..d1886bc435e16 100644 --- a/administrator/components/com_contact/src/Extension/ContactComponent.php +++ b/administrator/components/com_contact/src/Extension/ContactComponent.php @@ -16,8 +16,6 @@ use Joomla\CMS\Categories\CategoryServiceTrait; use Joomla\CMS\Component\Router\RouterServiceInterface; use Joomla\CMS\Component\Router\RouterServiceTrait; -use Joomla\CMS\Schemaorg\SchemaorgServiceInterface; -use Joomla\CMS\Schemaorg\SchemaorgServiceTrait; use Joomla\CMS\Extension\BootableExtensionInterface; use Joomla\CMS\Extension\MVCComponent; use Joomla\CMS\Factory; @@ -25,6 +23,8 @@ use Joomla\CMS\Form\Form; use Joomla\CMS\HTML\HTMLRegistryAwareTrait; use Joomla\CMS\Language\Text; +use Joomla\CMS\Schemaorg\SchemaorgServiceInterface; +use Joomla\CMS\Schemaorg\SchemaorgServiceTrait; use Joomla\CMS\Tag\TagServiceInterface; use Joomla\CMS\Tag\TagServiceTrait; use Joomla\CMS\User\UserFactoryInterface; diff --git a/administrator/components/com_content/src/Extension/ContentComponent.php b/administrator/components/com_content/src/Extension/ContentComponent.php index 72919646ae63b..193a1c9270a6a 100644 --- a/administrator/components/com_content/src/Extension/ContentComponent.php +++ b/administrator/components/com_content/src/Extension/ContentComponent.php @@ -24,12 +24,12 @@ use Joomla\CMS\Helper\ContentHelper as LibraryContentHelper; use Joomla\CMS\HTML\HTMLRegistryAwareTrait; use Joomla\CMS\Language\Text; +use Joomla\CMS\Schemaorg\SchemaorgServiceInterface; +use Joomla\CMS\Schemaorg\SchemaorgServiceTrait; use Joomla\CMS\Tag\TagServiceInterface; use Joomla\CMS\Tag\TagServiceTrait; use Joomla\CMS\Workflow\WorkflowServiceInterface; use Joomla\CMS\Workflow\WorkflowServiceTrait; -use Joomla\CMS\Schemaorg\SchemaorgServiceInterface; -use Joomla\CMS\Schemaorg\SchemaorgServiceTrait; use Joomla\Component\Content\Administrator\Helper\ContentHelper; use Joomla\Component\Content\Administrator\Service\HTML\AdministratorService; use Joomla\Component\Content\Administrator\Service\HTML\Icon; diff --git a/plugins/system/schemaorg/src/Extension/Schemaorg.php b/plugins/system/schemaorg/src/Extension/Schemaorg.php index 23a02d5356ae1..1c2725ea97672 100755 --- a/plugins/system/schemaorg/src/Extension/Schemaorg.php +++ b/plugins/system/schemaorg/src/Extension/Schemaorg.php @@ -13,8 +13,8 @@ use Joomla\CMS\Event\AbstractEvent; use Joomla\CMS\Factory; use Joomla\CMS\Form\Form; -use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Helper\ModuleHelper; +use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Plugin\PluginHelper; From ee760e2ce3843d54018803d3d1505f3384fc7ec0 Mon Sep 17 00:00:00 2001 From: Harald Leithner Date: Tue, 25 Jul 2023 23:39:16 +0200 Subject: [PATCH 075/126] Fix missing legacy schema for category,featured,archive view (#41250) Unescape JSON output --- plugins/content/joomla/src/Extension/Joomla.php | 4 ++-- plugins/system/schemaorg/src/Extension/Schemaorg.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/content/joomla/src/Extension/Joomla.php b/plugins/content/joomla/src/Extension/Joomla.php index 7d0acf8ee9514..80c36a3f773b8 100644 --- a/plugins/content/joomla/src/Extension/Joomla.php +++ b/plugins/content/joomla/src/Extension/Joomla.php @@ -327,8 +327,6 @@ private function injectContentSchema(string $context, Registry $schema) $articleIds = ArrayHelper::getColumn($articles, 'id'); if (!empty($articleIds)) { - $query = $db->getQuery(true); - $aContext = 'com_content.article'; // Load the schema data from the database @@ -363,6 +361,8 @@ private function injectContentSchema(string $context, Registry $schema) $additionalSchema['blogPost'][] = $articleSchema; } } + + return $additionalSchema; }, [$view, $id]); } diff --git a/plugins/system/schemaorg/src/Extension/Schemaorg.php b/plugins/system/schemaorg/src/Extension/Schemaorg.php index 1c2725ea97672..88b9c3bca9a7f 100755 --- a/plugins/system/schemaorg/src/Extension/Schemaorg.php +++ b/plugins/system/schemaorg/src/Extension/Schemaorg.php @@ -454,7 +454,7 @@ public function onBeforeCompileHead() PluginHelper::importPlugin('schemaorg'); $eventResult = $app->getDispatcher()->dispatch('onSchemaBeforeCompileHead', $event); - $schemaString = $schema->toString(); + $schemaString = $schema->toString('JSON', ['bitmask' => JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE]); if ($schemaString !== '{}') { $wa = $this->getApplication()->getDocument()->getWebAssetManager(); From 1c1e1ddaca4b4b2312b315d434ea0fb759848644 Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Wed, 26 Jul 2023 14:59:00 +0200 Subject: [PATCH 076/126] Fix XML syntax error from PR #41247 (#41257) --- plugins/schemaorg/organization/organization.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/schemaorg/organization/organization.xml b/plugins/schemaorg/organization/organization.xml index 5e83b29f67e6e..a4b6d3ade26f5 100755 --- a/plugins/schemaorg/organization/organization.xml +++ b/plugins/schemaorg/organization/organization.xml @@ -9,7 +9,7 @@ www.joomla.org 5.0.0 PLG_SCHEMAORG_ORGANIZATION_XML_DESCRIPTION - - Joomla\Plugin\Schemaorg\Organization + Joomla\Plugin\Schemaorg\Organization services src From 4eb3fecb2345ef1a569fede434028cf495f0fed8 Mon Sep 17 00:00:00 2001 From: Sergey Tolkachyov Date: Wed, 26 Jul 2023 21:57:21 +0400 Subject: [PATCH 077/126] [5.0] Update bootstrap modal layout - add modalCss optional parameter (#40650) * Update layouts bootstrap modal main.php Add an optional parameter 'modalCss' to $params array * Fixed code style * Update code style * Update layouts/libraries/html/bootstrap/modal/main.php Co-authored-by: Quy --------- Co-authored-by: Quy Co-authored-by: Robert Deutz --- layouts/libraries/html/bootstrap/modal/main.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/layouts/libraries/html/bootstrap/modal/main.php b/layouts/libraries/html/bootstrap/modal/main.php index 0e357e8997ca3..6ce9aece875fc 100644 --- a/layouts/libraries/html/bootstrap/modal/main.php +++ b/layouts/libraries/html/bootstrap/modal/main.php @@ -32,6 +32,7 @@ * - bodyHeight int Optional height of the modal body in viewport units (vh) * - modalWidth int Optional width of the modal in viewport units (vh) * - footer string Optional markup for the modal footer + * - modalCss string Optional CSS classes of the modal * @var string $body Markup for the modal body. Appended after the