From 719015008c63da90aa75eec6d7f5daeb603378f2 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 16 Jun 2023 11:46:55 +0100 Subject: [PATCH 001/127] 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/127] 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/127] 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/127] 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/127] 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/127] 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/127] 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/127] 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/127] 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/127] 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/127] 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/127] 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/127] 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/127] 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/127] 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/127] 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/127] 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 8a64b6e636a635b9318b226dec35a92801c6d214 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 30 Jun 2023 10:09:03 +0100 Subject: [PATCH 018/127] add alias field to tour --- .../sql/updates/mysql/5.0.0-2023-06-22.sql | 14 +++++++++ .../updates/postgresql/5.0.0-2023-06-22.sql | 14 +++++++++ .../components/com_guidedtours/forms/tour.xml | 8 +++++ .../com_guidedtours/src/Model/TourModel.php | 29 ++++++++++++++++++ .../com_guidedtours/tmpl/tour/edit.php | 4 +++ .../language/en-GB/com_guidedtours.ini | 2 ++ installation/sql/mysql/extensions.sql | 30 ++++++++++--------- installation/sql/postgresql/extensions.sql | 27 +++++++++-------- 8 files changed, 101 insertions(+), 27 deletions(-) create mode 100644 administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql create mode 100644 administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql diff --git a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql new file mode 100644 index 0000000000000..6c030c5c3cf72 --- /dev/null +++ b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql @@ -0,0 +1,14 @@ +ALTER TABLE `#__guidedtours` ADD COLUMN `alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL AFTER `title`/** CAN FAIL **/; +ALTER TABLE `#__guidedtours` ADD INDEX `idx_alias` (`alias`(191)) /** CAN FAIL **/; + +UPDATE `#__guidedtours` SET `alias` = 'joomla_guidedtours_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_guidedtourssteps_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_articles_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_categories_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_menus_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_tags_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_banners_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_contacts_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_newsfeeds_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_smartsearch_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_users_title WHERE `title` = ''COM_GUIDEDTOURS_TOUR_USERS_TITLE''' diff --git a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql new file mode 100644 index 0000000000000..468a4c3498775 --- /dev/null +++ b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql @@ -0,0 +1,14 @@ +ALTER TABLE "#__guidedtours" ADD COLUMN "alias" varchar(255) DEFAULT '' NOT NULL /** CAN FAIL **/; +CREATE INDEX "#__guidedtours_idx_alias" ON "#__guidedtours" ("alias") /** CAN FAIL **/; + +UPDATE "#__guidedtours" SET "alias" = 'joomla_guidedtours_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_guidedtourssteps_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_articles_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_categories_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_menus_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_tags_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_banners_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_contacts_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_newsfeeds_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_smartsearch_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_users_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_USERS_TITLE'; diff --git a/administrator/components/com_guidedtours/forms/tour.xml b/administrator/components/com_guidedtours/forms/tour.xml index 624955e4c6355..10533f8a93d91 100644 --- a/administrator/components/com_guidedtours/forms/tour.xml +++ b/administrator/components/com_guidedtours/forms/tour.xml @@ -26,6 +26,14 @@ readonly="true" /> + + setStepsLanguage($id, $lang); + if (empty($data['alias'])) { + $app = Factory::getApplication(); + $uri = Uri::getInstance(); + $host = $uri->toString(['host']); + $aliasTitle = $host . " " . str_replace("COM_GUIDEDTOURS_TOUR_", "", $data['title']); + if ($app->get('unicodeslugs') == 1) { + $data['alias'] = OutputFilter::stringUrlUnicodeSlug($aliasTitle); + } else { + $data['alias'] = OutputFilter::stringURLSafe($aliasTitle); + } + } + + $data['alias'] = ApplicationHelper::stringURLSafe($data['alias']); + $result = parent::save($data); // Create default step for new tour @@ -221,6 +238,18 @@ public function getItem($pk = null) $result->description_translation = Text::_($result->description); } + if (empty($result->alias)) { + $app = Factory::getApplication(); + $uri = Uri::getInstance(); + $host = $uri->toString(['host']); + $aliasTitle = $host . " " . str_replace("COM_GUIDEDTOURS_TOUR_", "", $result->title); + if ($app->get('unicodeslugs') == 1) { + $result->alias = OutputFilter::stringUrlUnicodeSlug($aliasTitle); + } else { + $result->alias = OutputFilter::stringURLSafe($aliasTitle); + } + } + return $result; } diff --git a/administrator/components/com_guidedtours/tmpl/tour/edit.php b/administrator/components/com_guidedtours/tmpl/tour/edit.php index 07a938d2381af..7502a41b21f13 100644 --- a/administrator/components/com_guidedtours/tmpl/tour/edit.php +++ b/administrator/components/com_guidedtours/tmpl/tour/edit.php @@ -31,6 +31,10 @@ (int) $this->item->id); ?>" method="post" name="adminForm" id="guidedtours-form" class="form-validate"> +
+ form->setFieldAttribute('title_translation', 'label', Text::sprintf('COM_GUIDEDTOURS_TITLE_TRANSLATION', $lang)); ?> + form->renderField('title_translation'); ?> +
item->id != 0 && strpos($this->item->title, 'GUIDEDTOUR') !== false) : ?>
diff --git a/administrator/language/en-GB/com_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.ini index 12cd6740b6b01..b0d46bb6e8d7d 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -52,6 +52,8 @@ COM_GUIDEDTOURS_STEP_NEW_STEP="New Step" COM_GUIDEDTOURS_STEP_POSITION_DESC="Select the position of the step popup, relative to the element it points to." COM_GUIDEDTOURS_STEP_POSITION_LABEL="Position" COM_GUIDEDTOURS_STEP_TITLE="Title" +COM_GUIDEDTOURS_TOUR_ALIAS="Tour Identifier" +COM_GUIDEDTOURS_TOUR_ALIAS_DESC="If you are sharing your tour on any other websites then the Tour Identifier needs to be unique.
We suggest a format such as AUTHORNAME-TOURNAME, COMPANYNAME-TOURNAME, SITEDOMAIN-TOURNAME.
If no identifier is provided a value will be computed for you." COM_GUIDEDTOURS_STEP_TITLE_TRANSLATION="Title (%s)" COM_GUIDEDTOURS_STEP_TARGET_DESC="The target element the step will be attached to. Options: .classname, #id, any selector following the CSS syntax (make sure it is a focusable element if the step is interactive), or leave blank for a centered step." COM_GUIDEDTOURS_STEP_TARGET_LABEL="Target" diff --git a/installation/sql/mysql/extensions.sql b/installation/sql/mysql/extensions.sql index fbae6f6dea792..65df3fcd30e18 100644 --- a/installation/sql/mysql/extensions.sql +++ b/installation/sql/mysql/extensions.sql @@ -895,7 +895,7 @@ CREATE TABLE IF NOT EXISTS `#__scheduler_tasks` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `asset_id` int unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.', `title` varchar(255) NOT NULL DEFAULT '', - `type` varchar(128) NOT NULL COMMENT 'unique identifier for job defined by plugin', + `type` varchar(128) NOT NULL COMMENT 'unique alias for job defined by plugin', `execution_rules` text COMMENT 'Execution Rules, Unprocessed', `cron_rules` text COMMENT 'Processed execution rules, crontab-like JSON form', `state` tinyint NOT NULL DEFAULT FALSE, @@ -934,6 +934,7 @@ CREATE TABLE IF NOT EXISTS `#__scheduler_tasks` ( CREATE TABLE IF NOT EXISTS `#__guidedtours` ( `id` int NOT NULL AUTO_INCREMENT, `title` varchar(255) DEFAULT '' NOT NULL, + `alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, `description` text NOT NULL, `ordering` int NOT NULL DEFAULT 0, `extensions` text NOT NULL, @@ -951,25 +952,26 @@ CREATE TABLE IF NOT EXISTS `#__guidedtours` ( PRIMARY KEY (`id`), KEY `idx_access` (`access`), KEY `idx_state` (`published`), - KEY `idx_language` (`language`) + KEY `idx_language` (`language`), + KEY `idx_alias` (`alias`(191)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci; -- -- Dumping data for table `#__guidedtours` -- -INSERT INTO `#__guidedtours` (`id`, `title`, `description`, `ordering`, `extensions`, `url`, `created`, `created_by`, `modified`, `modified_by`, `checked_out_time`, `checked_out`, `published`, `language`, `access`) VALUES -(1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION', 1, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["*"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["*"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["*"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(6, 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE', 'COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION', 6, '["*"]', 'administrator/index.php?option=com_tags&view=tags', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(7, 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE', 'COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION', 7, '["*"]', 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE', 'COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION', 8, '["*"]', 'administrator/index.php?option=com_contact&view=contacts', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE', 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION', 9, '["*"]', 'administrator/index.php?option=com_newsfeeds&view=newsfeeds', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE', 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION', 10, '["*"]', 'administrator/index.php?option=com_finder&view=filters', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(11, 'COM_GUIDEDTOURS_TOUR_USERS_TITLE', 'COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION', 11, '["*"]', 'administrator/index.php?option=com_users&view=users', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1); +INSERT INTO `#__guidedtours` (`id`, `title`, `alias`, `description`, `ordering`, `extensions`, `url`, `created`, `created_by`, `modified`, `modified_by`, `checked_out_time`, `checked_out`, `published`, `language`, `access`) VALUES +(1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE', 'joomla_guidedtours_title', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION', 1, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'joomla_guidedtourssteps_title', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'joomla_articles_title', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["*"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'joomla_categories_title', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["*"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'joomla_menus_title', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["*"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(6, 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE', 'joomla_tags_title', 'COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION', 6, '["*"]', 'administrator/index.php?option=com_tags&view=tags', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(7, 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE', 'joomla_banners_title', 'COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION', 7, '["*"]', 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE', 'joomla_contacts_title', 'COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION', 8, '["*"]', 'administrator/index.php?option=com_contact&view=contacts', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE', 'joomla_newsfeeds_title', 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION', 9, '["*"]', 'administrator/index.php?option=com_newsfeeds&view=newsfeeds', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE', 'joomla_smartsearch_title', 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION', 10, '["*"]', 'administrator/index.php?option=com_finder&view=filters', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(11, 'COM_GUIDEDTOURS_TOUR_USERS_TITLE', 'joomla_users_title', 'COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION', 11, '["*"]', 'administrator/index.php?option=com_users&view=users', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1); -- -------------------------------------------------------- diff --git a/installation/sql/postgresql/extensions.sql b/installation/sql/postgresql/extensions.sql index 58b3c67df6c19..6b83e4ea454ac 100644 --- a/installation/sql/postgresql/extensions.sql +++ b/installation/sql/postgresql/extensions.sql @@ -898,6 +898,7 @@ CREATE INDEX "#__scheduler_tasks_idx_checked_out" ON "#__scheduler_tasks" ("chec CREATE TABLE IF NOT EXISTS "#__guidedtours" ( "id" serial NOT NULL, "title" varchar(255) DEFAULT '' NOT NULL, + "alias" varchar(255) DEFAULT '' NOT NULL, "description" text NOT NULL, "ordering" bigint DEFAULT 0 NOT NULL, "extensions" text NOT NULL, @@ -918,23 +919,23 @@ CREATE TABLE IF NOT EXISTS "#__guidedtours" ( CREATE INDEX "#__guidedtours_idx_access" ON "#__guidedtours" ("access"); CREATE INDEX "#__guidedtours_idx_state" ON "#__guidedtours" ("published"); CREATE INDEX "#__guidedtours_idx_language" ON "#__guidedtours" ("language"); - +CREATE INDEX "#__guidedtours_idx_alias" ON "#__guidedtours" ("alias"); -- -- Dumping data for table `#__guidedtours` -- -INSERT INTO "#__guidedtours" ("id", "title", "description", "ordering", "extensions", "url", "created", "created_by", "modified", "modified_by", "checked_out_time", "checked_out", "published", "language", "access") VALUES -(1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION', 1, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["*"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["*"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["*"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(6, 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE', 'COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION', 6, '["*"]', 'administrator/index.php?option=com_tags&view=tags', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(7, 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE', 'COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION', 7, '["*"]', 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE', 'COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION', 8, '["*"]', 'administrator/index.php?option=com_contact&view=contacts', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE', 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION', 9, '["*"]', 'administrator/index.php?option=com_newsfeeds&view=newsfeeds', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE', 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION', 10, '["*"]', 'administrator/index.php?option=com_finder&view=filters', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(11, 'COM_GUIDEDTOURS_TOUR_USERS_TITLE', 'COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION', 11, '["*"]', 'administrator/index.php?option=com_users&view=users', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1); +INSERT INTO "#__guidedtours" ("id", "title", "alias", "description", "ordering", "extensions", "url", "created", "created_by", "modified", "modified_by", "checked_out_time", "checked_out", "published", "language", "access") VALUES +(1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE', 'joomla_guidedtours_title', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION', 1, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'joomla_guidedtourssteps_title', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'joomla_articles_title', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["*"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'joomla_categories_title', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["*"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'joomla_menus_title', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["*"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(6, 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE', 'joomla_tags_title', 'COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION', 6, '["*"]', 'administrator/index.php?option=com_tags&view=tags', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(7, 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE', 'joomla_banners_title', 'COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION', 7, '["*"]', 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE', 'joomla_contacts_title', 'COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION', 8, '["*"]', 'administrator/index.php?option=com_contact&view=contacts', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE', 'joomla_newsfeeds_title', 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION', 9, '["*"]', 'administrator/index.php?option=com_newsfeeds&view=newsfeeds', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE', 'joomla_smartsearch_title', 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION', 10, '["*"]', 'administrator/index.php?option=com_finder&view=filters', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(11, 'COM_GUIDEDTOURS_TOUR_USERS_TITLE', 'joomla_users_title', 'COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION', 11, '["*"]', 'administrator/index.php?option=com_users&view=users', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1); SELECT setval('#__guidedtours_id_seq', 12, false); From d92b11e111996351fb49ad8bf0cd54860170e67d Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 30 Jun 2023 10:13:38 +0100 Subject: [PATCH 019/127] 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 d6427fd9bdb88326bb521c66da73183c682403ed Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 30 Jun 2023 16:51:42 +0100 Subject: [PATCH 020/127] Add strict extensions filter to list of tours so we can see which tours pertain to which extensions --- .../com_guidedtours/forms/filter_tours.xml | 14 ++- .../src/Field/TourextensionField.php | 107 ++++++++++++++++++ .../com_guidedtours/src/Model/ToursModel.php | 11 +- .../language/en-GB/com_guidedtours.ini | 5 +- 4 files changed, 132 insertions(+), 5 deletions(-) create mode 100644 administrator/components/com_guidedtours/src/Field/TourextensionField.php diff --git a/administrator/components/com_guidedtours/forms/filter_tours.xml b/administrator/components/com_guidedtours/forms/filter_tours.xml index f71cbb63dbe32..6f89b8f65187e 100644 --- a/administrator/components/com_guidedtours/forms/filter_tours.xml +++ b/administrator/components/com_guidedtours/forms/filter_tours.xml @@ -1,6 +1,6 @@ - - + name="params" + + + + + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +namespace Joomla\Component\Guidedtours\Administrator\Field; + +use Joomla\CMS\Factory; +use Joomla\CMS\Form\Field\ComponentsField; +use Joomla\CMS\Form\Field\ListField; +use Joomla\CMS\Language\Text; +use Joomla\Registry\Registry; +use Joomla\Utilities\ArrayHelper; + +// phpcs:disable PSR1.Files.SideEffects +\defined('_JEXEC') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Tourextension Field class. + * List of extensions selected in a guided tour + * + * @since 5.0.0 + */ +class TourextensionField extends ComponentsField +{ + /** + * The form field type. + * + * @var string + * @since 5.0.0 + */ + protected $type = 'Tourextension'; + + /** + * Method to get a list of options for a list input. + * + * @return object[] An array of JHtml options. + * + * @since 2.5.0 + */ + protected function getOptions() + { + $db = $this->getDatabase(); + // get distinct list of active extensions from the tours table then filter the list of matching extensions + $query = $db->getQuery(true) + ->select('DISTINCT ' . $db->quoteName('extensions')) + ->from($db->quoteName('#__guidedtours')); + + $extensionEntries = $db->setQuery($query)->loadColumn(); + $extensions = []; + + foreach ($extensionEntries as $extensionsEntry) { + $extensions = array_merge($extensions, (new Registry($extensionsEntry))->toArray()); + } + + $query = $db->getQuery(true) + ->select( + [ + $db->quoteName('name', 'text'), + $db->quoteName('element', 'value'), + ] + ) + ->from($db->quoteName('#__extensions')) + ->where( + [ + $db->quoteName('enabled') . ' >= 1', + $db->quoteName('type') . ' = ' . $db->quote('component'), + $db->quoteName( 'element' ) . ' = ' . $db->quote( 'com_yoursites' ) + ] + ); + + if (count($extensions)) { + $query->whereIn($db->quoteName('element'), array_values($extensions)); + } + + $items = $db->setQuery($query)->loadObjectList(); + + if ($items) { + $lang = Factory::getLanguage(); + + foreach ($items as &$item) { + // Load language + $extension = $item->value; + + $lang->load("$extension.sys", JPATH_ADMINISTRATOR) + || $lang->load("$extension.sys", JPATH_ADMINISTRATOR . '/components/' . $extension); + + // Translate component name + $item->text = Text::_($item->text); + } + + // Sort by component name + $items = ArrayHelper::sortObjects($items, 'text', 1, true, true); + } + + // Merge any additional options in the XML definition. + $options = array_merge(ListField::getOptions(), $items); + + return $options; + } +} diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index 2ee0df9df3953..8d37b8a4b2d4e 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -45,7 +45,8 @@ public function __construct($config = []) 'access', 'a.access', 'access_level', 'description', 'a.description', 'published', 'a.published', - 'language', 'a.language', + 'published', 'a.published', + 'extensionfilter', 'a.extensionfilter', 'ordering', 'a.ordering', 'extensions', 'a.extensions', 'created_by', 'a.created_by', @@ -163,7 +164,13 @@ public function getListQuery() ->join('LEFT', $db->quoteName('#__viewlevels', 'ag'), $db->quoteName('ag.id') . ' = ' . $db->quoteName('a.access')); // Filter by extension - if ($extension = $this->getState('filter.extension')) { + if ($extensionfilter = $this->getState('filter.extensionfilter')) { + $extension = '%' . $extensionfilter . '%'; + $query->where( + $db->quoteName('a.extensions') . ' LIKE :extensions' + ) + ->bind([':extensions'], $extension); + } elseif ($extension = $this->getState('filter.extension')) { $extension = '%' . $extension . '%'; $all = '%*%'; $query->where( diff --git a/administrator/language/en-GB/com_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.ini index b0d46bb6e8d7d..c4b05a8acc82a 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -85,4 +85,7 @@ 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 +COM_GUIDEDTOURS_XML_DESCRIPTION="Component for managing Guided Tours functionality." +COM_GUIDEDTOURS_FILTER_EXTENSION_LABEL="Selected Component" +COM_GUIDEDTOURS_FILTER_EXTENSION_DESC="Component that restrict a tour to be displayed only when the selected component is active." +COM_GUIDEDTOURS_FILTER_SELECT_TOUR_COMPONENT="Select Component" \ No newline at end of file From 34a41154d3602df6c8c6e1081a24c51ed0c98117 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Sun, 2 Jul 2023 11:42:27 +0100 Subject: [PATCH 021/127] 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 022/127] 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 023/127] 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 0cd24e36980026d3c34c24a284d487037425a4e1 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Thu, 6 Jul 2023 13:08:33 +0100 Subject: [PATCH 024/127] handle risk of orphan blur event listeners by making sure tourId is set config option to decide if we should focus on target element when the step is visible allow custom focus target Fire custom events guided-tour-show-step, guided-tour-before-show-step on focus or main target element Allow setting pre step display and on step display mouse/pointer events to simulate user performing actions prior to undertaking the step - useful for ensuring elements such as sub menu items are visible New unique tour alias/identifier Start of work on context specific tour triggers Parameters tab when editing a step only shows if its relevant --- .../components/com_guidedtours/forms/step.xml | 116 ++++++++++++++ .../components/com_guidedtours/forms/tour.xml | 57 ++++++- .../com_guidedtours/src/Model/TourModel.php | 2 +- .../com_guidedtours/src/Model/ToursModel.php | 17 ++ .../com_guidedtours/tmpl/step/edit.php | 2 +- .../com_guidedtours/tmpl/tour/edit.php | 7 +- .../language/en-GB/com_guidedtours.ini | 31 +++- .../src/Helper/GuidedToursHelper.php | 5 + .../modules/mod_guidedtours/tmpl/default.php | 4 +- .../com_guidedtours/js/tour-edit.es6.js | 16 +- .../js/guidedtours.es6.js | 146 +++++++++++++++++- 11 files changed, 387 insertions(+), 16 deletions(-) diff --git a/administrator/components/com_guidedtours/forms/step.xml b/administrator/components/com_guidedtours/forms/step.xml index bcb011241fdcd..ef61220464d71 100644 --- a/administrator/components/com_guidedtours/forms/step.xml +++ b/administrator/components/com_guidedtours/forms/step.xml @@ -227,7 +227,123 @@
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+
diff --git a/administrator/components/com_guidedtours/forms/tour.xml b/administrator/components/com_guidedtours/forms/tour.xml index 10533f8a93d91..6518d5ac345d7 100644 --- a/administrator/components/com_guidedtours/forms/tour.xml +++ b/administrator/components/com_guidedtours/forms/tour.xml @@ -27,11 +27,12 @@ /> + diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index 7b4c256c0849f..529cefac8ec40 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -238,7 +238,7 @@ public function getItem($pk = null) $result->description_translation = Text::_($result->description); } - if (empty($result->alias)) { + if (empty($result->alias) && (int) $pk > 0) { $app = Factory::getApplication(); $uri = Uri::getInstance(); $host = $uri->toString(['host']); diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index bcd5eb1bb7832..c9f552020ad9f 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -15,6 +15,7 @@ use Joomla\CMS\MVC\Model\ListModel; use Joomla\Database\ParameterType; use Joomla\Registry\Registry; +use Joomla\CMS\Uri\Uri; use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects @@ -82,6 +83,9 @@ protected function populateState($ordering = 'a.ordering', $direction = 'ASC') $this->setState('filter.extension', $extension); + // By default we don't constrain tours by context + $this->setState('filter.contextspecific', 0); + parent::populateState($ordering, $direction); } @@ -166,11 +170,13 @@ public function getListQuery() // Filter by extension if ($extensionfilter = $this->getState('filter.extensionfilter')) { + //$query->where(':extensions MEMBER OF(' . $db->quoteName('a.extensions') . ')')->bind([':extensions'], $extensionfilter); $extension = '%' . $extensionfilter . '%'; $query->where( $db->quoteName('a.extensions') . ' LIKE :extensions' ) ->bind([':extensions'], $extension); + } elseif ($extension = $this->getState('filter.extension')) { $extension = '%' . $extension . '%'; $all = '%*%'; @@ -212,6 +218,17 @@ public function getListQuery() $query->whereIn($db->quoteName('a.language'), $language, ParameterType::STRING); } + // Filter by context + /* + $contextspecific = $this->getState('filter.contextspecific'); + if ($contextspecific) { + $uri = Uri::getInstance(); + $url = trim($uri->toString(['path', 'query']), '/'); + $url = "administrator/index.php?option=com_content&view=articles"; + $query->where($db->quoteName('a.url') . ' = :context') + ->bind(':context', $url, ParameterType::STRING); + } + */ // Filter by search in title. $search = $this->getState('filter.search'); diff --git a/administrator/components/com_guidedtours/tmpl/step/edit.php b/administrator/components/com_guidedtours/tmpl/step/edit.php index 6fc3704f81fe9..83e046bbfc28d 100644 --- a/administrator/components/com_guidedtours/tmpl/step/edit.php +++ b/administrator/components/com_guidedtours/tmpl/step/edit.php @@ -20,7 +20,7 @@ $wa = $this->document->getWebAssetManager(); $wa->useScript('keepalive') ->useScript('form.validate') - ->useScript('com_guidedtours.tour-edit'); + ->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/administrator/components/com_guidedtours/tmpl/tour/edit.php b/administrator/components/com_guidedtours/tmpl/tour/edit.php index 7502a41b21f13..803cefdcb07da 100644 --- a/administrator/components/com_guidedtours/tmpl/tour/edit.php +++ b/administrator/components/com_guidedtours/tmpl/tour/edit.php @@ -24,7 +24,10 @@ /** @var Joomla\CMS\WebAsset\WebAssetManager $wa */ $wa = $this->document->getWebAssetManager(); $wa->useScript('keepalive') - ->useScript('form.validate'); + ->useScript('form.validate') + ->useScript('com_guidedtours.tour-edit'); + +$this->useCoreUI = true; ?>
diff --git a/administrator/language/en-GB/com_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.ini index 23284c8636b1f..c13261dfc464d 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -52,8 +52,9 @@ COM_GUIDEDTOURS_STEP_NEW_STEP="New Step" COM_GUIDEDTOURS_STEP_POSITION_DESC="Select the position of the step popup, relative to the element it points to." COM_GUIDEDTOURS_STEP_POSITION_LABEL="Position" COM_GUIDEDTOURS_STEP_TITLE="Title" -COM_GUIDEDTOURS_TOUR_ALIAS="Tour Identifier" +COM_GUIDEDTOURS_TOUR_ALIAS_LABEL="Tour Identifier" COM_GUIDEDTOURS_TOUR_ALIAS_DESC="If you are sharing your tour on any other websites then the Tour Identifier needs to be unique.
We suggest a format such as AUTHORNAME-TOURNAME, COMPANYNAME-TOURNAME, SITEDOMAIN-TOURNAME.
If no identifier is provided a value will be computed for you." +COM_GUIDEDTOURS_TOUR_ALIAS_HINT="Unique identifier e.g. tour-author-site-domain-tour-name" COM_GUIDEDTOURS_STEP_TITLE_TRANSLATION="Title (%s)" COM_GUIDEDTOURS_STEP_TARGET_DESC="The target element the step will be attached to. Options: .classname, #id, any selector following the CSS syntax (make sure it is a focusable element if the step is interactive), or leave blank for a centered step." COM_GUIDEDTOURS_STEP_TARGET_LABEL="Target" @@ -88,4 +89,30 @@ COM_GUIDEDTOURS_URL_DESC="Enter the relative URL of the page from where you want COM_GUIDEDTOURS_XML_DESCRIPTION="Component for managing Guided Tours functionality." COM_GUIDEDTOURS_FILTER_EXTENSION_LABEL="Selected Component" COM_GUIDEDTOURS_FILTER_EXTENSION_DESC="Component that restrict a tour to be displayed only when the selected component is active." -COM_GUIDEDTOURS_FILTER_SELECT_TOUR_COMPONENT="Select Component" \ No newline at end of file +COM_GUIDEDTOURS_FILTER_SELECT_TOUR_COMPONENT="Select Component" +COM_GUIDEDTOURS_CONTEXT_SENSITIVE_FILTERING_LABEL="Additional Context Specific Criteria" +COM_GUIDEDTOURS_MATCHING_CRITERIA_NOTE_LABEL="Criteria to match the tour to the user's site actions/page" +COM_GUIDEDTOURS_MATCHING_CRITERIA_NOTE_DESC="You can set a series additional key/value pairs that will be used to match tours that are most relevant to the page being viewed/action undertaken.
Key/Value pairs will be taken from the tour URL and added to the list below when matching context sensitive tours.
You can add as many criteria as you wish but they must all be matched to take effect." +COM_GUIDEDTOURS_MATCHING_CRITERIA_LABEL="Criteria to match" +COM_GUIDEDTOURS_MATCHING_CRITERIA_DESC="These criteria must all be matched for this tour to be highlights are relevant to the user's actions." +COM_GUIDEDTOURS_MATCHING_CRITERIA_GET_OR_POST_KEY_LABEL="Form or URL key" +COM_GUIDEDTOURS_MATCHING_CRITERIA_GET_OR_POST_KEY_DESC="The variable name to match in the URL or POST variables. The matching takes place after a SET URL has been converted to a native Joomla URL" +COM_GUIDEDTOURS_MATCHING_CRITERIA_GET_OR_POST_VALUE_LABEL="Form or URL key" +COM_GUIDEDTOURS_MATCHING_CRITERIA_GET_OR_POST_VALUE_DESC="The variable value to match in the URL or POST variables." +COM_GUIDEDTOURS_FIELD_SPECIAL_ACTIONS_LABEL="Special Actions" +COM_GUIDEDTOURS_SET_FOCUS_LABEL="Set Focus on Target Element When Step is Displayed" +COM_GUIDEDTOURS_SET_FOCUS_DESC="When the step is displayed sets the browser focus on the target element (or custom target element set below)" +COM_GUIDEDTOURS_CUSTOM_FOCUS_TARGET_LABEL="Custom Focus/Required Value Element" +COM_GUIDEDTOURS_CUSTOM_FOCUS_TARGET_DESC="You can set the focus on a DOM element different to main the target element by specifying a CSS selector here. If a required action or value is set then this will apply to this custom focus element as opposed to the display target element." +COM_GUIDEDTOURS_FOCUS_TARGET_LABEL="Focus/Required Value Target" +COM_GUIDEDTOURS_FOCUS_TARGET_DESC="The DOM Element that should receive focus on this step if different to the main target element. If left blank then the main target element will receive the DOM focus when the step dis displayed" +COM_GUIDEDTOURS_PRE_DISPLAY_EVENTS_LABEL="Pre Step Display Event Triggers" +COM_GUIDEDTOURS_PRE_DISPLAY_EVENTS_DESC="If you wish to trigger DOM events prior to displaying the step you can specify the event element and the DOM event to fire. These should NOT cause a form submission or the page to redirect otherwise the tour will lose its position." +COM_GUIDEDTOURS_PRE_DISPLAY_EVENT_ELEMENT_LABEL="Element on which to trigger an event" +COM_GUIDEDTOURS_PRE_DISPLAY_EVENT_ELEMENT_DESC="CSS selector for the element on which the event should be fired" +COM_GUIDEDTOURS_PRE_DISPLAY_EVENT_LABEL="Event(s) to trigger on the specified element" +COM_GUIDEDTOURS_PRE_DISPLAY_EVENT_DESC="Select one or more DOM events to fire on the specified element" +COM_GUIDEDTOURS_CLICK="Click" +COM_GUIDEDTOURS_DOUBLE_CLICK="Double Click" +COM_GUIDEDTOURS_MOUSEOVER="Mouse Over" +COM_GUIDEDTOURS_POINTERENTER="Pointer Enter" \ No newline at end of file diff --git a/administrator/modules/mod_guidedtours/src/Helper/GuidedToursHelper.php b/administrator/modules/mod_guidedtours/src/Helper/GuidedToursHelper.php index bdc899a3a7290..6ecadc68531a1 100644 --- a/administrator/modules/mod_guidedtours/src/Helper/GuidedToursHelper.php +++ b/administrator/modules/mod_guidedtours/src/Helper/GuidedToursHelper.php @@ -52,6 +52,11 @@ public function getTours(Registry $params, AdministratorApplication $app) $tourModel->setState('filter.language', ['*', $app->getLanguage()->getTag()]); } + $hideLinks = $app->getInput()->getBool('hidemainmenu'); + if ($hideLinks) { + $tourModel->setState('filter.contextspecific', 1); + } + $items = $tourModel->getItems(); foreach ($items as $key => $item) { diff --git a/administrator/modules/mod_guidedtours/tmpl/default.php b/administrator/modules/mod_guidedtours/tmpl/default.php index 3a8c84d790d2b..66f9fdcce5c22 100644 --- a/administrator/modules/mod_guidedtours/tmpl/default.php +++ b/administrator/modules/mod_guidedtours/tmpl/default.php @@ -14,9 +14,7 @@ use Joomla\CMS\Language\Text; use Joomla\CMS\Uri\Uri; -$hideLinks = $app->getInput()->getBool('hidemainmenu'); - -if ($hideLinks || !$tours) { +if (!$tours) { return; } diff --git a/build/media_source/com_guidedtours/js/tour-edit.es6.js b/build/media_source/com_guidedtours/js/tour-edit.es6.js index 6858160ce31a5..9ad99538174bc 100644 --- a/build/media_source/com_guidedtours/js/tour-edit.es6.js +++ b/build/media_source/com_guidedtours/js/tour-edit.es6.js @@ -15,7 +15,13 @@ return; } const visibleChildren = fieldset.querySelectorAll(':scope .control-group:not(.hidden)'); - if (visibleChildren.length) { + let countVisible = 0; + visibleChildren.forEach((visibleChild) => { + if (!visibleChild.closest('.control-group.hidden')) { + countVisible += 1; + } + }); + if (countVisible) { fieldset.classList.remove('hidden'); } else { fieldset.classList.add('hidden'); @@ -25,7 +31,13 @@ const tabLabel = document.querySelector(`button[aria-controls="${tabelement.id}"]`); if (tabLabel) { const visibleChildren = tabelement.querySelectorAll(':scope .control-group:not(.hidden)'); - if (visibleChildren.length) { + let countVisible = 0; + visibleChildren.forEach((visibleChild) => { + if (!visibleChild.closest('.control-group.hidden')) { + countVisible += 1; + } + }); + if (countVisible) { tabLabel.removeAttribute('hidden'); } else { tabLabel.setAttribute('hidden', 'hidden'); 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 7356fd9205912..977a30b8352d6 100644 --- a/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js +++ b/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js @@ -148,7 +148,7 @@ function addStepToTourButton(tour, stepObj, buttons) { const secondaryButton = element.querySelector('.shepherd-button-secondary'); // Check to see if the 'next' button should be enabled before showing the step based on being required or - // matcching the required value + // matching the required value switch (this.options.attachTo.interactive_type) { case 'text': if ( @@ -227,6 +227,9 @@ function addStepToTourButton(tour, stepObj, buttons) { if (target.tagName.toLowerCase() === 'iframe') { // Give blur to the content of the iframe, as iframes don't have blur events target.contentWindow.document.body.addEventListener('blur', (event) => { + if (!sessionStorage.getItem('tourId')) { + return; + } setTimeout(() => { setFocus(primaryButton, secondaryButton, cancelButton); }, 1); @@ -234,20 +237,114 @@ function addStepToTourButton(tour, stepObj, buttons) { }); } else if (target.tagName.toLowerCase() === 'joomla-field-fancy-select') { target.querySelector('.choices input').addEventListener('blur', (event) => { + if (!sessionStorage.getItem('tourId')) { + return; + } setFocus(primaryButton, secondaryButton, cancelButton); event.preventDefault(); }); } else if (target.parentElement.tagName.toLowerCase() === 'joomla-field-fancy-select') { target.querySelector('input').addEventListener('blur', (event) => { + if (!sessionStorage.getItem('tourId')) { + return; + } setFocus(primaryButton, secondaryButton, cancelButton); event.preventDefault(); }); } else { target.addEventListener('blur', (event) => { + if (!sessionStorage.getItem('tourId')) { + return; + } setFocus(primaryButton, secondaryButton, cancelButton); event.preventDefault(); }); } + + let focusTarget = target; + if ( + ((this.options.params.customfocustarget || 0) === 1) + && ((this.options.params.focustarget || '') !== '') + ) { + focusTarget = document.querySelector(this.options.params.focustarget); + } + + const gtShowStep = new CustomEvent('guided-tour-show-step', { + detail: { + stepObj, + }, + bubbles: true, + tourId: sessionStorage.getItem('tourId'), + }); + focusTarget.dispatchEvent(gtShowStep); + + // Set focus on input box after the tour step has finished rendering and positioning + // Timeout has to be more than 300 since the setPosition method has a 300 millisecond delay + setTimeout(() => { + // eslint-disable-next-line no-constant-condition + if (this.options.params.setfocus || 1) { + focusTarget.focus(); + } + + const onDisplayEvents = stepObj.params.ondisplayevents || {}; + + Object.values(onDisplayEvents).forEach((displayEvent) => { + let eventElement = onDisplayEvents[displayEvent].ondisplayeventelement; + const eventsToTrigger = onDisplayEvents[displayEvent].ondisplayevent; + if (eventElement !== '' && eventsToTrigger.length > 0) { + eventElement = document.querySelector(eventElement); + if (eventElement) { + eventsToTrigger.forEach((eventName) => { + // console.log(`firing event ${eventName}`); + const event = new MouseEvent(eventName, { + view: window, + bubbles: true, + cancelable: true, + }); + eventElement.dispatchEvent(event); + }); + } + } + }); + + const gtFocusStep = new CustomEvent('guided-tour-step-focussed', { + detail: { + stepObj, + }, + bubbles: true, + tourId: sessionStorage.getItem('tourId'), + }); + focusTarget.dispatchEvent(gtFocusStep); + }, 350); + } else if (this.options.attachTo.type === 'next') { + // Still need to fire the onDisplayEvents + setTimeout(() => { + if (typeof stepObj.params === 'string' && stepObj.params !== '') { + stepObj.params = JSON.parse(stepObj.params); + } else { + stepObj.params = []; + } + + const onDisplayEvents = stepObj.params.ondisplayevents || {}; + Object.values(onDisplayEvents).forEach((displayEvent) => { + let eventElement = onDisplayEvents[displayEvent].ondisplayeventelement; + const eventsToTrigger = onDisplayEvents[displayEvent].ondisplayevent; + if (eventElement !== '' && eventsToTrigger.length > 0) { + eventElement = document.querySelector(eventElement); + if (eventElement) { + eventsToTrigger.forEach((eventName) => { + // console.log(`firing event ${eventName}`); + const event = new MouseEvent(eventName, { + view: window, + bubbles: true, + cancelable: true, + }); + eventElement.dispatchEvent(event); + }); + } + } + }); + }, 350); } }, }, @@ -283,6 +380,41 @@ function addStepToTourButton(tour, stepObj, buttons) { } } + step.on( + 'before-show', + () => { + const preDisplayEvents = stepObj.params.predisplayevents || {}; + + Object.values(preDisplayEvents).forEach((displayEvent) => { + let eventElement = preDisplayEvents[displayEvent].predisplayeventelement; + const eventsToTrigger = preDisplayEvents[displayEvent].predisplayevent; + if (eventElement !== '' && eventsToTrigger.length > 0) { + eventElement = document.querySelector(eventElement); + if (eventElement) { + eventsToTrigger.forEach((eventName) => { + // console.log(`firing event ${eventName}`); + const event = new MouseEvent(eventName, { + view: window, + bubbles: true, + cancelable: true, + }); + eventElement.dispatchEvent(event); + }); + } + } + }); + + const gtBeforeStep = new CustomEvent('guided-tour-before-show-step', { + detail: { + stepObj, + }, + bubbles: true, + tourId: sessionStorage.getItem('tourId'), + }); + document.dispatchEvent(gtBeforeStep); + }, + ); + tour.addStep(step); } @@ -420,6 +552,9 @@ function startTour(obj) { switch (obj.steps[index].interactive_type) { case 'submit': ele.addEventListener('click', () => { + if (!sessionStorage.getItem('tourId')) { + return; + } sessionStorage.setItem('currentStepId', obj.steps[index].id + 1); }); break; @@ -434,6 +569,9 @@ function startTour(obj) { ) ) { ['input', 'focus'].forEach((eventName) => ele.addEventListener(eventName, (event) => { + if (!sessionStorage.getItem('tourId')) { + return; + } if ((obj.steps[index].params.requiredvalue || '') !== '') { if (event.target.value.trim() === obj.steps[index].params.requiredvalue) { enableButton(event); @@ -457,6 +595,9 @@ function startTour(obj) { && ['checkbox', 'radio'].includes(ele.type) ) { ['click'].forEach((eventName) => ele.addEventListener(eventName, (event) => { + if (!sessionStorage.getItem('tourId')) { + return; + } if (event.target.checked) { enableButton(event); } else { @@ -473,6 +614,9 @@ function startTour(obj) { && (ele.hasAttribute('required') || (obj.steps[index].params.required || 0)) ) { ['change'].forEach((eventName) => ele.addEventListener(eventName, (event) => { + if (!sessionStorage.getItem('tourId')) { + return; + } if ((obj.steps[index].params.requiredvalue || '') !== '') { if (event.target.value.trim() === obj.steps[index].params.requiredvalue) { enableButton(event); From 6f54f754c20f9b60b04095695fd6349ad4d8a55d Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Thu, 6 Jul 2023 14:30:49 +0100 Subject: [PATCH 025/127] shorten timeout for event handlers --- .../js/guidedtours.es6.js | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 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 977a30b8352d6..1ab196e2562a7 100644 --- a/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js +++ b/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js @@ -272,6 +272,7 @@ function addStepToTourButton(tour, stepObj, buttons) { const gtShowStep = new CustomEvent('guided-tour-show-step', { detail: { stepObj, + tour, }, bubbles: true, tourId: sessionStorage.getItem('tourId'), @@ -288,14 +289,14 @@ function addStepToTourButton(tour, stepObj, buttons) { const onDisplayEvents = stepObj.params.ondisplayevents || {}; - Object.values(onDisplayEvents).forEach((displayEvent) => { + Object.keys(onDisplayEvents).forEach((displayEvent) => { let eventElement = onDisplayEvents[displayEvent].ondisplayeventelement; const eventsToTrigger = onDisplayEvents[displayEvent].ondisplayevent; if (eventElement !== '' && eventsToTrigger.length > 0) { eventElement = document.querySelector(eventElement); if (eventElement) { eventsToTrigger.forEach((eventName) => { - // console.log(`firing event ${eventName}`); + console.log(`firing event ${eventName}`); const event = new MouseEvent(eventName, { view: window, bubbles: true, @@ -310,12 +311,13 @@ function addStepToTourButton(tour, stepObj, buttons) { const gtFocusStep = new CustomEvent('guided-tour-step-focussed', { detail: { stepObj, + tour, }, bubbles: true, tourId: sessionStorage.getItem('tourId'), }); focusTarget.dispatchEvent(gtFocusStep); - }, 350); + }, 320); } else if (this.options.attachTo.type === 'next') { // Still need to fire the onDisplayEvents setTimeout(() => { @@ -326,7 +328,7 @@ function addStepToTourButton(tour, stepObj, buttons) { } const onDisplayEvents = stepObj.params.ondisplayevents || {}; - Object.values(onDisplayEvents).forEach((displayEvent) => { + Object.keys(onDisplayEvents).forEach((displayEvent) => { let eventElement = onDisplayEvents[displayEvent].ondisplayeventelement; const eventsToTrigger = onDisplayEvents[displayEvent].ondisplayevent; if (eventElement !== '' && eventsToTrigger.length > 0) { @@ -344,7 +346,7 @@ function addStepToTourButton(tour, stepObj, buttons) { } } }); - }, 350); + }, 20); } }, }, @@ -385,7 +387,7 @@ function addStepToTourButton(tour, stepObj, buttons) { () => { const preDisplayEvents = stepObj.params.predisplayevents || {}; - Object.values(preDisplayEvents).forEach((displayEvent) => { + Object.keys(preDisplayEvents).forEach((displayEvent) => { let eventElement = preDisplayEvents[displayEvent].predisplayeventelement; const eventsToTrigger = preDisplayEvents[displayEvent].predisplayevent; if (eventElement !== '' && eventsToTrigger.length > 0) { @@ -407,6 +409,7 @@ function addStepToTourButton(tour, stepObj, buttons) { const gtBeforeStep = new CustomEvent('guided-tour-before-show-step', { detail: { stepObj, + tour, }, bubbles: true, tourId: sessionStorage.getItem('tourId'), @@ -633,7 +636,11 @@ function startTour(obj) { break; case 'button': - tour.next(); + ele.addEventListener('click', () => { + // the button may submit a form so record the currentStepId in the session storage + sessionStorage.setItem('currentStepId', obj.steps[index].id + 1); + tour.next(); + }); break; case 'other': From bea86b4696fdaae62f01016f080874821b822352 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Thu, 6 Jul 2023 14:38:45 +0100 Subject: [PATCH 026/127] rename event fired when step is displayed and positioned. Remove 500 error when viewing steps with no tour id - this arises when you're logged out and refresh the page so instead redirect to tours listing page --- .../src/View/Steps/HtmlView.php | 7 ++++++- .../language/en-GB/com_guidedtours.ini | 3 ++- .../js/guidedtours.es6.js | 19 +++++++++++++++---- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/administrator/components/com_guidedtours/src/View/Steps/HtmlView.php b/administrator/components/com_guidedtours/src/View/Steps/HtmlView.php index 9deed99012dc7..d7982c4230a90 100644 --- a/administrator/components/com_guidedtours/src/View/Steps/HtmlView.php +++ b/administrator/components/com_guidedtours/src/View/Steps/HtmlView.php @@ -99,7 +99,12 @@ public function display($tpl = null) } if ($this->state->get('filter.tour_id', -1) < 0) { - throw new GenericDataException(implode("\n", $errors), 500); + // This arises when you are logged out and return to the steps view after logging back in + // We redirect back to the tour lists view + $app = Factory::getApplication(); + $app->enqueueMessage(Text::_("COM_GUIDEDTOURS_STEPS_UNKNOWN_TOUR"), 'notice'); + $app->redirect(Route::_('index.php?option=com_guidedtours&view=tours', false), 300); + return; } // Unset the tour_id field from activeFilters as we don't filter by tour here. diff --git a/administrator/language/en-GB/com_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.ini index c13261dfc464d..dfdd3250e032b 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -115,4 +115,5 @@ COM_GUIDEDTOURS_PRE_DISPLAY_EVENT_DESC="Select one or more DOM events to fire on COM_GUIDEDTOURS_CLICK="Click" COM_GUIDEDTOURS_DOUBLE_CLICK="Double Click" COM_GUIDEDTOURS_MOUSEOVER="Mouse Over" -COM_GUIDEDTOURS_POINTERENTER="Pointer Enter" \ No newline at end of file +COM_GUIDEDTOURS_POINTERENTER="Pointer Enter" +COM_GUIDEDTOURS_STEPS_UNKNOWN_TOUR="Missing Tour Id" \ 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 1ab196e2562a7..2905fd7157e7b 100644 --- a/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js +++ b/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js @@ -308,15 +308,16 @@ function addStepToTourButton(tour, stepObj, buttons) { } }); - const gtFocusStep = new CustomEvent('guided-tour-step-focussed', { + const gtDisplayStep = new CustomEvent('guided-tour-step-display', { detail: { stepObj, - tour, + tour }, bubbles: true, - tourId: sessionStorage.getItem('tourId'), + tourId: sessionStorage.getItem('tourId') }); - focusTarget.dispatchEvent(gtFocusStep); + focusTarget.dispatchEvent(gtDisplayStep); + }, 320); } else if (this.options.attachTo.type === 'next') { // Still need to fire the onDisplayEvents @@ -346,6 +347,16 @@ function addStepToTourButton(tour, stepObj, buttons) { } } }); + const gtDisplayStep = new CustomEvent('guided-tour-step-display', { + detail: { + stepObj, + tour + }, + bubbles: true, + tourId: sessionStorage.getItem('tourId') + }); + document.dispatchEvent(gtDisplayStep); + }, 20); } }, From 0f032144ddd873a4dd772d3db60d344e382f92ac Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 7 Jul 2023 15:53:23 +0100 Subject: [PATCH 027/127] Get Tour by alias First step towards guided tours editor plugin (backend use only) --- .../com_guidedtours/src/Model/TourModel.php | 45 ++++++++++ .../en-GB/plg_editors-xtd_guidedtour.ini | 9 ++ .../en-GB/plg_editors-xtd_guidedtour.sys.ini | 7 ++ .../js/guidedtours.es6.js | 33 ++++--- plugins/editors-xtd/guidedtour/guidedtour.xml | 21 +++++ .../guidedtour/services/provider.php | 46 ++++++++++ .../guidedtour/src/Extension/Guidedtour.php | 63 ++++++++++++++ .../guidedtours/src/Extension/GuidedTours.php | 86 +++++++++++++++++-- 8 files changed, 290 insertions(+), 20 deletions(-) create mode 100644 administrator/language/en-GB/plg_editors-xtd_guidedtour.ini create mode 100644 administrator/language/en-GB/plg_editors-xtd_guidedtour.sys.ini create mode 100644 plugins/editors-xtd/guidedtour/guidedtour.xml create mode 100644 plugins/editors-xtd/guidedtour/services/provider.php create mode 100644 plugins/editors-xtd/guidedtour/src/Extension/Guidedtour.php diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index 529cefac8ec40..35d2cfbb0f836 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -253,6 +253,51 @@ public function getItem($pk = null) return $result; } + /** + * Method to get a single record by alias + * + * @param string $alias The alias of the tour. + * + * @return CMSObject|boolean Object on success, false on failure. + * + * @since 5.0.0 + */ + public function getItemByAlias($alias = "") + { + Factory::getLanguage()->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); + + $db = $this->getDatabase(); + $query = $db->getQuery(true) + ->select($db->quoteName('id')) + ->from($db->quoteName('#__guidedtours')) + ->where($db->quoteName('alias') . ' = :alias') + ->bind(':alias', $alias, ParameterType::STRING); + + $db->setQuery($query); + $pk = (int) $db->loadResult(); + + $result = parent::getItem($pk); + + if (!empty($result->id)) { + $result->title_translation = Text::_($result->title); + $result->description_translation = Text::_($result->description); + } + + if (empty($result->alias) && (int) $pk > 0) { + $app = Factory::getApplication(); + $uri = Uri::getInstance(); + $host = $uri->toString(['host']); + $aliasTitle = $host . " " . str_replace("COM_GUIDEDTOURS_TOUR_", "", $result->title); + if ($app->get('unicodeslugs') == 1) { + $result->alias = OutputFilter::stringUrlUnicodeSlug($aliasTitle); + } else { + $result->alias = OutputFilter::stringURLSafe($aliasTitle); + } + } + + return $result; + } + /** * Delete all steps if a tour is deleted * diff --git a/administrator/language/en-GB/plg_editors-xtd_guidedtour.ini b/administrator/language/en-GB/plg_editors-xtd_guidedtour.ini new file mode 100644 index 0000000000000..0daeefd58373e --- /dev/null +++ b/administrator/language/en-GB/plg_editors-xtd_guidedtour.ini @@ -0,0 +1,9 @@ +; 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 + +PLG_EDITORS-XTD_GUIDEDTOUR="Button - Guided Tour" +PLG_GUIDEDTOUR_BUTTON_GUIDEDTOUR="Guided Tour" +PLG_GUIDEDTOUR_BUTTON_INSERT="Insert Guided Tour" +PLG_GUIDEDTOUR_XML_DESCRIPTION="Displays a button to insert guided tour into an editor area." diff --git a/administrator/language/en-GB/plg_editors-xtd_guidedtour.sys.ini b/administrator/language/en-GB/plg_editors-xtd_guidedtour.sys.ini new file mode 100644 index 0000000000000..109c12bd9c19f --- /dev/null +++ b/administrator/language/en-GB/plg_editors-xtd_guidedtour.sys.ini @@ -0,0 +1,7 @@ +; Joomla! Project +; (C) 2010 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_EDITORS-XTD_GUIDEDTOUR="Button - Guided Tour" +PLG_GUIDEDTOUR_XML_DESCRIPTION="Displays a button to insert guided tour into an editor area." 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 2905fd7157e7b..c457e94a2a8eb 100644 --- a/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js +++ b/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js @@ -296,7 +296,7 @@ function addStepToTourButton(tour, stepObj, buttons) { eventElement = document.querySelector(eventElement); if (eventElement) { eventsToTrigger.forEach((eventName) => { - console.log(`firing event ${eventName}`); + // console.log(`firing event ${eventName}`); const event = new MouseEvent(eventName, { view: window, bubbles: true, @@ -311,13 +311,12 @@ function addStepToTourButton(tour, stepObj, buttons) { const gtDisplayStep = new CustomEvent('guided-tour-step-display', { detail: { stepObj, - tour + tour, }, bubbles: true, - tourId: sessionStorage.getItem('tourId') + tourId: sessionStorage.getItem('tourId'), }); focusTarget.dispatchEvent(gtDisplayStep); - }, 320); } else if (this.options.attachTo.type === 'next') { // Still need to fire the onDisplayEvents @@ -350,13 +349,12 @@ function addStepToTourButton(tour, stepObj, buttons) { const gtDisplayStep = new CustomEvent('guided-tour-step-display', { detail: { stepObj, - tour + tour, }, bubbles: true, - tourId: sessionStorage.getItem('tourId') + tourId: sessionStorage.getItem('tourId'), }); document.dispatchEvent(gtDisplayStep); - }, 20); } }, @@ -681,8 +679,16 @@ function startTour(obj) { } function loadTour(tourId) { - if (tourId > 0) { - const url = `${Joomla.getOptions('system.paths').rootFull}administrator/index.php?option=com_ajax&plugin=guidedtours&group=system&format=json&id=${tourId}`; + const tourAlias = Number.parseInt(tourId, 10) > 0 ? '' : encodeURI(tourId); + const tourNumber = Number.parseInt(tourId, 10) > 0 ? Number.parseInt(tourId, 10) : 0; + + if (tourNumber > 0 || tourAlias !== '') { + let url = `${Joomla.getOptions('system.paths').rootFull}administrator/index.php?option=com_ajax&plugin=guidedtours&group=system&format=json`; + if (tourNumber > 0) { + url += `&id=${tourNumber}`; + } else { + url += `&alias=${tourAlias}`; + } fetch(url) .then((response) => response.json()) .then((result) => { @@ -716,19 +722,22 @@ document.querySelector('body').addEventListener('click', (event) => { } // Click button but missing data-id - if (typeof event.target.getAttribute('data-id') === 'undefined' || event.target.getAttribute('data-id') <= 0) { + if ( + (!event.target.hasAttribute('data-id') || event.target.getAttribute('data-id') <= 0) + && (!event.target.hasAttribute('data-gt-alias') || event.target.getAttribute('data-gt-alias') === '') + ) { Joomla.renderMessages({ error: [Joomla.Text._('PLG_SYSTEM_GUIDEDTOURS_COULD_NOT_LOAD_THE_TOUR')] }); return; } sessionStorage.setItem('tourToken', String(Joomla.getOptions('com_guidedtours.token'))); - loadTour(event.target.getAttribute('data-id')); + loadTour(event.target.getAttribute('data-id') || event.target.getAttribute('data-gt-alias')); }); // Start a given tour const tourId = sessionStorage.getItem('tourId'); -if (tourId > 0 && sessionStorage.getItem('tourToken') === String(Joomla.getOptions('com_guidedtours.token'))) { +if ((Number.parseInt(tourId, 10) > 0 || tourId !== '') && sessionStorage.getItem('tourToken') === String(Joomla.getOptions('com_guidedtours.token'))) { loadTour(tourId); } else { emptyStorage(); diff --git a/plugins/editors-xtd/guidedtour/guidedtour.xml b/plugins/editors-xtd/guidedtour/guidedtour.xml new file mode 100644 index 0000000000000..d6b5739bb939c --- /dev/null +++ b/plugins/editors-xtd/guidedtour/guidedtour.xml @@ -0,0 +1,21 @@ + + + plg_editors-xtd_guidedtour + Joomla! Project + 2023 + (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_GUIDEDTOUR_XML_DESCRIPTION + Joomla\Plugin\EditorsXtd\Guidedtour + + services + src + + + language/en-GB/plg_editors-xtd_guidedtour.ini + language/en-GB/plg_editors-xtd_guidedtour.sys.ini + + diff --git a/plugins/editors-xtd/guidedtour/services/provider.php b/plugins/editors-xtd/guidedtour/services/provider.php new file mode 100644 index 0000000000000..310b6f89f6b35 --- /dev/null +++ b/plugins/editors-xtd/guidedtour/services/provider.php @@ -0,0 +1,46 @@ + + * @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\EditorsXtd\Guidedtour\Extension\Guidedtour; + +return new class () implements ServiceProviderInterface { + /** + * Registers the service provider with a DI container. + * + * @param Container $container The DI container. + * + * @return void + * + * @since 4.3.0 + */ + public function register(Container $container) + { + $container->set( + PluginInterface::class, + function (Container $container) { + $plugin = new Guidedtour( + $container->get(DispatcherInterface::class), + (array) PluginHelper::getPlugin('editors-xtd', 'guidedtour') + ); + $plugin->setApplication(Factory::getApplication()); + + return $plugin; + } + ); + } +}; diff --git a/plugins/editors-xtd/guidedtour/src/Extension/Guidedtour.php b/plugins/editors-xtd/guidedtour/src/Extension/Guidedtour.php new file mode 100644 index 0000000000000..0c1909cbcaced --- /dev/null +++ b/plugins/editors-xtd/guidedtour/src/Extension/Guidedtour.php @@ -0,0 +1,63 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +namespace Joomla\Plugin\EditorsXtd\Guidedtour\Extension; + +use Joomla\CMS\Component\ComponentHelper; +use Joomla\CMS\Language\Text; +use Joomla\CMS\Object\CMSObject; +use Joomla\CMS\Plugin\CMSPlugin; +use Joomla\CMS\Uri\Uri; + +// phpcs:disable PSR1.Files.SideEffects +\defined('_JEXEC') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Editor Guidedtour button + * + * @since 1.5 + */ +final class Guidedtour extends CMSPlugin +{ + /** + * Load the language file on instantiation. + * + * @var boolean + * @since 3.1 + */ + protected $autoloadLanguage = true; + + /** + * Display the button. + * + * @param string $name The name of the button to display. + * @param string $asset The name of the asset being edited. + * @param integer $author The id of the author owning the asset being edited. + * + * @return CMSObject|false + * + * @since 1.5 + */ + public function onDisplay($name) + { + + $button = new CMSObject(); + $button->modal = false; + $button->onclick = 'Joomla.editors.instances[\'' . $name . '\'].replaceSelection(\'
\');return false;'; + $button->text = Text::_('PLG_READMORE_BUTTON_READMORE'); + $button->name = $this->_type . '_' . $this->_name; + $button->icon = 'arrow-down'; + $button->iconSVG = ''; + $button->link = '#'; + + return $button; + } +} diff --git a/plugins/system/guidedtours/src/Extension/GuidedTours.php b/plugins/system/guidedtours/src/Extension/GuidedTours.php index 761ab142d0d7e..8cdd77eacc8ad 100644 --- a/plugins/system/guidedtours/src/Extension/GuidedTours.php +++ b/plugins/system/guidedtours/src/Extension/GuidedTours.php @@ -11,6 +11,7 @@ namespace Joomla\Plugin\System\GuidedTours\Extension; use Joomla\CMS\Language\Text; +use Joomla\CMS\Object\CMSObject; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Session\Session; use Joomla\Component\Guidedtours\Administrator\Extension\GuidedtoursComponent; @@ -107,13 +108,22 @@ public static function getSubscribedEvents(): array public function startTour(Event $event) { $tourId = (int) $this->getApplication()->getInput()->getInt('id'); + $tourAlias = $this->getApplication()->getInput()->getString('alias'); + $tourAlias = $tourAlias !== "" ? @urldecode($tourAlias) : $tourAlias; - $activeTourId = null; - $tour = null; + $activeTourId = null; + $activeTourAlias = null; + $tour = null; if ($tourId > 0) { $tour = $this->getTour($tourId); + if (!empty($tour->id)) { + $activeTourId = $tour->id; + } + } else if ($tourAlias !== "") { + $tour = $this->getTourByAlias($tourAlias); + if (!empty($tour->id)) { $activeTourId = $tour->id; } @@ -164,21 +174,62 @@ public function onBeforeCompileHead() * * @since 4.3.0 */ - private function getTour(int $tourId) - { + private function getTour(int $tourId) { $app = $this->getApplication(); - $user = $app->getIdentity(); + $factory = $app->bootComponent( 'com_guidedtours' )->getMVCFactory(); + + $tourModel = $factory->createModel( + 'Tour', + 'Administrator', + [ 'ignore_request' => true ] + ); + + $item = $tourModel->getItem( $tourId ); + + return $this->processTour($item); + } + + /** + * Get a tour and its steps or null if not found + * + * @param integer $tourId The ID of the tour to load + * + * @return null|object + * + * @since 4.3.0 + */ + private function getTourByAlias(string $tourAlias) { + $app = $this->getApplication(); - $factory = $app->bootComponent('com_guidedtours')->getMVCFactory(); + $factory = $app->bootComponent( 'com_guidedtours' )->getMVCFactory(); $tourModel = $factory->createModel( 'Tour', 'Administrator', - ['ignore_request' => true] + [ 'ignore_request' => true ] ); - $item = $tourModel->getItem($tourId); + $item = $tourModel->getItemByAlias( $tourAlias ); + + return $this->processTour($item); + } + + /** + * Return a tour and its steps or null if not found + * + * @param TODO integer $tourId The ID of the tour to load + * + * @return null|object + * + * @since 5.0.0 + */ + private function processTour($item) + { + $app = $this->getApplication(); + + $user = $app->getIdentity(); + $factory = $app->bootComponent( 'com_guidedtours' )->getMVCFactory(); if (empty($item->id) || $item->published < 1 || !in_array($item->access, $user->getAuthorisedViewLevels())) { return null; @@ -237,4 +288,23 @@ private function getTour(int $tourId) return $tour; } + + /** + * Display the extended editor button. + * + * @param string $name The name of the button to display. + * @param string $asset The name of the asset being edited. + * @param integer $author The id of the author owning the asset being edited. + * + * @return CMSObject|false + * + * @since __DEPLOY_VERSION__ + */ + public function onDisplay($name, $asset, $author) { + $doc = $this->getApplication()->getDocument(); + $user = $this->getApplication()->getIdentity(); + $extension = $this->getApplication()->getInput()->get('option'); + + } + } From c3319dd35f3f037d83fe5d1fe3bd36340d7ec0e8 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Mon, 10 Jul 2023 09:34:23 +0100 Subject: [PATCH 028/127] New language file naming convention with fallback to old files to allow overrides to still work --- .../com_guidedtours/src/Model/StepsModel.php | 17 ++++ .../com_guidedtours/src/Model/TourModel.php | 8 ++ .../com_guidedtours/src/Model/ToursModel.php | 4 +- .../language/en-GB/com_guidedtours.sys.ini | 56 ++++++------- ...rs_ubu_joomla_tours_net_articles_title.ini | 46 +++++++++++ .../modules/mod_guidedtours/tmpl/default.php | 79 +++++++++++-------- 6 files changed, 147 insertions(+), 63 deletions(-) create mode 100644 administrator/language/en-GB/com_guidedtours_ubu_joomla_tours_net_articles_title.ini diff --git a/administrator/components/com_guidedtours/src/Model/StepsModel.php b/administrator/components/com_guidedtours/src/Model/StepsModel.php index 8dbb9d5387140..509eeee1add56 100644 --- a/administrator/components/com_guidedtours/src/Model/StepsModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepsModel.php @@ -231,7 +231,24 @@ public function getItems() Factory::getLanguage()->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); + $tourLanguageLoaded = false; foreach ($items as $item) { + if (!$tourLanguageLoaded) { + $app = Factory::getApplication(); + $tourId = $item->tour_id; + + /** @var \Joomla\Component\Guidedtours\Administrator\Model\TourModel $tourModel */ + $tourModel = $app->bootComponent('com_guidedtours') + ->getMVCFactory()->createModel('Tour', 'Administrator', [ 'ignore_request' => true ]); + + $tour = $tourModel->getItem($tourId); + + if (!empty($tour->alias)) { + Factory::getLanguage()->load("com_guidedtours_" . str_replace("-", "_", $tour->alias), JPATH_ADMINISTRATOR); + } + $tourLanguageLoaded = true; + } + $item->title = Text::_($item->title); $item->description = Text::_($item->description); diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index 35d2cfbb0f836..6ca6d6895a7dd 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -233,6 +233,10 @@ public function getItem($pk = null) $result = parent::getItem($pk); + if (!empty($result->alias)) { + Factory::getLanguage()->load("com_guidedtours_" . str_replace("-", "_", $result->alias), JPATH_ADMINISTRATOR); + } + if (!empty($result->id)) { $result->title_translation = Text::_($result->title); $result->description_translation = Text::_($result->description); @@ -278,6 +282,10 @@ public function getItemByAlias($alias = "") $result = parent::getItem($pk); + if (!empty($result->alias)) { + Factory::getLanguage()->load("com_guidedtours_" . str_replace("-", "_", $result->alias), JPATH_ADMINISTRATOR); + } + if (!empty($result->id)) { $result->title_translation = Text::_($result->title); $result->description_translation = Text::_($result->description); diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index c9f552020ad9f..f850d513f179c 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -176,7 +176,6 @@ public function getListQuery() $db->quoteName('a.extensions') . ' LIKE :extensions' ) ->bind([':extensions'], $extension); - } elseif ($extension = $this->getState('filter.extension')) { $extension = '%' . $extension . '%'; $all = '%*%'; @@ -275,6 +274,9 @@ public function getItems() Factory::getLanguage()->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); foreach ($items as $item) { + if (!empty($item->alias)) { + Factory::getLanguage()->load("com_guidedtours_" . str_replace("-", "_", $item->alias), JPATH_ADMINISTRATOR); + } $item->title = Text::_($item->title); $item->description = Text::_($item->description); $item->extensions = (new Registry($item->extensions))->toArray(); diff --git a/administrator/language/en-GB/com_guidedtours.sys.ini b/administrator/language/en-GB/com_guidedtours.sys.ini index 8a8478b88b5d0..2f1abc6f19a7b 100644 --- a/administrator/language/en-GB/com_guidedtours.sys.ini +++ b/administrator/language/en-GB/com_guidedtours.sys.ini @@ -65,47 +65,47 @@ COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_SAVECLOSE_DESCRIPTION="Save and close COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_CONGRATULATIONS_TITLE="Congratulations!" COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a step for a guided tour." -COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles?" -COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION="This tour will show you how you can create an article." +;COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles?" +;COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION="This tour will show you how you can create an article." -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_DESCRIPTION="Select 'New' to create a new article." +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_TITLE="Select the 'New' button" +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_DESCRIPTION="Select 'New' to create a new article." -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_TITLE="Add a title for the article" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_DESCRIPTION="Enter a required title for the article." +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_TITLE="Add a title for the article" +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_DESCRIPTION="Enter a required title for the article." -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_DESCRIPTION="You can write the internal name of this article. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_TITLE="Enter an alias" +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_DESCRIPTION="You can write the internal name of this article. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_TITLE="Add content" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_DESCRIPTION="Add the content of your article in the editor." +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_TITLE="Add content" +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_DESCRIPTION="Add the content of your article in the editor." -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_DESCRIPTION="Select the published status of the article." +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_TITLE="Select the status" +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_DESCRIPTION="Select the published status of the article." -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_TITLE="Select a category" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_DESCRIPTION="Select the category for this article. You can also enter a new category by typing the name in the field and pressing enter." +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_TITLE="Select a category" +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_DESCRIPTION="Select the category for this article. You can also enter a new category by typing the name in the field and pressing enter." -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_TITLE="Toggle featured" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_DESCRIPTION="Select 'Featured' to feature your article." +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_TITLE="Toggle featured" +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_DESCRIPTION="Select 'Featured' to feature your article." -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_TITLE="Set the access level" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_DESCRIPTION="Select the access level for the article." +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_TITLE="Set the access level" +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_DESCRIPTION="Select the access level for the article." -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_TITLE="Add tags" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_DESCRIPTION="Select tags for your article. You can also enter a new tag by typing the name in the field and pressing enter." +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_TITLE="Add tags" +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_DESCRIPTION="Select tags for your article. You can also enter a new tag by typing the name in the field and pressing enter." -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_TITLE="Add a note" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_TITLE="Add a note" +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this article." +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_TITLE="Add a version note" +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this article." -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_DESCRIPTION="Save and close the article." +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_DESCRIPTION="Save and close the article." -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_DESCRIPTION="You have created an article." +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_TITLE="Congratulations!" +;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_DESCRIPTION="You have created an article." COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE="How to create categories?" COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION="This tour will show you how you can create a category." diff --git a/administrator/language/en-GB/com_guidedtours_ubu_joomla_tours_net_articles_title.ini b/administrator/language/en-GB/com_guidedtours_ubu_joomla_tours_net_articles_title.ini new file mode 100644 index 0000000000000..549c62c504246 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_ubu_joomla_tours_net_articles_title.ini @@ -0,0 +1,46 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles 222?" +COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION="This tour will show you how you can create an article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_TITLE="Select the 'New' button please" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_DESCRIPTION="Select 'New' to create a new article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_TITLE="Add a title for the article" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_DESCRIPTION="Enter a required title for the article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_DESCRIPTION="You can write the internal name of this article. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_TITLE="Add content" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_DESCRIPTION="Add the content of your article in the editor." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_DESCRIPTION="Select the published status of the article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_TITLE="Select a category" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_DESCRIPTION="Select the category for this article. You can also enter a new category by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_TITLE="Toggle featured" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_DESCRIPTION="Select 'Featured' to feature your article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_TITLE="Set the access level" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_DESCRIPTION="Select the access level for the article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_TITLE="Add tags" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_DESCRIPTION="Select tags for your article. You can also enter a new tag by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_TITLE="Add a note" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_DESCRIPTION="Save and close the article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_DESCRIPTION="You have created an article." diff --git a/administrator/modules/mod_guidedtours/tmpl/default.php b/administrator/modules/mod_guidedtours/tmpl/default.php index 66f9fdcce5c22..531af3800dd10 100644 --- a/administrator/modules/mod_guidedtours/tmpl/default.php +++ b/administrator/modules/mod_guidedtours/tmpl/default.php @@ -1,11 +1,11 @@ - * @license GNU General Public License version 2 or later; see LICENSE.txt + * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; @@ -14,7 +14,9 @@ use Joomla\CMS\Language\Text; use Joomla\CMS\Uri\Uri; -if (!$tours) { +$hideLinks = $app->getInput()->getBool('hidemainmenu'); + +if ($hideLinks || ! $tours) { return; } @@ -28,10 +30,12 @@ $extension = $app->getInput()->get('option'); $listTours = []; -$allTours = []; +$allTours = []; + +$lang->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); foreach ($tours as $tour) : - if (count(array_intersect(['*', $extension], $tour->extensions))) : + if (count(array_intersect([ '*', $extension ], $tour->extensions))) : $listTours[] = $tour; endif; @@ -40,7 +44,12 @@ // We assume the url is the starting point $key = $uri->getVar('option') ?? Text::_('MOD_GUIDEDTOURS_GENERIC_TOUR'); - if (!isset($allTours[$key])) : + if (empty($tour->alias)) + { + $lang->load( "com_guidedtours_" . str_replace( "-", "_", $tour->alias ), JPATH_ADMINISTRATOR ); + } + + if (! isset($allTours[$key])) : $lang->load("$key.sys", JPATH_ADMINISTRATOR) || $lang->load("$key.sys", JPATH_ADMINISTRATOR . '/components/' . $key); @@ -51,40 +60,42 @@ endforeach; ?> - + Text::_('MOD_GUIDEDTOURS_START_TOUR'), 'footer' => '', + . Text::_('JLIB_HTML_BEHAVIOR_CLOSE') . '', ]; -$modalHtml = []; +$modalHtml = []; $modalHtml[] = '
'; $modalHtml[] = '
'; foreach ($allTours as $extension => $tours) : From ac72ba56752e6378ab5daec6f03c7555d82a6b3e Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Tue, 11 Jul 2023 10:47:59 +0100 Subject: [PATCH 029/127] include tour step element in event detail --- .../media_source/plg_system_guidedtours/js/guidedtours.es6.js | 3 +++ 1 file changed, 3 insertions(+) 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 c457e94a2a8eb..308573d78949f 100644 --- a/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js +++ b/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js @@ -273,6 +273,7 @@ function addStepToTourButton(tour, stepObj, buttons) { detail: { stepObj, tour, + element, }, bubbles: true, tourId: sessionStorage.getItem('tourId'), @@ -312,6 +313,7 @@ function addStepToTourButton(tour, stepObj, buttons) { detail: { stepObj, tour, + element, }, bubbles: true, tourId: sessionStorage.getItem('tourId'), @@ -350,6 +352,7 @@ function addStepToTourButton(tour, stepObj, buttons) { detail: { stepObj, tour, + element, }, bubbles: true, tourId: sessionStorage.getItem('tourId'), From 896090e72ebe731b51ef12946a8183c19f940a10 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 12 Jul 2023 09:36:16 +0100 Subject: [PATCH 030/127] 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 3e1e01602490c4efc1d91b5ba56b2d31bb5c2108 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 12 Jul 2023 10:39:13 +0100 Subject: [PATCH 031/127] editor button for selecting tours --- .../sql/updates/mysql/5.0.0-2023-07-12.sql | 2 + .../updates/postgresql/5.0.0-2023-07-12.sql | 3 + .../com_guidedtours/tmpl/tours/modal.php | 173 ++++++++++++++++++ .../en-GB/plg_editors-xtd_guidedtour.ini | 6 +- .../en-GB/plg_editors-xtd_guidedtour.sys.ini | 2 +- plugins/editors-xtd/guidedtour/guidedtour.xml | 2 +- .../guidedtour/services/provider.php | 6 +- .../guidedtour/src/Extension/Guidedtour.php | 49 +++-- 8 files changed, 226 insertions(+), 17 deletions(-) create mode 100644 administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-07-12.sql create mode 100644 administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-07-12.sql create mode 100644 administrator/components/com_guidedtours/tmpl/tours/modal.php 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 new file mode 100644 index 0000000000000..f79d64c4de5cf --- /dev/null +++ b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-07-12.sql @@ -0,0 +1,2 @@ +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_editors-xtd_guidedtour', 'plugin', 'compat', 'editors-xtd', 0, 1, 1, 0, 1, '', '', '', 0, 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 new file mode 100644 index 0000000000000..529090462e260 --- /dev/null +++ b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-07-12.sql @@ -0,0 +1,3 @@ +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_editors-xtd_guidedtour', 'plugin', 'compat', 'editors-xtd', 0, 1, 1, 0, 1, '', '', '', 0, 0); + diff --git a/administrator/components/com_guidedtours/tmpl/tours/modal.php b/administrator/components/com_guidedtours/tmpl/tours/modal.php new file mode 100644 index 0000000000000..9666fc19df837 --- /dev/null +++ b/administrator/components/com_guidedtours/tmpl/tours/modal.php @@ -0,0 +1,173 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Factory; +use Joomla\CMS\HTML\Helpers\StringHelper; +use Joomla\CMS\HTML\HTMLHelper; +use Joomla\CMS\Language\Text; +use Joomla\CMS\Language\Multilanguage; +use Joomla\CMS\Layout\LayoutHelper; +use Joomla\CMS\Router\Route; +use Joomla\CMS\Session\Session; +use Joomla\Component\Guidedtours\Administrator\View\Tours\HtmlView; + +$app = Factory::getApplication(); + +if ($app->isClient('site')) { + Session::checkToken('get') or die(Text::_('JINVALID_TOKEN')); +} + +/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */ +$wa = $this->document->getWebAssetManager(); +$wa->useScript('core') + ->useScript('multiselect'); + //->useScript('com_guidedtours.admin-tours-modal'); + +$function = $app->getInput()->getCmd('function', 'jSelectTour'); +$editor = $app->getInput()->getCmd('editor', ''); +$listOrder = $this->escape($this->state->get('list.ordering')); +$listDirn = $this->escape($this->state->get('list.direction')); +$onclick = $this->escape($function); +$multilang = Multilanguage::isEnabled(); + +if (!empty($editor)) { + // This view is used also in com_menus. Load the xtd script only if the editor is set! + $this->document->addScriptOptions('xtd-guidedtour', ['editor' => $editor]); + $onclick = "jSelectTour"; +} +?> +
+ + + +
+ $this]); + ?> + + + items)) : + ?> + +
+ + + +
+ + + + items)) : + ?> + + + + + + + + + + + + + + + + + + + + + + + + class="js-draggable" data-url="" data-direction="" data-nested="true" > + items as $i => $item) : + $canEditOwn = $canEditOwnTour && $item->created_by == $userId; + $canCheckin = $hasCheckinPermission || $item->checked_out == $userId || is_null($item->checked_out); + $canChange = $canEditStateTour && $canCheckin; + ?> + + + + + + + + + + + + + + + + + + + + +
+ , + , + +
+ + + + + + + state->get('list.direction'), $this->state->get('list.ordering')); ?> + + +
+ escape($onclick) . '"' + . ' data-id="' . $item->id . '"' + . ' data-title="' . $this->escape($item->title) . '"' + . ' data-alias="' . $this->escape($item->alias) . '"'; + ?> + > + escape($item->title); ?> + + + description, 200, true, false); ?> + + escape($item->access_level); ?> + + + + id; ?> +
+ + pagination->getListFooter(); + ?> + + + + + +
+ + +
diff --git a/administrator/language/en-GB/plg_editors-xtd_guidedtour.ini b/administrator/language/en-GB/plg_editors-xtd_guidedtour.ini index 0daeefd58373e..704038a4ff2c3 100644 --- a/administrator/language/en-GB/plg_editors-xtd_guidedtour.ini +++ b/administrator/language/en-GB/plg_editors-xtd_guidedtour.ini @@ -4,6 +4,6 @@ ; Note : All ini files need to be saved as UTF-8 PLG_EDITORS-XTD_GUIDEDTOUR="Button - Guided Tour" -PLG_GUIDEDTOUR_BUTTON_GUIDEDTOUR="Guided Tour" -PLG_GUIDEDTOUR_BUTTON_INSERT="Insert Guided Tour" -PLG_GUIDEDTOUR_XML_DESCRIPTION="Displays a button to insert guided tour into an editor area." +PLG_EDITORS-XTD_GUIDEDTOUR_BUTTON_TOUR="Guided Tour" +PLG_EDITORS-XTD_GUIDEDTOUR_BUTTON_INSERT="Insert Guided Tour" +PLG_EDITORS-XTD_GUIDEDTOUR_XML_DESCRIPTION="Displays a button to insert guided tour into an editor area." diff --git a/administrator/language/en-GB/plg_editors-xtd_guidedtour.sys.ini b/administrator/language/en-GB/plg_editors-xtd_guidedtour.sys.ini index 109c12bd9c19f..6bba3191f9f18 100644 --- a/administrator/language/en-GB/plg_editors-xtd_guidedtour.sys.ini +++ b/administrator/language/en-GB/plg_editors-xtd_guidedtour.sys.ini @@ -4,4 +4,4 @@ ; Note : All ini files need to be saved as UTF-8 PLG_EDITORS-XTD_GUIDEDTOUR="Button - Guided Tour" -PLG_GUIDEDTOUR_XML_DESCRIPTION="Displays a button to insert guided tour into an editor area." +PLG_EDITORS-XTD_GUIDEDTOUR_XML_DESCRIPTION="Displays a button to insert guided tour into an editor area." diff --git a/plugins/editors-xtd/guidedtour/guidedtour.xml b/plugins/editors-xtd/guidedtour/guidedtour.xml index d6b5739bb939c..694c2bd419a3c 100644 --- a/plugins/editors-xtd/guidedtour/guidedtour.xml +++ b/plugins/editors-xtd/guidedtour/guidedtour.xml @@ -8,7 +8,7 @@ admin@joomla.org www.joomla.org 5.0.0 - PLG_GUIDEDTOUR_XML_DESCRIPTION + PLG_EDITORS-XTD_GUIDEDTOUR_XML_DESCRIPTION Joomla\Plugin\EditorsXtd\Guidedtour services diff --git a/plugins/editors-xtd/guidedtour/services/provider.php b/plugins/editors-xtd/guidedtour/services/provider.php index 310b6f89f6b35..06c4ffaec310a 100644 --- a/plugins/editors-xtd/guidedtour/services/provider.php +++ b/plugins/editors-xtd/guidedtour/services/provider.php @@ -33,9 +33,13 @@ public function register(Container $container) $container->set( PluginInterface::class, function (Container $container) { + $app = Factory::getApplication(); + $plugin = new Guidedtour( $container->get(DispatcherInterface::class), - (array) PluginHelper::getPlugin('editors-xtd', 'guidedtour') + (array) PluginHelper::getPlugin('editors-xtd', 'guidedtour'), + // Only in administrator until frontend tours are available + $app->isClient('administrator') ); $plugin->setApplication(Factory::getApplication()); diff --git a/plugins/editors-xtd/guidedtour/src/Extension/Guidedtour.php b/plugins/editors-xtd/guidedtour/src/Extension/Guidedtour.php index 0c1909cbcaced..53f2d0132691f 100644 --- a/plugins/editors-xtd/guidedtour/src/Extension/Guidedtour.php +++ b/plugins/editors-xtd/guidedtour/src/Extension/Guidedtour.php @@ -10,11 +10,10 @@ namespace Joomla\Plugin\EditorsXtd\Guidedtour\Extension; -use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Object\CMSObject; use Joomla\CMS\Plugin\CMSPlugin; -use Joomla\CMS\Uri\Uri; +use Joomla\CMS\Session\Session; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -23,7 +22,7 @@ /** * Editor Guidedtour button * - * @since 1.5 + * @since __DEPLOY_VERSION__ */ final class Guidedtour extends CMSPlugin { @@ -31,7 +30,7 @@ final class Guidedtour extends CMSPlugin * Load the language file on instantiation. * * @var boolean - * @since 3.1 + * @since __DEPLOY_VERSION__ */ protected $autoloadLanguage = true; @@ -44,19 +43,47 @@ final class Guidedtour extends CMSPlugin * * @return CMSObject|false * - * @since 1.5 + * @since __DEPLOY_VERSION__ */ public function onDisplay($name) { + $user = $this->getApplication()->getIdentity(); + + // Can create guided tours + $canCreateRecords = $user->authorise('core.create', 'com_guidedtours'); + + // Instead of checking edit on all records, we can use **same** check as the form editing view + $values = (array) $this->getApplication()->getUserState('com_guidedtours.edit.tour.id'); + $isEditingRecords = count($values); + + // This ACL check is probably a double-check (form view already performed checks) + $hasAccess = $canCreateRecords || $isEditingRecords; + if (!$hasAccess) { + return; + } + + $link = 'index.php?option=com_guidedtours&view=tours&layout=modal&tmpl=component&' + . Session::getFormToken() . '=1&editor=' . $name; $button = new CMSObject(); - $button->modal = false; - $button->onclick = 'Joomla.editors.instances[\'' . $name . '\'].replaceSelection(\'
\');return false;'; - $button->text = Text::_('PLG_READMORE_BUTTON_READMORE'); + $button->modal = true; + $button->link = $link; + $button->text = Text::_('PLG_EDITORS-XTD_GUIDEDTOUR_BUTTON_TOUR'); $button->name = $this->_type . '_' . $this->_name; - $button->icon = 'arrow-down'; - $button->iconSVG = ''; - $button->link = '#'; + $button->icon = 'icon-map-signs'; + $button->iconSVG = '' +. ''; + $button->options = [ + 'height' => '300px', + 'width' => '800px', + 'bodyHeight' => '70', + 'modalWidth' => '80', + ]; return $button; } From f002a7e1901004e5267c476b905e0fcc2b050501 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 12 Jul 2023 11:44:13 +0100 Subject: [PATCH 032/127] editor button for selecting tours --- .../com_guidedtours/tmpl/tours/modal.php | 36 +++++++++---- .../com_guidedtours/joomla.asset.json | 11 ++++ .../js/admin-tours-modal.es6.js | 52 +++++++++++++++++++ .../guidedtour/services/provider.php | 5 +- .../guidedtour/src/Extension/Guidedtour.php | 26 +++++++++- 5 files changed, 117 insertions(+), 13 deletions(-) create mode 100644 build/media_source/com_guidedtours/js/admin-tours-modal.es6.js diff --git a/administrator/components/com_guidedtours/tmpl/tours/modal.php b/administrator/components/com_guidedtours/tmpl/tours/modal.php index 9666fc19df837..4c8a1ee05bb47 100644 --- a/administrator/components/com_guidedtours/tmpl/tours/modal.php +++ b/administrator/components/com_guidedtours/tmpl/tours/modal.php @@ -18,7 +18,6 @@ use Joomla\CMS\Layout\LayoutHelper; use Joomla\CMS\Router\Route; use Joomla\CMS\Session\Session; -use Joomla\Component\Guidedtours\Administrator\View\Tours\HtmlView; $app = Factory::getApplication(); @@ -29,8 +28,8 @@ /** @var Joomla\CMS\WebAsset\WebAssetManager $wa */ $wa = $this->document->getWebAssetManager(); $wa->useScript('core') - ->useScript('multiselect'); - //->useScript('com_guidedtours.admin-tours-modal'); + ->useScript('multiselect') + ->useScript('com_guidedtours.admin-tours-modal'); $function = $app->getInput()->getCmd('function', 'jSelectTour'); $editor = $app->getInput()->getCmd('editor', ''); @@ -111,13 +110,28 @@ - - class="js-draggable" data-url="" data-direction="" data-nested="true" > + items as $i => $item) : - $canEditOwn = $canEditOwnTour && $item->created_by == $userId; - $canCheckin = $hasCheckinPermission || $item->checked_out == $userId || is_null($item->checked_out); - $canChange = $canEditStateTour && $canCheckin; + if ( $item->language && $multilang ) + { + $tag = strlen( $item->language ); + if ( $tag == 5 ) + { + $lang = substr( $item->language, 0, 2 ); + } + elseif ( $tag == 6 ) + { + $lang = substr( $item->language, 0, 3 ); + } + else + { + $lang = ''; + } + } + elseif ( ! $multilang ) + { + $lang = ''; + } ?> @@ -127,7 +141,9 @@ class="js-draggable" data-url="" data-direction=" escape($onclick) . '"' . ' data-id="' . $item->id . '"' . ' data-title="' . $this->escape($item->title) . '"' - . ' data-alias="' . $this->escape($item->alias) . '"'; + . ' data-alias="' . $this->escape($item->alias) . '"' + . ' data-language="' . $this->escape($lang) . '"'; + ?> > escape($item->title); ?> diff --git a/build/media_source/com_guidedtours/joomla.asset.json b/build/media_source/com_guidedtours/joomla.asset.json index 32b9bf4a8527c..4deb8768b1ac2 100644 --- a/build/media_source/com_guidedtours/joomla.asset.json +++ b/build/media_source/com_guidedtours/joomla.asset.json @@ -16,6 +16,17 @@ "type": "module", "defer": true } + }, + { + "name": "com_guidedtours.admin-tours-modal", + "type": "script", + "uri": "com_guidedtours/admin-tours-modal.min.js", + "dependencies": [ + "core" + ], + "attributes": { + "type": "module" + } } ] } diff --git a/build/media_source/com_guidedtours/js/admin-tours-modal.es6.js b/build/media_source/com_guidedtours/js/admin-tours-modal.es6.js new file mode 100644 index 0000000000000..fddc4d182cc9d --- /dev/null +++ b/build/media_source/com_guidedtours/js/admin-tours-modal.es6.js @@ -0,0 +1,52 @@ +/** + * @copyright (C) 2018 Open Source Matters, Inc. + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ +(() => { + 'use strict'; + + /** + * Javascript to insert the link + * View element calls jSelectTour when a tour is clicked + * jSelectTour creates the link tag, sends it to the editor, + * and closes the select frame. + * */ + window.jSelectTour = (id, title, alias) => { + if (!Joomla.getOptions('xtd-guidedtour')) { + if (window.parent.Joomla.Modal) { + window.parent.Joomla.Modal.getCurrent().close(); + } + } + + const { editor } = Joomla.getOptions('xtd-guidedtour'); + const tag = ``; + window.parent.Joomla.editors.instances[editor].replaceSelection(tag); + + if (window.parent.Joomla.Modal) { + window.parent.Joomla.Modal.getCurrent().close(); + } + }; + + document.querySelectorAll('.select-link').forEach((element) => { + // Listen for click event + element.addEventListener('click', (event) => { + event.preventDefault(); + const { target } = event; + const functionName = target.getAttribute('data-function'); + + if (functionName === 'jSelectTour') { + // Used in xtd_contacts + window[functionName](target.getAttribute('data-id'), target.getAttribute('data-title'), target.getAttribute('data-alias')); + } else { + // Used in com_menus + window.parent[functionName](target.getAttribute('data-id'), target.getAttribute('data-title'), target.getAttribute('data-alias')); + } + + if (window.parent.Joomla.Modal) { + window.parent.Joomla.Modal.getCurrent().close(); + } + }); + }); +})(); diff --git a/plugins/editors-xtd/guidedtour/services/provider.php b/plugins/editors-xtd/guidedtour/services/provider.php index 06c4ffaec310a..191ba9aadadad 100644 --- a/plugins/editors-xtd/guidedtour/services/provider.php +++ b/plugins/editors-xtd/guidedtour/services/provider.php @@ -34,12 +34,13 @@ public function register(Container $container) PluginInterface::class, function (Container $container) { $app = Factory::getApplication(); + $extension = $app->getInput()->get('option'); $plugin = new Guidedtour( $container->get(DispatcherInterface::class), (array) PluginHelper::getPlugin('editors-xtd', 'guidedtour'), - // Only in administrator until frontend tours are available - $app->isClient('administrator') + // Only in administrator until frontend tours are available and only in custom admin modules + $app->isClient('administrator') && $extension == "com_modules" ); $plugin->setApplication(Factory::getApplication()); diff --git a/plugins/editors-xtd/guidedtour/src/Extension/Guidedtour.php b/plugins/editors-xtd/guidedtour/src/Extension/Guidedtour.php index 53f2d0132691f..11067f3602416 100644 --- a/plugins/editors-xtd/guidedtour/src/Extension/Guidedtour.php +++ b/plugins/editors-xtd/guidedtour/src/Extension/Guidedtour.php @@ -14,6 +14,7 @@ use Joomla\CMS\Object\CMSObject; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Session\Session; +use Joomla\CMS\Form\Form; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -59,7 +60,30 @@ public function onDisplay($name) // This ACL check is probably a double-check (form view already performed checks) $hasAccess = $canCreateRecords || $isEditingRecords; if (!$hasAccess) { - return; + return false; + } + + $itemId = $this->getApplication()->getInput()->getInt('id',0); + if ($itemId > 0) + { + $model = $this->getApplication()->bootComponent('com_modules') + ->getMVCFactory()->createModel('Module', 'Administrator'); + + $item = $model->getItem(); + if (!$item) + { + return false; + } + $clientId = $item->client_id; + } else + { + $clientId = $this->getApplication()->getInput()->getInt( 'client_id', 0 ); + } + + // administrator modules only + if ($clientId === 0) + { + return false; } $link = 'index.php?option=com_guidedtours&view=tours&layout=modal&tmpl=component&' From 2e1f0502371ba5e3f5c35ce2626eaa733a61158e Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 12 Jul 2023 11:45:47 +0100 Subject: [PATCH 033/127] editor button for selecting tours --- administrator/components/com_guidedtours/tmpl/tours/modal.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_guidedtours/tmpl/tours/modal.php b/administrator/components/com_guidedtours/tmpl/tours/modal.php index 4c8a1ee05bb47..31bce3115346e 100644 --- a/administrator/components/com_guidedtours/tmpl/tours/modal.php +++ b/administrator/components/com_guidedtours/tmpl/tours/modal.php @@ -46,7 +46,7 @@ ?>
-
+
Date: Thu, 13 Jul 2023 10:20:06 +0100 Subject: [PATCH 034/127] Implement user tour tracking Implement Tags --- .../sql/updates/mysql/5.0.0-2023-07-12.sql | 30 +++++ .../updates/postgresql/5.0.0-2023-07-12.sql | 17 +++ .../com_guidedtours/forms/filter_tours.xml | 10 ++ .../components/com_guidedtours/forms/step.xml | 7 +- .../components/com_guidedtours/forms/tour.xml | 59 ++++------ .../src/Field/TourextensionField.php | 2 +- .../com_guidedtours/src/Model/TourModel.php | 8 ++ .../com_guidedtours/src/Model/ToursModel.php | 54 +++++++-- .../com_guidedtours/src/Table/TourTable.php | 42 ++++++- .../com_guidedtours/tmpl/tour/edit.php | 1 + .../language/en-GB/com_guidedtours.ini | 6 +- .../js/guidedtours.es6.js | 44 +++++++ .../scss/guidedtours.scss | 6 +- includes/incompatible.html | 2 +- installation/sql/mysql/extensions.sql | 16 +++ installation/sql/postgresql/extensions.sql | 17 +++ .../guidedtours/src/Extension/GuidedTours.php | 111 +++++++++++++++--- templates/system/build_incomplete.html | 2 +- templates/system/fatal-error.html | 2 +- templates/system/incompatible.html | 2 +- 20 files changed, 358 insertions(+), 80 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 f79d64c4de5cf..915d3870e75aa 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,32 @@ 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_editors-xtd_guidedtour', 'plugin', 'compat', 'editors-xtd', 0, 1, 1, 0, 1, '', '', '', 0, 0); + +-- +-- Table structure for table `#__guidedtour_user_steps` +-- + +CREATE TABLE IF NOT EXISTS `#__guidedtour_user_steps` ( + `tour_id` int NOT NULL DEFAULT 0, + `step_id` int NOT NULL DEFAULT 0, + `user_id` int NOT NULL DEFAULT 0, + `viewed` datetime NOT NULL, + KEY `idx_tour` (`tour_id`), + KEY `idx_step` (`step_id`), + KEY `idx_user` (`user_id`), + KEY `idx_viewed` (`viewed`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci; + +ALTER TABLE `#__guidedtours` ADD COLUMN `params` text NOT NULL /** CAN FAIL **/; + +INSERT INTO `#__content_types` (`type_id`, `type_title`, `type_alias`, `table`, `rules`, `field_mappings`, `router`, `content_history_options`) +VALUES + ( + 14, + 'Guided Tour', + 'com_guidedtours.tour', + '{"special":{"dbtable":"#__guidedtours","key":"id","type":"TourTable","prefix":"Joomla\\\\Component\\\\Guidedtours\\\\Administrator\\\\Table\\\\","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"Joomla\\\\Component\\\\Guidedtours\\\\Administrator\\\\Table\\\\","config":"array()"}}', + '', + '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"description","core_access":"access", "core_params":"params", "core_language":"language", "core_ordering":"ordering", "note":"note"}}', + '', + '{"formFile":"administrator\\/components\\/com_guidedtours\\/forms\\/tour.xml", "hideFields":["params","language"], "ignoreChanges":[], "convertToInt":[], "displayLookup":[]}' + ); 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 529090462e260..648ba0c3b66ff 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,3 +1,20 @@ 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_editors-xtd_guidedtour', 'plugin', 'compat', 'editors-xtd', 0, 1, 1, 0, 1, '', '', '', 0, 0); +-- +-- Table structure for table `#__guidedtours` +-- + +CREATE TABLE IF NOT EXISTS "#__guidedtour_user_steps" ( + "tour_id" bigint DEFAULT 0 NOT NULL, + "step_id" bigint DEFAULT 0 NOT NULL, + "user_id" bigint DEFAULT 0 NOT NULL, + "viewed" timestamp without time zone NOT NULL +); + +CREATE INDEX "#__guidedtours_idx_tour" ON "#__guidedtours" ("tour_id"); +CREATE INDEX "#__guidedtours_idx_step" ON "#__guidedtours" ("step_id"); +CREATE INDEX "#__guidedtours_idx_user" ON "#__guidedtours" ("user_id"); +CREATE INDEX "#__guidedtours_idx_viewed" ON "#__guidedtours" ("viewed"); + +ALTER TABLE "#__guidedtours" ADD COLUMN "params" text NOT NULL /** CAN FAIL **/; \ No newline at end of file diff --git a/administrator/components/com_guidedtours/forms/filter_tours.xml b/administrator/components/com_guidedtours/forms/filter_tours.xml index 6f89b8f65187e..633a5a5726a8e 100644 --- a/administrator/components/com_guidedtours/forms/filter_tours.xml +++ b/administrator/components/com_guidedtours/forms/filter_tours.xml @@ -35,6 +35,16 @@ + - - - + />
-
+
+ + + - diff --git a/administrator/components/com_guidedtours/src/Field/TourextensionField.php b/administrator/components/com_guidedtours/src/Field/TourextensionField.php index d5c39b0f5899d..c6e1d5ca4ff45 100644 --- a/administrator/components/com_guidedtours/src/Field/TourextensionField.php +++ b/administrator/components/com_guidedtours/src/Field/TourextensionField.php @@ -2,7 +2,7 @@ /** * @package Joomla.Administrator - * @subpackage com_content + * @subpackage com_guidedtours * * @copyright (C) 2017 Open Source Matters, Inc. * @license GNU General Public License version 2 or later; see LICENSE.txt diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index 6ca6d6895a7dd..7327cc202406a 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -13,6 +13,7 @@ use Joomla\CMS\Application\ApplicationHelper; use Joomla\CMS\Factory; use Joomla\CMS\Filter\OutputFilter; +use Joomla\CMS\Helper\TagsHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Log\Log; use Joomla\CMS\MVC\Model\AdminModel; @@ -20,6 +21,7 @@ use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\Uri\Uri; use Joomla\Database\ParameterType; +use Joomla\Registry\Registry; use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects @@ -240,6 +242,9 @@ public function getItem($pk = null) if (!empty($result->id)) { $result->title_translation = Text::_($result->title); $result->description_translation = Text::_($result->description); + + $result->tags = new TagsHelper(); + $result->tags->getTagIds($result->id, 'com_guidedtours.tour'); } if (empty($result->alias) && (int) $pk > 0) { @@ -289,6 +294,9 @@ public function getItemByAlias($alias = "") if (!empty($result->id)) { $result->title_translation = Text::_($result->title); $result->description_translation = Text::_($result->description); + + $result->tags = new TagsHelper(); + $result->tags->getTagIds($result->id, 'com_guidedtours.tour'); } if (empty($result->alias) && (int) $pk > 0) { diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index f850d513f179c..426a0479aeb17 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -54,6 +54,7 @@ public function __construct($config = []) 'modified', 'a.modified', 'modified_by', 'a.modified_by', 'note', 'a.note', + 'tag', 'a.tag', ]; } @@ -83,8 +84,7 @@ protected function populateState($ordering = 'a.ordering', $direction = 'ASC') $this->setState('filter.extension', $extension); - // By default we don't constrain tours by context - $this->setState('filter.contextspecific', 0); + $this->getUserStateFromRequest($this->context . '.filter.tag', 'filter_tag', ''); parent::populateState($ordering, $direction); } @@ -217,17 +217,47 @@ public function getListQuery() $query->whereIn($db->quoteName('a.language'), $language, ParameterType::STRING); } - // Filter by context - /* - $contextspecific = $this->getState('filter.contextspecific'); - if ($contextspecific) { - $uri = Uri::getInstance(); - $url = trim($uri->toString(['path', 'query']), '/'); - $url = "administrator/index.php?option=com_content&view=articles"; - $query->where($db->quoteName('a.url') . ' = :context') - ->bind(':context', $url, ParameterType::STRING); + // Filter by a single or group of tags. + $tag = $this->getState('filter.tag'); + + // Run simplified query when filtering by one tag. + if (\is_array($tag) && \count($tag) === 1) { + $tag = $tag[0]; + } + + if ($tag && \is_array($tag)) { + $tag = ArrayHelper::toInteger($tag); + + $subQuery = $db->getQuery(true) + ->select('DISTINCT ' . $db->quoteName('content_item_id')) + ->from($db->quoteName('#__contentitem_tag_map')) + ->where( + [ + $db->quoteName('tag_id') . ' IN (' . implode(',', $query->bindArray($tag)) . ')', + $db->quoteName('type_alias') . ' = ' . $db->quote('com_guidedtours.tour'), + ] + ); + + $query->join( + 'INNER', + '(' . $subQuery . ') AS ' . $db->quoteName('tagmap'), + $db->quoteName('tagmap.content_item_id') . ' = ' . $db->quoteName('a.id') + ); + } elseif ($tag = (int) $tag) { + $query->join( + 'INNER', + $db->quoteName('#__contentitem_tag_map', 'tagmap'), + $db->quoteName('tagmap.content_item_id') . ' = ' . $db->quoteName('a.id') + ) + ->where( + [ + $db->quoteName('tagmap.tag_id') . ' = :tag', + $db->quoteName('tagmap.type_alias') . ' = ' . $db->quote('com_guidedtours.tour'), + ] + ) + ->bind(':tag', $tag, ParameterType::INTEGER); } - */ + // Filter by search in title. $search = $this->getState('filter.search'); diff --git a/administrator/components/com_guidedtours/src/Table/TourTable.php b/administrator/components/com_guidedtours/src/Table/TourTable.php index bd64c056140b3..83dac8549aea4 100644 --- a/administrator/components/com_guidedtours/src/Table/TourTable.php +++ b/administrator/components/com_guidedtours/src/Table/TourTable.php @@ -12,9 +12,12 @@ use Joomla\CMS\Factory; use Joomla\CMS\Table\Table; +use Joomla\CMS\Tag\TaggableTableInterface; +use Joomla\CMS\Tag\TaggableTableTrait; 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; @@ -25,9 +28,10 @@ * * @since 4.3.0 */ -class TourTable extends Table implements CurrentUserInterface +class TourTable extends Table implements CurrentUserInterface, TaggableTableInterface { use CurrentUserTrait; + use TaggableTableTrait; /** * Indicates that columns fully support the NULL value in the database @@ -54,9 +58,33 @@ class TourTable extends Table implements CurrentUserInterface */ public function __construct(DatabaseDriver $db) { + $this->typeAlias = 'com_guidedtours.tour'; + parent::__construct('#__guidedtours', '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 tour. * @@ -101,4 +129,16 @@ public function store($updateNulls = true) return parent::store($updateNulls); } + + /** + * Get the type alias for UCM features + * + * @return string The alias as described above + * + * @since 4.0.0 + */ + public function getTypeAlias() + { + return $this->typeAlias; + } } diff --git a/administrator/components/com_guidedtours/tmpl/tour/edit.php b/administrator/components/com_guidedtours/tmpl/tour/edit.php index 803cefdcb07da..aa8f860dd50ff 100644 --- a/administrator/components/com_guidedtours/tmpl/tour/edit.php +++ b/administrator/components/com_guidedtours/tmpl/tour/edit.php @@ -72,6 +72,7 @@ 'language', 'extensions', 'note', + 'tags', ]; echo LayoutHelper::render('joomla.edit.global', $this); ?> diff --git a/administrator/language/en-GB/com_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.ini index dfdd3250e032b..c94d158413dfc 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -116,4 +116,8 @@ COM_GUIDEDTOURS_CLICK="Click" COM_GUIDEDTOURS_DOUBLE_CLICK="Double Click" COM_GUIDEDTOURS_MOUSEOVER="Mouse Over" COM_GUIDEDTOURS_POINTERENTER="Pointer Enter" -COM_GUIDEDTOURS_STEPS_UNKNOWN_TOUR="Missing Tour Id" \ No newline at end of file +COM_GUIDEDTOURS_STEPS_UNKNOWN_TOUR="Missing Tour Id" +COM_GUIDEDTOURS_FIELD_TOUR_HISTORY_LABEL="Recording User Progress in Tours" +COM_GUIDEDTOURS_FIELD_TOUR_HISTORY_DESCRIPTION="Guided tours can keep track of a user's viewing history so that they can track which tours they have viewed, when and which steps they have completed. This stores their tour viewing history in the database in addition to the web browser session data" +COM_GUIDEDTOURS_FIELD_TOUR_RECORD_HISTORY_LABEL="Record tour progress" +COM_GUIDEDTOURS_FIELD_TOUR_RECORD_HISTORY_DESCRIPTION="When enabled a user's progress through a tour is recorded in the database" \ 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 308573d78949f..f6b854296f5ad 100644 --- a/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js +++ b/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js @@ -56,6 +56,11 @@ function addProgressIndicator(stepElement, index, total) { header.insertBefore(progress, stepElement.querySelector('.shepherd-cancel-icon')); } +function markStepViewed(stepElement) { + const header = stepElement.querySelector('.shepherd-header'); + header.classList.add('tour-step-viewed'); +} + function setFocus(primaryButton, secondaryButton, cancelButton) { if (primaryButton && !primaryButton.disabled) { primaryButton.focus(); @@ -142,6 +147,11 @@ function addStepToTourButton(tour, stepObj, buttons) { sessionStorage.setItem('currentStepId', this.id); addProgressIndicator(element, this.id + 1, sessionStorage.getItem('stepCount')); + const stepsViewed = JSON.parse(sessionStorage.getItem('stepsViewed') || '[]'); + if (stepsViewed.includes(stepObj.step_id)) { + markStepViewed(element); + } + if (target && this.options.attachTo.type === 'interactive') { const cancelButton = element.querySelector('.shepherd-cancel-icon'); const primaryButton = element.querySelector('.shepherd-button-primary'); @@ -518,6 +528,12 @@ function startTour(obj) { // Start tour building const tour = getTourInstance(); + if (typeof obj.params !== 'undefined') { + tour.tourParams = obj.params; + } else { + tour.tourParams = {}; + } + // No step found, let's start from the beginning if (ind < 0) { // First check for redirect @@ -745,3 +761,31 @@ if ((Number.parseInt(tourId, 10) > 0 || tourId !== '') && sessionStorage.getItem } else { emptyStorage(); } + +document.addEventListener('guided-tour-step-display', (event) => { + const stepsViewed = JSON.parse(sessionStorage.getItem('stepsViewed') || '[]'); + stepsViewed.push(event.detail.stepObj.step_id); + sessionStorage.setItem('stepsViewed', JSON.stringify(stepsViewed)); + + try { + if (event.detail.tour && typeof event.detail.tour.tourParams.tourhistory !== 'undefined' && event.detail.tour.tourParams.tourhistory) { + let url = `${Joomla.getOptions('system.paths').rootFull}administrator/index.php?option=com_ajax&plugin=guidedtours&group=system&format=json&${Joomla.getOptions('csrf.token')}=1`; + url += `&step_id=${event.detail.stepObj.step_id}`; + url += `&tour_id=${event.detail.stepObj.tour_id}`; + + fetch(url) + .then((response) => response.json()) + .then((result) => { + if (!result.success) { + if (result.messages) { + Joomla.renderMessages(result.messages); + } + } + console.log('recorded progress'); + }) + .catch(() => { + console.log('failed to record progress'); + }); + } + } catch (error) {} +}); diff --git a/build/media_source/plg_system_guidedtours/scss/guidedtours.scss b/build/media_source/plg_system_guidedtours/scss/guidedtours.scss index e5e292caa830d..bc59dec3ec72f 100644 --- a/build/media_source/plg_system_guidedtours/scss/guidedtours.scss +++ b/build/media_source/plg_system_guidedtours/scss/guidedtours.scss @@ -3,7 +3,7 @@ * @license GNU General Public License version 2 or later; see LICENSE.txt */ -@import "../../../../node_modules/shepherd.js/dist/css/shepherd"; +@import "../../../../node_modules/shepherd.js/dist/css/shepherd.css"; .shepherd-content img { max-width: 100%; @@ -61,3 +61,7 @@ font-weight: 500; text-decoration: underline; } + +.shepherd-header.tour-step-viewed .shepherd-title { + background-color:red; +} \ No newline at end of file diff --git a/includes/incompatible.html b/includes/incompatible.html index ae42c29b990e8..fa6e49c4786c3 100644 --- a/includes/incompatible.html +++ b/includes/incompatible.html @@ -5,7 +5,7 @@ Joomla: unsupported PHP version - + diff --git a/installation/sql/mysql/extensions.sql b/installation/sql/mysql/extensions.sql index 65df3fcd30e18..8e84b88c8f572 100644 --- a/installation/sql/mysql/extensions.sql +++ b/installation/sql/mysql/extensions.sql @@ -949,6 +949,7 @@ CREATE TABLE IF NOT EXISTS `#__guidedtours` ( `language` varchar(7) NOT NULL, `note` varchar(255) NOT NULL DEFAULT '', `access` int unsigned NOT NULL DEFAULT 0, + `params` text NOT NULL, PRIMARY KEY (`id`), KEY `idx_access` (`access`), KEY `idx_state` (`published`), @@ -1132,3 +1133,18 @@ INSERT INTO `#__guidedtour_steps` (`id`, `tour_id`, `title`, `published`, `descr (109, 11, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORDRESET_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORDRESET_DESCRIPTION', 109, 'top', '#jform_requireReset0', 2, 3, 'administrator/index.php?option=com_users&view=user&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), (110, 11, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_SAVECLOSE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_SAVECLOSE_DESCRIPTION', 110, 'bottom', '#save-group-children-save .button-save', 2, 1, 'administrator/index.php?option=com_users&view=user&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), (111, 11, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_CONGRATULATIONS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_CONGRATULATIONS_DESCRIPTION', 111, 'bottom', '', 0, 1, 'administrator/index.php?option=com_users&view=user&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'); + +-- +-- Table structure for table `#__guidedtour_user_steps` +-- + +CREATE TABLE IF NOT EXISTS `#__guidedtour_user_steps` ( + `tour_id` int NOT NULL DEFAULT 0, + `step_id` int NOT NULL DEFAULT 0, + `user_id` int NOT NULL DEFAULT 0, + `viewed` datetime NOT NULL, + KEY `idx_tour` (`tour_id`), + KEY `idx_step` (`step_id`), + KEY `idx_user` (`user_id`), + KEY `idx_viewed` (`viewed`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci; diff --git a/installation/sql/postgresql/extensions.sql b/installation/sql/postgresql/extensions.sql index 6b83e4ea454ac..196a26f5e3dbd 100644 --- a/installation/sql/postgresql/extensions.sql +++ b/installation/sql/postgresql/extensions.sql @@ -913,6 +913,7 @@ CREATE TABLE IF NOT EXISTS "#__guidedtours" ( "language" varchar(7) DEFAULT '' NOT NULL, "note" varchar(255) DEFAULT '' NOT NULL, "access" bigint NOT NULL DEFAULT 0, + "params" text NOT NULL, PRIMARY KEY ("id") ); @@ -1102,6 +1103,22 @@ INSERT INTO "#__guidedtour_steps" ("id", "tour_id", "title", "published", "descr SELECT setval('#__guidedtour_steps_id_seq', 112, false); +-- +-- Table structure for table `#__guidedtours` +-- + +CREATE TABLE IF NOT EXISTS "#__guidedtour_user_steps" ( + "tour_id" bigint DEFAULT 0 NOT NULL, + "step_id" bigint DEFAULT 0 NOT NULL, + "user_id" bigint DEFAULT 0 NOT NULL, + "viewed" timestamp without time zone NOT NULL +); + +CREATE INDEX "#__guidedtours_idx_tour" ON "#__guidedtours" ("tour_id"); +CREATE INDEX "#__guidedtours_idx_step" ON "#__guidedtours" ("step_id"); +CREATE INDEX "#__guidedtours_idx_user" ON "#__guidedtours" ("user_id"); +CREATE INDEX "#__guidedtours_idx_viewed" ON "#__guidedtours" ("viewed"); + -- -------------------------------------------------------- -- diff --git a/plugins/system/guidedtours/src/Extension/GuidedTours.php b/plugins/system/guidedtours/src/Extension/GuidedTours.php index 8cdd77eacc8ad..dffcc14daa606 100644 --- a/plugins/system/guidedtours/src/Extension/GuidedTours.php +++ b/plugins/system/guidedtours/src/Extension/GuidedTours.php @@ -10,6 +10,8 @@ namespace Joomla\Plugin\System\GuidedTours\Extension; +use Joomla\CMS\Date\Date; +use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\Object\CMSObject; use Joomla\CMS\Plugin\CMSPlugin; @@ -18,6 +20,7 @@ use Joomla\Event\DispatcherInterface; use Joomla\Event\Event; use Joomla\Event\SubscriberInterface; +use Joomla\Database\ParameterType; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -93,11 +96,96 @@ public function __construct(DispatcherInterface $dispatcher, array $config = [], public static function getSubscribedEvents(): array { return self::$enabled ? [ - 'onAjaxGuidedtours' => 'startTour', + 'onAjaxGuidedtours' => 'processAjax', 'onBeforeCompileHead' => 'onBeforeCompileHead', ] : []; } + /** + * Decide which ajax response is appropriate + * + * @return null|object + * + * @since __DEPLOY_VERSION__ + */ + public function processAjax(Event $event) { + if ((int) $this->getApplication()->getInput()->getInt('step_id') > 0) + { + return $this->recordStep($event); + } else { + return $this->startTour($event); + } + } + + /** + * Record that a step has been viewed + * + * @return null + * + * @since __DEPLOY_VERSION__ + */ + public function recordStep(Event $event) + { + if (!Session::checkToken('get')) + { + return; + } + + $app = $this->getApplication(); + $user = $app->getIdentity(); + + $step_id = (int) $app->getInput()->getInt('step_id'); + $tour_id = (int) $app->getInput()->getInt('tour_id'); + if ($step_id === 0 || $tour_id === 0 || $user->id === 0) + { + return; + } + + try + { + $tour = $this->getTour( $tour_id ); + } + catch (\Throwable $exception) + { + return; + } + + if (!$tour) + { + return; + } + + if (!isset($tour->params["tourhistory"]) || (int) $tour->params["tourhistory"] === 0) + { + return; + } + + $date = new Date('now'); + $viewed = $date->toSql(); + + $db = Factory::getDbo(); + $query = $db->getQuery(true); + $query->insert($db->quoteName('#__guidedtour_user_steps')) + ->columns($db->quoteName(['tour_id', 'step_id', 'user_id', 'viewed'])) + ->values(':tour_id, :step_id, :user_id, :viewed'); + + $query->bind(':tour_id', $tour_id, ParameterType::INTEGER); + $query->bind(':step_id', $step_id, ParameterType::INTEGER); + $query->bind(':user_id', $user->id, ParameterType::INTEGER); + $query->bind(':viewed', $viewed, ParameterType::STRING); + + try { + $db->setQuery($query); + $db->execute(); + } catch (\Exception $ex) { + + } + + $event->setArgument('result', new \stdClass()); + + return $tour; + } + /** * Retrieve and starts a tour and its steps through Ajax. * @@ -279,6 +367,8 @@ private function processTour($item) $temp->interactive_type = $this->stepInteractiveType[$step->interactive_type]; $temp->params = $step->params; $temp->url = $step->url; + $temp->tour_id = $step->tour_id; + $temp->step_id = $step->id; // Replace 'images/' to '../images/' when using an image from /images in backend. $temp->description = preg_replace('*src\=\"(?!administrator\/)images/*', 'src="../images/', $temp->description); @@ -286,25 +376,8 @@ private function processTour($item) $tour->steps[] = $temp; } + $tour->params = $item->params; return $tour; } - /** - * Display the extended editor button. - * - * @param string $name The name of the button to display. - * @param string $asset The name of the asset being edited. - * @param integer $author The id of the author owning the asset being edited. - * - * @return CMSObject|false - * - * @since __DEPLOY_VERSION__ - */ - public function onDisplay($name, $asset, $author) { - $doc = $this->getApplication()->getDocument(); - $user = $this->getApplication()->getIdentity(); - $extension = $this->getApplication()->getInput()->get('option'); - - } - } diff --git a/templates/system/build_incomplete.html b/templates/system/build_incomplete.html index 4803ad7dde7b6..b85c89084bd7f 100644 --- a/templates/system/build_incomplete.html +++ b/templates/system/build_incomplete.html @@ -5,7 +5,7 @@ Joomla: Environment Setup Incomplete - + diff --git a/templates/system/fatal-error.html b/templates/system/fatal-error.html index b3b66fbfba8fe..9d9177ee8e10f 100644 --- a/templates/system/fatal-error.html +++ b/templates/system/fatal-error.html @@ -5,7 +5,7 @@ An Error Occurred: {{statusText}} - + diff --git a/templates/system/incompatible.html b/templates/system/incompatible.html index ae42c29b990e8..fa6e49c4786c3 100644 --- a/templates/system/incompatible.html +++ b/templates/system/incompatible.html @@ -5,7 +5,7 @@ Joomla: unsupported PHP version - + From 3e897e489428339b728e09bd38626531ddff3268 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Thu, 13 Jul 2023 10:23:26 +0100 Subject: [PATCH 035/127] Revert accidental commit --- includes/incompatible.html | 2 +- templates/system/build_incomplete.html | 2 +- templates/system/fatal-error.html | 2 +- templates/system/incompatible.html | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/includes/incompatible.html b/includes/incompatible.html index fa6e49c4786c3..ae42c29b990e8 100644 --- a/includes/incompatible.html +++ b/includes/incompatible.html @@ -5,7 +5,7 @@ Joomla: unsupported PHP version - + diff --git a/templates/system/build_incomplete.html b/templates/system/build_incomplete.html index b85c89084bd7f..4803ad7dde7b6 100644 --- a/templates/system/build_incomplete.html +++ b/templates/system/build_incomplete.html @@ -5,7 +5,7 @@ Joomla: Environment Setup Incomplete - + diff --git a/templates/system/fatal-error.html b/templates/system/fatal-error.html index 9d9177ee8e10f..b3b66fbfba8fe 100644 --- a/templates/system/fatal-error.html +++ b/templates/system/fatal-error.html @@ -5,7 +5,7 @@ An Error Occurred: {{statusText}} - + diff --git a/templates/system/incompatible.html b/templates/system/incompatible.html index fa6e49c4786c3..ae42c29b990e8 100644 --- a/templates/system/incompatible.html +++ b/templates/system/incompatible.html @@ -5,7 +5,7 @@ Joomla: unsupported PHP version - + From 80d3af17eebe52e885232534137f7dd6993a6ed2 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Thu, 13 Jul 2023 10:27:27 +0100 Subject: [PATCH 036/127] Remove tagged tours experiment --- .../sql/updates/mysql/5.0.0-2023-07-12.sql | 13 ------ .../com_guidedtours/forms/filter_tours.xml | 10 ----- .../components/com_guidedtours/forms/tour.xml | 10 +---- .../com_guidedtours/src/Model/TourModel.php | 7 --- .../com_guidedtours/src/Model/ToursModel.php | 44 ------------------- .../com_guidedtours/src/Table/TourTable.php | 5 +-- .../com_guidedtours/tmpl/tour/edit.php | 1 - 7 files changed, 2 insertions(+), 88 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 915d3870e75aa..87a4ed8af93dd 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 @@ -17,16 +17,3 @@ CREATE TABLE IF NOT EXISTS `#__guidedtour_user_steps` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci; ALTER TABLE `#__guidedtours` ADD COLUMN `params` text NOT NULL /** CAN FAIL **/; - -INSERT INTO `#__content_types` (`type_id`, `type_title`, `type_alias`, `table`, `rules`, `field_mappings`, `router`, `content_history_options`) -VALUES - ( - 14, - 'Guided Tour', - 'com_guidedtours.tour', - '{"special":{"dbtable":"#__guidedtours","key":"id","type":"TourTable","prefix":"Joomla\\\\Component\\\\Guidedtours\\\\Administrator\\\\Table\\\\","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"Joomla\\\\Component\\\\Guidedtours\\\\Administrator\\\\Table\\\\","config":"array()"}}', - '', - '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"description","core_access":"access", "core_params":"params", "core_language":"language", "core_ordering":"ordering", "note":"note"}}', - '', - '{"formFile":"administrator\\/components\\/com_guidedtours\\/forms\\/tour.xml", "hideFields":["params","language"], "ignoreChanges":[], "convertToInt":[], "displayLookup":[]}' - ); diff --git a/administrator/components/com_guidedtours/forms/filter_tours.xml b/administrator/components/com_guidedtours/forms/filter_tours.xml index 633a5a5726a8e..6f89b8f65187e 100644 --- a/administrator/components/com_guidedtours/forms/filter_tours.xml +++ b/administrator/components/com_guidedtours/forms/filter_tours.xml @@ -35,16 +35,6 @@ - - - - +
diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index 7327cc202406a..6ab7ca8b0b3a7 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -13,7 +13,6 @@ use Joomla\CMS\Application\ApplicationHelper; use Joomla\CMS\Factory; use Joomla\CMS\Filter\OutputFilter; -use Joomla\CMS\Helper\TagsHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Log\Log; use Joomla\CMS\MVC\Model\AdminModel; @@ -242,9 +241,6 @@ public function getItem($pk = null) if (!empty($result->id)) { $result->title_translation = Text::_($result->title); $result->description_translation = Text::_($result->description); - - $result->tags = new TagsHelper(); - $result->tags->getTagIds($result->id, 'com_guidedtours.tour'); } if (empty($result->alias) && (int) $pk > 0) { @@ -294,9 +290,6 @@ public function getItemByAlias($alias = "") if (!empty($result->id)) { $result->title_translation = Text::_($result->title); $result->description_translation = Text::_($result->description); - - $result->tags = new TagsHelper(); - $result->tags->getTagIds($result->id, 'com_guidedtours.tour'); } if (empty($result->alias) && (int) $pk > 0) { diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index 426a0479aeb17..596edcdc2531a 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -54,7 +54,6 @@ public function __construct($config = []) 'modified', 'a.modified', 'modified_by', 'a.modified_by', 'note', 'a.note', - 'tag', 'a.tag', ]; } @@ -84,8 +83,6 @@ protected function populateState($ordering = 'a.ordering', $direction = 'ASC') $this->setState('filter.extension', $extension); - $this->getUserStateFromRequest($this->context . '.filter.tag', 'filter_tag', ''); - parent::populateState($ordering, $direction); } @@ -217,47 +214,6 @@ public function getListQuery() $query->whereIn($db->quoteName('a.language'), $language, ParameterType::STRING); } - // Filter by a single or group of tags. - $tag = $this->getState('filter.tag'); - - // Run simplified query when filtering by one tag. - if (\is_array($tag) && \count($tag) === 1) { - $tag = $tag[0]; - } - - if ($tag && \is_array($tag)) { - $tag = ArrayHelper::toInteger($tag); - - $subQuery = $db->getQuery(true) - ->select('DISTINCT ' . $db->quoteName('content_item_id')) - ->from($db->quoteName('#__contentitem_tag_map')) - ->where( - [ - $db->quoteName('tag_id') . ' IN (' . implode(',', $query->bindArray($tag)) . ')', - $db->quoteName('type_alias') . ' = ' . $db->quote('com_guidedtours.tour'), - ] - ); - - $query->join( - 'INNER', - '(' . $subQuery . ') AS ' . $db->quoteName('tagmap'), - $db->quoteName('tagmap.content_item_id') . ' = ' . $db->quoteName('a.id') - ); - } elseif ($tag = (int) $tag) { - $query->join( - 'INNER', - $db->quoteName('#__contentitem_tag_map', 'tagmap'), - $db->quoteName('tagmap.content_item_id') . ' = ' . $db->quoteName('a.id') - ) - ->where( - [ - $db->quoteName('tagmap.tag_id') . ' = :tag', - $db->quoteName('tagmap.type_alias') . ' = ' . $db->quote('com_guidedtours.tour'), - ] - ) - ->bind(':tag', $tag, ParameterType::INTEGER); - } - // Filter by search in title. $search = $this->getState('filter.search'); diff --git a/administrator/components/com_guidedtours/src/Table/TourTable.php b/administrator/components/com_guidedtours/src/Table/TourTable.php index 83dac8549aea4..13164a11371fd 100644 --- a/administrator/components/com_guidedtours/src/Table/TourTable.php +++ b/administrator/components/com_guidedtours/src/Table/TourTable.php @@ -12,8 +12,6 @@ use Joomla\CMS\Factory; use Joomla\CMS\Table\Table; -use Joomla\CMS\Tag\TaggableTableInterface; -use Joomla\CMS\Tag\TaggableTableTrait; use Joomla\CMS\User\CurrentUserInterface; use Joomla\CMS\User\CurrentUserTrait; use Joomla\Database\DatabaseDriver; @@ -28,10 +26,9 @@ * * @since 4.3.0 */ -class TourTable extends Table implements CurrentUserInterface, TaggableTableInterface +class TourTable extends Table implements CurrentUserInterface { use CurrentUserTrait; - use TaggableTableTrait; /** * Indicates that columns fully support the NULL value in the database diff --git a/administrator/components/com_guidedtours/tmpl/tour/edit.php b/administrator/components/com_guidedtours/tmpl/tour/edit.php index aa8f860dd50ff..803cefdcb07da 100644 --- a/administrator/components/com_guidedtours/tmpl/tour/edit.php +++ b/administrator/components/com_guidedtours/tmpl/tour/edit.php @@ -72,7 +72,6 @@ 'language', 'extensions', 'note', - 'tags', ]; echo LayoutHelper::render('joomla.edit.global', $this); ?> From 3756fd4b19c72090d0c948f49221f074e8a71ac3 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Thu, 13 Jul 2023 16:14:18 +0100 Subject: [PATCH 037/127] SQL correction --- .../components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql | 2 +- build/media_source/plg_system_guidedtours/scss/guidedtours.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql index 6c030c5c3cf72..73c6b59114479 100644 --- a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql +++ b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql @@ -11,4 +11,4 @@ UPDATE `#__guidedtours` SET `alias` = 'joomla_banners_title' WHERE `title` = 'CO UPDATE `#__guidedtours` SET `alias` = 'joomla_contacts_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE'; UPDATE `#__guidedtours` SET `alias` = 'joomla_newsfeeds_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE'; UPDATE `#__guidedtours` SET `alias` = 'joomla_smartsearch_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_users_title WHERE `title` = ''COM_GUIDEDTOURS_TOUR_USERS_TITLE''' +UPDATE `#__guidedtours` SET `alias` = 'joomla_users_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_USERS_TITLE'; diff --git a/build/media_source/plg_system_guidedtours/scss/guidedtours.scss b/build/media_source/plg_system_guidedtours/scss/guidedtours.scss index bc59dec3ec72f..b964d1bfb39b9 100644 --- a/build/media_source/plg_system_guidedtours/scss/guidedtours.scss +++ b/build/media_source/plg_system_guidedtours/scss/guidedtours.scss @@ -3,7 +3,7 @@ * @license GNU General Public License version 2 or later; see LICENSE.txt */ -@import "../../../../node_modules/shepherd.js/dist/css/shepherd.css"; +@import "../../../../node_modules/shepherd.js/dist/css/shepherd"; .shepherd-content img { max-width: 100%; From 25dc0cd9f10e22000b2a841d84c88fa620268493 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 14 Jul 2023 09:56:05 +0100 Subject: [PATCH 038/127] Extracting language and alias code from wider changes to create PR --- .../sql/updates/mysql/5.0.0-2023-06-21.sql | 1 - .../sql/updates/mysql/5.0.0-2023-07-12.sql | 19 - .../updates/postgresql/5.0.0-2023-06-21.sql | 1 - .../updates/postgresql/5.0.0-2023-07-12.sql | 20 - .../components/com_guidedtours/forms/step.xml | 154 ------- .../components/com_guidedtours/forms/tour.xml | 25 -- .../src/Extension/GuidedtoursComponent.php | 14 - .../com_guidedtours/src/Model/StepsModel.php | 8 - .../com_guidedtours/src/Model/TourModel.php | 5 +- .../com_guidedtours/src/Model/ToursModel.php | 4 +- .../com_guidedtours/src/Table/StepTable.php | 23 -- .../com_guidedtours/src/Table/TourTable.php | 37 -- .../com_guidedtours/tmpl/step/edit.php | 9 +- .../com_guidedtours/tmpl/tour/edit.php | 11 +- .../language/en-GB/com_guidedtours.ini | 32 -- .../language/en-GB/com_guidedtours.sys.ini | 56 +-- ...rs_ubu_joomla_tours_net_articles_title.ini | 4 +- .../src/Helper/GuidedToursHelper.php | 5 - .../com_guidedtours/joomla.asset.json | 12 - .../com_guidedtours/js/tour-edit.es6.js | 49 --- .../js/guidedtours.es6.js | 381 ++---------------- installation/sql/mysql/extensions.sql | 16 - installation/sql/postgresql/extensions.sql | 17 - .../guidedtours/src/Extension/GuidedTours.php | 106 +---- 24 files changed, 71 insertions(+), 938 deletions(-) delete mode 100644 administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-21.sql delete mode 100644 administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-07-12.sql delete mode 100644 administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-21.sql delete mode 100644 administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-07-12.sql delete mode 100644 build/media_source/com_guidedtours/js/tour-edit.es6.js 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 deleted file mode 100644 index 80eede0c9ade7..0000000000000 --- a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-21.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE `#__guidedtour_steps` ADD COLUMN `params` text NOT NULL /** CAN FAIL **/; 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 deleted file mode 100644 index 87a4ed8af93dd..0000000000000 --- a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-07-12.sql +++ /dev/null @@ -1,19 +0,0 @@ -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_editors-xtd_guidedtour', 'plugin', 'compat', 'editors-xtd', 0, 1, 1, 0, 1, '', '', '', 0, 0); - --- --- Table structure for table `#__guidedtour_user_steps` --- - -CREATE TABLE IF NOT EXISTS `#__guidedtour_user_steps` ( - `tour_id` int NOT NULL DEFAULT 0, - `step_id` int NOT NULL DEFAULT 0, - `user_id` int NOT NULL DEFAULT 0, - `viewed` datetime NOT NULL, - KEY `idx_tour` (`tour_id`), - KEY `idx_step` (`step_id`), - KEY `idx_user` (`user_id`), - KEY `idx_viewed` (`viewed`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci; - -ALTER TABLE `#__guidedtours` 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 deleted file mode 100644 index a7966de885eef..0000000000000 --- a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-21.sql +++ /dev/null @@ -1 +0,0 @@ -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-07-12.sql b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-07-12.sql deleted file mode 100644 index 648ba0c3b66ff..0000000000000 --- a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-07-12.sql +++ /dev/null @@ -1,20 +0,0 @@ -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_editors-xtd_guidedtour', 'plugin', 'compat', 'editors-xtd', 0, 1, 1, 0, 1, '', '', '', 0, 0); - --- --- Table structure for table `#__guidedtours` --- - -CREATE TABLE IF NOT EXISTS "#__guidedtour_user_steps" ( - "tour_id" bigint DEFAULT 0 NOT NULL, - "step_id" bigint DEFAULT 0 NOT NULL, - "user_id" bigint DEFAULT 0 NOT NULL, - "viewed" timestamp without time zone NOT NULL -); - -CREATE INDEX "#__guidedtours_idx_tour" ON "#__guidedtours" ("tour_id"); -CREATE INDEX "#__guidedtours_idx_step" ON "#__guidedtours" ("step_id"); -CREATE INDEX "#__guidedtours_idx_user" ON "#__guidedtours" ("user_id"); -CREATE INDEX "#__guidedtours_idx_viewed" ON "#__guidedtours" ("viewed"); - -ALTER TABLE "#__guidedtours" ADD COLUMN "params" text NOT NULL /** CAN FAIL **/; \ No newline at end of file diff --git a/administrator/components/com_guidedtours/forms/step.xml b/administrator/components/com_guidedtours/forms/step.xml index 1b5a820f309dd..57f56e364cdf9 100644 --- a/administrator/components/com_guidedtours/forms/step.xml +++ b/administrator/components/com_guidedtours/forms/step.xml @@ -120,8 +120,6 @@ > - - @@ -191,156 +189,4 @@ maxlength="255" /> - - -
- -
- - - - - - - -
- -
- - - - - - - - - - - - - -
- - - - - - - - -
- - -
- - - - - - - - -
- -
-
-
- diff --git a/administrator/components/com_guidedtours/forms/tour.xml b/administrator/components/com_guidedtours/forms/tour.xml index b53299858bbbb..92958b8770648 100644 --- a/administrator/components/com_guidedtours/forms/tour.xml +++ b/administrator/components/com_guidedtours/forms/tour.xml @@ -160,29 +160,4 @@ > - - - -
- -
- - - - - - -
- -
-
diff --git a/administrator/components/com_guidedtours/src/Extension/GuidedtoursComponent.php b/administrator/components/com_guidedtours/src/Extension/GuidedtoursComponent.php index b043f9868e192..19703055ae07c 100644 --- a/administrator/components/com_guidedtours/src/Extension/GuidedtoursComponent.php +++ b/administrator/components/com_guidedtours/src/Extension/GuidedtoursComponent.php @@ -100,20 +100,6 @@ 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; - /** * 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/components/com_guidedtours/src/Model/StepsModel.php b/administrator/components/com_guidedtours/src/Model/StepsModel.php index 509eeee1add56..2a00b6b23769e 100644 --- a/administrator/components/com_guidedtours/src/Model/StepsModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepsModel.php @@ -15,7 +15,6 @@ use Joomla\CMS\MVC\Model\ListModel; use Joomla\Database\DatabaseQuery; use Joomla\Database\ParameterType; -use Joomla\Registry\Registry; use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects @@ -251,13 +250,6 @@ 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); - } - } } return $items; diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index 6ab7ca8b0b3a7..58236e3512d7a 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -414,6 +414,7 @@ public function duplicate(&$pks) $table->id = 0; $table->published = 0; + $table->alias = ''; if (!$table->check() || !$table->store()) { throw new \Exception($table->getError()); @@ -438,7 +439,6 @@ public function duplicate(&$pks) 'checked_out_time', 'checked_out', 'language', - 'params', 'note', ] ) @@ -468,7 +468,6 @@ public function duplicate(&$pks) $db->quoteName('modified'), $db->quoteName('modified_by'), $db->quoteName('language'), - $db->quoteName('params'), $db->quoteName('note'), ] ); @@ -490,7 +489,6 @@ public function duplicate(&$pks) ParameterType::INTEGER, ParameterType::STRING, ParameterType::STRING, - ParameterType::STRING, ]; $query->values( @@ -512,7 +510,6 @@ public function duplicate(&$pks) $date, $user->id, $step->language, - $step->params, $step->note, ], $dataTypes diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index 596edcdc2531a..33fa6f238fa99 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -15,7 +15,6 @@ use Joomla\CMS\MVC\Model\ListModel; use Joomla\Database\ParameterType; use Joomla\Registry\Registry; -use Joomla\CMS\Uri\Uri; use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects @@ -46,8 +45,7 @@ public function __construct($config = []) 'access', 'a.access', 'access_level', 'description', 'a.description', 'published', 'a.published', - 'published', 'a.published', - 'extensionfilter', 'a.extensionfilter', + 'language', 'a.language', 'ordering', 'a.ordering', 'extensions', 'a.extensions', 'created_by', 'a.created_by', diff --git a/administrator/components/com_guidedtours/src/Table/StepTable.php b/administrator/components/com_guidedtours/src/Table/StepTable.php index 610b954d2e108..df31d503587fe 100644 --- a/administrator/components/com_guidedtours/src/Table/StepTable.php +++ b/administrator/components/com_guidedtours/src/Table/StepTable.php @@ -15,7 +15,6 @@ 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; @@ -50,28 +49,6 @@ 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/components/com_guidedtours/src/Table/TourTable.php b/administrator/components/com_guidedtours/src/Table/TourTable.php index 13164a11371fd..bd64c056140b3 100644 --- a/administrator/components/com_guidedtours/src/Table/TourTable.php +++ b/administrator/components/com_guidedtours/src/Table/TourTable.php @@ -15,7 +15,6 @@ 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; @@ -55,33 +54,9 @@ class TourTable extends Table implements CurrentUserInterface */ public function __construct(DatabaseDriver $db) { - $this->typeAlias = 'com_guidedtours.tour'; - parent::__construct('#__guidedtours', '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 tour. * @@ -126,16 +101,4 @@ public function store($updateNulls = true) return parent::store($updateNulls); } - - /** - * Get the type alias for UCM features - * - * @return string The alias as described above - * - * @since 4.0.0 - */ - public function getTypeAlias() - { - return $this->typeAlias; - } } diff --git a/administrator/components/com_guidedtours/tmpl/step/edit.php b/administrator/components/com_guidedtours/tmpl/step/edit.php index 83e046bbfc28d..a17b46147074b 100644 --- a/administrator/components/com_guidedtours/tmpl/step/edit.php +++ b/administrator/components/com_guidedtours/tmpl/step/edit.php @@ -19,16 +19,13 @@ /** @var Joomla\CMS\WebAsset\WebAssetManager $wa */ $wa = $this->document->getWebAssetManager(); $wa->useScript('keepalive') - ->useScript('form.validate') - ->useScript('com_guidedtours.tour-edit'); + ->useScript('form.validate'); if (empty($this->item->tour_id)) { throw new GenericDataException("\nThe Tour id was not set!\n", 500); } $lang = $this->getLanguage()->getTag(); - -$this->useCoreUI = true; ?>
@@ -91,7 +86,7 @@
fields = []; + $this->fields = []; $this->hidden_fields = []; echo LayoutHelper::render('joomla.edit.publishingdata', $this); ?>
diff --git a/administrator/components/com_guidedtours/tmpl/tour/edit.php b/administrator/components/com_guidedtours/tmpl/tour/edit.php index 803cefdcb07da..07a938d2381af 100644 --- a/administrator/components/com_guidedtours/tmpl/tour/edit.php +++ b/administrator/components/com_guidedtours/tmpl/tour/edit.php @@ -24,20 +24,13 @@ /** @var Joomla\CMS\WebAsset\WebAssetManager $wa */ $wa = $this->document->getWebAssetManager(); $wa->useScript('keepalive') - ->useScript('form.validate') - ->useScript('com_guidedtours.tour-edit'); - -$this->useCoreUI = true; + ->useScript('form.validate'); ?> -
- form->setFieldAttribute('title_translation', 'label', Text::sprintf('COM_GUIDEDTOURS_TITLE_TRANSLATION', $lang)); ?> - form->renderField('title_translation'); ?> -
item->id != 0 && strpos($this->item->title, 'GUIDEDTOUR') !== false) : ?>
@@ -79,8 +72,6 @@
- -
diff --git a/administrator/language/en-GB/com_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.ini index c94d158413dfc..40d4b1d5072dd 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -14,11 +14,9 @@ COM_GUIDEDTOURS_EXTENSIONS_DESC="Restrict the tour to be displayed only when the COM_GUIDEDTOURS_EXTENSIONS_LABEL="Component Selector" COM_GUIDEDTOURS_FIELD_NOTE_LABEL="Note" COM_GUIDEDTOURS_FIELD_VALUE_INTERACTIVESTEP_TYPE_BUTTON="Button" -COM_GUIDEDTOURS_FIELD_VALUE_INTERACTIVESTEP_TYPE_CHECKBOX_RADIO_FIELD="Checkbox/Radio" 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_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" @@ -90,34 +88,4 @@ COM_GUIDEDTOURS_XML_DESCRIPTION="Component for managing Guided Tours functionali COM_GUIDEDTOURS_FILTER_EXTENSION_LABEL="Selected Component" COM_GUIDEDTOURS_FILTER_EXTENSION_DESC="Component that restrict a tour to be displayed only when the selected component is active." COM_GUIDEDTOURS_FILTER_SELECT_TOUR_COMPONENT="Select Component" -COM_GUIDEDTOURS_CONTEXT_SENSITIVE_FILTERING_LABEL="Additional Context Specific Criteria" -COM_GUIDEDTOURS_MATCHING_CRITERIA_NOTE_LABEL="Criteria to match the tour to the user's site actions/page" -COM_GUIDEDTOURS_MATCHING_CRITERIA_NOTE_DESC="You can set a series additional key/value pairs that will be used to match tours that are most relevant to the page being viewed/action undertaken.
Key/Value pairs will be taken from the tour URL and added to the list below when matching context sensitive tours.
You can add as many criteria as you wish but they must all be matched to take effect." -COM_GUIDEDTOURS_MATCHING_CRITERIA_LABEL="Criteria to match" -COM_GUIDEDTOURS_MATCHING_CRITERIA_DESC="These criteria must all be matched for this tour to be highlights are relevant to the user's actions." -COM_GUIDEDTOURS_MATCHING_CRITERIA_GET_OR_POST_KEY_LABEL="Form or URL key" -COM_GUIDEDTOURS_MATCHING_CRITERIA_GET_OR_POST_KEY_DESC="The variable name to match in the URL or POST variables. The matching takes place after a SET URL has been converted to a native Joomla URL" -COM_GUIDEDTOURS_MATCHING_CRITERIA_GET_OR_POST_VALUE_LABEL="Form or URL key" -COM_GUIDEDTOURS_MATCHING_CRITERIA_GET_OR_POST_VALUE_DESC="The variable value to match in the URL or POST variables." -COM_GUIDEDTOURS_FIELD_SPECIAL_ACTIONS_LABEL="Special Actions" -COM_GUIDEDTOURS_SET_FOCUS_LABEL="Set Focus on Target Element When Step is Displayed" -COM_GUIDEDTOURS_SET_FOCUS_DESC="When the step is displayed sets the browser focus on the target element (or custom target element set below)" -COM_GUIDEDTOURS_CUSTOM_FOCUS_TARGET_LABEL="Custom Focus/Required Value Element" -COM_GUIDEDTOURS_CUSTOM_FOCUS_TARGET_DESC="You can set the focus on a DOM element different to main the target element by specifying a CSS selector here. If a required action or value is set then this will apply to this custom focus element as opposed to the display target element." -COM_GUIDEDTOURS_FOCUS_TARGET_LABEL="Focus/Required Value Target" -COM_GUIDEDTOURS_FOCUS_TARGET_DESC="The DOM Element that should receive focus on this step if different to the main target element. If left blank then the main target element will receive the DOM focus when the step dis displayed" -COM_GUIDEDTOURS_PRE_DISPLAY_EVENTS_LABEL="Pre Step Display Event Triggers" -COM_GUIDEDTOURS_PRE_DISPLAY_EVENTS_DESC="If you wish to trigger DOM events prior to displaying the step you can specify the event element and the DOM event to fire. These should NOT cause a form submission or the page to redirect otherwise the tour will lose its position." -COM_GUIDEDTOURS_PRE_DISPLAY_EVENT_ELEMENT_LABEL="Element on which to trigger an event" -COM_GUIDEDTOURS_PRE_DISPLAY_EVENT_ELEMENT_DESC="CSS selector for the element on which the event should be fired" -COM_GUIDEDTOURS_PRE_DISPLAY_EVENT_LABEL="Event(s) to trigger on the specified element" -COM_GUIDEDTOURS_PRE_DISPLAY_EVENT_DESC="Select one or more DOM events to fire on the specified element" -COM_GUIDEDTOURS_CLICK="Click" -COM_GUIDEDTOURS_DOUBLE_CLICK="Double Click" -COM_GUIDEDTOURS_MOUSEOVER="Mouse Over" -COM_GUIDEDTOURS_POINTERENTER="Pointer Enter" COM_GUIDEDTOURS_STEPS_UNKNOWN_TOUR="Missing Tour Id" -COM_GUIDEDTOURS_FIELD_TOUR_HISTORY_LABEL="Recording User Progress in Tours" -COM_GUIDEDTOURS_FIELD_TOUR_HISTORY_DESCRIPTION="Guided tours can keep track of a user's viewing history so that they can track which tours they have viewed, when and which steps they have completed. This stores their tour viewing history in the database in addition to the web browser session data" -COM_GUIDEDTOURS_FIELD_TOUR_RECORD_HISTORY_LABEL="Record tour progress" -COM_GUIDEDTOURS_FIELD_TOUR_RECORD_HISTORY_DESCRIPTION="When enabled a user's progress through a tour is recorded in the database" \ No newline at end of file diff --git a/administrator/language/en-GB/com_guidedtours.sys.ini b/administrator/language/en-GB/com_guidedtours.sys.ini index 2f1abc6f19a7b..8a8478b88b5d0 100644 --- a/administrator/language/en-GB/com_guidedtours.sys.ini +++ b/administrator/language/en-GB/com_guidedtours.sys.ini @@ -65,47 +65,47 @@ COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_SAVECLOSE_DESCRIPTION="Save and close COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_CONGRATULATIONS_TITLE="Congratulations!" COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a step for a guided tour." -;COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles?" -;COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION="This tour will show you how you can create an article." +COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles?" +COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION="This tour will show you how you can create an article." -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_TITLE="Select the 'New' button" -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_DESCRIPTION="Select 'New' to create a new article." +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_DESCRIPTION="Select 'New' to create a new article." -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_TITLE="Add a title for the article" -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_DESCRIPTION="Enter a required title for the article." +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_TITLE="Add a title for the article" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_DESCRIPTION="Enter a required title for the article." -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_TITLE="Enter an alias" -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_DESCRIPTION="You can write the internal name of this article. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_DESCRIPTION="You can write the internal name of this article. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_TITLE="Add content" -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_DESCRIPTION="Add the content of your article in the editor." +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_TITLE="Add content" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_DESCRIPTION="Add the content of your article in the editor." -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_TITLE="Select the status" -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_DESCRIPTION="Select the published status of the article." +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_DESCRIPTION="Select the published status of the article." -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_TITLE="Select a category" -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_DESCRIPTION="Select the category for this article. You can also enter a new category by typing the name in the field and pressing enter." +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_TITLE="Select a category" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_DESCRIPTION="Select the category for this article. You can also enter a new category by typing the name in the field and pressing enter." -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_TITLE="Toggle featured" -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_DESCRIPTION="Select 'Featured' to feature your article." +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_TITLE="Toggle featured" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_DESCRIPTION="Select 'Featured' to feature your article." -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_TITLE="Set the access level" -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_DESCRIPTION="Select the access level for the article." +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_TITLE="Set the access level" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_DESCRIPTION="Select the access level for the article." -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_TITLE="Add tags" -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_DESCRIPTION="Select tags for your article. You can also enter a new tag by typing the name in the field and pressing enter." +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_TITLE="Add tags" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_DESCRIPTION="Select tags for your article. You can also enter a new tag by typing the name in the field and pressing enter." -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_TITLE="Add a note" -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_TITLE="Add a note" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_TITLE="Add a version note" -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this article." +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this article." -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_DESCRIPTION="Save and close the article." +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_DESCRIPTION="Save and close the article." -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_TITLE="Congratulations!" -;COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_DESCRIPTION="You have created an article." +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_DESCRIPTION="You have created an article." COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE="How to create categories?" COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION="This tour will show you how you can create a category." diff --git a/administrator/language/en-GB/com_guidedtours_ubu_joomla_tours_net_articles_title.ini b/administrator/language/en-GB/com_guidedtours_ubu_joomla_tours_net_articles_title.ini index 549c62c504246..5375af61f842d 100644 --- a/administrator/language/en-GB/com_guidedtours_ubu_joomla_tours_net_articles_title.ini +++ b/administrator/language/en-GB/com_guidedtours_ubu_joomla_tours_net_articles_title.ini @@ -3,10 +3,10 @@ ; License GNU General Public License version 2 or later; see LICENSE.txt ; Note : All ini files need to be saved as UTF-8 -COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles 222?" +COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles?" COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION="This tour will show you how you can create an article." -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_TITLE="Select the 'New' button please" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_TITLE="Select the 'New' button" COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_DESCRIPTION="Select 'New' to create a new article." COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_TITLE="Add a title for the article" diff --git a/administrator/modules/mod_guidedtours/src/Helper/GuidedToursHelper.php b/administrator/modules/mod_guidedtours/src/Helper/GuidedToursHelper.php index 6ecadc68531a1..bdc899a3a7290 100644 --- a/administrator/modules/mod_guidedtours/src/Helper/GuidedToursHelper.php +++ b/administrator/modules/mod_guidedtours/src/Helper/GuidedToursHelper.php @@ -52,11 +52,6 @@ public function getTours(Registry $params, AdministratorApplication $app) $tourModel->setState('filter.language', ['*', $app->getLanguage()->getTag()]); } - $hideLinks = $app->getInput()->getBool('hidemainmenu'); - if ($hideLinks) { - $tourModel->setState('filter.contextspecific', 1); - } - $items = $tourModel->getItems(); foreach ($items as $key => $item) { diff --git a/build/media_source/com_guidedtours/joomla.asset.json b/build/media_source/com_guidedtours/joomla.asset.json index 4deb8768b1ac2..38ac42c5b07fe 100644 --- a/build/media_source/com_guidedtours/joomla.asset.json +++ b/build/media_source/com_guidedtours/joomla.asset.json @@ -5,18 +5,6 @@ "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ - { - "name": "com_guidedtours.tour-edit", - "type": "script", - "uri": "com_guidedtours/tour-edit.min.js", - "dependencies": [ - "core" - ], - "attributes": { - "type": "module", - "defer": true - } - }, { "name": "com_guidedtours.admin-tours-modal", "type": "script", diff --git a/build/media_source/com_guidedtours/js/tour-edit.es6.js b/build/media_source/com_guidedtours/js/tour-edit.es6.js deleted file mode 100644 index 9ad99538174bc..0000000000000 --- a/build/media_source/com_guidedtours/js/tour-edit.es6.js +++ /dev/null @@ -1,49 +0,0 @@ -/** - * @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)'); - let countVisible = 0; - visibleChildren.forEach((visibleChild) => { - if (!visibleChild.closest('.control-group.hidden')) { - countVisible += 1; - } - }); - if (countVisible) { - 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)'); - let countVisible = 0; - visibleChildren.forEach((visibleChild) => { - if (!visibleChild.closest('.control-group.hidden')) { - countVisible += 1; - } - }); - if (countVisible) { - tabLabel.removeAttribute('hidden'); - } else { - tabLabel.setAttribute('hidden', 'hidden'); - } - } - }); - }); - }); -})(); 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 f6b854296f5ad..ce08b15d7df74 100644 --- a/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js +++ b/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js @@ -56,11 +56,6 @@ function addProgressIndicator(stepElement, index, total) { header.insertBefore(progress, stepElement.querySelector('.shepherd-cancel-icon')); } -function markStepViewed(stepElement) { - const header = stepElement.querySelector('.shepherd-header'); - header.classList.add('tour-step-viewed'); -} - function setFocus(primaryButton, secondaryButton, cancelButton) { if (primaryButton && !primaryButton.disabled) { primaryButton.focus(); @@ -71,17 +66,6 @@ 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, @@ -90,7 +74,6 @@ function addStepToTourButton(tour, stepObj, buttons) { buttons, id: stepObj.id, arrow: true, - params: stepObj.params, beforeShowPromise() { return new Promise((resolve) => { // Set graceful fallbacks in case there is an issue with the target. @@ -133,90 +116,30 @@ 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'); sessionStorage.setItem('currentStepId', this.id); addProgressIndicator(element, this.id + 1, sessionStorage.getItem('stepCount')); - const stepsViewed = JSON.parse(sessionStorage.getItem('stepsViewed') || '[]'); - if (stepsViewed.includes(stepObj.step_id)) { - markStepViewed(element); - } - if (target && this.options.attachTo.type === 'interactive') { const cancelButton = element.querySelector('.shepherd-cancel-icon'); const primaryButton = element.querySelector('.shepherd-button-primary'); const secondaryButton = element.querySelector('.shepherd-button-secondary'); - // Check to see if the 'next' button should be enabled before showing the step based on being required or - // matching the required value - switch (this.options.attachTo.interactive_type) { - case 'text': - if ( - (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) { - enableButton(primaryButton); - } else { - disableButton(primaryButton); - } - } else if (target.value.trim().length) { - enableButton(primaryButton); - } else { - disableButton(primaryButton); - } - } - 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; + // 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') + && (['email', 'password', 'search', 'tel', 'text', 'url'].includes(target.type)) + ) { + if (target.value.trim().length) { + primaryButton.removeAttribute('disabled'); + primaryButton.classList.remove('disabled'); + } else { + primaryButton.setAttribute('disabled', 'disabled'); + primaryButton.classList.add('disabled'); + } } cancelButton.addEventListener('keydown', (event) => { @@ -237,9 +160,6 @@ function addStepToTourButton(tour, stepObj, buttons) { if (target.tagName.toLowerCase() === 'iframe') { // Give blur to the content of the iframe, as iframes don't have blur events target.contentWindow.document.body.addEventListener('blur', (event) => { - if (!sessionStorage.getItem('tourId')) { - return; - } setTimeout(() => { setFocus(primaryButton, secondaryButton, cancelButton); }, 1); @@ -247,128 +167,20 @@ function addStepToTourButton(tour, stepObj, buttons) { }); } else if (target.tagName.toLowerCase() === 'joomla-field-fancy-select') { target.querySelector('.choices input').addEventListener('blur', (event) => { - if (!sessionStorage.getItem('tourId')) { - return; - } setFocus(primaryButton, secondaryButton, cancelButton); event.preventDefault(); }); } else if (target.parentElement.tagName.toLowerCase() === 'joomla-field-fancy-select') { target.querySelector('input').addEventListener('blur', (event) => { - if (!sessionStorage.getItem('tourId')) { - return; - } setFocus(primaryButton, secondaryButton, cancelButton); event.preventDefault(); }); } else { target.addEventListener('blur', (event) => { - if (!sessionStorage.getItem('tourId')) { - return; - } setFocus(primaryButton, secondaryButton, cancelButton); event.preventDefault(); }); } - - let focusTarget = target; - if ( - ((this.options.params.customfocustarget || 0) === 1) - && ((this.options.params.focustarget || '') !== '') - ) { - focusTarget = document.querySelector(this.options.params.focustarget); - } - - const gtShowStep = new CustomEvent('guided-tour-show-step', { - detail: { - stepObj, - tour, - element, - }, - bubbles: true, - tourId: sessionStorage.getItem('tourId'), - }); - focusTarget.dispatchEvent(gtShowStep); - - // Set focus on input box after the tour step has finished rendering and positioning - // Timeout has to be more than 300 since the setPosition method has a 300 millisecond delay - setTimeout(() => { - // eslint-disable-next-line no-constant-condition - if (this.options.params.setfocus || 1) { - focusTarget.focus(); - } - - const onDisplayEvents = stepObj.params.ondisplayevents || {}; - - Object.keys(onDisplayEvents).forEach((displayEvent) => { - let eventElement = onDisplayEvents[displayEvent].ondisplayeventelement; - const eventsToTrigger = onDisplayEvents[displayEvent].ondisplayevent; - if (eventElement !== '' && eventsToTrigger.length > 0) { - eventElement = document.querySelector(eventElement); - if (eventElement) { - eventsToTrigger.forEach((eventName) => { - // console.log(`firing event ${eventName}`); - const event = new MouseEvent(eventName, { - view: window, - bubbles: true, - cancelable: true, - }); - eventElement.dispatchEvent(event); - }); - } - } - }); - - const gtDisplayStep = new CustomEvent('guided-tour-step-display', { - detail: { - stepObj, - tour, - element, - }, - bubbles: true, - tourId: sessionStorage.getItem('tourId'), - }); - focusTarget.dispatchEvent(gtDisplayStep); - }, 320); - } else if (this.options.attachTo.type === 'next') { - // Still need to fire the onDisplayEvents - setTimeout(() => { - if (typeof stepObj.params === 'string' && stepObj.params !== '') { - stepObj.params = JSON.parse(stepObj.params); - } else { - stepObj.params = []; - } - - const onDisplayEvents = stepObj.params.ondisplayevents || {}; - Object.keys(onDisplayEvents).forEach((displayEvent) => { - let eventElement = onDisplayEvents[displayEvent].ondisplayeventelement; - const eventsToTrigger = onDisplayEvents[displayEvent].ondisplayevent; - if (eventElement !== '' && eventsToTrigger.length > 0) { - eventElement = document.querySelector(eventElement); - if (eventElement) { - eventsToTrigger.forEach((eventName) => { - // console.log(`firing event ${eventName}`); - const event = new MouseEvent(eventName, { - view: window, - bubbles: true, - cancelable: true, - }); - eventElement.dispatchEvent(event); - }); - } - } - }); - const gtDisplayStep = new CustomEvent('guided-tour-step-display', { - detail: { - stepObj, - tour, - element, - }, - bubbles: true, - tourId: sessionStorage.getItem('tourId'), - }); - document.dispatchEvent(gtDisplayStep); - }, 20); } }, }, @@ -382,7 +194,6 @@ function addStepToTourButton(tour, stepObj, buttons) { url: stepObj.url, type: stepObj.type, interactive_type: stepObj.interactive_type, - params: stepObj.params, }, }); } else { @@ -391,7 +202,6 @@ function addStepToTourButton(tour, stepObj, buttons) { url: stepObj.url, type: stepObj.type, interactive_type: stepObj.interactive_type, - params: stepObj.params, }, }); } @@ -404,42 +214,6 @@ function addStepToTourButton(tour, stepObj, buttons) { } } - step.on( - 'before-show', - () => { - const preDisplayEvents = stepObj.params.predisplayevents || {}; - - Object.keys(preDisplayEvents).forEach((displayEvent) => { - let eventElement = preDisplayEvents[displayEvent].predisplayeventelement; - const eventsToTrigger = preDisplayEvents[displayEvent].predisplayevent; - if (eventElement !== '' && eventsToTrigger.length > 0) { - eventElement = document.querySelector(eventElement); - if (eventElement) { - eventsToTrigger.forEach((eventName) => { - // console.log(`firing event ${eventName}`); - const event = new MouseEvent(eventName, { - view: window, - bubbles: true, - cancelable: true, - }); - eventElement.dispatchEvent(event); - }); - } - } - }); - - const gtBeforeStep = new CustomEvent('guided-tour-before-show-step', { - detail: { - stepObj, - tour, - }, - bubbles: true, - tourId: sessionStorage.getItem('tourId'), - }); - document.dispatchEvent(gtBeforeStep); - }, - ); - tour.addStep(step); } @@ -506,6 +280,17 @@ 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); @@ -528,12 +313,6 @@ function startTour(obj) { // Start tour building const tour = getTourInstance(); - if (typeof obj.params !== 'undefined') { - tour.tourParams = obj.params; - } else { - tour.tourParams = {}; - } - // No step found, let's start from the beginning if (ind < 0) { // First check for redirect @@ -551,7 +330,7 @@ function startTour(obj) { ind = 1; } - // Now let's add all followup steps + // Now let's add all follow up steps const len = obj.steps.length; let buttons; @@ -571,90 +350,21 @@ 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) { switch (obj.steps[index].interactive_type) { case 'submit': ele.addEventListener('click', () => { - if (!sessionStorage.getItem('tourId')) { - return; - } sessionStorage.setItem('currentStepId', obj.steps[index].id + 1); }); break; case 'text': ele.step_id = index; - if ( - (ele.hasAttribute('required') || (obj.steps[index].params.required || 0)) - && ( - (ele.tagName.toLowerCase() === 'input' && ['email', 'password', 'search', 'tel', 'text', 'url'].includes(ele.type)) - || ele.tagName.toLowerCase() === 'textarea' - ) - ) { + if (ele.hasAttribute('required') && ['email', 'password', 'search', 'tel', 'text', 'url'].includes(ele.type)) { ['input', 'focus'].forEach((eventName) => ele.addEventListener(eventName, (event) => { - if (!sessionStorage.getItem('tourId')) { - return; - } - 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 'checkbox_radio': - ele.step_id = index; - 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 (!sessionStorage.getItem('tourId')) { - return; - } - if (event.target.checked) { - enableButton(event); - } else { - disableButton(event); - } - })); - } - 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 (!sessionStorage.getItem('tourId')) { - return; - } - 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) { + if (event.target.value.trim().length) { enableButton(event); } else { disableButton(event); @@ -664,11 +374,7 @@ function startTour(obj) { break; case 'button': - ele.addEventListener('click', () => { - // the button may submit a form so record the currentStepId in the session storage - sessionStorage.setItem('currentStepId', obj.steps[index].id + 1); - tour.next(); - }); + tour.next(); break; case 'other': @@ -682,7 +388,8 @@ function startTour(obj) { if (index < len - 1) { if ( (obj && obj.steps[index].type !== 'interactive') - || (obj && ['text', 'checkbox_radio', 'select', 'other'].includes(obj.steps[index].interactive_type)) + || (obj && obj.steps[index].interactive_type === 'text') + || (obj && obj.steps[index].interactive_type === 'other') ) { pushNextButton(buttons, obj.steps[index]); } @@ -761,31 +468,3 @@ if ((Number.parseInt(tourId, 10) > 0 || tourId !== '') && sessionStorage.getItem } else { emptyStorage(); } - -document.addEventListener('guided-tour-step-display', (event) => { - const stepsViewed = JSON.parse(sessionStorage.getItem('stepsViewed') || '[]'); - stepsViewed.push(event.detail.stepObj.step_id); - sessionStorage.setItem('stepsViewed', JSON.stringify(stepsViewed)); - - try { - if (event.detail.tour && typeof event.detail.tour.tourParams.tourhistory !== 'undefined' && event.detail.tour.tourParams.tourhistory) { - let url = `${Joomla.getOptions('system.paths').rootFull}administrator/index.php?option=com_ajax&plugin=guidedtours&group=system&format=json&${Joomla.getOptions('csrf.token')}=1`; - url += `&step_id=${event.detail.stepObj.step_id}`; - url += `&tour_id=${event.detail.stepObj.tour_id}`; - - fetch(url) - .then((response) => response.json()) - .then((result) => { - if (!result.success) { - if (result.messages) { - Joomla.renderMessages(result.messages); - } - } - console.log('recorded progress'); - }) - .catch(() => { - console.log('failed to record progress'); - }); - } - } catch (error) {} -}); diff --git a/installation/sql/mysql/extensions.sql b/installation/sql/mysql/extensions.sql index 8e84b88c8f572..5f4486a067d43 100644 --- a/installation/sql/mysql/extensions.sql +++ b/installation/sql/mysql/extensions.sql @@ -1000,7 +1000,6 @@ 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`), @@ -1133,18 +1132,3 @@ INSERT INTO `#__guidedtour_steps` (`id`, `tour_id`, `title`, `published`, `descr (109, 11, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORDRESET_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORDRESET_DESCRIPTION', 109, 'top', '#jform_requireReset0', 2, 3, 'administrator/index.php?option=com_users&view=user&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), (110, 11, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_SAVECLOSE_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_SAVECLOSE_DESCRIPTION', 110, 'bottom', '#save-group-children-save .button-save', 2, 1, 'administrator/index.php?option=com_users&view=user&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'), (111, 11, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_CONGRATULATIONS_TITLE', 1, 'COM_GUIDEDTOURS_TOUR_USERS_STEP_CONGRATULATIONS_DESCRIPTION', 111, 'bottom', '', 0, 1, 'administrator/index.php?option=com_users&view=user&layout=edit', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, '*'); - --- --- Table structure for table `#__guidedtour_user_steps` --- - -CREATE TABLE IF NOT EXISTS `#__guidedtour_user_steps` ( - `tour_id` int NOT NULL DEFAULT 0, - `step_id` int NOT NULL DEFAULT 0, - `user_id` int NOT NULL DEFAULT 0, - `viewed` datetime NOT NULL, - KEY `idx_tour` (`tour_id`), - KEY `idx_step` (`step_id`), - KEY `idx_user` (`user_id`), - KEY `idx_viewed` (`viewed`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci; diff --git a/installation/sql/postgresql/extensions.sql b/installation/sql/postgresql/extensions.sql index 196a26f5e3dbd..8726b398dec39 100644 --- a/installation/sql/postgresql/extensions.sql +++ b/installation/sql/postgresql/extensions.sql @@ -966,7 +966,6 @@ 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") ); @@ -1103,22 +1102,6 @@ INSERT INTO "#__guidedtour_steps" ("id", "tour_id", "title", "published", "descr SELECT setval('#__guidedtour_steps_id_seq', 112, false); --- --- Table structure for table `#__guidedtours` --- - -CREATE TABLE IF NOT EXISTS "#__guidedtour_user_steps" ( - "tour_id" bigint DEFAULT 0 NOT NULL, - "step_id" bigint DEFAULT 0 NOT NULL, - "user_id" bigint DEFAULT 0 NOT NULL, - "viewed" timestamp without time zone NOT NULL -); - -CREATE INDEX "#__guidedtours_idx_tour" ON "#__guidedtours" ("tour_id"); -CREATE INDEX "#__guidedtours_idx_step" ON "#__guidedtours" ("step_id"); -CREATE INDEX "#__guidedtours_idx_user" ON "#__guidedtours" ("user_id"); -CREATE INDEX "#__guidedtours_idx_viewed" ON "#__guidedtours" ("viewed"); - -- -------------------------------------------------------- -- diff --git a/plugins/system/guidedtours/src/Extension/GuidedTours.php b/plugins/system/guidedtours/src/Extension/GuidedTours.php index dffcc14daa606..2a05358fd242b 100644 --- a/plugins/system/guidedtours/src/Extension/GuidedTours.php +++ b/plugins/system/guidedtours/src/Extension/GuidedTours.php @@ -10,17 +10,13 @@ namespace Joomla\Plugin\System\GuidedTours\Extension; -use Joomla\CMS\Date\Date; -use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; -use Joomla\CMS\Object\CMSObject; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Session\Session; use Joomla\Component\Guidedtours\Administrator\Extension\GuidedtoursComponent; use Joomla\Event\DispatcherInterface; use Joomla\Event\Event; use Joomla\Event\SubscriberInterface; -use Joomla\Database\ParameterType; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -52,12 +48,10 @@ 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', ]; /** @@ -96,96 +90,11 @@ public function __construct(DispatcherInterface $dispatcher, array $config = [], public static function getSubscribedEvents(): array { return self::$enabled ? [ - 'onAjaxGuidedtours' => 'processAjax', + 'onAjaxGuidedtours' => 'startTour', 'onBeforeCompileHead' => 'onBeforeCompileHead', ] : []; } - /** - * Decide which ajax response is appropriate - * - * @return null|object - * - * @since __DEPLOY_VERSION__ - */ - public function processAjax(Event $event) { - if ((int) $this->getApplication()->getInput()->getInt('step_id') > 0) - { - return $this->recordStep($event); - } else { - return $this->startTour($event); - } - } - - /** - * Record that a step has been viewed - * - * @return null - * - * @since __DEPLOY_VERSION__ - */ - public function recordStep(Event $event) - { - if (!Session::checkToken('get')) - { - return; - } - - $app = $this->getApplication(); - $user = $app->getIdentity(); - - $step_id = (int) $app->getInput()->getInt('step_id'); - $tour_id = (int) $app->getInput()->getInt('tour_id'); - if ($step_id === 0 || $tour_id === 0 || $user->id === 0) - { - return; - } - - try - { - $tour = $this->getTour( $tour_id ); - } - catch (\Throwable $exception) - { - return; - } - - if (!$tour) - { - return; - } - - if (!isset($tour->params["tourhistory"]) || (int) $tour->params["tourhistory"] === 0) - { - return; - } - - $date = new Date('now'); - $viewed = $date->toSql(); - - $db = Factory::getDbo(); - $query = $db->getQuery(true); - $query->insert($db->quoteName('#__guidedtour_user_steps')) - ->columns($db->quoteName(['tour_id', 'step_id', 'user_id', 'viewed'])) - ->values(':tour_id, :step_id, :user_id, :viewed'); - - $query->bind(':tour_id', $tour_id, ParameterType::INTEGER); - $query->bind(':step_id', $step_id, ParameterType::INTEGER); - $query->bind(':user_id', $user->id, ParameterType::INTEGER); - $query->bind(':viewed', $viewed, ParameterType::STRING); - - try { - $db->setQuery($query); - $db->execute(); - } catch (\Exception $ex) { - - } - - $event->setArgument('result', new \stdClass()); - - return $tour; - } - /** * Retrieve and starts a tour and its steps through Ajax. * @@ -306,7 +215,7 @@ private function getTourByAlias(string $tourAlias) { /** * Return a tour and its steps or null if not found * - * @param TODO integer $tourId The ID of the tour to load + * @param TourTable $item The tour to load * * @return null|object * @@ -365,7 +274,6 @@ private function processTour($item) $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; $temp->tour_id = $step->tour_id; $temp->step_id = $step->id; @@ -376,8 +284,6 @@ private function processTour($item) $tour->steps[] = $temp; } - $tour->params = $item->params; return $tour; } - } From 461b690bd0ddacebe5a68ca2913fe469ad82b7d1 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 14 Jul 2023 13:57:51 +0100 Subject: [PATCH 039/127] Make sure the tour alias is unique --- .../com_guidedtours/src/Model/TourModel.php | 33 ++++++++++++++++++- .../com_guidedtours/src/Model/ToursModel.php | 16 +++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index 58236e3512d7a..55cd0e0b0cc36 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -21,6 +21,7 @@ use Joomla\CMS\Uri\Uri; use Joomla\Database\ParameterType; use Joomla\Registry\Registry; +use Joomla\String\StringHelper; use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects @@ -91,9 +92,12 @@ public function save($data) } else { $data['alias'] = OutputFilter::stringURLSafe($aliasTitle); } + } else { + $data['alias'] = ApplicationHelper::stringURLSafe( $data['alias'] ); } - $data['alias'] = ApplicationHelper::stringURLSafe($data['alias']); + // make sure the alias is unique + $data['alias'] = $this->generateNewAlias( $data['alias'], $id ); $result = parent::save($data); @@ -565,4 +569,31 @@ protected function setStepsLanguage(int $id, string $language = '*'): bool return $db->setQuery($query) ->execute(); } + + /** + * Method to change the alias when not unique. + * + * @param string $alias The alias. + * @param integer $currentItemId The id of the current tour. + * + * @return string $alias Contains the modified alias. + * + * @since __VERSION_DEPLOY__ + */ + protected function generateNewAlias($alias, $currentItemId) + { + $unique = false; + // Alter the title & alias + while (!$unique) { + $aliasItem = $this->getItemByAlias($alias); + if ($aliasItem->id > 0 && $aliasItem->id != $currentItemId) { + $alias = StringHelper::increment($alias, 'dash'); + } else { + $unique = true; + } + } + + return $alias; + } + } diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index 33fa6f238fa99..45fc0316081f6 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -11,6 +11,7 @@ namespace Joomla\Component\Guidedtours\Administrator\Model; use Joomla\CMS\Factory; +use Joomla\CMS\Filter\OutputFilter; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\Model\ListModel; use Joomla\Database\ParameterType; @@ -261,6 +262,21 @@ public function getItems() if (!empty($item->alias)) { Factory::getLanguage()->load("com_guidedtours_" . str_replace("-", "_", $item->alias), JPATH_ADMINISTRATOR); } + else if ($item->id < 12 && str_starts_with($item->title, 'COM_GUIDEDTOURS_TOUR_')) + { + // We have an orphan tour with no alias so we set it now for official Joomla tours + $tourItem = $this->getTable('Tour'); + $tourItem->load($item->id); + $app = Factory::getApplication(); + $aliasTitle = "joomla_ " . str_replace("COM_GUIDEDTOURS_TOUR_", "", $tourItem->title); + if ($app->get('unicodeslugs') == 1) { + $tourItem->alias = OutputFilter::stringUrlUnicodeSlug($aliasTitle); + } else { + $tourItem->alias = OutputFilter::stringURLSafe($aliasTitle); + } + $tourItem->store(); + $item->alias = $tourItem->alias; + } $item->title = Text::_($item->title); $item->description = Text::_($item->description); $item->extensions = (new Registry($item->extensions))->toArray(); From fa63176cdfd274c1bf6bb09e675b9cad6c40f982 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 14 Jul 2023 15:31:57 +0100 Subject: [PATCH 040/127] remove extended editor button from PR --- .../com_guidedtours/tmpl/tours/modal.php | 189 ------------------ .../en-GB/plg_editors-xtd_guidedtour.ini | 9 - .../en-GB/plg_editors-xtd_guidedtour.sys.ini | 7 - plugins/editors-xtd/guidedtour/guidedtour.xml | 21 -- .../guidedtour/services/provider.php | 51 ----- .../guidedtour/src/Extension/Guidedtour.php | 114 ----------- 6 files changed, 391 deletions(-) delete mode 100644 administrator/components/com_guidedtours/tmpl/tours/modal.php delete mode 100644 administrator/language/en-GB/plg_editors-xtd_guidedtour.ini delete mode 100644 administrator/language/en-GB/plg_editors-xtd_guidedtour.sys.ini delete mode 100644 plugins/editors-xtd/guidedtour/guidedtour.xml delete mode 100644 plugins/editors-xtd/guidedtour/services/provider.php delete mode 100644 plugins/editors-xtd/guidedtour/src/Extension/Guidedtour.php diff --git a/administrator/components/com_guidedtours/tmpl/tours/modal.php b/administrator/components/com_guidedtours/tmpl/tours/modal.php deleted file mode 100644 index 31bce3115346e..0000000000000 --- a/administrator/components/com_guidedtours/tmpl/tours/modal.php +++ /dev/null @@ -1,189 +0,0 @@ - - * @license GNU General Public License version 2 or later; see LICENSE.txt - */ - -defined('_JEXEC') or die; - -use Joomla\CMS\Factory; -use Joomla\CMS\HTML\Helpers\StringHelper; -use Joomla\CMS\HTML\HTMLHelper; -use Joomla\CMS\Language\Text; -use Joomla\CMS\Language\Multilanguage; -use Joomla\CMS\Layout\LayoutHelper; -use Joomla\CMS\Router\Route; -use Joomla\CMS\Session\Session; - -$app = Factory::getApplication(); - -if ($app->isClient('site')) { - Session::checkToken('get') or die(Text::_('JINVALID_TOKEN')); -} - -/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */ -$wa = $this->document->getWebAssetManager(); -$wa->useScript('core') - ->useScript('multiselect') - ->useScript('com_guidedtours.admin-tours-modal'); - -$function = $app->getInput()->getCmd('function', 'jSelectTour'); -$editor = $app->getInput()->getCmd('editor', ''); -$listOrder = $this->escape($this->state->get('list.ordering')); -$listDirn = $this->escape($this->state->get('list.direction')); -$onclick = $this->escape($function); -$multilang = Multilanguage::isEnabled(); - -if (!empty($editor)) { - // This view is used also in com_menus. Load the xtd script only if the editor is set! - $this->document->addScriptOptions('xtd-guidedtour', ['editor' => $editor]); - $onclick = "jSelectTour"; -} -?> -
- - - -
- $this]); - ?> - - - items)) : - ?> - -
- - - -
- - - - items)) : - ?> - - - - - - - - - - - - - - - - - - - - - - - - items as $i => $item) : - if ( $item->language && $multilang ) - { - $tag = strlen( $item->language ); - if ( $tag == 5 ) - { - $lang = substr( $item->language, 0, 2 ); - } - elseif ( $tag == 6 ) - { - $lang = substr( $item->language, 0, 3 ); - } - else - { - $lang = ''; - } - } - elseif ( ! $multilang ) - { - $lang = ''; - } - ?> - - - - - - - - - - - - - - - - - - - - -
- , - , - -
- - - - - - - state->get('list.direction'), $this->state->get('list.ordering')); ?> - - -
- escape($onclick) . '"' - . ' data-id="' . $item->id . '"' - . ' data-title="' . $this->escape($item->title) . '"' - . ' data-alias="' . $this->escape($item->alias) . '"' - . ' data-language="' . $this->escape($lang) . '"'; - - ?> - > - escape($item->title); ?> - - - description, 200, true, false); ?> - - escape($item->access_level); ?> - - - - id; ?> -
- - pagination->getListFooter(); - ?> - - - - - -
- - -
diff --git a/administrator/language/en-GB/plg_editors-xtd_guidedtour.ini b/administrator/language/en-GB/plg_editors-xtd_guidedtour.ini deleted file mode 100644 index 704038a4ff2c3..0000000000000 --- a/administrator/language/en-GB/plg_editors-xtd_guidedtour.ini +++ /dev/null @@ -1,9 +0,0 @@ -; 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 - -PLG_EDITORS-XTD_GUIDEDTOUR="Button - Guided Tour" -PLG_EDITORS-XTD_GUIDEDTOUR_BUTTON_TOUR="Guided Tour" -PLG_EDITORS-XTD_GUIDEDTOUR_BUTTON_INSERT="Insert Guided Tour" -PLG_EDITORS-XTD_GUIDEDTOUR_XML_DESCRIPTION="Displays a button to insert guided tour into an editor area." diff --git a/administrator/language/en-GB/plg_editors-xtd_guidedtour.sys.ini b/administrator/language/en-GB/plg_editors-xtd_guidedtour.sys.ini deleted file mode 100644 index 6bba3191f9f18..0000000000000 --- a/administrator/language/en-GB/plg_editors-xtd_guidedtour.sys.ini +++ /dev/null @@ -1,7 +0,0 @@ -; Joomla! Project -; (C) 2010 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_EDITORS-XTD_GUIDEDTOUR="Button - Guided Tour" -PLG_EDITORS-XTD_GUIDEDTOUR_XML_DESCRIPTION="Displays a button to insert guided tour into an editor area." diff --git a/plugins/editors-xtd/guidedtour/guidedtour.xml b/plugins/editors-xtd/guidedtour/guidedtour.xml deleted file mode 100644 index 694c2bd419a3c..0000000000000 --- a/plugins/editors-xtd/guidedtour/guidedtour.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - plg_editors-xtd_guidedtour - Joomla! Project - 2023 - (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_EDITORS-XTD_GUIDEDTOUR_XML_DESCRIPTION - Joomla\Plugin\EditorsXtd\Guidedtour - - services - src - - - language/en-GB/plg_editors-xtd_guidedtour.ini - language/en-GB/plg_editors-xtd_guidedtour.sys.ini - - diff --git a/plugins/editors-xtd/guidedtour/services/provider.php b/plugins/editors-xtd/guidedtour/services/provider.php deleted file mode 100644 index 191ba9aadadad..0000000000000 --- a/plugins/editors-xtd/guidedtour/services/provider.php +++ /dev/null @@ -1,51 +0,0 @@ - - * @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\EditorsXtd\Guidedtour\Extension\Guidedtour; - -return new class () implements ServiceProviderInterface { - /** - * Registers the service provider with a DI container. - * - * @param Container $container The DI container. - * - * @return void - * - * @since 4.3.0 - */ - public function register(Container $container) - { - $container->set( - PluginInterface::class, - function (Container $container) { - $app = Factory::getApplication(); - $extension = $app->getInput()->get('option'); - - $plugin = new Guidedtour( - $container->get(DispatcherInterface::class), - (array) PluginHelper::getPlugin('editors-xtd', 'guidedtour'), - // Only in administrator until frontend tours are available and only in custom admin modules - $app->isClient('administrator') && $extension == "com_modules" - ); - $plugin->setApplication(Factory::getApplication()); - - return $plugin; - } - ); - } -}; diff --git a/plugins/editors-xtd/guidedtour/src/Extension/Guidedtour.php b/plugins/editors-xtd/guidedtour/src/Extension/Guidedtour.php deleted file mode 100644 index 11067f3602416..0000000000000 --- a/plugins/editors-xtd/guidedtour/src/Extension/Guidedtour.php +++ /dev/null @@ -1,114 +0,0 @@ - - * @license GNU General Public License version 2 or later; see LICENSE.txt - */ - -namespace Joomla\Plugin\EditorsXtd\Guidedtour\Extension; - -use Joomla\CMS\Language\Text; -use Joomla\CMS\Object\CMSObject; -use Joomla\CMS\Plugin\CMSPlugin; -use Joomla\CMS\Session\Session; -use Joomla\CMS\Form\Form; - -// phpcs:disable PSR1.Files.SideEffects -\defined('_JEXEC') or die; -// phpcs:enable PSR1.Files.SideEffects - -/** - * Editor Guidedtour button - * - * @since __DEPLOY_VERSION__ - */ -final class Guidedtour extends CMSPlugin -{ - /** - * Load the language file on instantiation. - * - * @var boolean - * @since __DEPLOY_VERSION__ - */ - protected $autoloadLanguage = true; - - /** - * Display the button. - * - * @param string $name The name of the button to display. - * @param string $asset The name of the asset being edited. - * @param integer $author The id of the author owning the asset being edited. - * - * @return CMSObject|false - * - * @since __DEPLOY_VERSION__ - */ - public function onDisplay($name) - { - $user = $this->getApplication()->getIdentity(); - - // Can create guided tours - $canCreateRecords = $user->authorise('core.create', 'com_guidedtours'); - - // Instead of checking edit on all records, we can use **same** check as the form editing view - $values = (array) $this->getApplication()->getUserState('com_guidedtours.edit.tour.id'); - $isEditingRecords = count($values); - - // This ACL check is probably a double-check (form view already performed checks) - $hasAccess = $canCreateRecords || $isEditingRecords; - if (!$hasAccess) { - return false; - } - - $itemId = $this->getApplication()->getInput()->getInt('id',0); - if ($itemId > 0) - { - $model = $this->getApplication()->bootComponent('com_modules') - ->getMVCFactory()->createModel('Module', 'Administrator'); - - $item = $model->getItem(); - if (!$item) - { - return false; - } - $clientId = $item->client_id; - } else - { - $clientId = $this->getApplication()->getInput()->getInt( 'client_id', 0 ); - } - - // administrator modules only - if ($clientId === 0) - { - return false; - } - - $link = 'index.php?option=com_guidedtours&view=tours&layout=modal&tmpl=component&' - . Session::getFormToken() . '=1&editor=' . $name; - - $button = new CMSObject(); - $button->modal = true; - $button->link = $link; - $button->text = Text::_('PLG_EDITORS-XTD_GUIDEDTOUR_BUTTON_TOUR'); - $button->name = $this->_type . '_' . $this->_name; - $button->icon = 'icon-map-signs'; - $button->iconSVG = '' -. ''; - $button->options = [ - 'height' => '300px', - 'width' => '800px', - 'bodyHeight' => '70', - 'modalWidth' => '80', - ]; - - return $button; - } -} From 11d1fd8797c3687876a62ff54f2746cb8c87e7cb Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 14 Jul 2023 15:40:15 +0100 Subject: [PATCH 041/127] a bit more of a clean up --- .../com_guidedtours/forms/filter_tours.xml | 12 +- .../src/Field/TourextensionField.php | 107 ------------------ .../com_guidedtours/src/Model/ToursModel.php | 9 +- .../language/en-GB/com_guidedtours.ini | 8 -- .../com_guidedtours/joomla.asset.json | 20 ---- .../js/admin-tours-modal.es6.js | 52 --------- .../scss/guidedtours.scss | 4 - installation/sql/mysql/extensions.sql | 3 +- installation/sql/postgresql/extensions.sql | 1 - 9 files changed, 3 insertions(+), 213 deletions(-) delete mode 100644 administrator/components/com_guidedtours/src/Field/TourextensionField.php delete mode 100644 build/media_source/com_guidedtours/joomla.asset.json delete mode 100644 build/media_source/com_guidedtours/js/admin-tours-modal.es6.js diff --git a/administrator/components/com_guidedtours/forms/filter_tours.xml b/administrator/components/com_guidedtours/forms/filter_tours.xml index 6f89b8f65187e..33fed34e9fada 100644 --- a/administrator/components/com_guidedtours/forms/filter_tours.xml +++ b/administrator/components/com_guidedtours/forms/filter_tours.xml @@ -1,6 +1,6 @@
name="params" - + - - - - - * @license GNU General Public License version 2 or later; see LICENSE.txt - */ - -namespace Joomla\Component\Guidedtours\Administrator\Field; - -use Joomla\CMS\Factory; -use Joomla\CMS\Form\Field\ComponentsField; -use Joomla\CMS\Form\Field\ListField; -use Joomla\CMS\Language\Text; -use Joomla\Registry\Registry; -use Joomla\Utilities\ArrayHelper; - -// phpcs:disable PSR1.Files.SideEffects -\defined('_JEXEC') or die; -// phpcs:enable PSR1.Files.SideEffects - -/** - * Tourextension Field class. - * List of extensions selected in a guided tour - * - * @since 5.0.0 - */ -class TourextensionField extends ComponentsField -{ - /** - * The form field type. - * - * @var string - * @since 5.0.0 - */ - protected $type = 'Tourextension'; - - /** - * Method to get a list of options for a list input. - * - * @return object[] An array of JHtml options. - * - * @since 2.5.0 - */ - protected function getOptions() - { - $db = $this->getDatabase(); - // get distinct list of active extensions from the tours table then filter the list of matching extensions - $query = $db->getQuery(true) - ->select('DISTINCT ' . $db->quoteName('extensions')) - ->from($db->quoteName('#__guidedtours')); - - $extensionEntries = $db->setQuery($query)->loadColumn(); - $extensions = []; - - foreach ($extensionEntries as $extensionsEntry) { - $extensions = array_merge($extensions, (new Registry($extensionsEntry))->toArray()); - } - - $query = $db->getQuery(true) - ->select( - [ - $db->quoteName('name', 'text'), - $db->quoteName('element', 'value'), - ] - ) - ->from($db->quoteName('#__extensions')) - ->where( - [ - $db->quoteName('enabled') . ' >= 1', - $db->quoteName('type') . ' = ' . $db->quote('component'), - $db->quoteName( 'element' ) . ' = ' . $db->quote( 'com_yoursites' ) - ] - ); - - if (count($extensions)) { - $query->whereIn($db->quoteName('element'), array_values($extensions)); - } - - $items = $db->setQuery($query)->loadObjectList(); - - if ($items) { - $lang = Factory::getLanguage(); - - foreach ($items as &$item) { - // Load language - $extension = $item->value; - - $lang->load("$extension.sys", JPATH_ADMINISTRATOR) - || $lang->load("$extension.sys", JPATH_ADMINISTRATOR . '/components/' . $extension); - - // Translate component name - $item->text = Text::_($item->text); - } - - // Sort by component name - $items = ArrayHelper::sortObjects($items, 'text', 1, true, true); - } - - // Merge any additional options in the XML definition. - $options = array_merge(ListField::getOptions(), $items); - - return $options; - } -} diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index 45fc0316081f6..797d57af95ea6 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -165,14 +165,7 @@ public function getListQuery() ->join('LEFT', $db->quoteName('#__viewlevels', 'ag'), $db->quoteName('ag.id') . ' = ' . $db->quoteName('a.access')); // Filter by extension - if ($extensionfilter = $this->getState('filter.extensionfilter')) { - //$query->where(':extensions MEMBER OF(' . $db->quoteName('a.extensions') . ')')->bind([':extensions'], $extensionfilter); - $extension = '%' . $extensionfilter . '%'; - $query->where( - $db->quoteName('a.extensions') . ' LIKE :extensions' - ) - ->bind([':extensions'], $extension); - } elseif ($extension = $this->getState('filter.extension')) { + if ($extension = $this->getState('filter.extension')) { $extension = '%' . $extension . '%'; $all = '%*%'; $query->where( diff --git a/administrator/language/en-GB/com_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.ini index 40d4b1d5072dd..64fff75efaabb 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -77,15 +77,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="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" -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." -COM_GUIDEDTOURS_FILTER_EXTENSION_LABEL="Selected Component" -COM_GUIDEDTOURS_FILTER_EXTENSION_DESC="Component that restrict a tour to be displayed only when the selected component is active." -COM_GUIDEDTOURS_FILTER_SELECT_TOUR_COMPONENT="Select Component" COM_GUIDEDTOURS_STEPS_UNKNOWN_TOUR="Missing Tour Id" diff --git a/build/media_source/com_guidedtours/joomla.asset.json b/build/media_source/com_guidedtours/joomla.asset.json deleted file mode 100644 index 38ac42c5b07fe..0000000000000 --- a/build/media_source/com_guidedtours/joomla.asset.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$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.admin-tours-modal", - "type": "script", - "uri": "com_guidedtours/admin-tours-modal.min.js", - "dependencies": [ - "core" - ], - "attributes": { - "type": "module" - } - } - ] -} diff --git a/build/media_source/com_guidedtours/js/admin-tours-modal.es6.js b/build/media_source/com_guidedtours/js/admin-tours-modal.es6.js deleted file mode 100644 index fddc4d182cc9d..0000000000000 --- a/build/media_source/com_guidedtours/js/admin-tours-modal.es6.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @copyright (C) 2018 Open Source Matters, Inc. - * @license GNU General Public License version 2 or later; see LICENSE.txt - */ -(() => { - 'use strict'; - - /** - * Javascript to insert the link - * View element calls jSelectTour when a tour is clicked - * jSelectTour creates the link tag, sends it to the editor, - * and closes the select frame. - * */ - window.jSelectTour = (id, title, alias) => { - if (!Joomla.getOptions('xtd-guidedtour')) { - if (window.parent.Joomla.Modal) { - window.parent.Joomla.Modal.getCurrent().close(); - } - } - - const { editor } = Joomla.getOptions('xtd-guidedtour'); - const tag = ``; - window.parent.Joomla.editors.instances[editor].replaceSelection(tag); - - if (window.parent.Joomla.Modal) { - window.parent.Joomla.Modal.getCurrent().close(); - } - }; - - document.querySelectorAll('.select-link').forEach((element) => { - // Listen for click event - element.addEventListener('click', (event) => { - event.preventDefault(); - const { target } = event; - const functionName = target.getAttribute('data-function'); - - if (functionName === 'jSelectTour') { - // Used in xtd_contacts - window[functionName](target.getAttribute('data-id'), target.getAttribute('data-title'), target.getAttribute('data-alias')); - } else { - // Used in com_menus - window.parent[functionName](target.getAttribute('data-id'), target.getAttribute('data-title'), target.getAttribute('data-alias')); - } - - if (window.parent.Joomla.Modal) { - window.parent.Joomla.Modal.getCurrent().close(); - } - }); - }); -})(); diff --git a/build/media_source/plg_system_guidedtours/scss/guidedtours.scss b/build/media_source/plg_system_guidedtours/scss/guidedtours.scss index b964d1bfb39b9..c853c54032f7c 100644 --- a/build/media_source/plg_system_guidedtours/scss/guidedtours.scss +++ b/build/media_source/plg_system_guidedtours/scss/guidedtours.scss @@ -60,8 +60,4 @@ #modGuidedTours-modal a { font-weight: 500; text-decoration: underline; -} - -.shepherd-header.tour-step-viewed .shepherd-title { - background-color:red; } \ No newline at end of file diff --git a/installation/sql/mysql/extensions.sql b/installation/sql/mysql/extensions.sql index 5f4486a067d43..73ee6c4428741 100644 --- a/installation/sql/mysql/extensions.sql +++ b/installation/sql/mysql/extensions.sql @@ -895,7 +895,7 @@ CREATE TABLE IF NOT EXISTS `#__scheduler_tasks` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `asset_id` int unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.', `title` varchar(255) NOT NULL DEFAULT '', - `type` varchar(128) NOT NULL COMMENT 'unique alias for job defined by plugin', + `type` varchar(128) NOT NULL COMMENT 'unique identifier for job defined by plugin', `execution_rules` text COMMENT 'Execution Rules, Unprocessed', `cron_rules` text COMMENT 'Processed execution rules, crontab-like JSON form', `state` tinyint NOT NULL DEFAULT FALSE, @@ -949,7 +949,6 @@ CREATE TABLE IF NOT EXISTS `#__guidedtours` ( `language` varchar(7) NOT NULL, `note` varchar(255) NOT NULL DEFAULT '', `access` int unsigned NOT NULL DEFAULT 0, - `params` text NOT NULL, PRIMARY KEY (`id`), KEY `idx_access` (`access`), KEY `idx_state` (`published`), diff --git a/installation/sql/postgresql/extensions.sql b/installation/sql/postgresql/extensions.sql index 8726b398dec39..be2ed6dad2185 100644 --- a/installation/sql/postgresql/extensions.sql +++ b/installation/sql/postgresql/extensions.sql @@ -913,7 +913,6 @@ CREATE TABLE IF NOT EXISTS "#__guidedtours" ( "language" varchar(7) DEFAULT '' NOT NULL, "note" varchar(255) DEFAULT '' NOT NULL, "access" bigint NOT NULL DEFAULT 0, - "params" text NOT NULL, PRIMARY KEY ("id") ); From 0d1d1be6432a619337024658f01a19d88f027675 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 14 Jul 2023 15:45:43 +0100 Subject: [PATCH 042/127] a bit more of a clean up --- .../components/com_guidedtours/forms/filter_tours.xml | 2 +- administrator/modules/mod_guidedtours/tmpl/default.php | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/administrator/components/com_guidedtours/forms/filter_tours.xml b/administrator/components/com_guidedtours/forms/filter_tours.xml index 33fed34e9fada..f71cbb63dbe32 100644 --- a/administrator/components/com_guidedtours/forms/filter_tours.xml +++ b/administrator/components/com_guidedtours/forms/filter_tours.xml @@ -1,5 +1,5 @@ - name="params" + - * @license GNU General Public License version 2 or later; see LICENSE.txt + * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; @@ -16,7 +16,7 @@ $hideLinks = $app->getInput()->getBool('hidemainmenu'); -if ($hideLinks || ! $tours) { +if ($hideLinks || !$tours) { return; } @@ -35,7 +35,7 @@ $lang->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); foreach ($tours as $tour) : - if (count(array_intersect([ '*', $extension ], $tour->extensions))) : + if (count(array_intersect(['*', $extension], $tour->extensions))) : $listTours[] = $tour; endif; From 7480e416879285fb493c07ae8ef01867315d8212 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 14 Jul 2023 15:52:45 +0100 Subject: [PATCH 043/127] language file rename --- ...mla_tours_net_articles_title.ini => joomla_articles_title.ini} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename administrator/language/en-GB/{com_guidedtours_ubu_joomla_tours_net_articles_title.ini => joomla_articles_title.ini} (100%) diff --git a/administrator/language/en-GB/com_guidedtours_ubu_joomla_tours_net_articles_title.ini b/administrator/language/en-GB/joomla_articles_title.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours_ubu_joomla_tours_net_articles_title.ini rename to administrator/language/en-GB/joomla_articles_title.ini From 0a489330f576503255ab19563c7855a6423b2c73 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 14 Jul 2023 17:00:30 +0100 Subject: [PATCH 044/127] language file rename --- ...cles_title.ini => com_guidedtours_joomla_articles_title.ini} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename administrator/language/en-GB/{joomla_articles_title.ini => com_guidedtours_joomla_articles_title.ini} (97%) diff --git a/administrator/language/en-GB/joomla_articles_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini similarity index 97% rename from administrator/language/en-GB/joomla_articles_title.ini rename to administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini index 5375af61f842d..cf4bee5bf251f 100644 --- a/administrator/language/en-GB/joomla_articles_title.ini +++ b/administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini @@ -3,7 +3,7 @@ ; License GNU General Public License version 2 or later; see LICENSE.txt ; Note : All ini files need to be saved as UTF-8 -COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles?" +COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles" COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION="This tour will show you how you can create an article." COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_TITLE="Select the 'New' button" From 34cad86f814d111e643e5cfa234c020caa8a2398 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 14 Jul 2023 17:13:53 +0100 Subject: [PATCH 045/127] phpcs fixes --- .../com_guidedtours/src/Model/TourModel.php | 6 ++--- .../com_guidedtours/src/Model/ToursModel.php | 4 +--- includes/incompatible.html | 2 +- .../guidedtours/src/Extension/GuidedTours.php | 22 ++++++++++--------- templates/system/build_incomplete.html | 2 +- templates/system/fatal-error.html | 2 +- templates/system/incompatible.html | 2 +- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index 55cd0e0b0cc36..4222bef90e02a 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -93,11 +93,11 @@ public function save($data) $data['alias'] = OutputFilter::stringURLSafe($aliasTitle); } } else { - $data['alias'] = ApplicationHelper::stringURLSafe( $data['alias'] ); + $data['alias'] = ApplicationHelper::stringURLSafe($data['alias']); } // make sure the alias is unique - $data['alias'] = $this->generateNewAlias( $data['alias'], $id ); + $data['alias'] = $this->generateNewAlias($data['alias'], $id ); $result = parent::save($data); @@ -276,7 +276,7 @@ public function getItemByAlias($alias = "") Factory::getLanguage()->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); $db = $this->getDatabase(); - $query = $db->getQuery(true) + $query = $db->getQuery(true) ->select($db->quoteName('id')) ->from($db->quoteName('#__guidedtours')) ->where($db->quoteName('alias') . ' = :alias') diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index 797d57af95ea6..6a5566428ac9c 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -254,9 +254,7 @@ public function getItems() foreach ($items as $item) { if (!empty($item->alias)) { Factory::getLanguage()->load("com_guidedtours_" . str_replace("-", "_", $item->alias), JPATH_ADMINISTRATOR); - } - else if ($item->id < 12 && str_starts_with($item->title, 'COM_GUIDEDTOURS_TOUR_')) - { + } elseif ($item->id < 12 && str_starts_with($item->title, 'COM_GUIDEDTOURS_TOUR_')) { // We have an orphan tour with no alias so we set it now for official Joomla tours $tourItem = $this->getTable('Tour'); $tourItem->load($item->id); diff --git a/includes/incompatible.html b/includes/incompatible.html index ae42c29b990e8..fa6e49c4786c3 100644 --- a/includes/incompatible.html +++ b/includes/incompatible.html @@ -5,7 +5,7 @@ Joomla: unsupported PHP version - + diff --git a/plugins/system/guidedtours/src/Extension/GuidedTours.php b/plugins/system/guidedtours/src/Extension/GuidedTours.php index 2a05358fd242b..a3ae11a4e96f0 100644 --- a/plugins/system/guidedtours/src/Extension/GuidedTours.php +++ b/plugins/system/guidedtours/src/Extension/GuidedTours.php @@ -104,7 +104,7 @@ public static function getSubscribedEvents(): array */ public function startTour(Event $event) { - $tourId = (int) $this->getApplication()->getInput()->getInt('id'); + $tourId = (int) $this->getApplication()->getInput()->getInt('id'); $tourAlias = $this->getApplication()->getInput()->getString('alias'); $tourAlias = $tourAlias !== "" ? @urldecode($tourAlias) : $tourAlias; @@ -118,7 +118,7 @@ public function startTour(Event $event) if (!empty($tour->id)) { $activeTourId = $tour->id; } - } else if ($tourAlias !== "") { + } elseif ($tourAlias !== "") { $tour = $this->getTourByAlias($tourAlias); if (!empty($tour->id)) { @@ -171,10 +171,11 @@ public function onBeforeCompileHead() * * @since 4.3.0 */ - private function getTour(int $tourId) { + private function getTour(int $tourId) + { $app = $this->getApplication(); - $factory = $app->bootComponent( 'com_guidedtours' )->getMVCFactory(); + $factory = $app->bootComponent('com_guidedtours')->getMVCFactory(); $tourModel = $factory->createModel( 'Tour', @@ -182,7 +183,7 @@ private function getTour(int $tourId) { [ 'ignore_request' => true ] ); - $item = $tourModel->getItem( $tourId ); + $item = $tourModel->getItem($tourId); return $this->processTour($item); } @@ -196,10 +197,11 @@ private function getTour(int $tourId) { * * @since 4.3.0 */ - private function getTourByAlias(string $tourAlias) { + private function getTourByAlias(string $tourAlias) + { $app = $this->getApplication(); - $factory = $app->bootComponent( 'com_guidedtours' )->getMVCFactory(); + $factory = $app->bootComponent('com_guidedtours')->getMVCFactory(); $tourModel = $factory->createModel( 'Tour', @@ -207,7 +209,7 @@ private function getTourByAlias(string $tourAlias) { [ 'ignore_request' => true ] ); - $item = $tourModel->getItemByAlias( $tourAlias ); + $item = $tourModel->getItemByAlias($tourAlias); return $this->processTour($item); } @@ -225,8 +227,8 @@ private function processTour($item) { $app = $this->getApplication(); - $user = $app->getIdentity(); - $factory = $app->bootComponent( 'com_guidedtours' )->getMVCFactory(); + $user = $app->getIdentity(); + $factory = $app->bootComponent('com_guidedtours')->getMVCFactory(); if (empty($item->id) || $item->published < 1 || !in_array($item->access, $user->getAuthorisedViewLevels())) { return null; diff --git a/templates/system/build_incomplete.html b/templates/system/build_incomplete.html index 4803ad7dde7b6..b85c89084bd7f 100644 --- a/templates/system/build_incomplete.html +++ b/templates/system/build_incomplete.html @@ -5,7 +5,7 @@ Joomla: Environment Setup Incomplete - + diff --git a/templates/system/fatal-error.html b/templates/system/fatal-error.html index b3b66fbfba8fe..9d9177ee8e10f 100644 --- a/templates/system/fatal-error.html +++ b/templates/system/fatal-error.html @@ -5,7 +5,7 @@ An Error Occurred: {{statusText}} - + diff --git a/templates/system/incompatible.html b/templates/system/incompatible.html index ae42c29b990e8..fa6e49c4786c3 100644 --- a/templates/system/incompatible.html +++ b/templates/system/incompatible.html @@ -5,7 +5,7 @@ Joomla: unsupported PHP version - + From 332acef0fac0649ac0b4cca393a1cd819072b5ce Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 14 Jul 2023 17:25:04 +0100 Subject: [PATCH 046/127] phpcs fixes --- .../components/com_guidedtours/src/Model/TourModel.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index 4222bef90e02a..8fcdc9a5dad49 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -97,7 +97,7 @@ public function save($data) } // make sure the alias is unique - $data['alias'] = $this->generateNewAlias($data['alias'], $id ); + $data['alias'] = $this->generateNewAlias($data['alias'], $id); $result = parent::save($data); From bf61a88c4b6cfee3f3a5c0a6ce8b3890934d34af Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Sat, 15 Jul 2023 12:59:40 +0100 Subject: [PATCH 047/127] Reverse unnecessary file commit --- includes/incompatible.html | 2 +- templates/system/build_incomplete.html | 2 +- templates/system/fatal-error.html | 2 +- templates/system/incompatible.html | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/includes/incompatible.html b/includes/incompatible.html index fa6e49c4786c3..ae42c29b990e8 100644 --- a/includes/incompatible.html +++ b/includes/incompatible.html @@ -5,7 +5,7 @@ Joomla: unsupported PHP version - + diff --git a/templates/system/build_incomplete.html b/templates/system/build_incomplete.html index b85c89084bd7f..4803ad7dde7b6 100644 --- a/templates/system/build_incomplete.html +++ b/templates/system/build_incomplete.html @@ -5,7 +5,7 @@ Joomla: Environment Setup Incomplete - + diff --git a/templates/system/fatal-error.html b/templates/system/fatal-error.html index 9d9177ee8e10f..b3b66fbfba8fe 100644 --- a/templates/system/fatal-error.html +++ b/templates/system/fatal-error.html @@ -5,7 +5,7 @@ An Error Occurred: {{statusText}} - + diff --git a/templates/system/incompatible.html b/templates/system/incompatible.html index fa6e49c4786c3..ae42c29b990e8 100644 --- a/templates/system/incompatible.html +++ b/templates/system/incompatible.html @@ -5,7 +5,7 @@ Joomla: unsupported PHP version - + From 8265a11aff10788ef447dc9994f0defff3c8318b Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Sat, 15 Jul 2023 13:01:06 +0100 Subject: [PATCH 048/127] missing empty line --- build/media_source/plg_system_guidedtours/scss/guidedtours.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/media_source/plg_system_guidedtours/scss/guidedtours.scss b/build/media_source/plg_system_guidedtours/scss/guidedtours.scss index c853c54032f7c..e5e292caa830d 100644 --- a/build/media_source/plg_system_guidedtours/scss/guidedtours.scss +++ b/build/media_source/plg_system_guidedtours/scss/guidedtours.scss @@ -60,4 +60,4 @@ #modGuidedTours-modal a { font-weight: 500; text-decoration: underline; -} \ No newline at end of file +} From ff74e4189a0d0bb27fcf686d446c086aea597d9b Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Sat, 15 Jul 2023 13:03:58 +0100 Subject: [PATCH 049/127] phpcs --- .../components/com_guidedtours/src/Model/TourModel.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index 8fcdc9a5dad49..e61f6e20dbb33 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -20,7 +20,6 @@ use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\Uri\Uri; use Joomla\Database\ParameterType; -use Joomla\Registry\Registry; use Joomla\String\StringHelper; use Joomla\Utilities\ArrayHelper; @@ -595,5 +594,4 @@ protected function generateNewAlias($alias, $currentItemId) return $alias; } - -} +} \ No newline at end of file From d20253c521da0a6b38d1c35b58c1663f6b2bfbcf Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Sat, 15 Jul 2023 18:18:06 -0400 Subject: [PATCH 050/127] Update administrator/components/com_guidedtours/src/Model/TourModel.php New line at end of file Co-authored-by: Richard Fath --- .../components/com_guidedtours/src/Model/TourModel.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index e61f6e20dbb33..859f671cee512 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -594,4 +594,4 @@ protected function generateNewAlias($alias, $currentItemId) return $alias; } -} \ No newline at end of file +} From ddb763abcb425798e6e0350f0d7873e4dce2a494 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Mon, 17 Jul 2023 09:09:58 +0100 Subject: [PATCH 051/127] Update administrator/modules/mod_guidedtours/tmpl/default.php Co-authored-by: Richard Fath --- administrator/modules/mod_guidedtours/tmpl/default.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/administrator/modules/mod_guidedtours/tmpl/default.php b/administrator/modules/mod_guidedtours/tmpl/default.php index 3d88c990214ea..d868238ac1c97 100644 --- a/administrator/modules/mod_guidedtours/tmpl/default.php +++ b/administrator/modules/mod_guidedtours/tmpl/default.php @@ -44,10 +44,9 @@ // We assume the url is the starting point $key = $uri->getVar('option') ?? Text::_('MOD_GUIDEDTOURS_GENERIC_TOUR'); - if (empty($tour->alias)) - { - $lang->load( "com_guidedtours_" . str_replace( "-", "_", $tour->alias ), JPATH_ADMINISTRATOR ); - } + if (empty($tour->alias)) : + $lang->load('com_guidedtours_' . str_replace('-', '_', $tour->alias), JPATH_ADMINISTRATOR); + endif; if (! isset($allTours[$key])) : $lang->load("$key.sys", JPATH_ADMINISTRATOR) From e0f9b111804352ae6a8da0d91972e666d5e9f581 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Mon, 17 Jul 2023 09:10:37 +0100 Subject: [PATCH 052/127] Update administrator/modules/mod_guidedtours/tmpl/default.php Co-authored-by: Richard Fath --- .../modules/mod_guidedtours/tmpl/default.php | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/administrator/modules/mod_guidedtours/tmpl/default.php b/administrator/modules/mod_guidedtours/tmpl/default.php index d868238ac1c97..712943a610a8a 100644 --- a/administrator/modules/mod_guidedtours/tmpl/default.php +++ b/administrator/modules/mod_guidedtours/tmpl/default.php @@ -59,33 +59,33 @@ endforeach; ?> - + Date: Mon, 17 Jul 2023 09:13:59 +0100 Subject: [PATCH 053/127] Split steps language strings from tour strings --- .../com_guidedtours_joomla_articles_title.ini | 38 ---------------- ...uidedtours_joomla_articles_title.steps.ini | 43 +++++++++++++++++++ 2 files changed, 43 insertions(+), 38 deletions(-) create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_articles_title.steps.ini diff --git a/administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini index cf4bee5bf251f..c18d3213342d8 100644 --- a/administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini +++ b/administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini @@ -6,41 +6,3 @@ COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles" COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION="This tour will show you how you can create an article." -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_DESCRIPTION="Select 'New' to create a new article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_TITLE="Add a title for the article" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_DESCRIPTION="Enter a required title for the article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_DESCRIPTION="You can write the internal name of this article. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_TITLE="Add content" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_DESCRIPTION="Add the content of your article in the editor." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_DESCRIPTION="Select the published status of the article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_TITLE="Select a category" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_DESCRIPTION="Select the category for this article. You can also enter a new category by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_TITLE="Toggle featured" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_DESCRIPTION="Select 'Featured' to feature your article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_TITLE="Set the access level" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_DESCRIPTION="Select the access level for the article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_TITLE="Add tags" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_DESCRIPTION="Select tags for your article. You can also enter a new tag by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_TITLE="Add a note" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_DESCRIPTION="Save and close the article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_DESCRIPTION="You have created an article." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_articles_title.steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_articles_title.steps.ini new file mode 100644 index 0000000000000..28499ff66f18c --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_articles_title.steps.ini @@ -0,0 +1,43 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_DESCRIPTION="Select 'New' to create a new article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_TITLE="Add a title for the article" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_DESCRIPTION="Enter a required title for the article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_DESCRIPTION="You can write the internal name of this article. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_TITLE="Add content" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_DESCRIPTION="Add the content of your article in the editor." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_DESCRIPTION="Select the published status of the article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_TITLE="Select a category" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_DESCRIPTION="Select the category for this article. You can also enter a new category by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_TITLE="Toggle featured" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_DESCRIPTION="Select 'Featured' to feature your article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_TITLE="Set the access level" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_DESCRIPTION="Select the access level for the article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_TITLE="Add tags" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_DESCRIPTION="Select tags for your article. You can also enter a new tag by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_TITLE="Add a note" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_DESCRIPTION="Save and close the article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_DESCRIPTION="You have created an article." From 46179f79744a3b80996fbede4fcadee751da2248 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Mon, 17 Jul 2023 09:30:02 +0100 Subject: [PATCH 054/127] Split steps language strings from tour strings Only load the language files in the model - no need to load again in the admin module --- .../components/com_guidedtours/src/Model/StepModel.php | 8 +++++++- .../components/com_guidedtours/src/Model/StepsModel.php | 6 ++++-- .../components/com_guidedtours/src/Model/TourModel.php | 6 ++++-- .../components/com_guidedtours/src/Model/ToursModel.php | 7 ++++--- .../en-GB/com_guidedtours_joomla_articles_title.ini | 1 - administrator/modules/mod_guidedtours/tmpl/default.php | 6 ------ 6 files changed, 19 insertions(+), 15 deletions(-) diff --git a/administrator/components/com_guidedtours/src/Model/StepModel.php b/administrator/components/com_guidedtours/src/Model/StepModel.php index a06d3093133d5..de4ad37a15ab1 100644 --- a/administrator/components/com_guidedtours/src/Model/StepModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepModel.php @@ -237,7 +237,8 @@ protected function loadFormData() */ public function getItem($pk = null) { - Factory::getLanguage()->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); + $lang = Factory::getLanguage(); + $lang->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); if ($result = parent::getItem($pk)) { if (!empty($result->id)) { @@ -254,6 +255,11 @@ public function getItem($pk = null) $tour = $tourModel->getItem($tourId); $tourLanguage = !empty($tour->language) ? $tour->language : '*'; + if (!empty($tour->alias)) { + $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias), JPATH_ADMINISTRATOR); + $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . ".steps", JPATH_ADMINISTRATOR); + } + // Sets step language to parent tour language $result->language = $tourLanguage; diff --git a/administrator/components/com_guidedtours/src/Model/StepsModel.php b/administrator/components/com_guidedtours/src/Model/StepsModel.php index 2a00b6b23769e..ff9383f77e792 100644 --- a/administrator/components/com_guidedtours/src/Model/StepsModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepsModel.php @@ -228,7 +228,8 @@ public function getItems() { $items = parent::getItems(); - Factory::getLanguage()->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); + $lang = Factory::getLanguage(); + $lang->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); $tourLanguageLoaded = false; foreach ($items as $item) { @@ -243,7 +244,8 @@ public function getItems() $tour = $tourModel->getItem($tourId); if (!empty($tour->alias)) { - Factory::getLanguage()->load("com_guidedtours_" . str_replace("-", "_", $tour->alias), JPATH_ADMINISTRATOR); + $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias), JPATH_ADMINISTRATOR); + $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . ".steps", JPATH_ADMINISTRATOR); } $tourLanguageLoaded = true; } diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index 859f671cee512..a588a195d2707 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -233,12 +233,14 @@ protected function loadFormData() */ public function getItem($pk = null) { - Factory::getLanguage()->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); + $lang = Factory::getLanguage(); + $lang->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); $result = parent::getItem($pk); if (!empty($result->alias)) { - Factory::getLanguage()->load("com_guidedtours_" . str_replace("-", "_", $result->alias), JPATH_ADMINISTRATOR); + $lang->load("com_guidedtours_" . str_replace("-", "_", $result->alias), JPATH_ADMINISTRATOR); + $lang->load("com_guidedtours_" . str_replace("-", "_", $result->alias) . ".steps", JPATH_ADMINISTRATOR); } if (!empty($result->id)) { diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index 6a5566428ac9c..da5e28ee03a95 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -249,13 +249,14 @@ public function getItems() { $items = parent::getItems(); - Factory::getLanguage()->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); + $lang = Factory::getLanguage(); + $lang->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); foreach ($items as $item) { if (!empty($item->alias)) { - Factory::getLanguage()->load("com_guidedtours_" . str_replace("-", "_", $item->alias), JPATH_ADMINISTRATOR); + $lang->load("com_guidedtours_" . str_replace("-", "_", $item->alias), JPATH_ADMINISTRATOR); } elseif ($item->id < 12 && str_starts_with($item->title, 'COM_GUIDEDTOURS_TOUR_')) { - // We have an orphan tour with no alias so we set it now for official Joomla tours + // We have an orphan tour with no alias, so we set it now for official Joomla tours $tourItem = $this->getTable('Tour'); $tourItem->load($item->id); $app = Factory::getApplication(); diff --git a/administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini index c18d3213342d8..9b26afe2f6dae 100644 --- a/administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini +++ b/administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini @@ -5,4 +5,3 @@ COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles" COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION="This tour will show you how you can create an article." - diff --git a/administrator/modules/mod_guidedtours/tmpl/default.php b/administrator/modules/mod_guidedtours/tmpl/default.php index 712943a610a8a..5435eadb50542 100644 --- a/administrator/modules/mod_guidedtours/tmpl/default.php +++ b/administrator/modules/mod_guidedtours/tmpl/default.php @@ -32,8 +32,6 @@ $listTours = []; $allTours = []; -$lang->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); - foreach ($tours as $tour) : if (count(array_intersect(['*', $extension], $tour->extensions))) : $listTours[] = $tour; @@ -44,10 +42,6 @@ // We assume the url is the starting point $key = $uri->getVar('option') ?? Text::_('MOD_GUIDEDTOURS_GENERIC_TOUR'); - if (empty($tour->alias)) : - $lang->load('com_guidedtours_' . str_replace('-', '_', $tour->alias), JPATH_ADMINISTRATOR); - endif; - if (! isset($allTours[$key])) : $lang->load("$key.sys", JPATH_ADMINISTRATOR) || $lang->load("$key.sys", JPATH_ADMINISTRATOR . '/components/' . $key); From 66f64868d1b889997df76b7b590e631b9705a7e4 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Tue, 18 Jul 2023 10:05:04 +0100 Subject: [PATCH 055/127] Replace double quotes with single quotes Remove loading of component language files in admin module. --- .../com_guidedtours/src/Model/TourModel.php | 16 ++++++++-------- .../com_guidedtours/src/Model/ToursModel.php | 4 ++-- .../com_guidedtours/src/View/Steps/HtmlView.php | 2 +- .../modules/mod_guidedtours/tmpl/default.php | 5 +---- .../guidedtours/src/Extension/GuidedTours.php | 8 ++++---- 5 files changed, 16 insertions(+), 19 deletions(-) diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index a588a195d2707..de4de871d6e4c 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -85,7 +85,7 @@ public function save($data) $app = Factory::getApplication(); $uri = Uri::getInstance(); $host = $uri->toString(['host']); - $aliasTitle = $host . " " . str_replace("COM_GUIDEDTOURS_TOUR_", "", $data['title']); + $aliasTitle = $host . " " . str_replace('COM_GUIDEDTOURS_TOUR_', '', $data['title']); if ($app->get('unicodeslugs') == 1) { $data['alias'] = OutputFilter::stringUrlUnicodeSlug($aliasTitle); } else { @@ -239,8 +239,8 @@ public function getItem($pk = null) $result = parent::getItem($pk); if (!empty($result->alias)) { - $lang->load("com_guidedtours_" . str_replace("-", "_", $result->alias), JPATH_ADMINISTRATOR); - $lang->load("com_guidedtours_" . str_replace("-", "_", $result->alias) . ".steps", JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours_' . str_replace('-', '_', $result->alias), JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours_' . str_replace('-', '_', $result->alias) . ".steps", JPATH_ADMINISTRATOR); } if (!empty($result->id)) { @@ -252,7 +252,7 @@ public function getItem($pk = null) $app = Factory::getApplication(); $uri = Uri::getInstance(); $host = $uri->toString(['host']); - $aliasTitle = $host . " " . str_replace("COM_GUIDEDTOURS_TOUR_", "", $result->title); + $aliasTitle = $host . " " . str_replace('COM_GUIDEDTOURS_TOUR_', '', $result->title); if ($app->get('unicodeslugs') == 1) { $result->alias = OutputFilter::stringUrlUnicodeSlug($aliasTitle); } else { @@ -272,7 +272,7 @@ public function getItem($pk = null) * * @since 5.0.0 */ - public function getItemByAlias($alias = "") + public function getItemByAlias($alias = '') { Factory::getLanguage()->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); @@ -289,7 +289,7 @@ public function getItemByAlias($alias = "") $result = parent::getItem($pk); if (!empty($result->alias)) { - Factory::getLanguage()->load("com_guidedtours_" . str_replace("-", "_", $result->alias), JPATH_ADMINISTRATOR); + Factory::getLanguage()->load('com_guidedtours_' . str_replace('-', '_', $result->alias), JPATH_ADMINISTRATOR); } if (!empty($result->id)) { @@ -301,7 +301,7 @@ public function getItemByAlias($alias = "") $app = Factory::getApplication(); $uri = Uri::getInstance(); $host = $uri->toString(['host']); - $aliasTitle = $host . " " . str_replace("COM_GUIDEDTOURS_TOUR_", "", $result->title); + $aliasTitle = $host . " " . str_replace('COM_GUIDEDTOURS_TOUR_', '', $result->title); if ($app->get('unicodeslugs') == 1) { $result->alias = OutputFilter::stringUrlUnicodeSlug($aliasTitle); } else { @@ -579,7 +579,7 @@ protected function setStepsLanguage(int $id, string $language = '*'): bool * * @return string $alias Contains the modified alias. * - * @since __VERSION_DEPLOY__ + * @since __DEPLOY_VERSION__ */ protected function generateNewAlias($alias, $currentItemId) { diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index da5e28ee03a95..a9757dcf87100 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -254,13 +254,13 @@ public function getItems() foreach ($items as $item) { if (!empty($item->alias)) { - $lang->load("com_guidedtours_" . str_replace("-", "_", $item->alias), JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours_' . str_replace('-', '_', $item->alias), JPATH_ADMINISTRATOR); } elseif ($item->id < 12 && str_starts_with($item->title, 'COM_GUIDEDTOURS_TOUR_')) { // We have an orphan tour with no alias, so we set it now for official Joomla tours $tourItem = $this->getTable('Tour'); $tourItem->load($item->id); $app = Factory::getApplication(); - $aliasTitle = "joomla_ " . str_replace("COM_GUIDEDTOURS_TOUR_", "", $tourItem->title); + $aliasTitle = 'joomla_ ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $tourItem->title); if ($app->get('unicodeslugs') == 1) { $tourItem->alias = OutputFilter::stringUrlUnicodeSlug($aliasTitle); } else { diff --git a/administrator/components/com_guidedtours/src/View/Steps/HtmlView.php b/administrator/components/com_guidedtours/src/View/Steps/HtmlView.php index d7982c4230a90..b2d33cbcf7d85 100644 --- a/administrator/components/com_guidedtours/src/View/Steps/HtmlView.php +++ b/administrator/components/com_guidedtours/src/View/Steps/HtmlView.php @@ -102,7 +102,7 @@ public function display($tpl = null) // This arises when you are logged out and return to the steps view after logging back in // We redirect back to the tour lists view $app = Factory::getApplication(); - $app->enqueueMessage(Text::_("COM_GUIDEDTOURS_STEPS_UNKNOWN_TOUR"), 'notice'); + $app->enqueueMessage(Text::_('COM_GUIDEDTOURS_STEPS_UNKNOWN_TOUR'), 'notice'); $app->redirect(Route::_('index.php?option=com_guidedtours&view=tours', false), 300); return; } diff --git a/administrator/modules/mod_guidedtours/tmpl/default.php b/administrator/modules/mod_guidedtours/tmpl/default.php index 5435eadb50542..17e833588fc38 100644 --- a/administrator/modules/mod_guidedtours/tmpl/default.php +++ b/administrator/modules/mod_guidedtours/tmpl/default.php @@ -42,10 +42,7 @@ // We assume the url is the starting point $key = $uri->getVar('option') ?? Text::_('MOD_GUIDEDTOURS_GENERIC_TOUR'); - if (! isset($allTours[$key])) : - $lang->load("$key.sys", JPATH_ADMINISTRATOR) - || $lang->load("$key.sys", JPATH_ADMINISTRATOR . '/components/' . $key); - + if (!isset($allTours[$key])) : $allTours[$key] = []; endif; diff --git a/plugins/system/guidedtours/src/Extension/GuidedTours.php b/plugins/system/guidedtours/src/Extension/GuidedTours.php index a3ae11a4e96f0..35085530c5fc8 100644 --- a/plugins/system/guidedtours/src/Extension/GuidedTours.php +++ b/plugins/system/guidedtours/src/Extension/GuidedTours.php @@ -106,7 +106,7 @@ public function startTour(Event $event) { $tourId = (int) $this->getApplication()->getInput()->getInt('id'); $tourAlias = $this->getApplication()->getInput()->getString('alias'); - $tourAlias = $tourAlias !== "" ? @urldecode($tourAlias) : $tourAlias; + $tourAlias = $tourAlias !== '' ? @urldecode($tourAlias) : $tourAlias; $activeTourId = null; $activeTourAlias = null; @@ -118,7 +118,7 @@ public function startTour(Event $event) if (!empty($tour->id)) { $activeTourId = $tour->id; } - } elseif ($tourAlias !== "") { + } elseif ($tourAlias !== '') { $tour = $this->getTourByAlias($tourAlias); if (!empty($tour->id)) { @@ -180,7 +180,7 @@ private function getTour(int $tourId) $tourModel = $factory->createModel( 'Tour', 'Administrator', - [ 'ignore_request' => true ] + ['ignore_request' => true] ); $item = $tourModel->getItem($tourId); @@ -206,7 +206,7 @@ private function getTourByAlias(string $tourAlias) $tourModel = $factory->createModel( 'Tour', 'Administrator', - [ 'ignore_request' => true ] + ['ignore_request' => true] ); $item = $tourModel->getItemByAlias($tourAlias); From 3d7e248a8f42fe88f13442d377001d41a1ace135 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Mon, 14 Aug 2023 16:10:48 +0100 Subject: [PATCH 056/127] Remove "_title" suffix from pre-built joomla tour aliases Use "alias"_title.ini and "alias"_steps.ini as the 2 language files Make sure extension .sys.ini files are loaded for the module's benefit for grouping tours --- .../com_guidedtours/src/Model/StepModel.php | 4 +- .../com_guidedtours/src/Model/StepsModel.php | 4 +- .../com_guidedtours/src/Model/TourModel.php | 20 +- .../com_guidedtours/src/Model/ToursModel.php | 13 +- .../language/en-GB/com_guidedtours.sys.ini | 367 +----------------- ...com_guidedtours_joomla_articles_steps.ini} | 0 .../com_guidedtours_joomla_articles_title.ini | 2 +- .../com_guidedtours_joomla_banners_steps.ini | 34 ++ .../com_guidedtours_joomla_banners_title.ini | 7 + ...om_guidedtours_joomla_categories_steps.ini | 40 ++ ...om_guidedtours_joomla_categories_title.ini | 7 + .../com_guidedtours_joomla_contacts_steps.ini | 40 ++ .../com_guidedtours_joomla_contacts_title.ini | 7 + ...m_guidedtours_joomla_guidedtours_steps.ini | 25 ++ ...m_guidedtours_joomla_guidedtours_title.ini | 7 + ...idedtours_joomla_guidedtoursteps_steps.ini | 34 ++ ...idedtours_joomla_guidedtoursteps_title.ini | 7 + .../com_guidedtours_joomla_menus_steps.ini | 22 ++ .../com_guidedtours_joomla_menus_title.ini | 7 + ...com_guidedtours_joomla_newsfeeds_steps.ini | 40 ++ ...com_guidedtours_joomla_newsfeeds_title.ini | 7 + ...m_guidedtours_joomla_smartsearch_steps.ini | 25 ++ ...m_guidedtours_joomla_smartsearch_title.ini | 7 + .../com_guidedtours_joomla_tags_steps.ini | 38 ++ .../com_guidedtours_joomla_tags_title.ini | 7 + .../com_guidedtours_joomla_users_steps.ini | 37 ++ .../com_guidedtours_joomla_users_title.ini | 7 + .../modules/mod_guidedtours/tmpl/default.php | 4 + 28 files changed, 444 insertions(+), 375 deletions(-) rename administrator/language/en-GB/{com_guidedtours_joomla_articles_title.steps.ini => com_guidedtours_joomla_articles_steps.ini} (100%) create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_banners_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_banners_title.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_categories_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_categories_title.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_contacts_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_contacts_title.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_guidedtours_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_guidedtours_title.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_title.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_menus_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_menus_title.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_title.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_smartsearch_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_smartsearch_title.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_tags_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_tags_title.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_users_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_users_title.ini diff --git a/administrator/components/com_guidedtours/src/Model/StepModel.php b/administrator/components/com_guidedtours/src/Model/StepModel.php index de4ad37a15ab1..f5cf272bbaf87 100644 --- a/administrator/components/com_guidedtours/src/Model/StepModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepModel.php @@ -256,8 +256,8 @@ public function getItem($pk = null) $tourLanguage = !empty($tour->language) ? $tour->language : '*'; if (!empty($tour->alias)) { - $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias), JPATH_ADMINISTRATOR); - $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . ".steps", JPATH_ADMINISTRATOR); + $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . "_title", JPATH_ADMINISTRATOR); + $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . "_steps", JPATH_ADMINISTRATOR); } // Sets step language to parent tour language diff --git a/administrator/components/com_guidedtours/src/Model/StepsModel.php b/administrator/components/com_guidedtours/src/Model/StepsModel.php index ff9383f77e792..2cfc781b4ae05 100644 --- a/administrator/components/com_guidedtours/src/Model/StepsModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepsModel.php @@ -244,8 +244,8 @@ public function getItems() $tour = $tourModel->getItem($tourId); if (!empty($tour->alias)) { - $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias), JPATH_ADMINISTRATOR); - $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . ".steps", JPATH_ADMINISTRATOR); + $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . "_title", JPATH_ADMINISTRATOR); + $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . "_steps", JPATH_ADMINISTRATOR); } $tourLanguageLoaded = true; } diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index de4de871d6e4c..c172a7cd18d8a 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -86,6 +86,11 @@ public function save($data) $uri = Uri::getInstance(); $host = $uri->toString(['host']); $aliasTitle = $host . " " . str_replace('COM_GUIDEDTOURS_TOUR_', '', $data['title']); + // Remove the last _TITLE part + if (str_ends_with($aliasTitle, '_TITLE')) { + $pos = strrpos($aliasTitle, "_TITLE"); + $aliasTitle = substr($aliasTitle, 0, $pos); + } if ($app->get('unicodeslugs') == 1) { $data['alias'] = OutputFilter::stringUrlUnicodeSlug($aliasTitle); } else { @@ -239,8 +244,8 @@ public function getItem($pk = null) $result = parent::getItem($pk); if (!empty($result->alias)) { - $lang->load('com_guidedtours_' . str_replace('-', '_', $result->alias), JPATH_ADMINISTRATOR); - $lang->load('com_guidedtours_' . str_replace('-', '_', $result->alias) . ".steps", JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours_' . str_replace('-', '_', $result->alias) . "_title", JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours_' . str_replace('-', '_', $result->alias) . "_steps", JPATH_ADMINISTRATOR); } if (!empty($result->id)) { @@ -253,6 +258,11 @@ public function getItem($pk = null) $uri = Uri::getInstance(); $host = $uri->toString(['host']); $aliasTitle = $host . " " . str_replace('COM_GUIDEDTOURS_TOUR_', '', $result->title); + // Remove the last _TITLE part + if (str_ends_with($aliasTitle, '_TITLE')) { + $pos = strrpos($aliasTitle, "_TITLE"); + $aliasTitle = substr($aliasTitle, 0, $pos); + } if ($app->get('unicodeslugs') == 1) { $result->alias = OutputFilter::stringUrlUnicodeSlug($aliasTitle); } else { @@ -301,7 +311,13 @@ public function getItemByAlias($alias = '') $app = Factory::getApplication(); $uri = Uri::getInstance(); $host = $uri->toString(['host']); + $aliasTitle = $host . " " . str_replace('COM_GUIDEDTOURS_TOUR_', '', $result->title); + // Remove the last _TITLE part + if (str_ends_with($result->title, '_TITLE')) { + $pos = strrpos($aliasTitle, "_TITLE"); + $aliasTitle = substr($aliasTitle, 0, $pos); + } if ($app->get('unicodeslugs') == 1) { $result->alias = OutputFilter::stringUrlUnicodeSlug($aliasTitle); } else { diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index a9757dcf87100..a1afc25fda49f 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -254,13 +254,21 @@ public function getItems() foreach ($items as $item) { if (!empty($item->alias)) { - $lang->load('com_guidedtours_' . str_replace('-', '_', $item->alias), JPATH_ADMINISTRATOR); - } elseif ($item->id < 12 && str_starts_with($item->title, 'COM_GUIDEDTOURS_TOUR_')) { + $lang->load('com_guidedtours_' . str_replace('-', '_', $item->alias) . "_title", JPATH_ADMINISTRATOR); + } elseif ($item->id < 12 && str_starts_with($item->title, 'COM_GUIDEDTOURS_TOUR_') && str_ends_with($item->title, '_TITLE')) { // We have an orphan tour with no alias, so we set it now for official Joomla tours $tourItem = $this->getTable('Tour'); $tourItem->load($item->id); $app = Factory::getApplication(); $aliasTitle = 'joomla_ ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $tourItem->title); + + // Remove the last _TITLE part + $pos = strrpos($aliasTitle, "_TITLE"); + if($pos !== false) + { + $aliasTitle = substr($aliasTitle, 0, $pos); + } + if ($app->get('unicodeslugs') == 1) { $tourItem->alias = OutputFilter::stringUrlUnicodeSlug($aliasTitle); } else { @@ -268,6 +276,7 @@ public function getItems() } $tourItem->store(); $item->alias = $tourItem->alias; + $lang->load('com_guidedtours_' . str_replace('-', '_', $item->alias) . "_title", JPATH_ADMINISTRATOR); } $item->title = Text::_($item->title); $item->description = Text::_($item->description); diff --git a/administrator/language/en-GB/com_guidedtours.sys.ini b/administrator/language/en-GB/com_guidedtours.sys.ini index 8a8478b88b5d0..620eeaa403f8d 100644 --- a/administrator/language/en-GB/com_guidedtours.sys.ini +++ b/administrator/language/en-GB/com_guidedtours.sys.ini @@ -1,4 +1,5 @@ ; Joomla! Project +; 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 @@ -7,369 +8,3 @@ COM_GUIDEDTOURS="Guided Tours" COM_GUIDEDTOURS_TOURS_VIEW_DEFAULT_TITLE="List All Guided Tours" COM_GUIDEDTOURS_TOURS_VIEW_DEFAULT_DESC="Shows a list of all guided tours." COM_GUIDEDTOURS_XML_DESCRIPTION="Component for managing Guided Tours functionality." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE="How to create a guided tour?" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION="This tour will show you how you can create a guided tour for the backend." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_NEW_DESCRIPTION="Select 'New' to create a new tour." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_TITLE_TITLE="Add a title for the tour" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_TITLE_DESCRIPTION="Enter a required title for the tour." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONTENT_TITLE="Add content" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONTENT_DESCRIPTION="Enter content describing the tour." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_COMPONENT_TITLE="Select a component" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_COMPONENT_DESCRIPTION="Select the extension(s) where you want to show your tour in priority in the list of possible tours to run. For instance, If you are creating a tour for the 'Users' extension, then select 'Users'. Select 'All' for the tour to appear on every page." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_URL_TITLE="Add a URL" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_URL_DESCRIPTION="Add the relative URL of the page where the tour must start. For instance, enter administrator/index.php?option=com_users&view=users to start the tour in the Users page." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_SAVECLOSE_DESCRIPTION="Save and close the tour." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a guided tour. You now have to create steps for the tour." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE="How to add steps to a guided tour?" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION="This tour will show you how you can create a step for a guided tour." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_COUNTER_TITLE="Select the step counter number" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_COUNTER_DESCRIPTION="Select the number to add a step. The number represents the number of steps created for the tour so far." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_NEW_DESCRIPTION="Select 'New' to create a new step." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TITLE_TITLE="Add a title for the step" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TITLE_DESCRIPTION="Enter a required title for the step. This is usually an action a user must execute." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_DESCRIPTION_TITLE="Add step explanation" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_DESCRIPTION_DESCRIPTION="The content should give the user an explanation about the step." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_STATUS_DESCRIPTION="Select the published status of the step." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_POSITION_TITLE="Select the position" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_POSITION_DESCRIPTION="This is the position of the popup relative to the element you target on the page. 'Centered' is used when there is no specific target." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TARGET_TITLE="Enter the target element" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TARGET_DESCRIPTION="This is the element on the page this step targets. It uses the syntax used by CSS to target an element.
For instance, #jform_title will target the element with id 'jform_title'" - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TYPE_TITLE="Select the type" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TYPE_DESCRIPTION="This is the kind of step you want to create. 'Next' to allow the tour to continue without interaction, 'Redirect' to move to another page, 'Interactive' to request user input." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_SAVECLOSE_DESCRIPTION="Save and close the step." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a step for a guided tour." - -COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles?" -COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION="This tour will show you how you can create an article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_DESCRIPTION="Select 'New' to create a new article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_TITLE="Add a title for the article" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_DESCRIPTION="Enter a required title for the article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_DESCRIPTION="You can write the internal name of this article. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_TITLE="Add content" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_DESCRIPTION="Add the content of your article in the editor." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_DESCRIPTION="Select the published status of the article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_TITLE="Select a category" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_DESCRIPTION="Select the category for this article. You can also enter a new category by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_TITLE="Toggle featured" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_DESCRIPTION="Select 'Featured' to feature your article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_TITLE="Set the access level" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_DESCRIPTION="Select the access level for the article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_TITLE="Add tags" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_DESCRIPTION="Select tags for your article. You can also enter a new tag by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_TITLE="Add a note" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_DESCRIPTION="Save and close the article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_DESCRIPTION="You have created an article." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE="How to create categories?" -COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION="This tour will show you how you can create a category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NEW_DESCRIPTION="Select 'New' to create a new category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TITLE_TITLE="Add a title for the category" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TITLE_DESCRIPTION="Enter a required title for the category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ALIAS_DESCRIPTION="You can write the internal name of this category. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONTENT_TITLE="Add content" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONTENT_DESCRIPTION="Add the content of your category in the editor." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_PARENT_TITLE="Select parent category" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_PARENT_DESCRIPTION="Select or enter the parent of the category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_STATUS_DESCRIPTION="Select the published status of the category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ACCESS_TITLE="Set the access level" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ACCESS_DESCRIPTION="Select the access level for the category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TAGS_TITLE="Add tags" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TAGS_DESCRIPTION="Select tags for your category. You can also enter a new tag by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NOTE_TITLE="Add a note" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_SAVECLOSE_DESCRIPTION="Save and close the category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONGRATULATIONS_DESCRIPTION="You have created a category" - -COM_GUIDEDTOURS_TOUR_MENUS_TITLE="How to create menus?" -COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION="This tour will show you how you can create a menu." - -COM_GUIDEDTOURS_TOUR_MENUS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_MENUS_STEP_NEW_DESCRIPTION="Select 'New' to create a new menu." - -COM_GUIDEDTOURS_TOUR_MENUS_STEP_TITLE_TITLE="Add a title for the menu" -COM_GUIDEDTOURS_TOUR_MENUS_STEP_TITLE_DESCRIPTION="Enter a required title for the menu." - -COM_GUIDEDTOURS_TOUR_MENUS_STEP_UNIQUENAME_TITLE="Add a unique name" -COM_GUIDEDTOURS_TOUR_MENUS_STEP_UNIQUENAME_DESCRIPTION="Enter a required unique name for the menu." - -COM_GUIDEDTOURS_TOUR_MENUS_STEP_DESCRIPTION_TITLE="Add a description" -COM_GUIDEDTOURS_TOUR_MENUS_STEP_DESCRIPTION_DESCRIPTION="Add a description about the purpose of the menu." - -COM_GUIDEDTOURS_TOUR_MENUS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_MENUS_STEP_SAVECLOSE_DESCRIPTION="Save and close the menu." - -COM_GUIDEDTOURS_TOUR_MENUS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_MENUS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a menu." - -COM_GUIDEDTOURS_TOUR_TAGS_TITLE="How to create tags?" -COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION="This tour will show you how you can create a tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_NEW_DESCRIPTION="Select 'New' to create a new tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_TITLE_TITLE="Add a title for the tag" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_TITLE_DESCRIPTION="Enter a required title for the tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this tag. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONTENT_TITLE="Add content" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONTENT_DESCRIPTION="Add the content of your tag in the editor." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_PARENT_TITLE="Select parent tag" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_PARENT_DESCRIPTION="Select or enter the parent of the tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_STATUS_DESCRIPTION="Select the published status of the tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_ACCESS_TITLE="Set the access level" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_ACCESS_DESCRIPTION="Select the access level for the tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_NOTE_TITLE="Add a note" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_SAVECLOSE_DESCRIPTION="Save and close the tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a tag." - -COM_GUIDEDTOURS_TOUR_BANNERS_TITLE="How to create banners?" -COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION="This tour will show you how you can create a banner." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_DESCRIPTION="Select 'New' to create a new banner." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_TITLE="Add a title for the banner" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_DESCRIPTION="Enter a required title for the banner." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this banner. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_TITLE="Enter detailed information" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_DESCRIPTION="Add the details for the banner here." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_DESCRIPTION="Select the published status of the banner." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_TITLE="Select a category" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_DESCRIPTION="Select the category for this banner. You can also enter a new category by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_TITLE="Toggle pinned" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_DESCRIPTION="Select 'Pinned' to give priority to the banner over ones that are not pinned." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this banner." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_SAVECLOSE_DESCRIPTION="Save and close the banner." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a banner." - -COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE="How to create contacts?" -COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION="This tour will show you how you can create a contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_NEW_DESCRIPTION="Select 'New' to create a new contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TITLE_TITLE="Add a name" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TITLE_DESCRIPTION="Enter a required name for the contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this contact. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_DETAILS_TITLE="Enter detailed information" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_DETAILS_DESCRIPTION="Add the details for the contact here." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_STATUS_DESCRIPTION="Select the published status of the contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CATEGORY_TITLE="Select a category" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CATEGORY_DESCRIPTION="Select the category for this contact. You can also enter a new category by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_FEATURED_TITLE="Toggle featured" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_FEATURED_DESCRIPTION="Select 'Featured' to feature your contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ACCESS_TITLE="Set the access level" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ACCESS_DESCRIPTION="Select the access level for the contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TAGS_TITLE="Add tags" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TAGS_DESCRIPTION="Select tags for your contact. You can also enter a new tag by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_SAVECLOSE_DESCRIPTION="Save and close the contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a contact." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE="How to enter a news feed?" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION="This tour will show you how you can enter a news feed from another site for display." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_NEW_DESCRIPTION="Select 'New' to create a new news feed." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TITLE_TITLE="Add a title" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TITLE_DESCRIPTION="Enter a required title for the news feed." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this news feed. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_LINK_TITLE="Enter the link" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_LINK_DESCRIPTION="Add the link to the news feed here." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_DESCRIPTION_TITLE="Enter a description" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_DESCRIPTION_DESCRIPTION="Add a description for news feed in the editor." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_STATUS_DESCRIPTION="Select the published status of the news feed." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CATEGORY_TITLE="Select a category" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CATEGORY_DESCRIPTION="Select the category for this news feed. You can also enter a new category by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ACCESS_TITLE="Set the access level" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ACCESS_DESCRIPTION="Select the access level for the news feed." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TAGS_TITLE="Add tags" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TAGS_DESCRIPTION="Select tags for your news feed. You can also enter a new tag by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this news feed." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_SAVECLOSE_DESCRIPTION="Save and close the news feed." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a news feed." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE="How to create smart search filters?" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION="This tour will show you how you can create a smart search filter." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_NEW_DESCRIPTION="Select 'New' to create a new smart search filter." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_TITLE_TITLE="Add a title" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_TITLE_DESCRIPTION="Enter a required title for the smart search filter." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_ALIAS_DESCRIPTION="You can write the internal name of this filter. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONTENT_TITLE="Enter content" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONTENT_DESCRIPTION="Add the content for the smart search filter here." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_STATUS_DESCRIPTION="Select the published status of the filter." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_SAVECLOSE_DESCRIPTION="Save and close the smart search filter." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONGRATULATIONS_DESCRIPTION="You have created a smart search filter." - -COM_GUIDEDTOURS_TOUR_USERS_TITLE="How to create users?" -COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION="This tour will show you how you can create a user." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_USERS_STEP_NEW_DESCRIPTION="Select 'New' to create a new user." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_NAME_TITLE="Add a name" -COM_GUIDEDTOURS_TOUR_USERS_STEP_NAME_DESCRIPTION="Enter a required name for the user." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_LOGINNAME_TITLE="Add a login name" -COM_GUIDEDTOURS_TOUR_USERS_STEP_LOGINNAME_DESCRIPTION="Enter a required login name for the user (username)." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD_TITLE="Enter a password" -COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD_DESCRIPTION="Fill in a (new) password. Although this field is not required, the user will not be able to log in when no password is set." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD2_TITLE="Confirm the password" -COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD2_DESCRIPTION="Fill in the password from the field above again, to verify it. This field is required when you filled in the new password field." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_EMAIL_TITLE="Add an email address" -COM_GUIDEDTOURS_TOUR_USERS_STEP_EMAIL_DESCRIPTION="Enter an email address for the user." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_SYSTEMEMAIL_TITLE="Toggle receive system emails" -COM_GUIDEDTOURS_TOUR_USERS_STEP_SYSTEMEMAIL_DESCRIPTION="Set to yes, if the user needs to receive system emails." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_STATUS_TITLE="Toggle status" -COM_GUIDEDTOURS_TOUR_USERS_STEP_STATUS_DESCRIPTION="Enable or block this user." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORDRESET_TITLE="Toggle password reset" -COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORDRESET_DESCRIPTION="If set to yes, the user will have to reset their password the next time they log in to the site." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_USERS_STEP_SAVECLOSE_DESCRIPTION="Save and close the user." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_USERS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a user." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_articles_title.steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_articles_steps.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours_joomla_articles_title.steps.ini rename to administrator/language/en-GB/com_guidedtours_joomla_articles_steps.ini diff --git a/administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini index 9b26afe2f6dae..dcd475831c40a 100644 --- a/administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini +++ b/administrator/language/en-GB/com_guidedtours_joomla_articles_title.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 -COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles" +COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles?" COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION="This tour will show you how you can create an article." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_banners_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_banners_steps.ini new file mode 100644 index 0000000000000..1fecdb04fca94 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_banners_steps.ini @@ -0,0 +1,34 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_DESCRIPTION="Select 'New' to create a new banner." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_TITLE="Add a title for the banner" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_DESCRIPTION="Enter a required title for the banner." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this banner. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_TITLE="Enter detailed information" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_DESCRIPTION="Add the details for the banner here." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_DESCRIPTION="Select the published status of the banner." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_TITLE="Select a category" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_DESCRIPTION="Select the category for this banner. You can also enter a new category by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_TITLE="Toggle pinned" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_DESCRIPTION="Select 'Pinned' to give priority to the banner over ones that are not pinned." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this banner." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_SAVECLOSE_DESCRIPTION="Save and close the banner." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a banner." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_banners_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_banners_title.ini new file mode 100644 index 0000000000000..83c5006cef7e6 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_banners_title.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_BANNERS_TITLE="How to create banners?" +COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION="This tour will show you how you can create a banner." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_categories_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_categories_steps.ini new file mode 100644 index 0000000000000..70b78625d1655 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_categories_steps.ini @@ -0,0 +1,40 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NEW_DESCRIPTION="Select 'New' to create a new category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TITLE_TITLE="Add a title for the category" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TITLE_DESCRIPTION="Enter a required title for the category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ALIAS_DESCRIPTION="You can write the internal name of this category. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONTENT_TITLE="Add content" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONTENT_DESCRIPTION="Add the content of your category in the editor." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_PARENT_TITLE="Select parent category" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_PARENT_DESCRIPTION="Select or enter the parent of the category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_STATUS_DESCRIPTION="Select the published status of the category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ACCESS_TITLE="Set the access level" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ACCESS_DESCRIPTION="Select the access level for the category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TAGS_TITLE="Add tags" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TAGS_DESCRIPTION="Select tags for your category. You can also enter a new tag by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NOTE_TITLE="Add a note" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_SAVECLOSE_DESCRIPTION="Save and close the category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONGRATULATIONS_DESCRIPTION="You have created a category" diff --git a/administrator/language/en-GB/com_guidedtours_joomla_categories_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_categories_title.ini new file mode 100644 index 0000000000000..999c5695cd374 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_categories_title.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE="How to create categories?" +COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION="This tour will show you how you can create a category." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_contacts_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_contacts_steps.ini new file mode 100644 index 0000000000000..65ed4f34dc1eb --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_contacts_steps.ini @@ -0,0 +1,40 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_NEW_DESCRIPTION="Select 'New' to create a new contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TITLE_TITLE="Add a name" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TITLE_DESCRIPTION="Enter a required name for the contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this contact. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_DETAILS_TITLE="Enter detailed information" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_DETAILS_DESCRIPTION="Add the details for the contact here." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_STATUS_DESCRIPTION="Select the published status of the contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CATEGORY_TITLE="Select a category" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CATEGORY_DESCRIPTION="Select the category for this contact. You can also enter a new category by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_FEATURED_TITLE="Toggle featured" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_FEATURED_DESCRIPTION="Select 'Featured' to feature your contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ACCESS_TITLE="Set the access level" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ACCESS_DESCRIPTION="Select the access level for the contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TAGS_TITLE="Add tags" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TAGS_DESCRIPTION="Select tags for your contact. You can also enter a new tag by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_SAVECLOSE_DESCRIPTION="Save and close the contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a contact." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_contacts_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_contacts_title.ini new file mode 100644 index 0000000000000..0461fc589ea57 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_contacts_title.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE="How to create contacts?" +COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION="This tour will show you how you can create a contact." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_guidedtours_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_guidedtours_steps.ini new file mode 100644 index 0000000000000..32537321a75cc --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_guidedtours_steps.ini @@ -0,0 +1,25 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_NEW_DESCRIPTION="Select 'New' to create a new tour." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_TITLE_TITLE="Add a title for the tour" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_TITLE_DESCRIPTION="Enter a required title for the tour." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONTENT_TITLE="Add content" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONTENT_DESCRIPTION="Enter content describing the tour." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_COMPONENT_TITLE="Select a component" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_COMPONENT_DESCRIPTION="Select the extension(s) where you want to show your tour in priority in the list of possible tours to run. For instance, If you are creating a tour for the 'Users' extension, then select 'Users'. Select 'All' for the tour to appear on every page." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_URL_TITLE="Add a URL" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_URL_DESCRIPTION="Add the relative URL of the page where the tour must start. For instance, enter administrator/index.php?option=com_users&view=users to start the tour in the Users page." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_SAVECLOSE_DESCRIPTION="Save and close the tour." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a guided tour. You now have to create steps for the tour." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_guidedtours_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_guidedtours_title.ini new file mode 100644 index 0000000000000..1bdb33ab33e69 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_guidedtours_title.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE="How to create a guided tour?" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION="This tour will show you how you can create a guided tour for the backend." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_steps.ini new file mode 100644 index 0000000000000..a0c76c07ca3b3 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_steps.ini @@ -0,0 +1,34 @@ +com_guidedtours_joomla_guidedtours_title.ini; 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 + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_COUNTER_TITLE="Select the step counter number" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_COUNTER_DESCRIPTION="Select the number to add a step. The number represents the number of steps created for the tour so far." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_NEW_DESCRIPTION="Select 'New' to create a new step." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TITLE_TITLE="Add a title for the step" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TITLE_DESCRIPTION="Enter a required title for the step. This is usually an action a user must execute." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_DESCRIPTION_TITLE="Add step explanation" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_DESCRIPTION_DESCRIPTION="The content should give the user an explanation about the step." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_STATUS_DESCRIPTION="Select the published status of the step." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_POSITION_TITLE="Select the position" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_POSITION_DESCRIPTION="This is the position of the popup relative to the element you target on the page. 'Centered' is used when there is no specific target." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TARGET_TITLE="Enter the target element" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TARGET_DESCRIPTION="This is the element on the page this step targets. It uses the syntax used by CSS to target an element.
For instance, #jform_title will target the element with id 'jform_title'" + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TYPE_TITLE="Select the type" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TYPE_DESCRIPTION="This is the kind of step you want to create. 'Next' to allow the tour to continue without interaction, 'Redirect' to move to another page, 'Interactive' to request user input." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_SAVECLOSE_DESCRIPTION="Save and close the step." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a step for a guided tour." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_title.ini new file mode 100644 index 0000000000000..fd8e372e4318e --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_title.ini @@ -0,0 +1,7 @@ +com_guidedtours_joomla_guidedtours_title.ini; 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 + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE="How to add steps to a guided tour?" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION="This tour will show you how you can create a step for a guided tour." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_menus_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_menus_steps.ini new file mode 100644 index 0000000000000..24df344874dc4 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_menus_steps.ini @@ -0,0 +1,22 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_MENUS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_MENUS_STEP_NEW_DESCRIPTION="Select 'New' to create a new menu." + +COM_GUIDEDTOURS_TOUR_MENUS_STEP_TITLE_TITLE="Add a title for the menu" +COM_GUIDEDTOURS_TOUR_MENUS_STEP_TITLE_DESCRIPTION="Enter a required title for the menu." + +COM_GUIDEDTOURS_TOUR_MENUS_STEP_UNIQUENAME_TITLE="Add a unique name" +COM_GUIDEDTOURS_TOUR_MENUS_STEP_UNIQUENAME_DESCRIPTION="Enter a required unique name for the menu." + +COM_GUIDEDTOURS_TOUR_MENUS_STEP_DESCRIPTION_TITLE="Add a description" +COM_GUIDEDTOURS_TOUR_MENUS_STEP_DESCRIPTION_DESCRIPTION="Add a description about the purpose of the menu." + +COM_GUIDEDTOURS_TOUR_MENUS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_MENUS_STEP_SAVECLOSE_DESCRIPTION="Save and close the menu." + +COM_GUIDEDTOURS_TOUR_MENUS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_MENUS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a menu." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_menus_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_menus_title.ini new file mode 100644 index 0000000000000..d28746bbaa3e5 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_menus_title.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_MENUS_TITLE="How to create menus?" +COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION="This tour will show you how you can create a menu." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_steps.ini new file mode 100644 index 0000000000000..554b5e52261c5 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_steps.ini @@ -0,0 +1,40 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_NEW_DESCRIPTION="Select 'New' to create a new news feed." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TITLE_TITLE="Add a title" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TITLE_DESCRIPTION="Enter a required title for the news feed." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this news feed. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_LINK_TITLE="Enter the link" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_LINK_DESCRIPTION="Add the link to the news feed here." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_DESCRIPTION_TITLE="Enter a description" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_DESCRIPTION_DESCRIPTION="Add a description for news feed in the editor." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_STATUS_DESCRIPTION="Select the published status of the news feed." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CATEGORY_TITLE="Select a category" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CATEGORY_DESCRIPTION="Select the category for this news feed. You can also enter a new category by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ACCESS_TITLE="Set the access level" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ACCESS_DESCRIPTION="Select the access level for the news feed." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TAGS_TITLE="Add tags" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TAGS_DESCRIPTION="Select tags for your news feed. You can also enter a new tag by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this news feed." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_SAVECLOSE_DESCRIPTION="Save and close the news feed." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a news feed." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_title.ini new file mode 100644 index 0000000000000..1c7c60efba44a --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_title.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE="How to enter a news feed?" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION="This tour will show you how you can enter a news feed from another site for display." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_smartsearch_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_smartsearch_steps.ini new file mode 100644 index 0000000000000..d768806b25e44 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_smartsearch_steps.ini @@ -0,0 +1,25 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_NEW_DESCRIPTION="Select 'New' to create a new smart search filter." + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_TITLE_TITLE="Add a title" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_TITLE_DESCRIPTION="Enter a required title for the smart search filter." + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_ALIAS_DESCRIPTION="You can write the internal name of this filter. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONTENT_TITLE="Enter content" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONTENT_DESCRIPTION="Add the content for the smart search filter here." + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_STATUS_DESCRIPTION="Select the published status of the filter." + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_SAVECLOSE_DESCRIPTION="Save and close the smart search filter." + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONGRATULATIONS_DESCRIPTION="You have created a smart search filter." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_smartsearch_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_smartsearch_title.ini new file mode 100644 index 0000000000000..2ef0c540691e6 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_smartsearch_title.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE="How to create smart search filters?" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION="This tour will show you how you can create a smart search filter." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_tags_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_tags_steps.ini new file mode 100644 index 0000000000000..d9f7b93949b67 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_tags_steps.ini @@ -0,0 +1,38 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_NEW_DESCRIPTION="Select 'New' to create a new tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_TITLE_TITLE="Add a title for the tag" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_TITLE_DESCRIPTION="Enter a required title for the tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this tag. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONTENT_TITLE="Add content" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONTENT_DESCRIPTION="Add the content of your tag in the editor." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_PARENT_TITLE="Select parent tag" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_PARENT_DESCRIPTION="Select or enter the parent of the tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_STATUS_DESCRIPTION="Select the published status of the tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_ACCESS_TITLE="Set the access level" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_ACCESS_DESCRIPTION="Select the access level for the tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_NOTE_TITLE="Add a note" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_SAVECLOSE_DESCRIPTION="Save and close the tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a tag." + diff --git a/administrator/language/en-GB/com_guidedtours_joomla_tags_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_tags_title.ini new file mode 100644 index 0000000000000..716b54a4390ff --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_tags_title.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_TAGS_TITLE="How to create tags?" +COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION="This tour will show you how you can create a tag." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_users_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_users_steps.ini new file mode 100644 index 0000000000000..ab971126a3556 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_users_steps.ini @@ -0,0 +1,37 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_USERS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_USERS_STEP_NEW_DESCRIPTION="Select 'New' to create a new user." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_NAME_TITLE="Add a name" +COM_GUIDEDTOURS_TOUR_USERS_STEP_NAME_DESCRIPTION="Enter a required name for the user." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_LOGINNAME_TITLE="Add a login name" +COM_GUIDEDTOURS_TOUR_USERS_STEP_LOGINNAME_DESCRIPTION="Enter a required login name for the user (username)." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD_TITLE="Enter a password" +COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD_DESCRIPTION="Fill in a (new) password. Although this field is not required, the user will not be able to log in when no password is set." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD2_TITLE="Confirm the password" +COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD2_DESCRIPTION="Fill in the password from the field above again, to verify it. This field is required when you filled in the new password field." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_EMAIL_TITLE="Add an email address" +COM_GUIDEDTOURS_TOUR_USERS_STEP_EMAIL_DESCRIPTION="Enter an email address for the user." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_SYSTEMEMAIL_TITLE="Toggle receive system emails" +COM_GUIDEDTOURS_TOUR_USERS_STEP_SYSTEMEMAIL_DESCRIPTION="Set to yes, if the user needs to receive system emails." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_STATUS_TITLE="Toggle status" +COM_GUIDEDTOURS_TOUR_USERS_STEP_STATUS_DESCRIPTION="Enable or block this user." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORDRESET_TITLE="Toggle password reset" +COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORDRESET_DESCRIPTION="If set to yes, the user will have to reset their password the next time they log in to the site." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_USERS_STEP_SAVECLOSE_DESCRIPTION="Save and close the user." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_USERS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a user." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_users_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_users_title.ini new file mode 100644 index 0000000000000..942ae7ab0b13b --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_users_title.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_USERS_TITLE="How to create users?" +COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION="This tour will show you how you can create a user." diff --git a/administrator/modules/mod_guidedtours/tmpl/default.php b/administrator/modules/mod_guidedtours/tmpl/default.php index be79742a46369..9ac71ec8d8000 100644 --- a/administrator/modules/mod_guidedtours/tmpl/default.php +++ b/administrator/modules/mod_guidedtours/tmpl/default.php @@ -43,6 +43,10 @@ $key = $uri->getVar('option') ?? Text::_('MOD_GUIDEDTOURS_GENERIC_TOUR'); if (!isset($allTours[$key])) : + // Load extension language sys file to pick up translation of extension + $lang->load("$key.sys", JPATH_ADMINISTRATOR) + || $lang->load("$key.sys", JPATH_ADMINISTRATOR . '/components/' . $key); + $allTours[$key] = []; endif; From 406b7c4e321f9851517c74eb674306384e80fa1b Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Tue, 18 Jul 2023 13:50:50 +0200 Subject: [PATCH 057/127] 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 8d307df2ef57acf323fb42b56b081835de0781c5 Mon Sep 17 00:00:00 2001 From: Stefan Wendhausen Date: Mon, 3 Jul 2023 09:12:50 +0200 Subject: [PATCH 058/127] [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 13e9c78706b48b018f32d5caf6a2312fea1e59c9 Mon Sep 17 00:00:00 2001 From: Fedir Zinchuk Date: Fri, 21 Jul 2023 14:53:10 +0300 Subject: [PATCH 059/127] [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 0dcbd7226a6a4fd1a3b5271ecb87b674a4352362 Mon Sep 17 00:00:00 2001 From: Fedir Zinchuk Date: Fri, 21 Jul 2023 15:29:06 +0300 Subject: [PATCH 060/127] [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 690be987f3d1af2030a768f93f7a44516aa55760 Mon Sep 17 00:00:00 2001 From: Harald Leithner Date: Sat, 22 Jul 2023 11:35:36 +0200 Subject: [PATCH 061/127] [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 66dd7e15dd0e7971bb0370d4596c6ac9f0eaa3e7 Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Sat, 22 Jul 2023 14:30:51 +0200 Subject: [PATCH 062/127] 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 514e573b71b4340f9cd109efcedeb5fb419ba250 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Sun, 23 Jul 2023 16:34:07 +0100 Subject: [PATCH 063/127] [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 0d663dd3ab705c1ef91b189defe526f37515f1bd Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Sun, 23 Jul 2023 19:50:37 +0100 Subject: [PATCH 064/127] [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 065/127] [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 a143291d42696bb940295a75791170f469ee8d63 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 066/127] [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 b69548f60dffc4ddf0af6a51edc456ed7524451a 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 067/127] 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 65f61215c598980a9e65067febf8765493bcbbc5 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Mon, 14 Aug 2023 16:15:32 +0100 Subject: [PATCH 068/127] Remove "_title" suffix from pre-built joomla tour aliases from installation update file --- .../sql/updates/mysql/5.0.0-2023-06-22.sql | 22 +++++++++---------- .../updates/postgresql/5.0.0-2023-06-22.sql | 22 +++++++++---------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql index 73c6b59114479..801ccf3aa13ad 100644 --- a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql +++ b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql @@ -1,14 +1,14 @@ ALTER TABLE `#__guidedtours` ADD COLUMN `alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL AFTER `title`/** CAN FAIL **/; ALTER TABLE `#__guidedtours` ADD INDEX `idx_alias` (`alias`(191)) /** CAN FAIL **/; -UPDATE `#__guidedtours` SET `alias` = 'joomla_guidedtours_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_guidedtourssteps_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_articles_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_categories_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_menus_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_tags_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_banners_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_contacts_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_newsfeeds_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_smartsearch_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_users_title' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_USERS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_guidedtours' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_guidedtourssteps' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_articles' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_ARTICLES'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_categories' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CATEGORIES'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_menus' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_MENUS'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_tags' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_TAGS'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_banners' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_BANNERS'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_contacts' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CONTACTS'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_newsfeeds' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_smartsearch' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_users' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_USERS'; diff --git a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql index 468a4c3498775..91cc9dc7b38df 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql @@ -1,14 +1,14 @@ ALTER TABLE "#__guidedtours" ADD COLUMN "alias" varchar(255) DEFAULT '' NOT NULL /** CAN FAIL **/; CREATE INDEX "#__guidedtours_idx_alias" ON "#__guidedtours" ("alias") /** CAN FAIL **/; -UPDATE "#__guidedtours" SET "alias" = 'joomla_guidedtours_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_guidedtourssteps_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_articles_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_categories_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_menus_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_tags_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_banners_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_contacts_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_newsfeeds_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_smartsearch_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_users_title' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_USERS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_guidedtours' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_guidedtourssteps' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_articles' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_ARTICLES'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_categories' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CATEGORIES'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_menus' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_MENUS'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_tags' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_TAGS'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_banners' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_BANNERS'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_contacts' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CONTACTS'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_newsfeeds' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_smartsearch' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_users' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_USERS'; From f853a13e090c4eafb2fc1e87d3d616bf876621e0 Mon Sep 17 00:00:00 2001 From: Shazma Siddiqui <43249198+shazmasiddiqui@users.noreply.github.com> Date: Tue, 25 Jul 2023 17:59:38 +0530 Subject: [PATCH 069/127] [5.0] [GSoC22] Rich Snippets - schema.org implementation (#41151) * Update drone signature * Base Implementation of schema.org * Adds language strings * Fixed absolute path for schemaorg.xml * Bloposting plugin * Book plugin * Event Plugin * Updates language files * Adds organization schema * Fix file line end * Add empty line at end of file * Add empty line at end of file * Update provider.php Added empty lines * Update Book.php Added empty lines * Added empty line at the end of file * Resolving conflicts * Update 4.2.3-2022-12-10.sql * Update 4.2.3-2022-12-10.sql * Update base.sql * Update base.sql * Update 4.2.3-2022-12-10.sql * Update 4.2.3-2022-12-10.sql * Update provider.php * Update Event.php * Adds Person plugin * Adds empty line * Adds empty line * Adds empty line at the end of file * Update provider.php * Moved xml outside of src folder and load via trait * Remove $supportFunctionality * Move onSchemaPrepareData to trait * Move onSchemaPrepareData to trait * Moved getSubscribedEvents to trait * Move onSchemaAfterSave to trait * Adds recipe plugin * Use EventInterface as type hint * Move XML outside of src folder for schema.org system plugin * Updated file structure * Update plg_schemaorg_recipe.ini * Update duration.xml * Update provider.php * cleanups * Adds schemaorg in contacts component * Add empty line * SQL fixes - Consistent SQL for new installations and updates - Larger data type for id and itemId columns - No display width for integer columns on MySQL - Use order number for schemaorg plugins - Fix order numbers of system plugins on new installation - Fix character set and collation for MySQL on new installation - Align code style to existing SQL * One more CS fix * Alphabetically sort new schemaorg plugins * Update ContactComponent.php * Fix language files * version updated * Deleting rich snippets from components/com_content folder * Removed rich snippets from contact component * Removes rich snippets from layout folder * minor fixes * Update drone hash * Fixed phpcs * Fix code style * Improve information for schema and require base configuration * Fix basetype parameter * Added base type in output * Remove debug output * Add breadcrumb and finder implementation * Add image and social media * Check for context if schema is supported for the extension * CS Fix * CS fixes * CS fix * Fix deploy version * Improve data loading * Improve trait * Fix broken variables * CS fix * CS fix * CS fix * CS fix * Fix from type * Cleanup plugins * Add base structure of blogposting * Add JobPosting installer * Fix CS * Fix new line * Form fields for jobposting * Fix structure * Provide form for schema.org JoPosting * Fix linebreaks * Remove unused namespace * Changed schema structure and fixed the customCleanup * Added generic field * Changed input type for Nutrition fields to text * Update .drone.yml * Update plugins/schemaorg/jobposting/forms/schemaorg.xml Co-authored-by: Brian Teeman * Update plugins/schemaorg/jobposting/forms/schemaorg.xml Co-authored-by: Brian Teeman * Update plugins/schemaorg/jobposting/jobposting.xml Co-authored-by: Brian Teeman * Update plugins/schemaorg/jobposting/jobposting.xml Co-authored-by: Brian Teeman * Update plugins/system/schemaorg/services/provider.php Co-authored-by: Brian Teeman * Update plugins/system/schemaorg/services/provider.php Co-authored-by: Brian Teeman * Update plugins/system/schemaorg/src/Extension/Schemaorg.php Co-authored-by: Brian Teeman * Update plugins/system/schemaorg/src/Extension/Schemaorg.php Co-authored-by: Brian Teeman * Update plugins/system/schemaorg/src/Extension/Schemaorg.php Co-authored-by: Brian Teeman * Update plugins/system/schemaorg/src/Extension/Schemaorg.php Co-authored-by: Brian Teeman * Update plugins/system/schemaorg/src/Extension/Schemaorg.php Co-authored-by: Brian Teeman * Update plugins/system/schemaorg/src/Extension/Schemaorg.php Co-authored-by: Brian Teeman * Update plugins/system/schemaorg/src/Extension/Schemaorg.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/recipe/src/Extension/Recipe.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/recipe/src/Extension/Recipe.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/recipe/services/provider.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/person/src/Extension/Person.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/recipe/src/Extension/Recipe.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/book/src/Extension/Book.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/person/services/provider.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/person/src/Extension/Person.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/person/src/Extension/Person.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/jobposting/services/provider.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/jobposting/services/provider.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/person/services/provider.php Co-authored-by: Brian Teeman * Update administrator/language/en-GB/plg_schemaorg_event.sys.ini Co-authored-by: Brian Teeman * Update plugins/schemaorg/person/src/Extension/Person.php Co-authored-by: Brian Teeman * Update administrator/components/com_contact/src/Extension/ContactComponent.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/person/src/Extension/Person.php Co-authored-by: Brian Teeman * Update administrator/components/com_content/src/Extension/ContentComponent.php Co-authored-by: Brian Teeman * Update administrator/language/en-GB/plg_schemaorg_blogposting.ini Co-authored-by: Brian Teeman * Update plugins/schemaorg/recipe/services/provider.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/recipe/src/Extension/Recipe.php Co-authored-by: Brian Teeman * Update administrator/language/en-GB/plg_schemaorg_blogposting.ini Co-authored-by: Brian Teeman * Update plugins/schemaorg/organization/services/provider.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/organization/organization.xml Co-authored-by: Brian Teeman * Update plugins/schemaorg/organization/services/provider.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/organization/src/Extension/Organization.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/organization/src/Extension/Organization.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/organization/src/Extension/Organization.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/person/person.xml Co-authored-by: Brian Teeman * Update plugins/schemaorg/organization/src/Extension/Organization.php Co-authored-by: Brian Teeman * Update plugins/system/schemaorg/src/Extension/Schemaorg.php Co-authored-by: Brian Teeman * Update plugins/schemaorg/person/person.xml Co-authored-by: Brian Teeman * Update plugins/schemaorg/recipe/recipe.xml Co-authored-by: Brian Teeman * Update plugins/schemaorg/recipe/recipe.xml Co-authored-by: Brian Teeman * Update plugins/schemaorg/recipe/src/Extension/Recipe.php Co-authored-by: Brian Teeman * Update plugins/system/schemaorg/schemaorg.xml Co-authored-by: Brian Teeman * Update plugins/system/schemaorg/schemaorg.xml Co-authored-by: Brian Teeman * Update libraries/src/Form/Field/SchemaorgComponentSectionsField.php Co-authored-by: Brian Teeman * Update libraries/src/Form/Field/SchemaorgComponentSectionsField.php Co-authored-by: Brian Teeman * Update libraries/src/Form/Field/SchemaorgComponentSectionsField.php Co-authored-by: Brian Teeman * Update libraries/src/Schemaorg/SchemaorgPluginTrait.php Co-authored-by: Brian Teeman * Update administrator/language/en-GB/plg_schemaorg_blogposting.ini Co-authored-by: Brian Teeman * Fix base.sql duplicate system plugins * Add back schemaorg plugins * Cleanup and com_content schema fallback integration * Add contact fallback schema * Add contact featured bc schema * Apply suggestions from @brianteeman Co-authored-by: Brian Teeman * Rename update files * Fix wrong DB call * Add check for existing schemas * Apply suggestions from code review Co-authored-by: Richard Fath Co-authored-by: Brian Teeman * CS * Apply suggestions from code review Co-authored-by: Brian Teeman * Apply suggestions from code review Co-authored-by: Brian Teeman --------- Co-authored-by: Benjamin Trenkle Co-authored-by: Olivier Buisard Co-authored-by: anuragteapot Co-authored-by: Benjamin Trenkle Co-authored-by: Richard Fath Co-authored-by: Timo Feuerstein Co-authored-by: Brian Teeman Co-authored-by: Richard Fath Co-authored-by: Harald Leithner --- .../blogposting/src/Extension/Blogposting.php | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100755 plugins/schemaorg/blogposting/src/Extension/Blogposting.php 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']); + } +} From 0d8c69443d15355ff5656b03550e53d9af0428a1 Mon Sep 17 00:00:00 2001 From: Harald Leithner Date: Tue, 25 Jul 2023 16:08:43 +0200 Subject: [PATCH 070/127] Joomla! 5.0.0 Alpha 3 --- plugins/schemaorg/blogposting/src/Extension/Blogposting.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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'; From 9759452b75ace1ea9f15e4efecefffdb26c48963 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Tue, 25 Jul 2023 17:42:50 +0100 Subject: [PATCH 071/127] [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 +--- 1 file changed, 1 insertion(+), 3 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; From 2b6a917bd0f8151398054288a251e43a6d57b7be Mon Sep 17 00:00:00 2001 From: Harald Leithner Date: Tue, 1 Aug 2023 20:55:10 +0200 Subject: [PATCH 072/127] [5.0] Move the compatibility plugin from system to behaviour folder (#41276) * Move the compatibility plugin from system to behaviour folder This allows system plugins using the JPlugin class to still work with joomla 5.0 compatibility enabled * Fix Language string * Fix SQL update scripts for compat plugin --- .../plg_system_compat/es5.asset.json | 1091 ----------------- 1 file changed, 1091 deletions(-) delete mode 100644 build/media_source/plg_system_compat/es5.asset.json diff --git a/build/media_source/plg_system_compat/es5.asset.json b/build/media_source/plg_system_compat/es5.asset.json deleted file mode 100644 index 12c1c780709c2..0000000000000 --- a/build/media_source/plg_system_compat/es5.asset.json +++ /dev/null @@ -1,1091 +0,0 @@ -{ - "$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 - } - } - ] -} From 989912eb5d448fcf9216501d8a09ab69a67962ed Mon Sep 17 00:00:00 2001 From: Benjamin Trenkle Date: Sat, 5 Aug 2023 18:30:38 +0200 Subject: [PATCH 073/127] [5.0] schema.org cleanup (#41260) * Add json cleanup * CS fix * Fix deprecation and file name * Fix deprecations * Apply suggestions from code review Co-authored-by: heelc29 <66922325+heelc29@users.noreply.github.com> Co-authored-by: Brian Teeman * Update libraries/src/Schemaorg/SchemaorgPrepareDurationTrait.php * Update libraries/src/Schemaorg/SchemaorgPrepareDurationTrait.php * Apply suggestions from code review Co-authored-by: heelc29 <66922325+heelc29@users.noreply.github.com> * Fix namespace * Activate cache by default --------- Co-authored-by: heelc29 <66922325+heelc29@users.noreply.github.com> Co-authored-by: Brian Teeman --- .../blogposting/src/Extension/Blogposting.php | 57 ------------------- 1 file changed, 57 deletions(-) delete mode 100755 plugins/schemaorg/blogposting/src/Extension/Blogposting.php diff --git a/plugins/schemaorg/blogposting/src/Extension/Blogposting.php b/plugins/schemaorg/blogposting/src/Extension/Blogposting.php deleted file mode 100755 index c55458f76be15..0000000000000 --- a/plugins/schemaorg/blogposting/src/Extension/Blogposting.php +++ /dev/null @@ -1,57 +0,0 @@ - - * @license GNU General Public License version 2 or later; see LICENSE.txt - */ - -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 5.0.0 - */ -final class Blogposting extends CMSPlugin implements SubscriberInterface -{ - use SchemaorgPluginTrait; - - /** - * Load the language file on instantiation. - * - * @var boolean - * @since 5.0.0 - */ - protected $autoloadLanguage = true; - - /** - * The name of the schema form - * - * @var string - * @since 5.0.0 - */ - 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']); - } -} From e870187c7b252609cd42237979d3fd90677787e2 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Mon, 14 Aug 2023 16:10:48 +0100 Subject: [PATCH 074/127] Remove "_title" suffix from pre-built joomla tour aliases Use "alias"_title.ini and "alias"_steps.ini as the 2 language files Make sure extension .sys.ini files are loaded for the module's benefit for grouping tours --- .../com_guidedtours/src/Model/StepModel.php | 4 +- .../com_guidedtours/src/Model/StepsModel.php | 4 +- .../com_guidedtours/src/Model/TourModel.php | 20 +- .../com_guidedtours/src/Model/ToursModel.php | 13 +- .../language/en-GB/com_guidedtours.sys.ini | 367 +----------------- ...com_guidedtours_joomla_articles_steps.ini} | 0 .../com_guidedtours_joomla_articles_title.ini | 2 +- .../com_guidedtours_joomla_banners_steps.ini | 34 ++ .../com_guidedtours_joomla_banners_title.ini | 7 + ...om_guidedtours_joomla_categories_steps.ini | 40 ++ ...om_guidedtours_joomla_categories_title.ini | 7 + .../com_guidedtours_joomla_contacts_steps.ini | 40 ++ .../com_guidedtours_joomla_contacts_title.ini | 7 + ...m_guidedtours_joomla_guidedtours_steps.ini | 25 ++ ...m_guidedtours_joomla_guidedtours_title.ini | 7 + ...idedtours_joomla_guidedtoursteps_steps.ini | 34 ++ ...idedtours_joomla_guidedtoursteps_title.ini | 7 + .../com_guidedtours_joomla_menus_steps.ini | 22 ++ .../com_guidedtours_joomla_menus_title.ini | 7 + ...com_guidedtours_joomla_newsfeeds_steps.ini | 40 ++ ...com_guidedtours_joomla_newsfeeds_title.ini | 7 + ...m_guidedtours_joomla_smartsearch_steps.ini | 25 ++ ...m_guidedtours_joomla_smartsearch_title.ini | 7 + .../com_guidedtours_joomla_tags_steps.ini | 38 ++ .../com_guidedtours_joomla_tags_title.ini | 7 + .../com_guidedtours_joomla_users_steps.ini | 37 ++ .../com_guidedtours_joomla_users_title.ini | 7 + .../modules/mod_guidedtours/tmpl/default.php | 11 +- 28 files changed, 447 insertions(+), 379 deletions(-) rename administrator/language/en-GB/{com_guidedtours_joomla_articles_title.steps.ini => com_guidedtours_joomla_articles_steps.ini} (100%) create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_banners_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_banners_title.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_categories_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_categories_title.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_contacts_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_contacts_title.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_guidedtours_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_guidedtours_title.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_title.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_menus_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_menus_title.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_title.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_smartsearch_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_smartsearch_title.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_tags_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_tags_title.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_users_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours_joomla_users_title.ini diff --git a/administrator/components/com_guidedtours/src/Model/StepModel.php b/administrator/components/com_guidedtours/src/Model/StepModel.php index de4ad37a15ab1..f5cf272bbaf87 100644 --- a/administrator/components/com_guidedtours/src/Model/StepModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepModel.php @@ -256,8 +256,8 @@ public function getItem($pk = null) $tourLanguage = !empty($tour->language) ? $tour->language : '*'; if (!empty($tour->alias)) { - $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias), JPATH_ADMINISTRATOR); - $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . ".steps", JPATH_ADMINISTRATOR); + $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . "_title", JPATH_ADMINISTRATOR); + $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . "_steps", JPATH_ADMINISTRATOR); } // Sets step language to parent tour language diff --git a/administrator/components/com_guidedtours/src/Model/StepsModel.php b/administrator/components/com_guidedtours/src/Model/StepsModel.php index ff9383f77e792..2cfc781b4ae05 100644 --- a/administrator/components/com_guidedtours/src/Model/StepsModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepsModel.php @@ -244,8 +244,8 @@ public function getItems() $tour = $tourModel->getItem($tourId); if (!empty($tour->alias)) { - $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias), JPATH_ADMINISTRATOR); - $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . ".steps", JPATH_ADMINISTRATOR); + $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . "_title", JPATH_ADMINISTRATOR); + $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . "_steps", JPATH_ADMINISTRATOR); } $tourLanguageLoaded = true; } diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index de4de871d6e4c..c172a7cd18d8a 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -86,6 +86,11 @@ public function save($data) $uri = Uri::getInstance(); $host = $uri->toString(['host']); $aliasTitle = $host . " " . str_replace('COM_GUIDEDTOURS_TOUR_', '', $data['title']); + // Remove the last _TITLE part + if (str_ends_with($aliasTitle, '_TITLE')) { + $pos = strrpos($aliasTitle, "_TITLE"); + $aliasTitle = substr($aliasTitle, 0, $pos); + } if ($app->get('unicodeslugs') == 1) { $data['alias'] = OutputFilter::stringUrlUnicodeSlug($aliasTitle); } else { @@ -239,8 +244,8 @@ public function getItem($pk = null) $result = parent::getItem($pk); if (!empty($result->alias)) { - $lang->load('com_guidedtours_' . str_replace('-', '_', $result->alias), JPATH_ADMINISTRATOR); - $lang->load('com_guidedtours_' . str_replace('-', '_', $result->alias) . ".steps", JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours_' . str_replace('-', '_', $result->alias) . "_title", JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours_' . str_replace('-', '_', $result->alias) . "_steps", JPATH_ADMINISTRATOR); } if (!empty($result->id)) { @@ -253,6 +258,11 @@ public function getItem($pk = null) $uri = Uri::getInstance(); $host = $uri->toString(['host']); $aliasTitle = $host . " " . str_replace('COM_GUIDEDTOURS_TOUR_', '', $result->title); + // Remove the last _TITLE part + if (str_ends_with($aliasTitle, '_TITLE')) { + $pos = strrpos($aliasTitle, "_TITLE"); + $aliasTitle = substr($aliasTitle, 0, $pos); + } if ($app->get('unicodeslugs') == 1) { $result->alias = OutputFilter::stringUrlUnicodeSlug($aliasTitle); } else { @@ -301,7 +311,13 @@ public function getItemByAlias($alias = '') $app = Factory::getApplication(); $uri = Uri::getInstance(); $host = $uri->toString(['host']); + $aliasTitle = $host . " " . str_replace('COM_GUIDEDTOURS_TOUR_', '', $result->title); + // Remove the last _TITLE part + if (str_ends_with($result->title, '_TITLE')) { + $pos = strrpos($aliasTitle, "_TITLE"); + $aliasTitle = substr($aliasTitle, 0, $pos); + } if ($app->get('unicodeslugs') == 1) { $result->alias = OutputFilter::stringUrlUnicodeSlug($aliasTitle); } else { diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index a9757dcf87100..a1afc25fda49f 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -254,13 +254,21 @@ public function getItems() foreach ($items as $item) { if (!empty($item->alias)) { - $lang->load('com_guidedtours_' . str_replace('-', '_', $item->alias), JPATH_ADMINISTRATOR); - } elseif ($item->id < 12 && str_starts_with($item->title, 'COM_GUIDEDTOURS_TOUR_')) { + $lang->load('com_guidedtours_' . str_replace('-', '_', $item->alias) . "_title", JPATH_ADMINISTRATOR); + } elseif ($item->id < 12 && str_starts_with($item->title, 'COM_GUIDEDTOURS_TOUR_') && str_ends_with($item->title, '_TITLE')) { // We have an orphan tour with no alias, so we set it now for official Joomla tours $tourItem = $this->getTable('Tour'); $tourItem->load($item->id); $app = Factory::getApplication(); $aliasTitle = 'joomla_ ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $tourItem->title); + + // Remove the last _TITLE part + $pos = strrpos($aliasTitle, "_TITLE"); + if($pos !== false) + { + $aliasTitle = substr($aliasTitle, 0, $pos); + } + if ($app->get('unicodeslugs') == 1) { $tourItem->alias = OutputFilter::stringUrlUnicodeSlug($aliasTitle); } else { @@ -268,6 +276,7 @@ public function getItems() } $tourItem->store(); $item->alias = $tourItem->alias; + $lang->load('com_guidedtours_' . str_replace('-', '_', $item->alias) . "_title", JPATH_ADMINISTRATOR); } $item->title = Text::_($item->title); $item->description = Text::_($item->description); diff --git a/administrator/language/en-GB/com_guidedtours.sys.ini b/administrator/language/en-GB/com_guidedtours.sys.ini index 8a8478b88b5d0..620eeaa403f8d 100644 --- a/administrator/language/en-GB/com_guidedtours.sys.ini +++ b/administrator/language/en-GB/com_guidedtours.sys.ini @@ -1,4 +1,5 @@ ; Joomla! Project +; 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 @@ -7,369 +8,3 @@ COM_GUIDEDTOURS="Guided Tours" COM_GUIDEDTOURS_TOURS_VIEW_DEFAULT_TITLE="List All Guided Tours" COM_GUIDEDTOURS_TOURS_VIEW_DEFAULT_DESC="Shows a list of all guided tours." COM_GUIDEDTOURS_XML_DESCRIPTION="Component for managing Guided Tours functionality." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE="How to create a guided tour?" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION="This tour will show you how you can create a guided tour for the backend." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_NEW_DESCRIPTION="Select 'New' to create a new tour." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_TITLE_TITLE="Add a title for the tour" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_TITLE_DESCRIPTION="Enter a required title for the tour." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONTENT_TITLE="Add content" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONTENT_DESCRIPTION="Enter content describing the tour." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_COMPONENT_TITLE="Select a component" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_COMPONENT_DESCRIPTION="Select the extension(s) where you want to show your tour in priority in the list of possible tours to run. For instance, If you are creating a tour for the 'Users' extension, then select 'Users'. Select 'All' for the tour to appear on every page." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_URL_TITLE="Add a URL" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_URL_DESCRIPTION="Add the relative URL of the page where the tour must start. For instance, enter administrator/index.php?option=com_users&view=users to start the tour in the Users page." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_SAVECLOSE_DESCRIPTION="Save and close the tour." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a guided tour. You now have to create steps for the tour." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE="How to add steps to a guided tour?" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION="This tour will show you how you can create a step for a guided tour." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_COUNTER_TITLE="Select the step counter number" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_COUNTER_DESCRIPTION="Select the number to add a step. The number represents the number of steps created for the tour so far." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_NEW_DESCRIPTION="Select 'New' to create a new step." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TITLE_TITLE="Add a title for the step" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TITLE_DESCRIPTION="Enter a required title for the step. This is usually an action a user must execute." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_DESCRIPTION_TITLE="Add step explanation" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_DESCRIPTION_DESCRIPTION="The content should give the user an explanation about the step." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_STATUS_DESCRIPTION="Select the published status of the step." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_POSITION_TITLE="Select the position" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_POSITION_DESCRIPTION="This is the position of the popup relative to the element you target on the page. 'Centered' is used when there is no specific target." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TARGET_TITLE="Enter the target element" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TARGET_DESCRIPTION="This is the element on the page this step targets. It uses the syntax used by CSS to target an element.
For instance, #jform_title will target the element with id 'jform_title'" - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TYPE_TITLE="Select the type" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TYPE_DESCRIPTION="This is the kind of step you want to create. 'Next' to allow the tour to continue without interaction, 'Redirect' to move to another page, 'Interactive' to request user input." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_SAVECLOSE_DESCRIPTION="Save and close the step." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a step for a guided tour." - -COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles?" -COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION="This tour will show you how you can create an article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_DESCRIPTION="Select 'New' to create a new article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_TITLE="Add a title for the article" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_DESCRIPTION="Enter a required title for the article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_DESCRIPTION="You can write the internal name of this article. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_TITLE="Add content" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_DESCRIPTION="Add the content of your article in the editor." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_DESCRIPTION="Select the published status of the article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_TITLE="Select a category" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_DESCRIPTION="Select the category for this article. You can also enter a new category by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_TITLE="Toggle featured" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_DESCRIPTION="Select 'Featured' to feature your article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_TITLE="Set the access level" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_DESCRIPTION="Select the access level for the article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_TITLE="Add tags" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_DESCRIPTION="Select tags for your article. You can also enter a new tag by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_TITLE="Add a note" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_DESCRIPTION="Save and close the article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_DESCRIPTION="You have created an article." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE="How to create categories?" -COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION="This tour will show you how you can create a category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NEW_DESCRIPTION="Select 'New' to create a new category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TITLE_TITLE="Add a title for the category" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TITLE_DESCRIPTION="Enter a required title for the category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ALIAS_DESCRIPTION="You can write the internal name of this category. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONTENT_TITLE="Add content" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONTENT_DESCRIPTION="Add the content of your category in the editor." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_PARENT_TITLE="Select parent category" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_PARENT_DESCRIPTION="Select or enter the parent of the category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_STATUS_DESCRIPTION="Select the published status of the category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ACCESS_TITLE="Set the access level" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ACCESS_DESCRIPTION="Select the access level for the category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TAGS_TITLE="Add tags" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TAGS_DESCRIPTION="Select tags for your category. You can also enter a new tag by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NOTE_TITLE="Add a note" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_SAVECLOSE_DESCRIPTION="Save and close the category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONGRATULATIONS_DESCRIPTION="You have created a category" - -COM_GUIDEDTOURS_TOUR_MENUS_TITLE="How to create menus?" -COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION="This tour will show you how you can create a menu." - -COM_GUIDEDTOURS_TOUR_MENUS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_MENUS_STEP_NEW_DESCRIPTION="Select 'New' to create a new menu." - -COM_GUIDEDTOURS_TOUR_MENUS_STEP_TITLE_TITLE="Add a title for the menu" -COM_GUIDEDTOURS_TOUR_MENUS_STEP_TITLE_DESCRIPTION="Enter a required title for the menu." - -COM_GUIDEDTOURS_TOUR_MENUS_STEP_UNIQUENAME_TITLE="Add a unique name" -COM_GUIDEDTOURS_TOUR_MENUS_STEP_UNIQUENAME_DESCRIPTION="Enter a required unique name for the menu." - -COM_GUIDEDTOURS_TOUR_MENUS_STEP_DESCRIPTION_TITLE="Add a description" -COM_GUIDEDTOURS_TOUR_MENUS_STEP_DESCRIPTION_DESCRIPTION="Add a description about the purpose of the menu." - -COM_GUIDEDTOURS_TOUR_MENUS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_MENUS_STEP_SAVECLOSE_DESCRIPTION="Save and close the menu." - -COM_GUIDEDTOURS_TOUR_MENUS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_MENUS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a menu." - -COM_GUIDEDTOURS_TOUR_TAGS_TITLE="How to create tags?" -COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION="This tour will show you how you can create a tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_NEW_DESCRIPTION="Select 'New' to create a new tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_TITLE_TITLE="Add a title for the tag" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_TITLE_DESCRIPTION="Enter a required title for the tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this tag. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONTENT_TITLE="Add content" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONTENT_DESCRIPTION="Add the content of your tag in the editor." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_PARENT_TITLE="Select parent tag" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_PARENT_DESCRIPTION="Select or enter the parent of the tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_STATUS_DESCRIPTION="Select the published status of the tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_ACCESS_TITLE="Set the access level" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_ACCESS_DESCRIPTION="Select the access level for the tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_NOTE_TITLE="Add a note" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_SAVECLOSE_DESCRIPTION="Save and close the tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a tag." - -COM_GUIDEDTOURS_TOUR_BANNERS_TITLE="How to create banners?" -COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION="This tour will show you how you can create a banner." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_DESCRIPTION="Select 'New' to create a new banner." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_TITLE="Add a title for the banner" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_DESCRIPTION="Enter a required title for the banner." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this banner. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_TITLE="Enter detailed information" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_DESCRIPTION="Add the details for the banner here." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_DESCRIPTION="Select the published status of the banner." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_TITLE="Select a category" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_DESCRIPTION="Select the category for this banner. You can also enter a new category by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_TITLE="Toggle pinned" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_DESCRIPTION="Select 'Pinned' to give priority to the banner over ones that are not pinned." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this banner." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_SAVECLOSE_DESCRIPTION="Save and close the banner." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a banner." - -COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE="How to create contacts?" -COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION="This tour will show you how you can create a contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_NEW_DESCRIPTION="Select 'New' to create a new contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TITLE_TITLE="Add a name" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TITLE_DESCRIPTION="Enter a required name for the contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this contact. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_DETAILS_TITLE="Enter detailed information" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_DETAILS_DESCRIPTION="Add the details for the contact here." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_STATUS_DESCRIPTION="Select the published status of the contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CATEGORY_TITLE="Select a category" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CATEGORY_DESCRIPTION="Select the category for this contact. You can also enter a new category by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_FEATURED_TITLE="Toggle featured" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_FEATURED_DESCRIPTION="Select 'Featured' to feature your contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ACCESS_TITLE="Set the access level" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ACCESS_DESCRIPTION="Select the access level for the contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TAGS_TITLE="Add tags" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TAGS_DESCRIPTION="Select tags for your contact. You can also enter a new tag by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_SAVECLOSE_DESCRIPTION="Save and close the contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a contact." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE="How to enter a news feed?" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION="This tour will show you how you can enter a news feed from another site for display." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_NEW_DESCRIPTION="Select 'New' to create a new news feed." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TITLE_TITLE="Add a title" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TITLE_DESCRIPTION="Enter a required title for the news feed." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this news feed. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_LINK_TITLE="Enter the link" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_LINK_DESCRIPTION="Add the link to the news feed here." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_DESCRIPTION_TITLE="Enter a description" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_DESCRIPTION_DESCRIPTION="Add a description for news feed in the editor." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_STATUS_DESCRIPTION="Select the published status of the news feed." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CATEGORY_TITLE="Select a category" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CATEGORY_DESCRIPTION="Select the category for this news feed. You can also enter a new category by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ACCESS_TITLE="Set the access level" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ACCESS_DESCRIPTION="Select the access level for the news feed." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TAGS_TITLE="Add tags" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TAGS_DESCRIPTION="Select tags for your news feed. You can also enter a new tag by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this news feed." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_SAVECLOSE_DESCRIPTION="Save and close the news feed." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a news feed." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE="How to create smart search filters?" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION="This tour will show you how you can create a smart search filter." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_NEW_DESCRIPTION="Select 'New' to create a new smart search filter." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_TITLE_TITLE="Add a title" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_TITLE_DESCRIPTION="Enter a required title for the smart search filter." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_ALIAS_DESCRIPTION="You can write the internal name of this filter. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONTENT_TITLE="Enter content" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONTENT_DESCRIPTION="Add the content for the smart search filter here." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_STATUS_DESCRIPTION="Select the published status of the filter." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_SAVECLOSE_DESCRIPTION="Save and close the smart search filter." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONGRATULATIONS_DESCRIPTION="You have created a smart search filter." - -COM_GUIDEDTOURS_TOUR_USERS_TITLE="How to create users?" -COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION="This tour will show you how you can create a user." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_USERS_STEP_NEW_DESCRIPTION="Select 'New' to create a new user." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_NAME_TITLE="Add a name" -COM_GUIDEDTOURS_TOUR_USERS_STEP_NAME_DESCRIPTION="Enter a required name for the user." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_LOGINNAME_TITLE="Add a login name" -COM_GUIDEDTOURS_TOUR_USERS_STEP_LOGINNAME_DESCRIPTION="Enter a required login name for the user (username)." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD_TITLE="Enter a password" -COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD_DESCRIPTION="Fill in a (new) password. Although this field is not required, the user will not be able to log in when no password is set." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD2_TITLE="Confirm the password" -COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD2_DESCRIPTION="Fill in the password from the field above again, to verify it. This field is required when you filled in the new password field." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_EMAIL_TITLE="Add an email address" -COM_GUIDEDTOURS_TOUR_USERS_STEP_EMAIL_DESCRIPTION="Enter an email address for the user." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_SYSTEMEMAIL_TITLE="Toggle receive system emails" -COM_GUIDEDTOURS_TOUR_USERS_STEP_SYSTEMEMAIL_DESCRIPTION="Set to yes, if the user needs to receive system emails." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_STATUS_TITLE="Toggle status" -COM_GUIDEDTOURS_TOUR_USERS_STEP_STATUS_DESCRIPTION="Enable or block this user." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORDRESET_TITLE="Toggle password reset" -COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORDRESET_DESCRIPTION="If set to yes, the user will have to reset their password the next time they log in to the site." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_USERS_STEP_SAVECLOSE_DESCRIPTION="Save and close the user." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_USERS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a user." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_articles_title.steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_articles_steps.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours_joomla_articles_title.steps.ini rename to administrator/language/en-GB/com_guidedtours_joomla_articles_steps.ini diff --git a/administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini index 9b26afe2f6dae..dcd475831c40a 100644 --- a/administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini +++ b/administrator/language/en-GB/com_guidedtours_joomla_articles_title.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 -COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles" +COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles?" COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION="This tour will show you how you can create an article." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_banners_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_banners_steps.ini new file mode 100644 index 0000000000000..1fecdb04fca94 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_banners_steps.ini @@ -0,0 +1,34 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_DESCRIPTION="Select 'New' to create a new banner." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_TITLE="Add a title for the banner" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_DESCRIPTION="Enter a required title for the banner." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this banner. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_TITLE="Enter detailed information" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_DESCRIPTION="Add the details for the banner here." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_DESCRIPTION="Select the published status of the banner." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_TITLE="Select a category" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_DESCRIPTION="Select the category for this banner. You can also enter a new category by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_TITLE="Toggle pinned" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_DESCRIPTION="Select 'Pinned' to give priority to the banner over ones that are not pinned." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this banner." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_SAVECLOSE_DESCRIPTION="Save and close the banner." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a banner." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_banners_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_banners_title.ini new file mode 100644 index 0000000000000..83c5006cef7e6 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_banners_title.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_BANNERS_TITLE="How to create banners?" +COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION="This tour will show you how you can create a banner." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_categories_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_categories_steps.ini new file mode 100644 index 0000000000000..70b78625d1655 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_categories_steps.ini @@ -0,0 +1,40 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NEW_DESCRIPTION="Select 'New' to create a new category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TITLE_TITLE="Add a title for the category" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TITLE_DESCRIPTION="Enter a required title for the category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ALIAS_DESCRIPTION="You can write the internal name of this category. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONTENT_TITLE="Add content" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONTENT_DESCRIPTION="Add the content of your category in the editor." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_PARENT_TITLE="Select parent category" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_PARENT_DESCRIPTION="Select or enter the parent of the category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_STATUS_DESCRIPTION="Select the published status of the category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ACCESS_TITLE="Set the access level" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ACCESS_DESCRIPTION="Select the access level for the category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TAGS_TITLE="Add tags" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TAGS_DESCRIPTION="Select tags for your category. You can also enter a new tag by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NOTE_TITLE="Add a note" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_SAVECLOSE_DESCRIPTION="Save and close the category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONGRATULATIONS_DESCRIPTION="You have created a category" diff --git a/administrator/language/en-GB/com_guidedtours_joomla_categories_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_categories_title.ini new file mode 100644 index 0000000000000..999c5695cd374 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_categories_title.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE="How to create categories?" +COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION="This tour will show you how you can create a category." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_contacts_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_contacts_steps.ini new file mode 100644 index 0000000000000..65ed4f34dc1eb --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_contacts_steps.ini @@ -0,0 +1,40 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_NEW_DESCRIPTION="Select 'New' to create a new contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TITLE_TITLE="Add a name" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TITLE_DESCRIPTION="Enter a required name for the contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this contact. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_DETAILS_TITLE="Enter detailed information" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_DETAILS_DESCRIPTION="Add the details for the contact here." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_STATUS_DESCRIPTION="Select the published status of the contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CATEGORY_TITLE="Select a category" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CATEGORY_DESCRIPTION="Select the category for this contact. You can also enter a new category by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_FEATURED_TITLE="Toggle featured" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_FEATURED_DESCRIPTION="Select 'Featured' to feature your contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ACCESS_TITLE="Set the access level" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ACCESS_DESCRIPTION="Select the access level for the contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TAGS_TITLE="Add tags" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TAGS_DESCRIPTION="Select tags for your contact. You can also enter a new tag by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_SAVECLOSE_DESCRIPTION="Save and close the contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a contact." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_contacts_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_contacts_title.ini new file mode 100644 index 0000000000000..0461fc589ea57 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_contacts_title.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE="How to create contacts?" +COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION="This tour will show you how you can create a contact." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_guidedtours_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_guidedtours_steps.ini new file mode 100644 index 0000000000000..32537321a75cc --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_guidedtours_steps.ini @@ -0,0 +1,25 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_NEW_DESCRIPTION="Select 'New' to create a new tour." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_TITLE_TITLE="Add a title for the tour" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_TITLE_DESCRIPTION="Enter a required title for the tour." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONTENT_TITLE="Add content" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONTENT_DESCRIPTION="Enter content describing the tour." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_COMPONENT_TITLE="Select a component" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_COMPONENT_DESCRIPTION="Select the extension(s) where you want to show your tour in priority in the list of possible tours to run. For instance, If you are creating a tour for the 'Users' extension, then select 'Users'. Select 'All' for the tour to appear on every page." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_URL_TITLE="Add a URL" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_URL_DESCRIPTION="Add the relative URL of the page where the tour must start. For instance, enter administrator/index.php?option=com_users&view=users to start the tour in the Users page." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_SAVECLOSE_DESCRIPTION="Save and close the tour." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a guided tour. You now have to create steps for the tour." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_guidedtours_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_guidedtours_title.ini new file mode 100644 index 0000000000000..1bdb33ab33e69 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_guidedtours_title.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE="How to create a guided tour?" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION="This tour will show you how you can create a guided tour for the backend." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_steps.ini new file mode 100644 index 0000000000000..a0c76c07ca3b3 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_steps.ini @@ -0,0 +1,34 @@ +com_guidedtours_joomla_guidedtours_title.ini; 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 + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_COUNTER_TITLE="Select the step counter number" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_COUNTER_DESCRIPTION="Select the number to add a step. The number represents the number of steps created for the tour so far." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_NEW_DESCRIPTION="Select 'New' to create a new step." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TITLE_TITLE="Add a title for the step" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TITLE_DESCRIPTION="Enter a required title for the step. This is usually an action a user must execute." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_DESCRIPTION_TITLE="Add step explanation" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_DESCRIPTION_DESCRIPTION="The content should give the user an explanation about the step." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_STATUS_DESCRIPTION="Select the published status of the step." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_POSITION_TITLE="Select the position" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_POSITION_DESCRIPTION="This is the position of the popup relative to the element you target on the page. 'Centered' is used when there is no specific target." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TARGET_TITLE="Enter the target element" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TARGET_DESCRIPTION="This is the element on the page this step targets. It uses the syntax used by CSS to target an element.
For instance, #jform_title will target the element with id 'jform_title'" + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TYPE_TITLE="Select the type" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TYPE_DESCRIPTION="This is the kind of step you want to create. 'Next' to allow the tour to continue without interaction, 'Redirect' to move to another page, 'Interactive' to request user input." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_SAVECLOSE_DESCRIPTION="Save and close the step." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a step for a guided tour." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_title.ini new file mode 100644 index 0000000000000..fd8e372e4318e --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_title.ini @@ -0,0 +1,7 @@ +com_guidedtours_joomla_guidedtours_title.ini; 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 + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE="How to add steps to a guided tour?" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION="This tour will show you how you can create a step for a guided tour." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_menus_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_menus_steps.ini new file mode 100644 index 0000000000000..24df344874dc4 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_menus_steps.ini @@ -0,0 +1,22 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_MENUS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_MENUS_STEP_NEW_DESCRIPTION="Select 'New' to create a new menu." + +COM_GUIDEDTOURS_TOUR_MENUS_STEP_TITLE_TITLE="Add a title for the menu" +COM_GUIDEDTOURS_TOUR_MENUS_STEP_TITLE_DESCRIPTION="Enter a required title for the menu." + +COM_GUIDEDTOURS_TOUR_MENUS_STEP_UNIQUENAME_TITLE="Add a unique name" +COM_GUIDEDTOURS_TOUR_MENUS_STEP_UNIQUENAME_DESCRIPTION="Enter a required unique name for the menu." + +COM_GUIDEDTOURS_TOUR_MENUS_STEP_DESCRIPTION_TITLE="Add a description" +COM_GUIDEDTOURS_TOUR_MENUS_STEP_DESCRIPTION_DESCRIPTION="Add a description about the purpose of the menu." + +COM_GUIDEDTOURS_TOUR_MENUS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_MENUS_STEP_SAVECLOSE_DESCRIPTION="Save and close the menu." + +COM_GUIDEDTOURS_TOUR_MENUS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_MENUS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a menu." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_menus_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_menus_title.ini new file mode 100644 index 0000000000000..d28746bbaa3e5 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_menus_title.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_MENUS_TITLE="How to create menus?" +COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION="This tour will show you how you can create a menu." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_steps.ini new file mode 100644 index 0000000000000..554b5e52261c5 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_steps.ini @@ -0,0 +1,40 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_NEW_DESCRIPTION="Select 'New' to create a new news feed." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TITLE_TITLE="Add a title" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TITLE_DESCRIPTION="Enter a required title for the news feed." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this news feed. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_LINK_TITLE="Enter the link" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_LINK_DESCRIPTION="Add the link to the news feed here." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_DESCRIPTION_TITLE="Enter a description" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_DESCRIPTION_DESCRIPTION="Add a description for news feed in the editor." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_STATUS_DESCRIPTION="Select the published status of the news feed." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CATEGORY_TITLE="Select a category" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CATEGORY_DESCRIPTION="Select the category for this news feed. You can also enter a new category by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ACCESS_TITLE="Set the access level" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ACCESS_DESCRIPTION="Select the access level for the news feed." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TAGS_TITLE="Add tags" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TAGS_DESCRIPTION="Select tags for your news feed. You can also enter a new tag by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this news feed." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_SAVECLOSE_DESCRIPTION="Save and close the news feed." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a news feed." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_title.ini new file mode 100644 index 0000000000000..1c7c60efba44a --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_title.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE="How to enter a news feed?" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION="This tour will show you how you can enter a news feed from another site for display." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_smartsearch_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_smartsearch_steps.ini new file mode 100644 index 0000000000000..d768806b25e44 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_smartsearch_steps.ini @@ -0,0 +1,25 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_NEW_DESCRIPTION="Select 'New' to create a new smart search filter." + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_TITLE_TITLE="Add a title" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_TITLE_DESCRIPTION="Enter a required title for the smart search filter." + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_ALIAS_DESCRIPTION="You can write the internal name of this filter. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONTENT_TITLE="Enter content" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONTENT_DESCRIPTION="Add the content for the smart search filter here." + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_STATUS_DESCRIPTION="Select the published status of the filter." + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_SAVECLOSE_DESCRIPTION="Save and close the smart search filter." + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONGRATULATIONS_DESCRIPTION="You have created a smart search filter." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_smartsearch_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_smartsearch_title.ini new file mode 100644 index 0000000000000..2ef0c540691e6 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_smartsearch_title.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE="How to create smart search filters?" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION="This tour will show you how you can create a smart search filter." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_tags_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_tags_steps.ini new file mode 100644 index 0000000000000..d9f7b93949b67 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_tags_steps.ini @@ -0,0 +1,38 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_NEW_DESCRIPTION="Select 'New' to create a new tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_TITLE_TITLE="Add a title for the tag" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_TITLE_DESCRIPTION="Enter a required title for the tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this tag. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONTENT_TITLE="Add content" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONTENT_DESCRIPTION="Add the content of your tag in the editor." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_PARENT_TITLE="Select parent tag" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_PARENT_DESCRIPTION="Select or enter the parent of the tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_STATUS_DESCRIPTION="Select the published status of the tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_ACCESS_TITLE="Set the access level" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_ACCESS_DESCRIPTION="Select the access level for the tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_NOTE_TITLE="Add a note" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_SAVECLOSE_DESCRIPTION="Save and close the tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a tag." + diff --git a/administrator/language/en-GB/com_guidedtours_joomla_tags_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_tags_title.ini new file mode 100644 index 0000000000000..716b54a4390ff --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_tags_title.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_TAGS_TITLE="How to create tags?" +COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION="This tour will show you how you can create a tag." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_users_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_users_steps.ini new file mode 100644 index 0000000000000..ab971126a3556 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_users_steps.ini @@ -0,0 +1,37 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_USERS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_USERS_STEP_NEW_DESCRIPTION="Select 'New' to create a new user." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_NAME_TITLE="Add a name" +COM_GUIDEDTOURS_TOUR_USERS_STEP_NAME_DESCRIPTION="Enter a required name for the user." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_LOGINNAME_TITLE="Add a login name" +COM_GUIDEDTOURS_TOUR_USERS_STEP_LOGINNAME_DESCRIPTION="Enter a required login name for the user (username)." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD_TITLE="Enter a password" +COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD_DESCRIPTION="Fill in a (new) password. Although this field is not required, the user will not be able to log in when no password is set." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD2_TITLE="Confirm the password" +COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD2_DESCRIPTION="Fill in the password from the field above again, to verify it. This field is required when you filled in the new password field." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_EMAIL_TITLE="Add an email address" +COM_GUIDEDTOURS_TOUR_USERS_STEP_EMAIL_DESCRIPTION="Enter an email address for the user." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_SYSTEMEMAIL_TITLE="Toggle receive system emails" +COM_GUIDEDTOURS_TOUR_USERS_STEP_SYSTEMEMAIL_DESCRIPTION="Set to yes, if the user needs to receive system emails." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_STATUS_TITLE="Toggle status" +COM_GUIDEDTOURS_TOUR_USERS_STEP_STATUS_DESCRIPTION="Enable or block this user." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORDRESET_TITLE="Toggle password reset" +COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORDRESET_DESCRIPTION="If set to yes, the user will have to reset their password the next time they log in to the site." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_USERS_STEP_SAVECLOSE_DESCRIPTION="Save and close the user." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_USERS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a user." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_users_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_users_title.ini new file mode 100644 index 0000000000000..942ae7ab0b13b --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours_joomla_users_title.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_USERS_TITLE="How to create users?" +COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION="This tour will show you how you can create a user." diff --git a/administrator/modules/mod_guidedtours/tmpl/default.php b/administrator/modules/mod_guidedtours/tmpl/default.php index 35bd48ae286a9..9ac71ec8d8000 100644 --- a/administrator/modules/mod_guidedtours/tmpl/default.php +++ b/administrator/modules/mod_guidedtours/tmpl/default.php @@ -43,6 +43,7 @@ $key = $uri->getVar('option') ?? Text::_('MOD_GUIDEDTOURS_GENERIC_TOUR'); if (!isset($allTours[$key])) : + // Load extension language sys file to pick up translation of extension $lang->load("$key.sys", JPATH_ADMINISTRATOR) || $lang->load("$key.sys", JPATH_ADMINISTRATOR . '/components/' . $key); @@ -54,7 +55,8 @@ ?> @@ -80,10 +83,10 @@ $modalParams = [ 'title' => Text::_('MOD_GUIDEDTOURS_START_TOUR'), 'footer' => '', + . Text::_('JLIB_HTML_BEHAVIOR_CLOSE') . '', ]; -$modalHtml = []; +$modalHtml = []; $modalHtml[] = '
'; $modalHtml[] = '
'; foreach ($allTours as $extension => $tours) : From 3fda3b3333cc996ccad11527caa13b13385e709d Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Mon, 14 Aug 2023 16:37:49 +0100 Subject: [PATCH 075/127] fussy phpcs --- .../components/com_guidedtours/src/Model/TourModel.php | 6 +++--- .../components/com_guidedtours/src/Model/ToursModel.php | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index c172a7cd18d8a..856b391727614 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -88,7 +88,7 @@ public function save($data) $aliasTitle = $host . " " . str_replace('COM_GUIDEDTOURS_TOUR_', '', $data['title']); // Remove the last _TITLE part if (str_ends_with($aliasTitle, '_TITLE')) { - $pos = strrpos($aliasTitle, "_TITLE"); + $pos = strrpos($aliasTitle, "_TITLE"); $aliasTitle = substr($aliasTitle, 0, $pos); } if ($app->get('unicodeslugs') == 1) { @@ -260,7 +260,7 @@ public function getItem($pk = null) $aliasTitle = $host . " " . str_replace('COM_GUIDEDTOURS_TOUR_', '', $result->title); // Remove the last _TITLE part if (str_ends_with($aliasTitle, '_TITLE')) { - $pos = strrpos($aliasTitle, "_TITLE"); + $pos = strrpos($aliasTitle, "_TITLE"); $aliasTitle = substr($aliasTitle, 0, $pos); } if ($app->get('unicodeslugs') == 1) { @@ -315,7 +315,7 @@ public function getItemByAlias($alias = '') $aliasTitle = $host . " " . str_replace('COM_GUIDEDTOURS_TOUR_', '', $result->title); // Remove the last _TITLE part if (str_ends_with($result->title, '_TITLE')) { - $pos = strrpos($aliasTitle, "_TITLE"); + $pos = strrpos($aliasTitle, "_TITLE"); $aliasTitle = substr($aliasTitle, 0, $pos); } if ($app->get('unicodeslugs') == 1) { diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index a1afc25fda49f..c807f0af35678 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -264,8 +264,7 @@ public function getItems() // Remove the last _TITLE part $pos = strrpos($aliasTitle, "_TITLE"); - if($pos !== false) - { + if ($pos !== false) { $aliasTitle = substr($aliasTitle, 0, $pos); } From ec09ab619a872ec80182843a2d07ff19b1c9c64c Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Mon, 14 Aug 2023 16:43:39 +0100 Subject: [PATCH 076/127] fussy phpcs --- administrator/modules/mod_guidedtours/tmpl/default.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/modules/mod_guidedtours/tmpl/default.php b/administrator/modules/mod_guidedtours/tmpl/default.php index 9ac71ec8d8000..5b9f538cc5efc 100644 --- a/administrator/modules/mod_guidedtours/tmpl/default.php +++ b/administrator/modules/mod_guidedtours/tmpl/default.php @@ -43,7 +43,7 @@ $key = $uri->getVar('option') ?? Text::_('MOD_GUIDEDTOURS_GENERIC_TOUR'); if (!isset($allTours[$key])) : - // Load extension language sys file to pick up translation of extension + // Load extension language sys file to pick up translation of extension $lang->load("$key.sys", JPATH_ADMINISTRATOR) || $lang->load("$key.sys", JPATH_ADMINISTRATOR . '/components/' . $key); From 48b645405159f3197ca7d154310851abb97fc332 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Mon, 14 Aug 2023 18:49:09 +0100 Subject: [PATCH 077/127] Default to {alias}.ini and {alias}_steps.ini for tour language file naming convension --- .../components/com_guidedtours/src/Model/StepModel.php | 2 +- .../components/com_guidedtours/src/Model/StepsModel.php | 2 +- .../components/com_guidedtours/src/Model/TourModel.php | 2 +- .../components/com_guidedtours/src/Model/ToursModel.php | 4 ++-- ...articles_title.ini => com_guidedtours_joomla_articles.ini} | 0 ...a_banners_title.ini => com_guidedtours_joomla_banners.ini} | 0 ...gories_title.ini => com_guidedtours_joomla_categories.ini} | 0 ...contacts_title.ini => com_guidedtours_joomla_contacts.ini} | 0 ...tours_title.ini => com_guidedtours_joomla_guidedtours.ini} | 0 ...s_title.ini => com_guidedtours_joomla_guidedtoursteps.ini} | 0 ...oomla_menus_title.ini => com_guidedtours_joomla_menus.ini} | 0 ...wsfeeds_title.ini => com_guidedtours_joomla_newsfeeds.ini} | 0 ...earch_title.ini => com_guidedtours_joomla_smartsearch.ini} | 0 ..._joomla_tags_title.ini => com_guidedtours_joomla_tags.ini} | 0 ...oomla_users_title.ini => com_guidedtours_joomla_users.ini} | 0 15 files changed, 5 insertions(+), 5 deletions(-) rename administrator/language/en-GB/{com_guidedtours_joomla_articles_title.ini => com_guidedtours_joomla_articles.ini} (100%) rename administrator/language/en-GB/{com_guidedtours_joomla_banners_title.ini => com_guidedtours_joomla_banners.ini} (100%) rename administrator/language/en-GB/{com_guidedtours_joomla_categories_title.ini => com_guidedtours_joomla_categories.ini} (100%) rename administrator/language/en-GB/{com_guidedtours_joomla_contacts_title.ini => com_guidedtours_joomla_contacts.ini} (100%) rename administrator/language/en-GB/{com_guidedtours_joomla_guidedtours_title.ini => com_guidedtours_joomla_guidedtours.ini} (100%) rename administrator/language/en-GB/{com_guidedtours_joomla_guidedtoursteps_title.ini => com_guidedtours_joomla_guidedtoursteps.ini} (100%) rename administrator/language/en-GB/{com_guidedtours_joomla_menus_title.ini => com_guidedtours_joomla_menus.ini} (100%) rename administrator/language/en-GB/{com_guidedtours_joomla_newsfeeds_title.ini => com_guidedtours_joomla_newsfeeds.ini} (100%) rename administrator/language/en-GB/{com_guidedtours_joomla_smartsearch_title.ini => com_guidedtours_joomla_smartsearch.ini} (100%) rename administrator/language/en-GB/{com_guidedtours_joomla_tags_title.ini => com_guidedtours_joomla_tags.ini} (100%) rename administrator/language/en-GB/{com_guidedtours_joomla_users_title.ini => com_guidedtours_joomla_users.ini} (100%) diff --git a/administrator/components/com_guidedtours/src/Model/StepModel.php b/administrator/components/com_guidedtours/src/Model/StepModel.php index f5cf272bbaf87..db2654cdc8685 100644 --- a/administrator/components/com_guidedtours/src/Model/StepModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepModel.php @@ -256,7 +256,7 @@ public function getItem($pk = null) $tourLanguage = !empty($tour->language) ? $tour->language : '*'; if (!empty($tour->alias)) { - $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . "_title", JPATH_ADMINISTRATOR); + $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias), JPATH_ADMINISTRATOR); $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . "_steps", JPATH_ADMINISTRATOR); } diff --git a/administrator/components/com_guidedtours/src/Model/StepsModel.php b/administrator/components/com_guidedtours/src/Model/StepsModel.php index 2cfc781b4ae05..3c1089cc5467f 100644 --- a/administrator/components/com_guidedtours/src/Model/StepsModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepsModel.php @@ -244,7 +244,7 @@ public function getItems() $tour = $tourModel->getItem($tourId); if (!empty($tour->alias)) { - $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . "_title", JPATH_ADMINISTRATOR); + $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias), JPATH_ADMINISTRATOR); $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . "_steps", JPATH_ADMINISTRATOR); } $tourLanguageLoaded = true; diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index 856b391727614..9e9683732c19c 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -244,7 +244,7 @@ public function getItem($pk = null) $result = parent::getItem($pk); if (!empty($result->alias)) { - $lang->load('com_guidedtours_' . str_replace('-', '_', $result->alias) . "_title", JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours_' . str_replace('-', '_', $result->alias), JPATH_ADMINISTRATOR); $lang->load('com_guidedtours_' . str_replace('-', '_', $result->alias) . "_steps", JPATH_ADMINISTRATOR); } diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index c807f0af35678..9053ee166c5d6 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -254,7 +254,7 @@ public function getItems() foreach ($items as $item) { if (!empty($item->alias)) { - $lang->load('com_guidedtours_' . str_replace('-', '_', $item->alias) . "_title", JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours_' . str_replace('-', '_', $item->alias), JPATH_ADMINISTRATOR); } elseif ($item->id < 12 && str_starts_with($item->title, 'COM_GUIDEDTOURS_TOUR_') && str_ends_with($item->title, '_TITLE')) { // We have an orphan tour with no alias, so we set it now for official Joomla tours $tourItem = $this->getTable('Tour'); @@ -275,7 +275,7 @@ public function getItems() } $tourItem->store(); $item->alias = $tourItem->alias; - $lang->load('com_guidedtours_' . str_replace('-', '_', $item->alias) . "_title", JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours_' . str_replace('-', '_', $item->alias), JPATH_ADMINISTRATOR); } $item->title = Text::_($item->title); $item->description = Text::_($item->description); diff --git a/administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_articles.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours_joomla_articles_title.ini rename to administrator/language/en-GB/com_guidedtours_joomla_articles.ini diff --git a/administrator/language/en-GB/com_guidedtours_joomla_banners_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_banners.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours_joomla_banners_title.ini rename to administrator/language/en-GB/com_guidedtours_joomla_banners.ini diff --git a/administrator/language/en-GB/com_guidedtours_joomla_categories_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_categories.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours_joomla_categories_title.ini rename to administrator/language/en-GB/com_guidedtours_joomla_categories.ini diff --git a/administrator/language/en-GB/com_guidedtours_joomla_contacts_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_contacts.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours_joomla_contacts_title.ini rename to administrator/language/en-GB/com_guidedtours_joomla_contacts.ini diff --git a/administrator/language/en-GB/com_guidedtours_joomla_guidedtours_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_guidedtours.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours_joomla_guidedtours_title.ini rename to administrator/language/en-GB/com_guidedtours_joomla_guidedtours.ini diff --git a/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_title.ini rename to administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps.ini diff --git a/administrator/language/en-GB/com_guidedtours_joomla_menus_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_menus.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours_joomla_menus_title.ini rename to administrator/language/en-GB/com_guidedtours_joomla_menus.ini diff --git a/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_title.ini rename to administrator/language/en-GB/com_guidedtours_joomla_newsfeeds.ini diff --git a/administrator/language/en-GB/com_guidedtours_joomla_smartsearch_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_smartsearch.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours_joomla_smartsearch_title.ini rename to administrator/language/en-GB/com_guidedtours_joomla_smartsearch.ini diff --git a/administrator/language/en-GB/com_guidedtours_joomla_tags_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_tags.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours_joomla_tags_title.ini rename to administrator/language/en-GB/com_guidedtours_joomla_tags.ini diff --git a/administrator/language/en-GB/com_guidedtours_joomla_users_title.ini b/administrator/language/en-GB/com_guidedtours_joomla_users.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours_joomla_users_title.ini rename to administrator/language/en-GB/com_guidedtours_joomla_users.ini From df25424ffd232ab08478b159f78e7a60e9d7705f Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Tue, 15 Aug 2023 09:45:21 +0100 Subject: [PATCH 078/127] Remove duplicate comment Fix alias for tours during install --- .../language/en-GB/com_guidedtours.sys.ini | 1 - installation/sql/mysql/extensions.sql | 22 +++++++++---------- installation/sql/postgresql/extensions.sql | 22 +++++++++---------- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/administrator/language/en-GB/com_guidedtours.sys.ini b/administrator/language/en-GB/com_guidedtours.sys.ini index 620eeaa403f8d..cb3704daec68c 100644 --- a/administrator/language/en-GB/com_guidedtours.sys.ini +++ b/administrator/language/en-GB/com_guidedtours.sys.ini @@ -1,5 +1,4 @@ ; Joomla! Project -; 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 diff --git a/installation/sql/mysql/extensions.sql b/installation/sql/mysql/extensions.sql index 1636746e9ce5c..abc532c3d72c2 100644 --- a/installation/sql/mysql/extensions.sql +++ b/installation/sql/mysql/extensions.sql @@ -976,17 +976,17 @@ CREATE TABLE IF NOT EXISTS `#__guidedtours` ( -- INSERT INTO `#__guidedtours` (`id`, `title`, `alias`, `description`, `ordering`, `extensions`, `url`, `created`, `created_by`, `modified`, `modified_by`, `checked_out_time`, `checked_out`, `published`, `language`, `access`) VALUES -(1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE', 'joomla_guidedtours_title', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION', 1, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'joomla_guidedtourssteps_title', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'joomla_articles_title', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["*"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'joomla_categories_title', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["*"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'joomla_menus_title', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["*"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(6, 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE', 'joomla_tags_title', 'COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION', 6, '["*"]', 'administrator/index.php?option=com_tags&view=tags', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(7, 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE', 'joomla_banners_title', 'COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION', 7, '["*"]', 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE', 'joomla_contacts_title', 'COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION', 8, '["*"]', 'administrator/index.php?option=com_contact&view=contacts', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE', 'joomla_newsfeeds_title', 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION', 9, '["*"]', 'administrator/index.php?option=com_newsfeeds&view=newsfeeds', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE', 'joomla_smartsearch_title', 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION', 10, '["*"]', 'administrator/index.php?option=com_finder&view=filters', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(11, 'COM_GUIDEDTOURS_TOUR_USERS_TITLE', 'joomla_users_title', 'COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION', 11, '["*"]', 'administrator/index.php?option=com_users&view=users', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1); +(1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE', 'joomla_guidedtours', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION', 1, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'joomla_guidedtourssteps', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'joomla_articles', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["*"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'joomla_categories', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["*"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'joomla_menus', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["*"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(6, 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE', 'joomla_tags', 'COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION', 6, '["*"]', 'administrator/index.php?option=com_tags&view=tags', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(7, 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE', 'joomla_banners', 'COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION', 7, '["*"]', 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE', 'joomla_contacts', 'COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION', 8, '["*"]', 'administrator/index.php?option=com_contact&view=contacts', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE', 'joomla_newsfeeds', 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION', 9, '["*"]', 'administrator/index.php?option=com_newsfeeds&view=newsfeeds', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE', 'joomla_smartsearch', 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION', 10, '["*"]', 'administrator/index.php?option=com_finder&view=filters', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(11, 'COM_GUIDEDTOURS_TOUR_USERS_TITLE', 'joomla_users', 'COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION', 11, '["*"]', 'administrator/index.php?option=com_users&view=users', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1); -- -------------------------------------------------------- diff --git a/installation/sql/postgresql/extensions.sql b/installation/sql/postgresql/extensions.sql index 256e9b1970fd9..24a10e76bf32e 100644 --- a/installation/sql/postgresql/extensions.sql +++ b/installation/sql/postgresql/extensions.sql @@ -940,17 +940,17 @@ CREATE INDEX "#__guidedtours_idx_alias" ON "#__guidedtours" ("alias"); -- INSERT INTO "#__guidedtours" ("id", "title", "alias", "description", "ordering", "extensions", "url", "created", "created_by", "modified", "modified_by", "checked_out_time", "checked_out", "published", "language", "access") VALUES -(1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE', 'joomla_guidedtours_title', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION', 1, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'joomla_guidedtourssteps_title', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'joomla_articles_title', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["*"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'joomla_categories_title', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["*"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'joomla_menus_title', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["*"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(6, 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE', 'joomla_tags_title', 'COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION', 6, '["*"]', 'administrator/index.php?option=com_tags&view=tags', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(7, 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE', 'joomla_banners_title', 'COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION', 7, '["*"]', 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE', 'joomla_contacts_title', 'COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION', 8, '["*"]', 'administrator/index.php?option=com_contact&view=contacts', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE', 'joomla_newsfeeds_title', 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION', 9, '["*"]', 'administrator/index.php?option=com_newsfeeds&view=newsfeeds', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE', 'joomla_smartsearch_title', 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION', 10, '["*"]', 'administrator/index.php?option=com_finder&view=filters', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(11, 'COM_GUIDEDTOURS_TOUR_USERS_TITLE', 'joomla_users_title', 'COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION', 11, '["*"]', 'administrator/index.php?option=com_users&view=users', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1); +(1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE', 'joomla_guidedtours', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION', 1, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'joomla_guidedtourssteps', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'joomla_articles', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["*"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'joomla_categories', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["*"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'joomla_menus', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["*"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(6, 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE', 'joomla_tags', 'COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION', 6, '["*"]', 'administrator/index.php?option=com_tags&view=tags', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(7, 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE', 'joomla_banners', 'COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION', 7, '["*"]', 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE', 'joomla_contacts', 'COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION', 8, '["*"]', 'administrator/index.php?option=com_contact&view=contacts', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE', 'joomla_newsfeeds', 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION', 9, '["*"]', 'administrator/index.php?option=com_newsfeeds&view=newsfeeds', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE', 'joomla_smartsearch', 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION', 10, '["*"]', 'administrator/index.php?option=com_finder&view=filters', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(11, 'COM_GUIDEDTOURS_TOUR_USERS_TITLE', 'joomla_users', 'COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION', 11, '["*"]', 'administrator/index.php?option=com_users&view=users', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1); SELECT setval('#__guidedtours_id_seq', 12, false); From e528cb9a91b68a43e9f11ee503683a82382331e9 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Tue, 15 Aug 2023 10:04:28 +0100 Subject: [PATCH 079/127] alpha ordering of language file keys --- administrator/language/en-GB/com_guidedtours.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/administrator/language/en-GB/com_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.ini index 8d9912c291ede..258b9fe1b2b0e 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -52,9 +52,6 @@ COM_GUIDEDTOURS_STEP_NEW_STEP="New Step" COM_GUIDEDTOURS_STEP_POSITION_DESC="Select the position of the step popup, relative to the element it points to." COM_GUIDEDTOURS_STEP_POSITION_LABEL="Position" COM_GUIDEDTOURS_STEP_TITLE="Title" -COM_GUIDEDTOURS_TOUR_ALIAS_LABEL="Tour Identifier" -COM_GUIDEDTOURS_TOUR_ALIAS_DESC="If you are sharing your tour on any other websites then the Tour Identifier needs to be unique.
We suggest a format such as AUTHORNAME-TOURNAME, COMPANYNAME-TOURNAME, SITEDOMAIN-TOURNAME.
If no identifier is provided a value will be computed for you." -COM_GUIDEDTOURS_TOUR_ALIAS_HINT="Unique identifier e.g. tour-author-site-domain-tour-name" COM_GUIDEDTOURS_STEP_TITLE_TRANSLATION="Title (%s)" COM_GUIDEDTOURS_STEP_TARGET_DESC="The target element the step will be attached to. Options: .classname, #id, any selector following the CSS syntax (make sure it is a focusable element if the step is interactive), or leave blank for a centered step." COM_GUIDEDTOURS_STEP_TARGET_LABEL="Target" @@ -67,8 +64,12 @@ COM_GUIDEDTOURS_STEPS_EMPTYSTATE_TITLE="No steps for this tour have been created COM_GUIDEDTOURS_STEPS_EMPTYSTATE_BUTTON_ADD="Add your first step" COM_GUIDEDTOURS_STEPS_LIST="Guided Tour: %s" COM_GUIDEDTOURS_STEPS_TABLE_CAPTION="Steps" +COM_GUIDEDTOURS_STEPS_UNKNOWN_TOUR="Missing Tour Id" COM_GUIDEDTOURS_TITLE="Title" COM_GUIDEDTOURS_TITLE_TRANSLATION="Title (%s)" +COM_GUIDEDTOURS_TOUR_ALIAS_LABEL="Tour Identifier" +COM_GUIDEDTOURS_TOUR_ALIAS_DESC="If you are sharing your tour on any other websites then the Tour Identifier needs to be unique.
We suggest a format such as AUTHORNAME-TOURNAME, COMPANYNAME-TOURNAME, SITEDOMAIN-TOURNAME.
If no identifier is provided a value will be computed for you." +COM_GUIDEDTOURS_TOUR_ALIAS_HINT="Unique identifier e.g. tour-author-site-domain-tour-name" COM_GUIDEDTOURS_TOURS_DUPLICATED="%d tours duplicated." COM_GUIDEDTOURS_TOURS_DUPLICATED_1="Tour duplicated." COM_GUIDEDTOURS_TOURS_LIST="Guided Tours" @@ -82,4 +83,3 @@ COM_GUIDEDTOURS_TYPE_REDIRECT_URL_LABEL="Relative URL" COM_GUIDEDTOURS_URL_LABEL="Relative 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_STEPS_UNKNOWN_TOUR="Missing Tour Id" From 8e63e397b4db37c26ebac771c880fc0115da7ced Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Tue, 15 Aug 2023 15:39:59 +0100 Subject: [PATCH 080/127] Fix update SQL files to populate the alias column correctly and remove redundant PHP that was doing this when the SQL was failing! --- .../sql/updates/mysql/5.0.0-2023-06-22.sql | 22 +++++++++---------- .../updates/postgresql/5.0.0-2023-06-22.sql | 22 +++++++++---------- .../com_guidedtours/src/Model/ToursModel.php | 21 ------------------ .../language/en-GB/com_guidedtours.ini | 3 +++ 4 files changed, 25 insertions(+), 43 deletions(-) diff --git a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql index 801ccf3aa13ad..6fdaa4ec26cf2 100644 --- a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql +++ b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql @@ -1,14 +1,14 @@ ALTER TABLE `#__guidedtours` ADD COLUMN `alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL AFTER `title`/** CAN FAIL **/; ALTER TABLE `#__guidedtours` ADD INDEX `idx_alias` (`alias`(191)) /** CAN FAIL **/; -UPDATE `#__guidedtours` SET `alias` = 'joomla_guidedtours' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_guidedtourssteps' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_articles' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_ARTICLES'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_categories' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CATEGORIES'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_menus' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_MENUS'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_tags' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_TAGS'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_banners' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_BANNERS'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_contacts' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CONTACTS'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_newsfeeds' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_smartsearch' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_users' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_USERS'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_guidedtours' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_guidedtourssteps' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_articles' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_categories' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_menus' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_tags' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_banners' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_contacts' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_newsfeeds' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_smartsearch' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_users' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_USERS_TITLE'; diff --git a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql index 91cc9dc7b38df..07dc2de31a87a 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql @@ -1,14 +1,14 @@ ALTER TABLE "#__guidedtours" ADD COLUMN "alias" varchar(255) DEFAULT '' NOT NULL /** CAN FAIL **/; CREATE INDEX "#__guidedtours_idx_alias" ON "#__guidedtours" ("alias") /** CAN FAIL **/; -UPDATE "#__guidedtours" SET "alias" = 'joomla_guidedtours' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_guidedtourssteps' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_articles' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_ARTICLES'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_categories' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CATEGORIES'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_menus' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_MENUS'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_tags' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_TAGS'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_banners' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_BANNERS'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_contacts' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CONTACTS'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_newsfeeds' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_smartsearch' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_users' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_USERS'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_guidedtours' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_guidedtourssteps' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_articles' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_categories' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_menus' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_tags' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_banners' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_contacts' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_newsfeeds' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_smartsearch' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_users' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_USERS_TITLE'; diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index 9053ee166c5d6..484d327298f7a 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -255,27 +255,6 @@ public function getItems() foreach ($items as $item) { if (!empty($item->alias)) { $lang->load('com_guidedtours_' . str_replace('-', '_', $item->alias), JPATH_ADMINISTRATOR); - } elseif ($item->id < 12 && str_starts_with($item->title, 'COM_GUIDEDTOURS_TOUR_') && str_ends_with($item->title, '_TITLE')) { - // We have an orphan tour with no alias, so we set it now for official Joomla tours - $tourItem = $this->getTable('Tour'); - $tourItem->load($item->id); - $app = Factory::getApplication(); - $aliasTitle = 'joomla_ ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $tourItem->title); - - // Remove the last _TITLE part - $pos = strrpos($aliasTitle, "_TITLE"); - if ($pos !== false) { - $aliasTitle = substr($aliasTitle, 0, $pos); - } - - if ($app->get('unicodeslugs') == 1) { - $tourItem->alias = OutputFilter::stringUrlUnicodeSlug($aliasTitle); - } else { - $tourItem->alias = OutputFilter::stringURLSafe($aliasTitle); - } - $tourItem->store(); - $item->alias = $tourItem->alias; - $lang->load('com_guidedtours_' . str_replace('-', '_', $item->alias), JPATH_ADMINISTRATOR); } $item->title = Text::_($item->title); $item->description = Text::_($item->description); diff --git a/administrator/language/en-GB/com_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.ini index 258b9fe1b2b0e..26e11ff1583d3 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -83,3 +83,6 @@ COM_GUIDEDTOURS_TYPE_REDIRECT_URL_LABEL="Relative URL" COM_GUIDEDTOURS_URL_LABEL="Relative 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." + +Sorry - I've been in bed for a week with Covid. First time I've had it (after the vaccinations wore off) and I have been completely out of action :( + From 044b3f5d38ed05338315364e044fb32fd3eaeaad Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Tue, 15 Aug 2023 18:01:45 +0100 Subject: [PATCH 081/127] Remove accidental comment --- administrator/language/en-GB/com_guidedtours.ini | 3 --- 1 file changed, 3 deletions(-) diff --git a/administrator/language/en-GB/com_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.ini index 26e11ff1583d3..258b9fe1b2b0e 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -83,6 +83,3 @@ COM_GUIDEDTOURS_TYPE_REDIRECT_URL_LABEL="Relative URL" COM_GUIDEDTOURS_URL_LABEL="Relative 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." - -Sorry - I've been in bed for a week with Covid. First time I've had it (after the vaccinations wore off) and I have been completely out of action :( - From 18fa0c1dec6b841813d57686f05c7bcbec2fcf42 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Tue, 15 Aug 2023 18:10:17 +0100 Subject: [PATCH 082/127] Remove accidental change and commit --- plugins/behaviour/compat/compat.xml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/plugins/behaviour/compat/compat.xml b/plugins/behaviour/compat/compat.xml index 0a2072c0885f7..ddae98fd60b08 100644 --- a/plugins/behaviour/compat/compat.xml +++ b/plugins/behaviour/compat/compat.xml @@ -45,18 +45,6 @@ - - - -
From b9a340cf4feec6122136c556de3481049ce245ce Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Tue, 15 Aug 2023 18:14:37 +0100 Subject: [PATCH 083/127] replicate model change from Joomla 4.3 --- .../com_guidedtours/src/Model/TourModel.php | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index 9e9683732c19c..a56153fcb2b4d 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -103,24 +103,7 @@ public function save($data) // make sure the alias is unique $data['alias'] = $this->generateNewAlias($data['alias'], $id); - $result = parent::save($data); - - // Create default step for new tour - if ($result && $input->getCmd('task') !== 'save2copy' && $this->getState($this->getName() . '.new')) { - $tourId = (int) $this->getState($this->getName() . '.id'); - - $table = $this->getTable('Step'); - - $table->id = 0; - $table->title = 'COM_GUIDEDTOURS_BASIC_STEP'; - $table->description = ''; - $table->tour_id = $tourId; - $table->published = 1; - - $table->store(); - } - - return $result; + return parent::save($data); } /** From 0ffa758a427fcb6c92ca55eabec682ca46006881 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Tue, 15 Aug 2023 18:19:24 +0100 Subject: [PATCH 084/127] Update administrator/language/en-GB/com_guidedtours.ini Co-authored-by: Brian Teeman --- 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 258b9fe1b2b0e..6418e7178a5f4 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -68,7 +68,7 @@ COM_GUIDEDTOURS_STEPS_UNKNOWN_TOUR="Missing Tour Id" COM_GUIDEDTOURS_TITLE="Title" COM_GUIDEDTOURS_TITLE_TRANSLATION="Title (%s)" COM_GUIDEDTOURS_TOUR_ALIAS_LABEL="Tour Identifier" -COM_GUIDEDTOURS_TOUR_ALIAS_DESC="If you are sharing your tour on any other websites then the Tour Identifier needs to be unique.
We suggest a format such as AUTHORNAME-TOURNAME, COMPANYNAME-TOURNAME, SITEDOMAIN-TOURNAME.
If no identifier is provided a value will be computed for you." +COM_GUIDEDTOURS_TOUR_ALIAS_DESC="If you are sharing your tour on any other websites then the Tour Identifier needs to be unique.
We suggest a format such as AUTHORNAME-TOURNAME, COMPANYNAME-TOURNAME, SITEDOMAIN-TOURNAME.
If no identifier is provided a value will be computed for you." COM_GUIDEDTOURS_TOUR_ALIAS_HINT="Unique identifier e.g. tour-author-site-domain-tour-name" COM_GUIDEDTOURS_TOURS_DUPLICATED="%d tours duplicated." COM_GUIDEDTOURS_TOURS_DUPLICATED_1="Tour duplicated." From d4ca2771f045e9b3c32ba83d02604bd5b1a3594a Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Tue, 15 Aug 2023 18:21:37 +0100 Subject: [PATCH 085/127] Update plugins/system/guidedtours/src/Extension/GuidedTours.php Co-authored-by: Brian Teeman --- plugins/system/guidedtours/src/Extension/GuidedTours.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/system/guidedtours/src/Extension/GuidedTours.php b/plugins/system/guidedtours/src/Extension/GuidedTours.php index 35085530c5fc8..93186f69f709f 100644 --- a/plugins/system/guidedtours/src/Extension/GuidedTours.php +++ b/plugins/system/guidedtours/src/Extension/GuidedTours.php @@ -215,7 +215,7 @@ private function getTourByAlias(string $tourAlias) } /** - * Return a tour and its steps or null if not found + * Return a tour and its steps or null if not found * * @param TourTable $item The tour to load * From 2dc17e714c6eef03112bbac641d570e6ef6163c5 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Tue, 15 Aug 2023 18:24:59 +0100 Subject: [PATCH 086/127] Update administrator/language/en-GB/com_guidedtours.ini Co-authored-by: Brian Teeman --- 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 6418e7178a5f4..0a484e02ce966 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -64,7 +64,7 @@ COM_GUIDEDTOURS_STEPS_EMPTYSTATE_TITLE="No steps for this tour have been created COM_GUIDEDTOURS_STEPS_EMPTYSTATE_BUTTON_ADD="Add your first step" COM_GUIDEDTOURS_STEPS_LIST="Guided Tour: %s" COM_GUIDEDTOURS_STEPS_TABLE_CAPTION="Steps" -COM_GUIDEDTOURS_STEPS_UNKNOWN_TOUR="Missing Tour Id" +COM_GUIDEDTOURS_STEPS_UNKNOWN_TOUR="Missing Tour ID" COM_GUIDEDTOURS_TITLE="Title" COM_GUIDEDTOURS_TITLE_TRANSLATION="Title (%s)" COM_GUIDEDTOURS_TOUR_ALIAS_LABEL="Tour Identifier" From b1efd0a552cd8356c200cddc80f834ebb2672e0f Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Tue, 15 Aug 2023 18:25:35 +0100 Subject: [PATCH 087/127] Update administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps.ini Co-authored-by: Brian Teeman --- .../language/en-GB/com_guidedtours_joomla_guidedtoursteps.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps.ini b/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps.ini index fd8e372e4318e..0e7ae9cbe7c89 100644 --- a/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps.ini +++ b/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps.ini @@ -1,4 +1,4 @@ -com_guidedtours_joomla_guidedtours_title.ini; Joomla! Project +; 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 From bea9a34d7ea22760cc0219ae6384d27f42ee7807 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Tue, 15 Aug 2023 18:25:53 +0100 Subject: [PATCH 088/127] Update administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_steps.ini Co-authored-by: Brian Teeman --- .../en-GB/com_guidedtours_joomla_guidedtoursteps_steps.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_steps.ini index a0c76c07ca3b3..70863646f7215 100644 --- a/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_steps.ini +++ b/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_steps.ini @@ -1,4 +1,4 @@ -com_guidedtours_joomla_guidedtours_title.ini; Joomla! Project +; 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 From ad3ee1f95f2f95e4bace81ba6a98550cfe147899 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 16 Aug 2023 10:31:44 +0100 Subject: [PATCH 089/127] Replace " with ' --- .../com_guidedtours/src/Model/StepModel.php | 4 ++-- .../com_guidedtours/src/Model/StepsModel.php | 4 ++-- .../com_guidedtours/src/Model/TourModel.php | 14 +++++++------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/administrator/components/com_guidedtours/src/Model/StepModel.php b/administrator/components/com_guidedtours/src/Model/StepModel.php index db2654cdc8685..12868816c749b 100644 --- a/administrator/components/com_guidedtours/src/Model/StepModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepModel.php @@ -256,8 +256,8 @@ public function getItem($pk = null) $tourLanguage = !empty($tour->language) ? $tour->language : '*'; if (!empty($tour->alias)) { - $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias), JPATH_ADMINISTRATOR); - $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . "_steps", JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours_' . str_replace('-', '_', $tour->alias), JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours_' . str_replace('-', '_', $tour->alias) . '_steps', JPATH_ADMINISTRATOR); } // Sets step language to parent tour language diff --git a/administrator/components/com_guidedtours/src/Model/StepsModel.php b/administrator/components/com_guidedtours/src/Model/StepsModel.php index 3c1089cc5467f..1e3d526799aca 100644 --- a/administrator/components/com_guidedtours/src/Model/StepsModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepsModel.php @@ -244,8 +244,8 @@ public function getItems() $tour = $tourModel->getItem($tourId); if (!empty($tour->alias)) { - $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias), JPATH_ADMINISTRATOR); - $lang->load("com_guidedtours_" . str_replace("-", "_", $tour->alias) . "_steps", JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours_' . str_replace('-', '_', $tour->alias), JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours_' . str_replace('-', '_', $tour->alias) . '_steps', JPATH_ADMINISTRATOR); } $tourLanguageLoaded = true; } diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index a56153fcb2b4d..32ad6cbfe0fa5 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -85,10 +85,10 @@ public function save($data) $app = Factory::getApplication(); $uri = Uri::getInstance(); $host = $uri->toString(['host']); - $aliasTitle = $host . " " . str_replace('COM_GUIDEDTOURS_TOUR_', '', $data['title']); + $aliasTitle = $host . ' ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $data['title']); // Remove the last _TITLE part if (str_ends_with($aliasTitle, '_TITLE')) { - $pos = strrpos($aliasTitle, "_TITLE"); + $pos = strrpos($aliasTitle, '_TITLE'); $aliasTitle = substr($aliasTitle, 0, $pos); } if ($app->get('unicodeslugs') == 1) { @@ -228,7 +228,7 @@ public function getItem($pk = null) if (!empty($result->alias)) { $lang->load('com_guidedtours_' . str_replace('-', '_', $result->alias), JPATH_ADMINISTRATOR); - $lang->load('com_guidedtours_' . str_replace('-', '_', $result->alias) . "_steps", JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours_' . str_replace('-', '_', $result->alias) . '_steps', JPATH_ADMINISTRATOR); } if (!empty($result->id)) { @@ -240,10 +240,10 @@ public function getItem($pk = null) $app = Factory::getApplication(); $uri = Uri::getInstance(); $host = $uri->toString(['host']); - $aliasTitle = $host . " " . str_replace('COM_GUIDEDTOURS_TOUR_', '', $result->title); + $aliasTitle = $host . ' ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $result->title); // Remove the last _TITLE part if (str_ends_with($aliasTitle, '_TITLE')) { - $pos = strrpos($aliasTitle, "_TITLE"); + $pos = strrpos($aliasTitle, '_TITLE'); $aliasTitle = substr($aliasTitle, 0, $pos); } if ($app->get('unicodeslugs') == 1) { @@ -295,10 +295,10 @@ public function getItemByAlias($alias = '') $uri = Uri::getInstance(); $host = $uri->toString(['host']); - $aliasTitle = $host . " " . str_replace('COM_GUIDEDTOURS_TOUR_', '', $result->title); + $aliasTitle = $host . ' ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $result->title); // Remove the last _TITLE part if (str_ends_with($result->title, '_TITLE')) { - $pos = strrpos($aliasTitle, "_TITLE"); + $pos = strrpos($aliasTitle, '_TITLE'); $aliasTitle = substr($aliasTitle, 0, $pos); } if ($app->get('unicodeslugs') == 1) { From e2dba358114b1a102a841e28bd965346497f4ec6 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 16 Aug 2023 10:54:26 +0100 Subject: [PATCH 090/127] Remove unecessary use statement --- .../components/com_guidedtours/src/Model/ToursModel.php | 1 - 1 file changed, 1 deletion(-) diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index 484d327298f7a..bc908a8451ccb 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -11,7 +11,6 @@ namespace Joomla\Component\Guidedtours\Administrator\Model; use Joomla\CMS\Factory; -use Joomla\CMS\Filter\OutputFilter; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\Model\ListModel; use Joomla\Database\ParameterType; From b2d4246c4902affa0e6c0f18096575e46631882b Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Tue, 22 Aug 2023 09:48:13 +0200 Subject: [PATCH 091/127] Correct the alias for the "guided tour steps" tour Use Alias instead of Identifier in language file to represent the unique identifier/alias --- .../components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql | 2 +- .../com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql | 2 +- administrator/language/en-GB/com_guidedtours.ini | 2 +- installation/sql/mysql/extensions.sql | 2 +- installation/sql/postgresql/extensions.sql | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql index 6fdaa4ec26cf2..5b81c3b4b63e2 100644 --- a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql +++ b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql @@ -2,7 +2,7 @@ ALTER TABLE `#__guidedtours` ADD COLUMN `alias` varchar(400) CHARACTER SET utf8m ALTER TABLE `#__guidedtours` ADD INDEX `idx_alias` (`alias`(191)) /** CAN FAIL **/; UPDATE `#__guidedtours` SET `alias` = 'joomla_guidedtours' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_guidedtourssteps' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla_guidedtoursteps' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; UPDATE `#__guidedtours` SET `alias` = 'joomla_articles' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE'; UPDATE `#__guidedtours` SET `alias` = 'joomla_categories' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE'; UPDATE `#__guidedtours` SET `alias` = 'joomla_menus' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE'; diff --git a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql index 07dc2de31a87a..b563f9b6e271c 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql @@ -2,7 +2,7 @@ ALTER TABLE "#__guidedtours" ADD COLUMN "alias" varchar(255) DEFAULT '' NOT NULL CREATE INDEX "#__guidedtours_idx_alias" ON "#__guidedtours" ("alias") /** CAN FAIL **/; UPDATE "#__guidedtours" SET "alias" = 'joomla_guidedtours' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_guidedtourssteps' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla_guidedtoursteps' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; UPDATE "#__guidedtours" SET "alias" = 'joomla_articles' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE'; UPDATE "#__guidedtours" SET "alias" = 'joomla_categories' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE'; UPDATE "#__guidedtours" SET "alias" = 'joomla_menus' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE'; diff --git a/administrator/language/en-GB/com_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.ini index 0a484e02ce966..7dd3c3257817d 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -67,7 +67,7 @@ COM_GUIDEDTOURS_STEPS_TABLE_CAPTION="Steps" COM_GUIDEDTOURS_STEPS_UNKNOWN_TOUR="Missing Tour ID" COM_GUIDEDTOURS_TITLE="Title" COM_GUIDEDTOURS_TITLE_TRANSLATION="Title (%s)" -COM_GUIDEDTOURS_TOUR_ALIAS_LABEL="Tour Identifier" +COM_GUIDEDTOURS_TOUR_ALIAS_LABEL="Tour Alias" COM_GUIDEDTOURS_TOUR_ALIAS_DESC="If you are sharing your tour on any other websites then the Tour Identifier needs to be unique.
We suggest a format such as AUTHORNAME-TOURNAME, COMPANYNAME-TOURNAME, SITEDOMAIN-TOURNAME.
If no identifier is provided a value will be computed for you." COM_GUIDEDTOURS_TOUR_ALIAS_HINT="Unique identifier e.g. tour-author-site-domain-tour-name" COM_GUIDEDTOURS_TOURS_DUPLICATED="%d tours duplicated." diff --git a/installation/sql/mysql/extensions.sql b/installation/sql/mysql/extensions.sql index abc532c3d72c2..fed8d1110dce5 100644 --- a/installation/sql/mysql/extensions.sql +++ b/installation/sql/mysql/extensions.sql @@ -977,7 +977,7 @@ CREATE TABLE IF NOT EXISTS `#__guidedtours` ( INSERT INTO `#__guidedtours` (`id`, `title`, `alias`, `description`, `ordering`, `extensions`, `url`, `created`, `created_by`, `modified`, `modified_by`, `checked_out_time`, `checked_out`, `published`, `language`, `access`) VALUES (1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE', 'joomla_guidedtours', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION', 1, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'joomla_guidedtourssteps', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'joomla_guidedtoursteps', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), (3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'joomla_articles', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["*"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), (4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'joomla_categories', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["*"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), (5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'joomla_menus', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["*"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), diff --git a/installation/sql/postgresql/extensions.sql b/installation/sql/postgresql/extensions.sql index 24a10e76bf32e..505b98eabea74 100644 --- a/installation/sql/postgresql/extensions.sql +++ b/installation/sql/postgresql/extensions.sql @@ -941,7 +941,7 @@ CREATE INDEX "#__guidedtours_idx_alias" ON "#__guidedtours" ("alias"); INSERT INTO "#__guidedtours" ("id", "title", "alias", "description", "ordering", "extensions", "url", "created", "created_by", "modified", "modified_by", "checked_out_time", "checked_out", "published", "language", "access") VALUES (1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE', 'joomla_guidedtours', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION', 1, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'joomla_guidedtourssteps', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'joomla_guidedtoursteps', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), (3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'joomla_articles', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["*"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), (4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'joomla_categories', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["*"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), (5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'joomla_menus', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["*"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), From a155d4e6146d797ceb62458e51cded7d7f268f7b Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 23 Aug 2023 22:04:41 +0100 Subject: [PATCH 092/127] Update administrator/components/com_guidedtours/src/Model/StepModel.php Co-authored-by: Olivier Buisard --- .../com_guidedtours/src/Model/StepModel.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/administrator/components/com_guidedtours/src/Model/StepModel.php b/administrator/components/com_guidedtours/src/Model/StepModel.php index 12868816c749b..f2fcad38ed675 100644 --- a/administrator/components/com_guidedtours/src/Model/StepModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepModel.php @@ -241,7 +241,20 @@ public function getItem($pk = null) $lang->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); if ($result = parent::getItem($pk)) { + $app = Factory::getApplication(); + + /** @var \Joomla\Component\Guidedtours\Administrator\Model\TourModel $tourModel */ + $tourModel = $app->bootComponent('com_guidedtours') + ->getMVCFactory()->createModel('Tour', 'Administrator', ['ignore_request' => true]); + if (!empty($result->id)) { + $tour = $tourModel->getItem($result->tour_id); + + if (!empty($tour->alias)) { + $lang->load('com_guidedtours_' . str_replace('-', '_', $tour->alias), JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours_' . str_replace('-', '_', $tour->alias) . '_steps', JPATH_ADMINISTRATOR); + } + $result->title_translation = Text::_($result->title); $result->description_translation = Text::_($result->description); } else { From 0db42e11c52b98e2267e28daf83de5c16582a88d Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Thu, 24 Aug 2023 09:10:11 +0100 Subject: [PATCH 093/127] SQL to set initial alias values need to use hyphen not underscore. Clean up step model to load language files correctly when editing an existing and creating a new step (commented to make clearer why there is a distinction) --- .../sql/updates/mysql/5.0.0-2023-06-22.sql | 22 +++++++++---------- .../updates/postgresql/5.0.0-2023-06-22.sql | 20 ++++++++--------- .../com_guidedtours/src/Model/StepModel.php | 9 +++----- installation/sql/mysql/extensions.sql | 22 +++++++++---------- installation/sql/postgresql/extensions.sql | 22 +++++++++---------- 5 files changed, 46 insertions(+), 49 deletions(-) diff --git a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql index 5b81c3b4b63e2..8522ab54f202e 100644 --- a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql +++ b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql @@ -1,14 +1,14 @@ ALTER TABLE `#__guidedtours` ADD COLUMN `alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL AFTER `title`/** CAN FAIL **/; ALTER TABLE `#__guidedtours` ADD INDEX `idx_alias` (`alias`(191)) /** CAN FAIL **/; -UPDATE `#__guidedtours` SET `alias` = 'joomla_guidedtours' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_guidedtoursteps' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_articles' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_categories' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_menus' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_tags' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_banners' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_contacts' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_newsfeeds' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_smartsearch' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla_users' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_USERS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla-guidedtours' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla-guidedtoursteps' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla-articles' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla-categories' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla-menus' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla-tags' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla-banners' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla-contacts' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla-newsfeeds' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla-smartsearch' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE'; +UPDATE `#__guidedtours` SET `alias` = 'joomla-users' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_USERS_TITLE'; diff --git a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql index b563f9b6e271c..4eca23f240386 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql @@ -1,14 +1,14 @@ ALTER TABLE "#__guidedtours" ADD COLUMN "alias" varchar(255) DEFAULT '' NOT NULL /** CAN FAIL **/; CREATE INDEX "#__guidedtours_idx_alias" ON "#__guidedtours" ("alias") /** CAN FAIL **/; -UPDATE "#__guidedtours" SET "alias" = 'joomla_guidedtours' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_guidedtoursteps' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_articles' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla-guidedtours' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla-guidedtoursteps' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla-articles' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE'; UPDATE "#__guidedtours" SET "alias" = 'joomla_categories' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_menus' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_tags' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_banners' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_contacts' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_newsfeeds' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_smartsearch' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_users' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_USERS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla-menus' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla-tags' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla-banners' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla-contacts' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla-newsfeeds' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla-smartsearch' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla-users' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_USERS_TITLE'; diff --git a/administrator/components/com_guidedtours/src/Model/StepModel.php b/administrator/components/com_guidedtours/src/Model/StepModel.php index f2fcad38ed675..403f92148a152 100644 --- a/administrator/components/com_guidedtours/src/Model/StepModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepModel.php @@ -248,6 +248,7 @@ public function getItem($pk = null) ->getMVCFactory()->createModel('Tour', 'Administrator', ['ignore_request' => true]); if (!empty($result->id)) { + // Editing an existing step $tour = $tourModel->getItem($result->tour_id); if (!empty($tour->alias)) { @@ -258,15 +259,10 @@ public function getItem($pk = null) $result->title_translation = Text::_($result->title); $result->description_translation = Text::_($result->description); } else { - $app = Factory::getApplication(); + // Creating a new step so we get the tour id from the session data $tourId = $app->getUserState('com_guidedtours.tour_id'); - /** @var \Joomla\Component\Guidedtours\Administrator\Model\TourModel $tourModel */ - $tourModel = $app->bootComponent('com_guidedtours') - ->getMVCFactory()->createModel('Tour', 'Administrator', ['ignore_request' => true]); - $tour = $tourModel->getItem($tourId); - $tourLanguage = !empty($tour->language) ? $tour->language : '*'; if (!empty($tour->alias)) { $lang->load('com_guidedtours_' . str_replace('-', '_', $tour->alias), JPATH_ADMINISTRATOR); @@ -274,6 +270,7 @@ public function getItem($pk = null) } // Sets step language to parent tour language + $tourLanguage = !empty($tour->language) ? $tour->language : '*'; $result->language = $tourLanguage; // Set the step's tour id diff --git a/installation/sql/mysql/extensions.sql b/installation/sql/mysql/extensions.sql index fed8d1110dce5..55b36ce7b8635 100644 --- a/installation/sql/mysql/extensions.sql +++ b/installation/sql/mysql/extensions.sql @@ -976,17 +976,17 @@ CREATE TABLE IF NOT EXISTS `#__guidedtours` ( -- INSERT INTO `#__guidedtours` (`id`, `title`, `alias`, `description`, `ordering`, `extensions`, `url`, `created`, `created_by`, `modified`, `modified_by`, `checked_out_time`, `checked_out`, `published`, `language`, `access`) VALUES -(1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE', 'joomla_guidedtours', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION', 1, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'joomla_guidedtoursteps', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'joomla_articles', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["*"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'joomla_categories', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["*"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'joomla_menus', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["*"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(6, 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE', 'joomla_tags', 'COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION', 6, '["*"]', 'administrator/index.php?option=com_tags&view=tags', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(7, 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE', 'joomla_banners', 'COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION', 7, '["*"]', 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE', 'joomla_contacts', 'COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION', 8, '["*"]', 'administrator/index.php?option=com_contact&view=contacts', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE', 'joomla_newsfeeds', 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION', 9, '["*"]', 'administrator/index.php?option=com_newsfeeds&view=newsfeeds', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE', 'joomla_smartsearch', 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION', 10, '["*"]', 'administrator/index.php?option=com_finder&view=filters', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(11, 'COM_GUIDEDTOURS_TOUR_USERS_TITLE', 'joomla_users', 'COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION', 11, '["*"]', 'administrator/index.php?option=com_users&view=users', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1); +(1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE', 'joomla-guidedtours', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION', 1, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'joomla-guidedtoursteps', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'joomla-articles', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["*"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'joomla-categories', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["*"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'joomla-menus', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["*"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(6, 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE', 'joomla-tags', 'COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION', 6, '["*"]', 'administrator/index.php?option=com_tags&view=tags', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(7, 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE', 'joomla-banners', 'COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION', 7, '["*"]', 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE', 'joomla-contacts', 'COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION', 8, '["*"]', 'administrator/index.php?option=com_contact&view=contacts', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE', 'joomla-newsfeeds', 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION', 9, '["*"]', 'administrator/index.php?option=com_newsfeeds&view=newsfeeds', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE', 'joomla-smartsearch', 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION', 10, '["*"]', 'administrator/index.php?option=com_finder&view=filters', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(11, 'COM_GUIDEDTOURS_TOUR_USERS_TITLE', 'joomla-users', 'COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION', 11, '["*"]', 'administrator/index.php?option=com_users&view=users', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1); -- -------------------------------------------------------- diff --git a/installation/sql/postgresql/extensions.sql b/installation/sql/postgresql/extensions.sql index 505b98eabea74..67ede43bf713f 100644 --- a/installation/sql/postgresql/extensions.sql +++ b/installation/sql/postgresql/extensions.sql @@ -940,17 +940,17 @@ CREATE INDEX "#__guidedtours_idx_alias" ON "#__guidedtours" ("alias"); -- INSERT INTO "#__guidedtours" ("id", "title", "alias", "description", "ordering", "extensions", "url", "created", "created_by", "modified", "modified_by", "checked_out_time", "checked_out", "published", "language", "access") VALUES -(1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE', 'joomla_guidedtours', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION', 1, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'joomla_guidedtoursteps', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'joomla_articles', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["*"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'joomla_categories', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["*"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'joomla_menus', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["*"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(6, 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE', 'joomla_tags', 'COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION', 6, '["*"]', 'administrator/index.php?option=com_tags&view=tags', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(7, 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE', 'joomla_banners', 'COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION', 7, '["*"]', 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE', 'joomla_contacts', 'COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION', 8, '["*"]', 'administrator/index.php?option=com_contact&view=contacts', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE', 'joomla_newsfeeds', 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION', 9, '["*"]', 'administrator/index.php?option=com_newsfeeds&view=newsfeeds', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE', 'joomla_smartsearch', 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION', 10, '["*"]', 'administrator/index.php?option=com_finder&view=filters', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(11, 'COM_GUIDEDTOURS_TOUR_USERS_TITLE', 'joomla_users', 'COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION', 11, '["*"]', 'administrator/index.php?option=com_users&view=users', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1); +(1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE', 'joomla-guidedtours', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION', 1, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'joomla-guidedtoursteps', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'joomla-articles', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["*"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'joomla-categories', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["*"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'joomla-menus', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["*"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(6, 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE', 'joomla-tags', 'COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION', 6, '["*"]', 'administrator/index.php?option=com_tags&view=tags', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(7, 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE', 'joomla-banners', 'COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION', 7, '["*"]', 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE', 'joomla-contacts', 'COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION', 8, '["*"]', 'administrator/index.php?option=com_contact&view=contacts', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE', 'joomla-newsfeeds', 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION', 9, '["*"]', 'administrator/index.php?option=com_newsfeeds&view=newsfeeds', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE', 'joomla-smartsearch', 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION', 10, '["*"]', 'administrator/index.php?option=com_finder&view=filters', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(11, 'COM_GUIDEDTOURS_TOUR_USERS_TITLE', 'joomla-users', 'COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION', 11, '["*"]', 'administrator/index.php?option=com_users&view=users', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1); SELECT setval('#__guidedtours_id_seq', 12, false); From bd9269c75b52fa703dbe82c95eecf74b8b903ee5 Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Thu, 24 Aug 2023 12:02:15 -0400 Subject: [PATCH 094/127] Removed language load for when a step is in creation --- .../components/com_guidedtours/src/Model/StepModel.php | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/administrator/components/com_guidedtours/src/Model/StepModel.php b/administrator/components/com_guidedtours/src/Model/StepModel.php index 403f92148a152..ab6516eb31583 100644 --- a/administrator/components/com_guidedtours/src/Model/StepModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepModel.php @@ -261,13 +261,7 @@ public function getItem($pk = null) } else { // Creating a new step so we get the tour id from the session data $tourId = $app->getUserState('com_guidedtours.tour_id'); - - $tour = $tourModel->getItem($tourId); - - if (!empty($tour->alias)) { - $lang->load('com_guidedtours_' . str_replace('-', '_', $tour->alias), JPATH_ADMINISTRATOR); - $lang->load('com_guidedtours_' . str_replace('-', '_', $tour->alias) . '_steps', JPATH_ADMINISTRATOR); - } + $tour = $tourModel->getItem($tourId); // Sets step language to parent tour language $tourLanguage = !empty($tour->language) ? $tour->language : '*'; From bb2580ef5fcad62da7fe1c8b0366ee7ec87badb5 Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Thu, 24 Aug 2023 13:32:57 -0400 Subject: [PATCH 095/127] Update 5.0.0-2023-06-22.sql Fixed joomla_categories --- .../com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql index 4eca23f240386..6fdc43a2d91d5 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql @@ -4,7 +4,7 @@ CREATE INDEX "#__guidedtours_idx_alias" ON "#__guidedtours" ("alias") /** CAN FA UPDATE "#__guidedtours" SET "alias" = 'joomla-guidedtours' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE'; UPDATE "#__guidedtours" SET "alias" = 'joomla-guidedtoursteps' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; UPDATE "#__guidedtours" SET "alias" = 'joomla-articles' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla_categories' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE'; +UPDATE "#__guidedtours" SET "alias" = 'joomla-categories' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE'; UPDATE "#__guidedtours" SET "alias" = 'joomla-menus' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE'; UPDATE "#__guidedtours" SET "alias" = 'joomla-tags' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE'; UPDATE "#__guidedtours" SET "alias" = 'joomla-banners' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE'; From 83d2655bc08647242210fad96bbb27aadc9e106e Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Thu, 24 Aug 2023 13:41:07 -0400 Subject: [PATCH 096/127] Update StepModel.php Missing space --- .../components/com_guidedtours/src/Model/StepModel.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_guidedtours/src/Model/StepModel.php b/administrator/components/com_guidedtours/src/Model/StepModel.php index ab6516eb31583..ec155dd5f3b25 100644 --- a/administrator/components/com_guidedtours/src/Model/StepModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepModel.php @@ -264,7 +264,7 @@ public function getItem($pk = null) $tour = $tourModel->getItem($tourId); // Sets step language to parent tour language - $tourLanguage = !empty($tour->language) ? $tour->language : '*'; + $tourLanguage = !empty($tour->language) ? $tour->language : '*'; $result->language = $tourLanguage; // Set the step's tour id From 722298ac6678ad7bdad251878721d3bc1c7effd1 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 25 Aug 2023 09:20:20 +0100 Subject: [PATCH 097/127] Update administrator/language/en-GB/com_guidedtours.ini Co-authored-by: Olivier Buisard --- 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 7dd3c3257817d..4fb08e9a3059a 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -68,7 +68,7 @@ COM_GUIDEDTOURS_STEPS_UNKNOWN_TOUR="Missing Tour ID" COM_GUIDEDTOURS_TITLE="Title" COM_GUIDEDTOURS_TITLE_TRANSLATION="Title (%s)" COM_GUIDEDTOURS_TOUR_ALIAS_LABEL="Tour Alias" -COM_GUIDEDTOURS_TOUR_ALIAS_DESC="If you are sharing your tour on any other websites then the Tour Identifier needs to be unique.
We suggest a format such as AUTHORNAME-TOURNAME, COMPANYNAME-TOURNAME, SITEDOMAIN-TOURNAME.
If no identifier is provided a value will be computed for you." +COM_GUIDEDTOURS_TOUR_ALIAS_DESC="The tour identifier (or alias) needs to be unique.
We suggest a format such as AUTHORNAME-TOURNAME, COMPANYNAME-TOURNAME, or SITEDOMAIN-TOURNAME.
If no identifier is provided a value will be computed for you." COM_GUIDEDTOURS_TOUR_ALIAS_HINT="Unique identifier e.g. tour-author-site-domain-tour-name" COM_GUIDEDTOURS_TOURS_DUPLICATED="%d tours duplicated." COM_GUIDEDTOURS_TOURS_DUPLICATED_1="Tour duplicated." From 9f9bc8b47690788dd6387cd6b1377040eed196f3 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 25 Aug 2023 09:21:10 +0100 Subject: [PATCH 098/127] Update administrator/language/en-GB/com_guidedtours.ini Co-authored-by: Olivier Buisard --- 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 4fb08e9a3059a..327491800ed58 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -67,7 +67,7 @@ COM_GUIDEDTOURS_STEPS_TABLE_CAPTION="Steps" COM_GUIDEDTOURS_STEPS_UNKNOWN_TOUR="Missing Tour ID" COM_GUIDEDTOURS_TITLE="Title" COM_GUIDEDTOURS_TITLE_TRANSLATION="Title (%s)" -COM_GUIDEDTOURS_TOUR_ALIAS_LABEL="Tour Alias" +COM_GUIDEDTOURS_TOUR_ALIAS_LABEL="Alias" COM_GUIDEDTOURS_TOUR_ALIAS_DESC="The tour identifier (or alias) needs to be unique.
We suggest a format such as AUTHORNAME-TOURNAME, COMPANYNAME-TOURNAME, or SITEDOMAIN-TOURNAME.
If no identifier is provided a value will be computed for you." COM_GUIDEDTOURS_TOUR_ALIAS_HINT="Unique identifier e.g. tour-author-site-domain-tour-name" COM_GUIDEDTOURS_TOURS_DUPLICATED="%d tours duplicated." From f113706a3a987567bcb8726744c1d0d1f7f4408f Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 25 Aug 2023 09:21:48 +0100 Subject: [PATCH 099/127] Update administrator/language/en-GB/com_guidedtours.ini Co-authored-by: Olivier Buisard --- 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 327491800ed58..110826e4f1e71 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -69,7 +69,7 @@ COM_GUIDEDTOURS_TITLE="Title" COM_GUIDEDTOURS_TITLE_TRANSLATION="Title (%s)" COM_GUIDEDTOURS_TOUR_ALIAS_LABEL="Alias" COM_GUIDEDTOURS_TOUR_ALIAS_DESC="The tour identifier (or alias) needs to be unique.
We suggest a format such as AUTHORNAME-TOURNAME, COMPANYNAME-TOURNAME, or SITEDOMAIN-TOURNAME.
If no identifier is provided a value will be computed for you." -COM_GUIDEDTOURS_TOUR_ALIAS_HINT="Unique identifier e.g. tour-author-site-domain-tour-name" +COM_GUIDEDTOURS_TOUR_ALIAS_HINT="Unique identifier e.g. author-site-domain-tour-name" COM_GUIDEDTOURS_TOURS_DUPLICATED="%d tours duplicated." COM_GUIDEDTOURS_TOURS_DUPLICATED_1="Tour duplicated." COM_GUIDEDTOURS_TOURS_LIST="Guided Tours" From 445bbc77e89cf505fb87aa4f830b6238b62ff963 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Fri, 25 Aug 2023 09:26:20 +0100 Subject: [PATCH 100/127] Skip setting of redundant variable - tourLanguage --- .../components/com_guidedtours/src/Model/StepModel.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/administrator/components/com_guidedtours/src/Model/StepModel.php b/administrator/components/com_guidedtours/src/Model/StepModel.php index ec155dd5f3b25..eeaa0928bc5d9 100644 --- a/administrator/components/com_guidedtours/src/Model/StepModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepModel.php @@ -264,8 +264,7 @@ public function getItem($pk = null) $tour = $tourModel->getItem($tourId); // Sets step language to parent tour language - $tourLanguage = !empty($tour->language) ? $tour->language : '*'; - $result->language = $tourLanguage; + $result->language = !empty($tour->language) ? $tour->language : '*'; // Set the step's tour id $result->tour_id = $tourId; From 3a8ea340936136630a4c5092d76c710d60ba2ce1 Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Fri, 25 Aug 2023 19:42:53 -0400 Subject: [PATCH 101/127] Update com_guidedtours.ini Alias -> tour identifier --- administrator/language/en-GB/com_guidedtours.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/administrator/language/en-GB/com_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.ini index 110826e4f1e71..a213988e75678 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -67,8 +67,8 @@ COM_GUIDEDTOURS_STEPS_TABLE_CAPTION="Steps" COM_GUIDEDTOURS_STEPS_UNKNOWN_TOUR="Missing Tour ID" COM_GUIDEDTOURS_TITLE="Title" COM_GUIDEDTOURS_TITLE_TRANSLATION="Title (%s)" -COM_GUIDEDTOURS_TOUR_ALIAS_LABEL="Alias" -COM_GUIDEDTOURS_TOUR_ALIAS_DESC="The tour identifier (or alias) needs to be unique.
We suggest a format such as AUTHORNAME-TOURNAME, COMPANYNAME-TOURNAME, or SITEDOMAIN-TOURNAME.
If no identifier is provided a value will be computed for you." +COM_GUIDEDTOURS_TOUR_ALIAS_LABEL="Tour Identifier" +COM_GUIDEDTOURS_TOUR_ALIAS_DESC="The tour identifier needs to be unique.
We suggest a format such as AUTHORNAME-TOURNAME, COMPANYNAME-TOURNAME, or SITEDOMAIN-TOURNAME.
If no identifier is provided a value will be computed for you." COM_GUIDEDTOURS_TOUR_ALIAS_HINT="Unique identifier e.g. author-site-domain-tour-name" COM_GUIDEDTOURS_TOURS_DUPLICATED="%d tours duplicated." COM_GUIDEDTOURS_TOURS_DUPLICATED_1="Tour duplicated." From c83fa9f8ebe728f70cbf22efcddd7586e62a0aff Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Fri, 25 Aug 2023 20:03:59 -0400 Subject: [PATCH 102/127] Update com_guidedtours.ini OMG name change for alias --- 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 a213988e75678..77b3657d9ad33 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -67,7 +67,7 @@ COM_GUIDEDTOURS_STEPS_TABLE_CAPTION="Steps" COM_GUIDEDTOURS_STEPS_UNKNOWN_TOUR="Missing Tour ID" COM_GUIDEDTOURS_TITLE="Title" COM_GUIDEDTOURS_TITLE_TRANSLATION="Title (%s)" -COM_GUIDEDTOURS_TOUR_ALIAS_LABEL="Tour Identifier" +COM_GUIDEDTOURS_TOUR_ALIAS_LABEL="Identifier" COM_GUIDEDTOURS_TOUR_ALIAS_DESC="The tour identifier needs to be unique.
We suggest a format such as AUTHORNAME-TOURNAME, COMPANYNAME-TOURNAME, or SITEDOMAIN-TOURNAME.
If no identifier is provided a value will be computed for you." COM_GUIDEDTOURS_TOUR_ALIAS_HINT="Unique identifier e.g. author-site-domain-tour-name" COM_GUIDEDTOURS_TOURS_DUPLICATED="%d tours duplicated." From 912611a5f91ebf4bca3795d596c3bf8649a5722d Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Sat, 26 Aug 2023 09:29:23 +0100 Subject: [PATCH 103/127] Ensure unique alias is created when duplicating a tour --- .../components/com_guidedtours/src/Model/TourModel.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index 32ad6cbfe0fa5..de6679456eca2 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -418,7 +418,7 @@ public function duplicate(&$pks) $table->id = 0; $table->published = 0; - $table->alias = ''; + $table->alias = $this->generateNewAlias($table->alias, 0); if (!$table->check() || !$table->store()) { throw new \Exception($table->getError()); From c1f88efb2940ee976d0519ce65795cfeda5d4dd4 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 30 Aug 2023 10:29:40 +0100 Subject: [PATCH 104/127] Rename language files to follow pattern com_guidedtours.unique_identifier.ini and com_guidedtours.unique_identifier_steps.ini Eliminate getTourByAlias and use more generic getTour method Eliminate TourModel getItemByAlias method and use more generic getItem method that can find tour based on tour ID or tour Alias (the unique identifier) Update generateNewAlias TourModel method to load matching entries using Table method --- .../com_guidedtours/src/Model/StepModel.php | 4 +- .../com_guidedtours/src/Model/StepsModel.php | 4 +- .../com_guidedtours/src/Model/TourModel.php | 110 +++++++----------- .../com_guidedtours/src/Model/ToursModel.php | 2 +- .../en-GB/com_guidedtours_joomla_articles.ini | 7 -- .../com_guidedtours_joomla_articles_steps.ini | 43 ------- .../en-GB/com_guidedtours_joomla_banners.ini | 7 -- .../com_guidedtours_joomla_banners_steps.ini | 34 ------ .../com_guidedtours_joomla_categories.ini | 7 -- ...om_guidedtours_joomla_categories_steps.ini | 40 ------- .../en-GB/com_guidedtours_joomla_contacts.ini | 7 -- .../com_guidedtours_joomla_contacts_steps.ini | 40 ------- .../com_guidedtours_joomla_guidedtours.ini | 7 -- ...m_guidedtours_joomla_guidedtours_steps.ini | 25 ---- ...com_guidedtours_joomla_guidedtoursteps.ini | 7 -- ...idedtours_joomla_guidedtoursteps_steps.ini | 34 ------ .../en-GB/com_guidedtours_joomla_menus.ini | 7 -- .../com_guidedtours_joomla_menus_steps.ini | 22 ---- .../com_guidedtours_joomla_newsfeeds.ini | 7 -- ...com_guidedtours_joomla_newsfeeds_steps.ini | 40 ------- .../com_guidedtours_joomla_smartsearch.ini | 7 -- ...m_guidedtours_joomla_smartsearch_steps.ini | 25 ---- .../en-GB/com_guidedtours_joomla_tags.ini | 7 -- .../com_guidedtours_joomla_tags_steps.ini | 38 ------ .../en-GB/com_guidedtours_joomla_users.ini | 7 -- .../com_guidedtours_joomla_users_steps.ini | 37 ------ .../guidedtours/src/Extension/GuidedTours.php | 42 +------ 27 files changed, 51 insertions(+), 566 deletions(-) delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_articles.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_articles_steps.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_banners.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_banners_steps.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_categories.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_categories_steps.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_contacts.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_contacts_steps.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_guidedtours.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_guidedtours_steps.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_steps.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_menus.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_menus_steps.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_newsfeeds.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_steps.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_smartsearch.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_smartsearch_steps.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_tags.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_tags_steps.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_users.ini delete mode 100644 administrator/language/en-GB/com_guidedtours_joomla_users_steps.ini diff --git a/administrator/components/com_guidedtours/src/Model/StepModel.php b/administrator/components/com_guidedtours/src/Model/StepModel.php index eeaa0928bc5d9..a1b0353848886 100644 --- a/administrator/components/com_guidedtours/src/Model/StepModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepModel.php @@ -252,8 +252,8 @@ public function getItem($pk = null) $tour = $tourModel->getItem($result->tour_id); if (!empty($tour->alias)) { - $lang->load('com_guidedtours_' . str_replace('-', '_', $tour->alias), JPATH_ADMINISTRATOR); - $lang->load('com_guidedtours_' . str_replace('-', '_', $tour->alias) . '_steps', JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours.' . str_replace('-', '_', $tour->alias), JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours.' . str_replace('-', '_', $tour->alias) . '_steps', JPATH_ADMINISTRATOR); } $result->title_translation = Text::_($result->title); diff --git a/administrator/components/com_guidedtours/src/Model/StepsModel.php b/administrator/components/com_guidedtours/src/Model/StepsModel.php index 1e3d526799aca..2942edb674793 100644 --- a/administrator/components/com_guidedtours/src/Model/StepsModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepsModel.php @@ -244,8 +244,8 @@ public function getItems() $tour = $tourModel->getItem($tourId); if (!empty($tour->alias)) { - $lang->load('com_guidedtours_' . str_replace('-', '_', $tour->alias), JPATH_ADMINISTRATOR); - $lang->load('com_guidedtours_' . str_replace('-', '_', $tour->alias) . '_steps', JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours.' . str_replace('-', '_', $tour->alias), JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours.' . str_replace('-', '_', $tour->alias) . '_steps', JPATH_ADMINISTRATOR); } $tourLanguageLoaded = true; } diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index de6679456eca2..4838eceef7e74 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -20,6 +20,7 @@ use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\Uri\Uri; use Joomla\Database\ParameterType; +use Joomla\Registry\Registry; use Joomla\String\StringHelper; use Joomla\Utilities\ArrayHelper; @@ -211,104 +212,77 @@ protected function loadFormData() } /** - * Method to get a single record. + * Method to get a single record by alias * - * @param integer $pk The id of the primary key. + * @param integer|string $pk The id or alias of the tour. * * @return CMSObject|boolean Object on success, false on failure. * - * @since 4.3.0 + * @since 5.0.0 */ public function getItem($pk = null) { - $lang = Factory::getLanguage(); - $lang->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); + $pk = (!empty($pk)) ? $pk : (int) $this->getState($this->getName() . '.id'); - $result = parent::getItem($pk); - - if (!empty($result->alias)) { - $lang->load('com_guidedtours_' . str_replace('-', '_', $result->alias), JPATH_ADMINISTRATOR); - $lang->load('com_guidedtours_' . str_replace('-', '_', $result->alias) . '_steps', JPATH_ADMINISTRATOR); - } - - if (!empty($result->id)) { - $result->title_translation = Text::_($result->title); - $result->description_translation = Text::_($result->description); + $table = $this->getTable(); + if (is_integer($pk)) { + $result = $table->load((int) $pk); + } else { + // Attempt to load the row by alias. + $result = $table->load([ 'alias' => $pk ]); } - if (empty($result->alias) && (int) $pk > 0) { - $app = Factory::getApplication(); - $uri = Uri::getInstance(); - $host = $uri->toString(['host']); - $aliasTitle = $host . ' ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $result->title); - // Remove the last _TITLE part - if (str_ends_with($aliasTitle, '_TITLE')) { - $pos = strrpos($aliasTitle, '_TITLE'); - $aliasTitle = substr($aliasTitle, 0, $pos); - } - if ($app->get('unicodeslugs') == 1) { - $result->alias = OutputFilter::stringUrlUnicodeSlug($aliasTitle); + // Check for a table object error. + if ($result === false) { + // If there was no underlying error, then the false means there simply was not a row in the db for this $pk. + if (!$table->getError()) { + $this->setError(Text::_('JLIB_APPLICATION_ERROR_NOT_EXIST')); } else { - $result->alias = OutputFilter::stringURLSafe($aliasTitle); + $this->setError($table->getError()); } - } - return $result; - } - - /** - * Method to get a single record by alias - * - * @param string $alias The alias of the tour. - * - * @return CMSObject|boolean Object on success, false on failure. - * - * @since 5.0.0 - */ - public function getItemByAlias($alias = '') - { - Factory::getLanguage()->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); - - $db = $this->getDatabase(); - $query = $db->getQuery(true) - ->select($db->quoteName('id')) - ->from($db->quoteName('#__guidedtours')) - ->where($db->quoteName('alias') . ' = :alias') - ->bind(':alias', $alias, ParameterType::STRING); + return false; + } - $db->setQuery($query); - $pk = (int) $db->loadResult(); + // Convert to the CMSObject before adding other data. + $properties = $table->getProperties(1); + $item = ArrayHelper::toObject($properties, CMSObject::class); - $result = parent::getItem($pk); + if (property_exists($item, 'params')) { + $registry = new Registry($item->params); + $item->params = $registry->toArray(); + } - if (!empty($result->alias)) { - Factory::getLanguage()->load('com_guidedtours_' . str_replace('-', '_', $result->alias), JPATH_ADMINISTRATOR); + if (!empty($item->alias)) { + $lang = Factory::getLanguage(); + $lang->load('com_guidedtours.' . str_replace('-', '_', $item->alias), JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours.' . str_replace('-', '_', $item->alias) . '_steps', JPATH_ADMINISTRATOR); } - if (!empty($result->id)) { - $result->title_translation = Text::_($result->title); - $result->description_translation = Text::_($result->description); + if (!empty($item->id)) { + $item->title_translation = Text::_($item->title); + $item->description_translation = Text::_($item->description); } - if (empty($result->alias) && (int) $pk > 0) { + if (empty($item->alias) && (int) $item->id > 0) { $app = Factory::getApplication(); $uri = Uri::getInstance(); $host = $uri->toString(['host']); - $aliasTitle = $host . ' ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $result->title); + $aliasTitle = $host . ' ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $item->title); // Remove the last _TITLE part - if (str_ends_with($result->title, '_TITLE')) { + if (str_ends_with($item->title, '_TITLE')) { $pos = strrpos($aliasTitle, '_TITLE'); $aliasTitle = substr($aliasTitle, 0, $pos); } if ($app->get('unicodeslugs') == 1) { - $result->alias = OutputFilter::stringUrlUnicodeSlug($aliasTitle); + $item->alias = OutputFilter::stringUrlUnicodeSlug($aliasTitle); } else { - $result->alias = OutputFilter::stringURLSafe($aliasTitle); + $item->alias = OutputFilter::stringURLSafe($aliasTitle); } } - return $result; + return $item; } /** @@ -582,11 +556,13 @@ protected function setStepsLanguage(int $id, string $language = '*'): bool */ protected function generateNewAlias($alias, $currentItemId) { + $table = $this->getTable(); $unique = false; // Alter the title & alias while (!$unique) { - $aliasItem = $this->getItemByAlias($alias); - if ($aliasItem->id > 0 && $aliasItem->id != $currentItemId) { + // Attempt to load the row by alias. + $aliasItem = $table->load([ 'alias' => $alias ]); + if ($aliasItem && $table->id > 0 && $table->id != $currentItemId) { $alias = StringHelper::increment($alias, 'dash'); } else { $unique = true; diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index bc908a8451ccb..54ccdd90a7cb6 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -253,7 +253,7 @@ public function getItems() foreach ($items as $item) { if (!empty($item->alias)) { - $lang->load('com_guidedtours_' . str_replace('-', '_', $item->alias), JPATH_ADMINISTRATOR); + $lang->load('com_guidedtours.' . str_replace('-', '_', $item->alias), JPATH_ADMINISTRATOR); } $item->title = Text::_($item->title); $item->description = Text::_($item->description); diff --git a/administrator/language/en-GB/com_guidedtours_joomla_articles.ini b/administrator/language/en-GB/com_guidedtours_joomla_articles.ini deleted file mode 100644 index dcd475831c40a..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_articles.ini +++ /dev/null @@ -1,7 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles?" -COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION="This tour will show you how you can create an article." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_articles_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_articles_steps.ini deleted file mode 100644 index 28499ff66f18c..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_articles_steps.ini +++ /dev/null @@ -1,43 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_DESCRIPTION="Select 'New' to create a new article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_TITLE="Add a title for the article" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_DESCRIPTION="Enter a required title for the article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_DESCRIPTION="You can write the internal name of this article. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_TITLE="Add content" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_DESCRIPTION="Add the content of your article in the editor." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_DESCRIPTION="Select the published status of the article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_TITLE="Select a category" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_DESCRIPTION="Select the category for this article. You can also enter a new category by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_TITLE="Toggle featured" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_DESCRIPTION="Select 'Featured' to feature your article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_TITLE="Set the access level" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_DESCRIPTION="Select the access level for the article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_TITLE="Add tags" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_DESCRIPTION="Select tags for your article. You can also enter a new tag by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_TITLE="Add a note" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_DESCRIPTION="Save and close the article." - -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_DESCRIPTION="You have created an article." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_banners.ini b/administrator/language/en-GB/com_guidedtours_joomla_banners.ini deleted file mode 100644 index 83c5006cef7e6..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_banners.ini +++ /dev/null @@ -1,7 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_BANNERS_TITLE="How to create banners?" -COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION="This tour will show you how you can create a banner." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_banners_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_banners_steps.ini deleted file mode 100644 index 1fecdb04fca94..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_banners_steps.ini +++ /dev/null @@ -1,34 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_DESCRIPTION="Select 'New' to create a new banner." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_TITLE="Add a title for the banner" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_DESCRIPTION="Enter a required title for the banner." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this banner. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_TITLE="Enter detailed information" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_DESCRIPTION="Add the details for the banner here." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_DESCRIPTION="Select the published status of the banner." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_TITLE="Select a category" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_DESCRIPTION="Select the category for this banner. You can also enter a new category by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_TITLE="Toggle pinned" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_DESCRIPTION="Select 'Pinned' to give priority to the banner over ones that are not pinned." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this banner." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_SAVECLOSE_DESCRIPTION="Save and close the banner." - -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a banner." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_categories.ini b/administrator/language/en-GB/com_guidedtours_joomla_categories.ini deleted file mode 100644 index 999c5695cd374..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_categories.ini +++ /dev/null @@ -1,7 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE="How to create categories?" -COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION="This tour will show you how you can create a category." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_categories_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_categories_steps.ini deleted file mode 100644 index 70b78625d1655..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_categories_steps.ini +++ /dev/null @@ -1,40 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NEW_DESCRIPTION="Select 'New' to create a new category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TITLE_TITLE="Add a title for the category" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TITLE_DESCRIPTION="Enter a required title for the category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ALIAS_DESCRIPTION="You can write the internal name of this category. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONTENT_TITLE="Add content" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONTENT_DESCRIPTION="Add the content of your category in the editor." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_PARENT_TITLE="Select parent category" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_PARENT_DESCRIPTION="Select or enter the parent of the category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_STATUS_DESCRIPTION="Select the published status of the category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ACCESS_TITLE="Set the access level" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ACCESS_DESCRIPTION="Select the access level for the category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TAGS_TITLE="Add tags" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TAGS_DESCRIPTION="Select tags for your category. You can also enter a new tag by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NOTE_TITLE="Add a note" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_SAVECLOSE_DESCRIPTION="Save and close the category." - -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONGRATULATIONS_DESCRIPTION="You have created a category" diff --git a/administrator/language/en-GB/com_guidedtours_joomla_contacts.ini b/administrator/language/en-GB/com_guidedtours_joomla_contacts.ini deleted file mode 100644 index 0461fc589ea57..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_contacts.ini +++ /dev/null @@ -1,7 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE="How to create contacts?" -COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION="This tour will show you how you can create a contact." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_contacts_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_contacts_steps.ini deleted file mode 100644 index 65ed4f34dc1eb..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_contacts_steps.ini +++ /dev/null @@ -1,40 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_NEW_DESCRIPTION="Select 'New' to create a new contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TITLE_TITLE="Add a name" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TITLE_DESCRIPTION="Enter a required name for the contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this contact. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_DETAILS_TITLE="Enter detailed information" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_DETAILS_DESCRIPTION="Add the details for the contact here." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_STATUS_DESCRIPTION="Select the published status of the contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CATEGORY_TITLE="Select a category" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CATEGORY_DESCRIPTION="Select the category for this contact. You can also enter a new category by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_FEATURED_TITLE="Toggle featured" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_FEATURED_DESCRIPTION="Select 'Featured' to feature your contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ACCESS_TITLE="Set the access level" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ACCESS_DESCRIPTION="Select the access level for the contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TAGS_TITLE="Add tags" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TAGS_DESCRIPTION="Select tags for your contact. You can also enter a new tag by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_SAVECLOSE_DESCRIPTION="Save and close the contact." - -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a contact." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_guidedtours.ini b/administrator/language/en-GB/com_guidedtours_joomla_guidedtours.ini deleted file mode 100644 index 1bdb33ab33e69..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_guidedtours.ini +++ /dev/null @@ -1,7 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE="How to create a guided tour?" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION="This tour will show you how you can create a guided tour for the backend." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_guidedtours_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_guidedtours_steps.ini deleted file mode 100644 index 32537321a75cc..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_guidedtours_steps.ini +++ /dev/null @@ -1,25 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_NEW_DESCRIPTION="Select 'New' to create a new tour." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_TITLE_TITLE="Add a title for the tour" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_TITLE_DESCRIPTION="Enter a required title for the tour." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONTENT_TITLE="Add content" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONTENT_DESCRIPTION="Enter content describing the tour." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_COMPONENT_TITLE="Select a component" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_COMPONENT_DESCRIPTION="Select the extension(s) where you want to show your tour in priority in the list of possible tours to run. For instance, If you are creating a tour for the 'Users' extension, then select 'Users'. Select 'All' for the tour to appear on every page." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_URL_TITLE="Add a URL" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_URL_DESCRIPTION="Add the relative URL of the page where the tour must start. For instance, enter administrator/index.php?option=com_users&view=users to start the tour in the Users page." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_SAVECLOSE_DESCRIPTION="Save and close the tour." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a guided tour. You now have to create steps for the tour." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps.ini b/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps.ini deleted file mode 100644 index 0e7ae9cbe7c89..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps.ini +++ /dev/null @@ -1,7 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE="How to add steps to a guided tour?" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION="This tour will show you how you can create a step for a guided tour." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_steps.ini deleted file mode 100644 index 70863646f7215..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_guidedtoursteps_steps.ini +++ /dev/null @@ -1,34 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_COUNTER_TITLE="Select the step counter number" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_COUNTER_DESCRIPTION="Select the number to add a step. The number represents the number of steps created for the tour so far." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_NEW_DESCRIPTION="Select 'New' to create a new step." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TITLE_TITLE="Add a title for the step" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TITLE_DESCRIPTION="Enter a required title for the step. This is usually an action a user must execute." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_DESCRIPTION_TITLE="Add step explanation" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_DESCRIPTION_DESCRIPTION="The content should give the user an explanation about the step." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_STATUS_DESCRIPTION="Select the published status of the step." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_POSITION_TITLE="Select the position" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_POSITION_DESCRIPTION="This is the position of the popup relative to the element you target on the page. 'Centered' is used when there is no specific target." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TARGET_TITLE="Enter the target element" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TARGET_DESCRIPTION="This is the element on the page this step targets. It uses the syntax used by CSS to target an element.
For instance, #jform_title will target the element with id 'jform_title'" - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TYPE_TITLE="Select the type" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TYPE_DESCRIPTION="This is the kind of step you want to create. 'Next' to allow the tour to continue without interaction, 'Redirect' to move to another page, 'Interactive' to request user input." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_SAVECLOSE_DESCRIPTION="Save and close the step." - -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a step for a guided tour." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_menus.ini b/administrator/language/en-GB/com_guidedtours_joomla_menus.ini deleted file mode 100644 index d28746bbaa3e5..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_menus.ini +++ /dev/null @@ -1,7 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_MENUS_TITLE="How to create menus?" -COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION="This tour will show you how you can create a menu." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_menus_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_menus_steps.ini deleted file mode 100644 index 24df344874dc4..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_menus_steps.ini +++ /dev/null @@ -1,22 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_MENUS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_MENUS_STEP_NEW_DESCRIPTION="Select 'New' to create a new menu." - -COM_GUIDEDTOURS_TOUR_MENUS_STEP_TITLE_TITLE="Add a title for the menu" -COM_GUIDEDTOURS_TOUR_MENUS_STEP_TITLE_DESCRIPTION="Enter a required title for the menu." - -COM_GUIDEDTOURS_TOUR_MENUS_STEP_UNIQUENAME_TITLE="Add a unique name" -COM_GUIDEDTOURS_TOUR_MENUS_STEP_UNIQUENAME_DESCRIPTION="Enter a required unique name for the menu." - -COM_GUIDEDTOURS_TOUR_MENUS_STEP_DESCRIPTION_TITLE="Add a description" -COM_GUIDEDTOURS_TOUR_MENUS_STEP_DESCRIPTION_DESCRIPTION="Add a description about the purpose of the menu." - -COM_GUIDEDTOURS_TOUR_MENUS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_MENUS_STEP_SAVECLOSE_DESCRIPTION="Save and close the menu." - -COM_GUIDEDTOURS_TOUR_MENUS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_MENUS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a menu." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds.ini b/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds.ini deleted file mode 100644 index 1c7c60efba44a..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds.ini +++ /dev/null @@ -1,7 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE="How to enter a news feed?" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION="This tour will show you how you can enter a news feed from another site for display." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_steps.ini deleted file mode 100644 index 554b5e52261c5..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_newsfeeds_steps.ini +++ /dev/null @@ -1,40 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_NEW_DESCRIPTION="Select 'New' to create a new news feed." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TITLE_TITLE="Add a title" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TITLE_DESCRIPTION="Enter a required title for the news feed." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this news feed. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_LINK_TITLE="Enter the link" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_LINK_DESCRIPTION="Add the link to the news feed here." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_DESCRIPTION_TITLE="Enter a description" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_DESCRIPTION_DESCRIPTION="Add a description for news feed in the editor." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_STATUS_DESCRIPTION="Select the published status of the news feed." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CATEGORY_TITLE="Select a category" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CATEGORY_DESCRIPTION="Select the category for this news feed. You can also enter a new category by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ACCESS_TITLE="Set the access level" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ACCESS_DESCRIPTION="Select the access level for the news feed." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TAGS_TITLE="Add tags" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TAGS_DESCRIPTION="Select tags for your news feed. You can also enter a new tag by typing the name in the field and pressing enter." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this news feed." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_SAVECLOSE_DESCRIPTION="Save and close the news feed." - -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a news feed." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_smartsearch.ini b/administrator/language/en-GB/com_guidedtours_joomla_smartsearch.ini deleted file mode 100644 index 2ef0c540691e6..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_smartsearch.ini +++ /dev/null @@ -1,7 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE="How to create smart search filters?" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION="This tour will show you how you can create a smart search filter." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_smartsearch_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_smartsearch_steps.ini deleted file mode 100644 index d768806b25e44..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_smartsearch_steps.ini +++ /dev/null @@ -1,25 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_NEW_DESCRIPTION="Select 'New' to create a new smart search filter." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_TITLE_TITLE="Add a title" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_TITLE_DESCRIPTION="Enter a required title for the smart search filter." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_ALIAS_DESCRIPTION="You can write the internal name of this filter. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONTENT_TITLE="Enter content" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONTENT_DESCRIPTION="Add the content for the smart search filter here." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_STATUS_DESCRIPTION="Select the published status of the filter." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_SAVECLOSE_DESCRIPTION="Save and close the smart search filter." - -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONGRATULATIONS_DESCRIPTION="You have created a smart search filter." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_tags.ini b/administrator/language/en-GB/com_guidedtours_joomla_tags.ini deleted file mode 100644 index 716b54a4390ff..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_tags.ini +++ /dev/null @@ -1,7 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_TAGS_TITLE="How to create tags?" -COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION="This tour will show you how you can create a tag." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_tags_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_tags_steps.ini deleted file mode 100644 index d9f7b93949b67..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_tags_steps.ini +++ /dev/null @@ -1,38 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_NEW_DESCRIPTION="Select 'New' to create a new tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_TITLE_TITLE="Add a title for the tag" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_TITLE_DESCRIPTION="Enter a required title for the tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_ALIAS_TITLE="Enter an alias" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this tag. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONTENT_TITLE="Add content" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONTENT_DESCRIPTION="Add the content of your tag in the editor." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_PARENT_TITLE="Select parent tag" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_PARENT_DESCRIPTION="Select or enter the parent of the tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_STATUS_TITLE="Select the status" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_STATUS_DESCRIPTION="Select the published status of the tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_ACCESS_TITLE="Set the access level" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_ACCESS_DESCRIPTION="Select the access level for the tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_NOTE_TITLE="Add a note" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_VERSIONNOTE_TITLE="Add a version note" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_SAVECLOSE_DESCRIPTION="Save and close the tag." - -COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a tag." - diff --git a/administrator/language/en-GB/com_guidedtours_joomla_users.ini b/administrator/language/en-GB/com_guidedtours_joomla_users.ini deleted file mode 100644 index 942ae7ab0b13b..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_users.ini +++ /dev/null @@ -1,7 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_USERS_TITLE="How to create users?" -COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION="This tour will show you how you can create a user." diff --git a/administrator/language/en-GB/com_guidedtours_joomla_users_steps.ini b/administrator/language/en-GB/com_guidedtours_joomla_users_steps.ini deleted file mode 100644 index ab971126a3556..0000000000000 --- a/administrator/language/en-GB/com_guidedtours_joomla_users_steps.ini +++ /dev/null @@ -1,37 +0,0 @@ -; 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 - -COM_GUIDEDTOURS_TOUR_USERS_STEP_NEW_TITLE="Select the 'New' button" -COM_GUIDEDTOURS_TOUR_USERS_STEP_NEW_DESCRIPTION="Select 'New' to create a new user." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_NAME_TITLE="Add a name" -COM_GUIDEDTOURS_TOUR_USERS_STEP_NAME_DESCRIPTION="Enter a required name for the user." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_LOGINNAME_TITLE="Add a login name" -COM_GUIDEDTOURS_TOUR_USERS_STEP_LOGINNAME_DESCRIPTION="Enter a required login name for the user (username)." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD_TITLE="Enter a password" -COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD_DESCRIPTION="Fill in a (new) password. Although this field is not required, the user will not be able to log in when no password is set." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD2_TITLE="Confirm the password" -COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD2_DESCRIPTION="Fill in the password from the field above again, to verify it. This field is required when you filled in the new password field." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_EMAIL_TITLE="Add an email address" -COM_GUIDEDTOURS_TOUR_USERS_STEP_EMAIL_DESCRIPTION="Enter an email address for the user." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_SYSTEMEMAIL_TITLE="Toggle receive system emails" -COM_GUIDEDTOURS_TOUR_USERS_STEP_SYSTEMEMAIL_DESCRIPTION="Set to yes, if the user needs to receive system emails." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_STATUS_TITLE="Toggle status" -COM_GUIDEDTOURS_TOUR_USERS_STEP_STATUS_DESCRIPTION="Enable or block this user." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORDRESET_TITLE="Toggle password reset" -COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORDRESET_DESCRIPTION="If set to yes, the user will have to reset their password the next time they log in to the site." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" -COM_GUIDEDTOURS_TOUR_USERS_STEP_SAVECLOSE_DESCRIPTION="Save and close the user." - -COM_GUIDEDTOURS_TOUR_USERS_STEP_CONGRATULATIONS_TITLE="Congratulations!" -COM_GUIDEDTOURS_TOUR_USERS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a user." diff --git a/plugins/system/guidedtours/src/Extension/GuidedTours.php b/plugins/system/guidedtours/src/Extension/GuidedTours.php index 93186f69f709f..a36448a27647c 100644 --- a/plugins/system/guidedtours/src/Extension/GuidedTours.php +++ b/plugins/system/guidedtours/src/Extension/GuidedTours.php @@ -108,22 +108,12 @@ public function startTour(Event $event) $tourAlias = $this->getApplication()->getInput()->getString('alias'); $tourAlias = $tourAlias !== '' ? @urldecode($tourAlias) : $tourAlias; - $activeTourId = null; - $activeTourAlias = null; $tour = null; if ($tourId > 0) { $tour = $this->getTour($tourId); - - if (!empty($tour->id)) { - $activeTourId = $tour->id; - } } elseif ($tourAlias !== '') { - $tour = $this->getTourByAlias($tourAlias); - - if (!empty($tour->id)) { - $activeTourId = $tour->id; - } + $tour = $this->getTour($tourAlias); } $event->setArgument('result', $tour ?? new \stdClass()); @@ -165,13 +155,13 @@ public function onBeforeCompileHead() /** * Get a tour and its steps or null if not found * - * @param integer $tourId The ID of the tour to load + * @param integer|string $tourId The ID or Alias of the tour to load * * @return null|object * * @since 4.3.0 */ - private function getTour(int $tourId) + private function getTour($tourId) { $app = $this->getApplication(); @@ -188,32 +178,6 @@ private function getTour(int $tourId) return $this->processTour($item); } - /** - * Get a tour and its steps or null if not found - * - * @param integer $tourId The ID of the tour to load - * - * @return null|object - * - * @since 4.3.0 - */ - private function getTourByAlias(string $tourAlias) - { - $app = $this->getApplication(); - - $factory = $app->bootComponent('com_guidedtours')->getMVCFactory(); - - $tourModel = $factory->createModel( - 'Tour', - 'Administrator', - ['ignore_request' => true] - ); - - $item = $tourModel->getItemByAlias($tourAlias); - - return $this->processTour($item); - } - /** * Return a tour and its steps or null if not found * From 0b18938dea3816848aabaaa71d79a5893c966d32 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 30 Aug 2023 15:12:48 +0100 Subject: [PATCH 105/127] Rename update file Deployment version of getItem method was incorrectly changed from 4.3 to 5.0 --- .../mysql/{5.0.0-2023-06-22.sql => 5.0.0-2023-08-29.sql} | 0 .../postgresql/{5.0.0-2023-06-22.sql => 5.0.0-2023-06-29.sql} | 0 .../components/com_guidedtours/src/Model/TourModel.php | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) rename administrator/components/com_admin/sql/updates/mysql/{5.0.0-2023-06-22.sql => 5.0.0-2023-08-29.sql} (100%) rename administrator/components/com_admin/sql/updates/postgresql/{5.0.0-2023-06-22.sql => 5.0.0-2023-06-29.sql} (100%) diff --git a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-08-29.sql similarity index 100% rename from administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-06-22.sql rename to administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-08-29.sql diff --git a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-29.sql similarity index 100% rename from administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-22.sql rename to administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-29.sql diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index 4838eceef7e74..36d3761ad6d29 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -212,13 +212,13 @@ protected function loadFormData() } /** - * Method to get a single record by alias + * Method to get a single record by id or alias * * @param integer|string $pk The id or alias of the tour. * * @return CMSObject|boolean Object on success, false on failure. * - * @since 5.0.0 + * @since 4.3.0 */ public function getItem($pk = null) { From dd893695b4c355cba96994764667b0ce5167a065 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Wed, 30 Aug 2023 15:54:04 +0100 Subject: [PATCH 106/127] Missing renamed language files --- .../en-GB/com_guidedtours.joomla_articles.ini | 7 +++ .../com_guidedtours.joomla_articles_steps.ini | 43 +++++++++++++++++++ .../en-GB/com_guidedtours.joomla_banners.ini | 7 +++ .../com_guidedtours.joomla_banners_steps.ini | 34 +++++++++++++++ .../com_guidedtours.joomla_categories.ini | 7 +++ ...om_guidedtours.joomla_categories_steps.ini | 40 +++++++++++++++++ .../en-GB/com_guidedtours.joomla_contacts.ini | 7 +++ .../com_guidedtours.joomla_contacts_steps.ini | 40 +++++++++++++++++ .../com_guidedtours.joomla_guidedtours.ini | 7 +++ ...m_guidedtours.joomla_guidedtours_steps.ini | 25 +++++++++++ ...com_guidedtours.joomla_guidedtoursteps.ini | 7 +++ ...idedtours.joomla_guidedtoursteps_steps.ini | 34 +++++++++++++++ .../en-GB/com_guidedtours.joomla_menus.ini | 7 +++ .../com_guidedtours.joomla_menus_steps.ini | 22 ++++++++++ .../com_guidedtours.joomla_newsfeeds.ini | 7 +++ ...com_guidedtours.joomla_newsfeeds_steps.ini | 40 +++++++++++++++++ .../com_guidedtours.joomla_smartsearch.ini | 7 +++ ...m_guidedtours.joomla_smartsearch_steps.ini | 25 +++++++++++ .../en-GB/com_guidedtours.joomla_tags.ini | 7 +++ .../com_guidedtours.joomla_tags_steps.ini | 38 ++++++++++++++++ .../en-GB/com_guidedtours.joomla_users.ini | 7 +++ .../com_guidedtours.joomla_users_steps.ini | 37 ++++++++++++++++ 22 files changed, 455 insertions(+) create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_articles.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_articles_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_banners.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_banners_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_categories.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_categories_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_contacts.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_contacts_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_guidedtours.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_guidedtours_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_guidedtoursteps.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_guidedtoursteps_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_menus.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_menus_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_newsfeeds.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_newsfeeds_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_smartsearch.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_smartsearch_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_tags.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_tags_steps.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_users.ini create mode 100644 administrator/language/en-GB/com_guidedtours.joomla_users_steps.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_articles.ini b/administrator/language/en-GB/com_guidedtours.joomla_articles.ini new file mode 100644 index 0000000000000..dcd475831c40a --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_articles.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE="How to create articles?" +COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION="This tour will show you how you can create an article." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_articles_steps.ini b/administrator/language/en-GB/com_guidedtours.joomla_articles_steps.ini new file mode 100644 index 0000000000000..28499ff66f18c --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_articles_steps.ini @@ -0,0 +1,43 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NEW_DESCRIPTION="Select 'New' to create a new article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_TITLE="Add a title for the article" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TITLE_DESCRIPTION="Enter a required title for the article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ALIAS_DESCRIPTION="You can write the internal name of this article. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_TITLE="Add content" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONTENT_DESCRIPTION="Add the content of your article in the editor." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_STATUS_DESCRIPTION="Select the published status of the article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_TITLE="Select a category" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CATEGORY_DESCRIPTION="Select the category for this article. You can also enter a new category by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_TITLE="Toggle featured" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_FEATURED_DESCRIPTION="Select 'Featured' to feature your article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_TITLE="Set the access level" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_ACCESS_DESCRIPTION="Select the access level for the article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_TITLE="Add tags" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_TAGS_DESCRIPTION="Select tags for your article. You can also enter a new tag by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_TITLE="Add a note" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_SAVECLOSE_DESCRIPTION="Save and close the article." + +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_ARTICLES_STEP_CONGRATULATIONS_DESCRIPTION="You have created an article." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_banners.ini b/administrator/language/en-GB/com_guidedtours.joomla_banners.ini new file mode 100644 index 0000000000000..83c5006cef7e6 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_banners.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_BANNERS_TITLE="How to create banners?" +COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION="This tour will show you how you can create a banner." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_banners_steps.ini b/administrator/language/en-GB/com_guidedtours.joomla_banners_steps.ini new file mode 100644 index 0000000000000..1fecdb04fca94 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_banners_steps.ini @@ -0,0 +1,34 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_NEW_DESCRIPTION="Select 'New' to create a new banner." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_TITLE="Add a title for the banner" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_TITLE_DESCRIPTION="Enter a required title for the banner." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this banner. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_TITLE="Enter detailed information" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_DETAILS_DESCRIPTION="Add the details for the banner here." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_STATUS_DESCRIPTION="Select the published status of the banner." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_TITLE="Select a category" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CATEGORY_DESCRIPTION="Select the category for this banner. You can also enter a new category by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_TITLE="Toggle pinned" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_PINNED_DESCRIPTION="Select 'Pinned' to give priority to the banner over ones that are not pinned." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this banner." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_SAVECLOSE_DESCRIPTION="Save and close the banner." + +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_BANNERS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a banner." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_categories.ini b/administrator/language/en-GB/com_guidedtours.joomla_categories.ini new file mode 100644 index 0000000000000..999c5695cd374 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_categories.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE="How to create categories?" +COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION="This tour will show you how you can create a category." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_categories_steps.ini b/administrator/language/en-GB/com_guidedtours.joomla_categories_steps.ini new file mode 100644 index 0000000000000..70b78625d1655 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_categories_steps.ini @@ -0,0 +1,40 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NEW_DESCRIPTION="Select 'New' to create a new category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TITLE_TITLE="Add a title for the category" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TITLE_DESCRIPTION="Enter a required title for the category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ALIAS_DESCRIPTION="You can write the internal name of this category. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONTENT_TITLE="Add content" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONTENT_DESCRIPTION="Add the content of your category in the editor." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_PARENT_TITLE="Select parent category" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_PARENT_DESCRIPTION="Select or enter the parent of the category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_STATUS_DESCRIPTION="Select the published status of the category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ACCESS_TITLE="Set the access level" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_ACCESS_DESCRIPTION="Select the access level for the category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TAGS_TITLE="Add tags" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_TAGS_DESCRIPTION="Select tags for your category. You can also enter a new tag by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NOTE_TITLE="Add a note" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_SAVECLOSE_DESCRIPTION="Save and close the category." + +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_CATEGORIES_STEP_CONGRATULATIONS_DESCRIPTION="You have created a category" diff --git a/administrator/language/en-GB/com_guidedtours.joomla_contacts.ini b/administrator/language/en-GB/com_guidedtours.joomla_contacts.ini new file mode 100644 index 0000000000000..0461fc589ea57 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_contacts.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE="How to create contacts?" +COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION="This tour will show you how you can create a contact." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_contacts_steps.ini b/administrator/language/en-GB/com_guidedtours.joomla_contacts_steps.ini new file mode 100644 index 0000000000000..65ed4f34dc1eb --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_contacts_steps.ini @@ -0,0 +1,40 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_NEW_DESCRIPTION="Select 'New' to create a new contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TITLE_TITLE="Add a name" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TITLE_DESCRIPTION="Enter a required name for the contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this contact. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_DETAILS_TITLE="Enter detailed information" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_DETAILS_DESCRIPTION="Add the details for the contact here." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_STATUS_DESCRIPTION="Select the published status of the contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CATEGORY_TITLE="Select a category" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CATEGORY_DESCRIPTION="Select the category for this contact. You can also enter a new category by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_FEATURED_TITLE="Toggle featured" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_FEATURED_DESCRIPTION="Select 'Featured' to feature your contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ACCESS_TITLE="Set the access level" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_ACCESS_DESCRIPTION="Select the access level for the contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TAGS_TITLE="Add tags" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_TAGS_DESCRIPTION="Select tags for your contact. You can also enter a new tag by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_SAVECLOSE_DESCRIPTION="Save and close the contact." + +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_CONTACTS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a contact." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.joomla_guidedtours.ini new file mode 100644 index 0000000000000..1bdb33ab33e69 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_guidedtours.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE="How to create a guided tour?" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION="This tour will show you how you can create a guided tour for the backend." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_guidedtours_steps.ini b/administrator/language/en-GB/com_guidedtours.joomla_guidedtours_steps.ini new file mode 100644 index 0000000000000..32537321a75cc --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_guidedtours_steps.ini @@ -0,0 +1,25 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_NEW_DESCRIPTION="Select 'New' to create a new tour." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_TITLE_TITLE="Add a title for the tour" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_TITLE_DESCRIPTION="Enter a required title for the tour." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONTENT_TITLE="Add content" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONTENT_DESCRIPTION="Enter content describing the tour." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_COMPONENT_TITLE="Select a component" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_COMPONENT_DESCRIPTION="Select the extension(s) where you want to show your tour in priority in the list of possible tours to run. For instance, If you are creating a tour for the 'Users' extension, then select 'Users'. Select 'All' for the tour to appear on every page." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_URL_TITLE="Add a URL" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_URL_DESCRIPTION="Add the relative URL of the page where the tour must start. For instance, enter administrator/index.php?option=com_users&view=users to start the tour in the Users page." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_SAVECLOSE_DESCRIPTION="Save and close the tour." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a guided tour. You now have to create steps for the tour." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_guidedtoursteps.ini b/administrator/language/en-GB/com_guidedtours.joomla_guidedtoursteps.ini new file mode 100644 index 0000000000000..0e7ae9cbe7c89 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_guidedtoursteps.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE="How to add steps to a guided tour?" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION="This tour will show you how you can create a step for a guided tour." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_guidedtoursteps_steps.ini b/administrator/language/en-GB/com_guidedtours.joomla_guidedtoursteps_steps.ini new file mode 100644 index 0000000000000..70863646f7215 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_guidedtoursteps_steps.ini @@ -0,0 +1,34 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_COUNTER_TITLE="Select the step counter number" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_COUNTER_DESCRIPTION="Select the number to add a step. The number represents the number of steps created for the tour so far." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_NEW_DESCRIPTION="Select 'New' to create a new step." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TITLE_TITLE="Add a title for the step" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TITLE_DESCRIPTION="Enter a required title for the step. This is usually an action a user must execute." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_DESCRIPTION_TITLE="Add step explanation" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_DESCRIPTION_DESCRIPTION="The content should give the user an explanation about the step." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_STATUS_DESCRIPTION="Select the published status of the step." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_POSITION_TITLE="Select the position" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_POSITION_DESCRIPTION="This is the position of the popup relative to the element you target on the page. 'Centered' is used when there is no specific target." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TARGET_TITLE="Enter the target element" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TARGET_DESCRIPTION="This is the element on the page this step targets. It uses the syntax used by CSS to target an element.
For instance, #jform_title will target the element with id 'jform_title'" + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TYPE_TITLE="Select the type" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_TYPE_DESCRIPTION="This is the kind of step you want to create. 'Next' to allow the tour to continue without interaction, 'Redirect' to move to another page, 'Interactive' to request user input." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_SAVECLOSE_DESCRIPTION="Save and close the step." + +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a step for a guided tour." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_menus.ini b/administrator/language/en-GB/com_guidedtours.joomla_menus.ini new file mode 100644 index 0000000000000..d28746bbaa3e5 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_menus.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_MENUS_TITLE="How to create menus?" +COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION="This tour will show you how you can create a menu." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_menus_steps.ini b/administrator/language/en-GB/com_guidedtours.joomla_menus_steps.ini new file mode 100644 index 0000000000000..24df344874dc4 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_menus_steps.ini @@ -0,0 +1,22 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_MENUS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_MENUS_STEP_NEW_DESCRIPTION="Select 'New' to create a new menu." + +COM_GUIDEDTOURS_TOUR_MENUS_STEP_TITLE_TITLE="Add a title for the menu" +COM_GUIDEDTOURS_TOUR_MENUS_STEP_TITLE_DESCRIPTION="Enter a required title for the menu." + +COM_GUIDEDTOURS_TOUR_MENUS_STEP_UNIQUENAME_TITLE="Add a unique name" +COM_GUIDEDTOURS_TOUR_MENUS_STEP_UNIQUENAME_DESCRIPTION="Enter a required unique name for the menu." + +COM_GUIDEDTOURS_TOUR_MENUS_STEP_DESCRIPTION_TITLE="Add a description" +COM_GUIDEDTOURS_TOUR_MENUS_STEP_DESCRIPTION_DESCRIPTION="Add a description about the purpose of the menu." + +COM_GUIDEDTOURS_TOUR_MENUS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_MENUS_STEP_SAVECLOSE_DESCRIPTION="Save and close the menu." + +COM_GUIDEDTOURS_TOUR_MENUS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_MENUS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a menu." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_newsfeeds.ini b/administrator/language/en-GB/com_guidedtours.joomla_newsfeeds.ini new file mode 100644 index 0000000000000..1c7c60efba44a --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_newsfeeds.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE="How to enter a news feed?" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION="This tour will show you how you can enter a news feed from another site for display." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_newsfeeds_steps.ini b/administrator/language/en-GB/com_guidedtours.joomla_newsfeeds_steps.ini new file mode 100644 index 0000000000000..554b5e52261c5 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_newsfeeds_steps.ini @@ -0,0 +1,40 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_NEW_DESCRIPTION="Select 'New' to create a new news feed." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TITLE_TITLE="Add a title" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TITLE_DESCRIPTION="Enter a required title for the news feed." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this news feed. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_LINK_TITLE="Enter the link" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_LINK_DESCRIPTION="Add the link to the news feed here." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_DESCRIPTION_TITLE="Enter a description" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_DESCRIPTION_DESCRIPTION="Add a description for news feed in the editor." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_STATUS_DESCRIPTION="Select the published status of the news feed." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CATEGORY_TITLE="Select a category" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CATEGORY_DESCRIPTION="Select the category for this news feed. You can also enter a new category by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ACCESS_TITLE="Set the access level" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_ACCESS_DESCRIPTION="Select the access level for the news feed." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TAGS_TITLE="Add tags" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_TAGS_DESCRIPTION="Select tags for your news feed. You can also enter a new tag by typing the name in the field and pressing enter." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this news feed." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_SAVECLOSE_DESCRIPTION="Save and close the news feed." + +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_NEWSFEEDS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a news feed." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_smartsearch.ini b/administrator/language/en-GB/com_guidedtours.joomla_smartsearch.ini new file mode 100644 index 0000000000000..2ef0c540691e6 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_smartsearch.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE="How to create smart search filters?" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION="This tour will show you how you can create a smart search filter." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_smartsearch_steps.ini b/administrator/language/en-GB/com_guidedtours.joomla_smartsearch_steps.ini new file mode 100644 index 0000000000000..d768806b25e44 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_smartsearch_steps.ini @@ -0,0 +1,25 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_NEW_DESCRIPTION="Select 'New' to create a new smart search filter." + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_TITLE_TITLE="Add a title" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_TITLE_DESCRIPTION="Enter a required title for the smart search filter." + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_ALIAS_DESCRIPTION="You can write the internal name of this filter. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONTENT_TITLE="Enter content" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONTENT_DESCRIPTION="Add the content for the smart search filter here." + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_STATUS_DESCRIPTION="Select the published status of the filter." + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_SAVECLOSE_DESCRIPTION="Save and close the smart search filter." + +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_SMARTSEARCH_STEP_CONGRATULATIONS_DESCRIPTION="You have created a smart search filter." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_tags.ini b/administrator/language/en-GB/com_guidedtours.joomla_tags.ini new file mode 100644 index 0000000000000..716b54a4390ff --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_tags.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_TAGS_TITLE="How to create tags?" +COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION="This tour will show you how you can create a tag." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_tags_steps.ini b/administrator/language/en-GB/com_guidedtours.joomla_tags_steps.ini new file mode 100644 index 0000000000000..d9f7b93949b67 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_tags_steps.ini @@ -0,0 +1,38 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_NEW_DESCRIPTION="Select 'New' to create a new tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_TITLE_TITLE="Add a title for the tag" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_TITLE_DESCRIPTION="Enter a required title for the tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_ALIAS_TITLE="Enter an alias" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_ALIAS_DESCRIPTION="You can write the internal name of this tag. You can leave this blank and a default value in lower case with dashes instead of spaces will be used as part of the URL." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONTENT_TITLE="Add content" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONTENT_DESCRIPTION="Add the content of your tag in the editor." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_PARENT_TITLE="Select parent tag" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_PARENT_DESCRIPTION="Select or enter the parent of the tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_STATUS_TITLE="Select the status" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_STATUS_DESCRIPTION="Select the published status of the tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_ACCESS_TITLE="Set the access level" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_ACCESS_DESCRIPTION="Select the access level for the tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_NOTE_TITLE="Add a note" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_NOTE_DESCRIPTION="This is normally for administrator use and does not show in the front end." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_VERSIONNOTE_TITLE="Add a version note" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_VERSIONNOTE_DESCRIPTION="This is an optional field to identify the version of this tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_SAVECLOSE_DESCRIPTION="Save and close the tag." + +COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_TAGS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a tag." + diff --git a/administrator/language/en-GB/com_guidedtours.joomla_users.ini b/administrator/language/en-GB/com_guidedtours.joomla_users.ini new file mode 100644 index 0000000000000..942ae7ab0b13b --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_users.ini @@ -0,0 +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 + +COM_GUIDEDTOURS_TOUR_USERS_TITLE="How to create users?" +COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION="This tour will show you how you can create a user." diff --git a/administrator/language/en-GB/com_guidedtours.joomla_users_steps.ini b/administrator/language/en-GB/com_guidedtours.joomla_users_steps.ini new file mode 100644 index 0000000000000..ab971126a3556 --- /dev/null +++ b/administrator/language/en-GB/com_guidedtours.joomla_users_steps.ini @@ -0,0 +1,37 @@ +; 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 + +COM_GUIDEDTOURS_TOUR_USERS_STEP_NEW_TITLE="Select the 'New' button" +COM_GUIDEDTOURS_TOUR_USERS_STEP_NEW_DESCRIPTION="Select 'New' to create a new user." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_NAME_TITLE="Add a name" +COM_GUIDEDTOURS_TOUR_USERS_STEP_NAME_DESCRIPTION="Enter a required name for the user." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_LOGINNAME_TITLE="Add a login name" +COM_GUIDEDTOURS_TOUR_USERS_STEP_LOGINNAME_DESCRIPTION="Enter a required login name for the user (username)." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD_TITLE="Enter a password" +COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD_DESCRIPTION="Fill in a (new) password. Although this field is not required, the user will not be able to log in when no password is set." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD2_TITLE="Confirm the password" +COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORD2_DESCRIPTION="Fill in the password from the field above again, to verify it. This field is required when you filled in the new password field." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_EMAIL_TITLE="Add an email address" +COM_GUIDEDTOURS_TOUR_USERS_STEP_EMAIL_DESCRIPTION="Enter an email address for the user." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_SYSTEMEMAIL_TITLE="Toggle receive system emails" +COM_GUIDEDTOURS_TOUR_USERS_STEP_SYSTEMEMAIL_DESCRIPTION="Set to yes, if the user needs to receive system emails." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_STATUS_TITLE="Toggle status" +COM_GUIDEDTOURS_TOUR_USERS_STEP_STATUS_DESCRIPTION="Enable or block this user." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORDRESET_TITLE="Toggle password reset" +COM_GUIDEDTOURS_TOUR_USERS_STEP_PASSWORDRESET_DESCRIPTION="If set to yes, the user will have to reset their password the next time they log in to the site." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_SAVECLOSE_TITLE="Select 'Save and Close'" +COM_GUIDEDTOURS_TOUR_USERS_STEP_SAVECLOSE_DESCRIPTION="Save and close the user." + +COM_GUIDEDTOURS_TOUR_USERS_STEP_CONGRATULATIONS_TITLE="Congratulations!" +COM_GUIDEDTOURS_TOUR_USERS_STEP_CONGRATULATIONS_DESCRIPTION="You have created a user." From 92a130923036a0d504e341f911d27bc298c36d74 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Sat, 2 Sep 2023 12:14:38 +0100 Subject: [PATCH 107/127] Renamed alias column in tours table to uid Update language files to refer to 'unique identifier' Uid can now have a period separator to signify the language files should be loaded from a component or other extension language folder e.g. component.tour_id can load the language strings from administrator/com_component or administrator/language - language file name would need to be called component.tour_id.ini Implement migration code in com_admin/script.php to populate empty alias values New GuidedtoursHelper class to handle language file loading Move population of empty uid column to TourTable::save method Switch javascript to respond to data-gt-uid from data-gt-alias Rename language files to replace com_guidedtours. with guidedtours. as they are content language files and now software language files --- administrator/components/com_admin/script.php | 68 +++++++++++ .../sql/updates/mysql/5.0.0-2023-08-29.sql | 26 ++--- .../updates/postgresql/5.0.0-2023-06-29.sql | 14 --- .../updates/postgresql/5.0.0-2023-08-29.sql | 14 +++ .../components/com_guidedtours/forms/tour.xml | 8 +- .../src/Helper/GuidedtoursHelper.php | 106 ++++++++++++++++++ .../com_guidedtours/src/Model/StepModel.php | 8 +- .../com_guidedtours/src/Model/StepsModel.php | 10 +- .../com_guidedtours/src/Model/TourModel.php | 88 ++------------- .../com_guidedtours/src/Model/ToursModel.php | 11 +- .../com_guidedtours/src/Table/TourTable.php | 87 ++++++++++++++ .../com_guidedtours/tmpl/tour/edit.php | 13 ++- .../language/en-GB/com_guidedtours.ini | 6 +- ...es.ini => guidedtours.joomla_articles.ini} | 0 ... => guidedtours.joomla_articles_steps.ini} | 0 ...ers.ini => guidedtours.joomla_banners.ini} | 0 ...i => guidedtours.joomla_banners_steps.ini} | 0 ....ini => guidedtours.joomla_categories.ini} | 0 ...> guidedtours.joomla_categories_steps.ini} | 0 ...ts.ini => guidedtours.joomla_contacts.ini} | 0 ... => guidedtours.joomla_contacts_steps.ini} | 0 ...ini => guidedtours.joomla_guidedtours.ini} | 0 ... guidedtours.joomla_guidedtours_steps.ini} | 0 ...=> guidedtours.joomla_guidedtoursteps.ini} | 0 ...dedtours.joomla_guidedtoursteps_steps.ini} | 0 ...menus.ini => guidedtours.joomla_menus.ini} | 0 ...ini => guidedtours.joomla_menus_steps.ini} | 0 ...s.ini => guidedtours.joomla_newsfeeds.ini} | 0 ...=> guidedtours.joomla_newsfeeds_steps.ini} | 0 ...ini => guidedtours.joomla_smartsearch.ini} | 0 ... guidedtours.joomla_smartsearch_steps.ini} | 0 ...a_tags.ini => guidedtours.joomla_tags.ini} | 0 ....ini => guidedtours.joomla_tags_steps.ini} | 0 ...users.ini => guidedtours.joomla_users.ini} | 0 ...ini => guidedtours.joomla_users_steps.ini} | 0 .../language/en-GB/yoursites.site_check.ini | 7 ++ .../js/guidedtours.es6.js | 10 +- installation/sql/mysql/extensions.sql | 6 +- installation/sql/postgresql/extensions.sql | 4 +- .../guidedtours/src/Extension/GuidedTours.php | 4 +- 40 files changed, 341 insertions(+), 149 deletions(-) delete mode 100644 administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-29.sql create mode 100644 administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-08-29.sql create mode 100644 administrator/components/com_guidedtours/src/Helper/GuidedtoursHelper.php rename administrator/language/en-GB/{com_guidedtours.joomla_articles.ini => guidedtours.joomla_articles.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_articles_steps.ini => guidedtours.joomla_articles_steps.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_banners.ini => guidedtours.joomla_banners.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_banners_steps.ini => guidedtours.joomla_banners_steps.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_categories.ini => guidedtours.joomla_categories.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_categories_steps.ini => guidedtours.joomla_categories_steps.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_contacts.ini => guidedtours.joomla_contacts.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_contacts_steps.ini => guidedtours.joomla_contacts_steps.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_guidedtours.ini => guidedtours.joomla_guidedtours.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_guidedtours_steps.ini => guidedtours.joomla_guidedtours_steps.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_guidedtoursteps.ini => guidedtours.joomla_guidedtoursteps.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_guidedtoursteps_steps.ini => guidedtours.joomla_guidedtoursteps_steps.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_menus.ini => guidedtours.joomla_menus.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_menus_steps.ini => guidedtours.joomla_menus_steps.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_newsfeeds.ini => guidedtours.joomla_newsfeeds.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_newsfeeds_steps.ini => guidedtours.joomla_newsfeeds_steps.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_smartsearch.ini => guidedtours.joomla_smartsearch.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_smartsearch_steps.ini => guidedtours.joomla_smartsearch_steps.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_tags.ini => guidedtours.joomla_tags.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_tags_steps.ini => guidedtours.joomla_tags_steps.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_users.ini => guidedtours.joomla_users.ini} (100%) rename administrator/language/en-GB/{com_guidedtours.joomla_users_steps.ini => guidedtours.joomla_users_steps.ini} (100%) create mode 100644 administrator/language/en-GB/yoursites.site_check.ini diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index b203c6eac6cb2..4cb2b419558f2 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -10,6 +10,7 @@ * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace */ +use Joomla\CMS\Application\ApplicationHelper; use Joomla\CMS\Extension\ExtensionHelper; use Joomla\CMS\Factory; use Joomla\CMS\Filesystem\File; @@ -18,6 +19,7 @@ use Joomla\CMS\Language\Text; use Joomla\CMS\Log\Log; use Joomla\CMS\Table\Table; +use Joomla\CMS\Uri\Uri; use Joomla\Database\ParameterType; // phpcs:disable PSR1.Files.SideEffects @@ -2251,6 +2253,8 @@ public function postflight($action, $installer) return false; } + $this->setGuidedToursUid(); + return true; } @@ -2358,6 +2362,70 @@ private function migrateTinymceConfiguration(): bool return true; } + /** + * setup Guided Tours Unique Identifiers + * + * @return boolean True on success + * + * @since __DEPLOY_VERSION__ + */ + private function setGuidedToursUid(): bool + { + /** @var \Joomla\Component\Cache\Administrator\Model\CacheModel $model */ + $model = Factory::getApplication()->bootComponent('com_guidedtours')->getMVCFactory() + ->createModel('Tours', 'Administrator', ['ignore_request' => true]); + + $items = $model->getItems(); + + foreach ($items as $item) { + // Set uid for tours where it is empty + if (empty($item->uid)) { + $tourItem = $model->getTable('Tour'); + $tourItem->load($item->id); + + // Tour follows Joomla naming convention + if (str_starts_with($tourItem->title, 'COM_GUIDEDTOURS_TOUR_') && str_ends_with($tourItem->title, '_TITLE')) { + $uidTitle = 'joomla_ ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $tourItem->title); + + // Remove the last _TITLE part + $pos = strrpos($uidTitle, "_TITLE"); + if ($pos !== false) { + $uidTitle = substr($uidTitle, 0, $pos); + } + } + // Tour follows component naming pattern + elseif (preg_match('#COM_(\w+)_TOUR_#', $tourItem->title) && str_ends_with($tourItem->title, '_TITLE')) { + $uidTitle = preg_replace('#COM_(\w+)_TOUR_#', '$1.', $tourItem->title); + + // Remove the last _TITLE part + $pos = strrpos($uidTitle, "_TITLE"); + if ($pos !== false) { + $uidTitle = substr($uidTitle, 0, $pos); + } + } else { + $uri = Uri::getInstance(); + $host = $uri->toString(['host']); + $uidTitle = $host . ' ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $tourItem->title); + // Remove the last _TITLE part + if (str_ends_with($uidTitle, '_TITLE')) { + $pos = strrpos($uidTitle, '_TITLE'); + $uidTitle = substr($uidTitle, 0, $pos); + } + } + // ApplicationHelper::stringURLSafe will replace a period (.) separator so we split the construction into multiple parts + $uidTitleParts = explode('.', $uidTitle); + $tourLanguage = $tourItem->lang; + array_walk($uidTitleParts, function (& $value, $key, $tourLanguage) { + $value = ApplicationHelper::stringURLSafe($value, $tourLanguage); + }); + $tourItem->uid = implode('.', $uidTitleParts); + + $tourItem->store(); + } + } + return true; + } + /** * Renames or removes incorrectly cased files. * diff --git a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-08-29.sql b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-08-29.sql index 8522ab54f202e..85790c1132a04 100644 --- a/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-08-29.sql +++ b/administrator/components/com_admin/sql/updates/mysql/5.0.0-2023-08-29.sql @@ -1,14 +1,14 @@ -ALTER TABLE `#__guidedtours` ADD COLUMN `alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL AFTER `title`/** CAN FAIL **/; -ALTER TABLE `#__guidedtours` ADD INDEX `idx_alias` (`alias`(191)) /** CAN FAIL **/; +ALTER TABLE `#__guidedtours` ADD COLUMN `uid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL AFTER `title`/** CAN FAIL **/; +ALTER TABLE `#__guidedtours` ADD INDEX `idx_uid` (`uid`(191)) /** CAN FAIL **/; -UPDATE `#__guidedtours` SET `alias` = 'joomla-guidedtours' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla-guidedtoursteps' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla-articles' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla-categories' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla-menus' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla-tags' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla-banners' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla-contacts' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla-newsfeeds' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla-smartsearch' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE'; -UPDATE `#__guidedtours` SET `alias` = 'joomla-users' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_USERS_TITLE'; +UPDATE `#__guidedtours` SET `uid` = 'joomla-guidedtours' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE'; +UPDATE `#__guidedtours` SET `uid` = 'joomla-guidedtoursteps' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; +UPDATE `#__guidedtours` SET `uid` = 'joomla-articles' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE'; +UPDATE `#__guidedtours` SET `uid` = 'joomla-categories' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE'; +UPDATE `#__guidedtours` SET `uid` = 'joomla-menus' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE'; +UPDATE `#__guidedtours` SET `uid` = 'joomla-tags' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE'; +UPDATE `#__guidedtours` SET `uid` = 'joomla-banners' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE'; +UPDATE `#__guidedtours` SET `uid` = 'joomla-contacts' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE'; +UPDATE `#__guidedtours` SET `uid` = 'joomla-newsfeeds' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE'; +UPDATE `#__guidedtours` SET `uid` = 'joomla-smartsearch' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE'; +UPDATE `#__guidedtours` SET `uid` = 'joomla-users' WHERE `title` = 'COM_GUIDEDTOURS_TOUR_USERS_TITLE'; diff --git a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-29.sql b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-29.sql deleted file mode 100644 index 6fdc43a2d91d5..0000000000000 --- a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-06-29.sql +++ /dev/null @@ -1,14 +0,0 @@ -ALTER TABLE "#__guidedtours" ADD COLUMN "alias" varchar(255) DEFAULT '' NOT NULL /** CAN FAIL **/; -CREATE INDEX "#__guidedtours_idx_alias" ON "#__guidedtours" ("alias") /** CAN FAIL **/; - -UPDATE "#__guidedtours" SET "alias" = 'joomla-guidedtours' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla-guidedtoursteps' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla-articles' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla-categories' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla-menus' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla-tags' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla-banners' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla-contacts' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla-newsfeeds' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla-smartsearch' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE'; -UPDATE "#__guidedtours" SET "alias" = 'joomla-users' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_USERS_TITLE'; diff --git a/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-08-29.sql b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-08-29.sql new file mode 100644 index 0000000000000..21666a58eb649 --- /dev/null +++ b/administrator/components/com_admin/sql/updates/postgresql/5.0.0-2023-08-29.sql @@ -0,0 +1,14 @@ +ALTER TABLE "#__guidedtours" ADD COLUMN "uid" varchar(255) DEFAULT '' NOT NULL /** CAN FAIL **/; +CREATE INDEX "#__guidedtours_idx_uid" ON "#__guidedtours" ("uid") /** CAN FAIL **/; + +UPDATE "#__guidedtours" SET "uid" = 'joomla-guidedtours' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE'; +UPDATE "#__guidedtours" SET "uid" = 'joomla-guidedtoursteps' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE'; +UPDATE "#__guidedtours" SET "uid" = 'joomla-articles' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE'; +UPDATE "#__guidedtours" SET "uid" = 'joomla-categories' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE'; +UPDATE "#__guidedtours" SET "uid" = 'joomla-menus' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE'; +UPDATE "#__guidedtours" SET "uid" = 'joomla-tags' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE'; +UPDATE "#__guidedtours" SET "uid" = 'joomla-banners' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE'; +UPDATE "#__guidedtours" SET "uid" = 'joomla-contacts' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE'; +UPDATE "#__guidedtours" SET "uid" = 'joomla-newsfeeds' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE'; +UPDATE "#__guidedtours" SET "uid" = 'joomla-smartsearch' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE'; +UPDATE "#__guidedtours" SET "uid" = 'joomla-users' WHERE "title" = 'COM_GUIDEDTOURS_TOUR_USERS_TITLE'; diff --git a/administrator/components/com_guidedtours/forms/tour.xml b/administrator/components/com_guidedtours/forms/tour.xml index 5d9f587eb8ce3..dcb10e4aa949c 100644 --- a/administrator/components/com_guidedtours/forms/tour.xml +++ b/administrator/components/com_guidedtours/forms/tour.xml @@ -27,11 +27,11 @@ /> diff --git a/administrator/components/com_guidedtours/src/Helper/GuidedtoursHelper.php b/administrator/components/com_guidedtours/src/Helper/GuidedtoursHelper.php new file mode 100644 index 0000000000000..537caf83aade2 --- /dev/null +++ b/administrator/components/com_guidedtours/src/Helper/GuidedtoursHelper.php @@ -0,0 +1,106 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +namespace Joomla\Component\Guidedtours\Administrator\Helper; + +use Joomla\CMS\Factory; + +// phpcs:disable PSR1.Files.SideEffects +\defined('_JEXEC') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Guidedtours component helper. + * + * @since __DEPLOY_VERSION__ + */ +class GuidedtoursHelper +{ + /** + * Load the translation files for an Guided Tour + * + * @param string $uid Guided Tour Unique Identifier + * @param boolean $steps Should tour steps language file be loaded + * + * @return void + * + * @since __DEPLOY_VERSION__ + */ + public static function loadTranslationFiles($uid, bool $steps = false) + { + static $cache = []; + $uid = strtolower($uid); + + if (isset($cache[$uid])) { + return; + } + + $lang = Factory::getLanguage(); + + // The uid has an extension separator so we need to check the extension language files + if (strpos($uid, '.') > 0) { + list($extension, $tourid) = explode('.', $uid, 2); + + $source = ''; + + switch (substr($extension, 0, 3)) { + case 'com': + $source = JPATH_ADMINISTRATOR . '/components/' . $extension; + break; + + case 'lib': + $source = JPATH_LIBRARIES . '/' . substr($extension, 4); + break; + + case 'mod': + $source = JPATH_SITE . '/modules/' . $extension; + break; + + case 'plg': + $parts = explode('_', $extension, 3); + + if (\count($parts) > 2) { + $source = JPATH_PLUGINS . '/' . $parts[1] . '/' . $parts[2]; + } + break; + + case 'pkg': + $source = JPATH_SITE; + break; + + case 'tpl': + $source = JPATH_BASE . '/templates/' . substr($extension, 4); + break; + + default: + $source = JPATH_ADMINISTRATOR . '/components/com_' . $extension; + break; + + } + + $lang->load($extension . '.' . str_replace('-', '_', $tourid), JPATH_ADMINISTRATOR) + || $lang->load($extension . '.' . str_replace('-', '_', $tourid), $source); + if ($steps) { + $lang->load($extension . '.' . str_replace('-', '_', $tourid) . '_steps', JPATH_ADMINISTRATOR) + || $lang->load($extension . '.' . str_replace('-', '_', $tourid) . '_steps', JPATH_ADMINISTRATOR); + } + } else { + $lang->load('guidedtours.' . str_replace('-', '_', $uid), JPATH_ADMINISTRATOR); + if ($steps) { + $lang->load('guidedtours.' . str_replace('-', '_', $uid) . '_steps', JPATH_ADMINISTRATOR); + } + } + + + $cache[$uid] = true; + + return; + } +} diff --git a/administrator/components/com_guidedtours/src/Model/StepModel.php b/administrator/components/com_guidedtours/src/Model/StepModel.php index a1b0353848886..67062fe6ab090 100644 --- a/administrator/components/com_guidedtours/src/Model/StepModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepModel.php @@ -15,6 +15,7 @@ use Joomla\CMS\MVC\Model\AdminModel; use Joomla\CMS\Object\CMSObject; use Joomla\CMS\Table\Table; +use Joomla\Component\Guidedtours\Administrator\Helper\GuidedtoursHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -237,8 +238,6 @@ protected function loadFormData() */ public function getItem($pk = null) { - $lang = Factory::getLanguage(); - $lang->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); if ($result = parent::getItem($pk)) { $app = Factory::getApplication(); @@ -251,10 +250,7 @@ public function getItem($pk = null) // Editing an existing step $tour = $tourModel->getItem($result->tour_id); - if (!empty($tour->alias)) { - $lang->load('com_guidedtours.' . str_replace('-', '_', $tour->alias), JPATH_ADMINISTRATOR); - $lang->load('com_guidedtours.' . str_replace('-', '_', $tour->alias) . '_steps', JPATH_ADMINISTRATOR); - } + GuidedtoursHelper::loadTranslationFiles($tour->uid, true); $result->title_translation = Text::_($result->title); $result->description_translation = Text::_($result->description); diff --git a/administrator/components/com_guidedtours/src/Model/StepsModel.php b/administrator/components/com_guidedtours/src/Model/StepsModel.php index 2942edb674793..4e53af860d544 100644 --- a/administrator/components/com_guidedtours/src/Model/StepsModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepsModel.php @@ -13,6 +13,7 @@ use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\Model\ListModel; +use Joomla\Component\Guidedtours\Administrator\Helper\GuidedtoursHelper; use Joomla\Database\DatabaseQuery; use Joomla\Database\ParameterType; use Joomla\Utilities\ArrayHelper; @@ -228,9 +229,6 @@ public function getItems() { $items = parent::getItems(); - $lang = Factory::getLanguage(); - $lang->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); - $tourLanguageLoaded = false; foreach ($items as $item) { if (!$tourLanguageLoaded) { @@ -243,10 +241,8 @@ public function getItems() $tour = $tourModel->getItem($tourId); - if (!empty($tour->alias)) { - $lang->load('com_guidedtours.' . str_replace('-', '_', $tour->alias), JPATH_ADMINISTRATOR); - $lang->load('com_guidedtours.' . str_replace('-', '_', $tour->alias) . '_steps', JPATH_ADMINISTRATOR); - } + GuidedtoursHelper::loadTranslationFiles($tour->uid, true); + $tourLanguageLoaded = true; } diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index 36d3761ad6d29..f6c222d6f3cc6 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -10,18 +10,15 @@ namespace Joomla\Component\Guidedtours\Administrator\Model; -use Joomla\CMS\Application\ApplicationHelper; use Joomla\CMS\Factory; -use Joomla\CMS\Filter\OutputFilter; use Joomla\CMS\Language\Text; use Joomla\CMS\Log\Log; use Joomla\CMS\MVC\Model\AdminModel; use Joomla\CMS\Object\CMSObject; use Joomla\CMS\Plugin\PluginHelper; -use Joomla\CMS\Uri\Uri; +use Joomla\Component\Guidedtours\Administrator\Helper\GuidedtoursHelper; use Joomla\Database\ParameterType; use Joomla\Registry\Registry; -use Joomla\String\StringHelper; use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects @@ -82,28 +79,6 @@ public function save($data) $this->setStepsLanguage($id, $lang); - if (empty($data['alias'])) { - $app = Factory::getApplication(); - $uri = Uri::getInstance(); - $host = $uri->toString(['host']); - $aliasTitle = $host . ' ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $data['title']); - // Remove the last _TITLE part - if (str_ends_with($aliasTitle, '_TITLE')) { - $pos = strrpos($aliasTitle, '_TITLE'); - $aliasTitle = substr($aliasTitle, 0, $pos); - } - if ($app->get('unicodeslugs') == 1) { - $data['alias'] = OutputFilter::stringUrlUnicodeSlug($aliasTitle); - } else { - $data['alias'] = OutputFilter::stringURLSafe($aliasTitle); - } - } else { - $data['alias'] = ApplicationHelper::stringURLSafe($data['alias']); - } - - // make sure the alias is unique - $data['alias'] = $this->generateNewAlias($data['alias'], $id); - return parent::save($data); } @@ -212,9 +187,9 @@ protected function loadFormData() } /** - * Method to get a single record by id or alias + * Method to get a single record by id or uid * - * @param integer|string $pk The id or alias of the tour. + * @param integer|string $pk The id or uid of the tour. * * @return CMSObject|boolean Object on success, false on failure. * @@ -228,8 +203,8 @@ public function getItem($pk = null) if (is_integer($pk)) { $result = $table->load((int) $pk); } else { - // Attempt to load the row by alias. - $result = $table->load([ 'alias' => $pk ]); + // Attempt to load the row by uid. + $result = $table->load([ 'uid' => $pk ]); } // Check for a table object error. @@ -253,10 +228,8 @@ public function getItem($pk = null) $item->params = $registry->toArray(); } - if (!empty($item->alias)) { - $lang = Factory::getLanguage(); - $lang->load('com_guidedtours.' . str_replace('-', '_', $item->alias), JPATH_ADMINISTRATOR); - $lang->load('com_guidedtours.' . str_replace('-', '_', $item->alias) . '_steps', JPATH_ADMINISTRATOR); + if (!empty($item->uid)) { + GuidedtoursHelper::loadTranslationFiles($item->uid, true); } if (!empty($item->id)) { @@ -264,24 +237,6 @@ public function getItem($pk = null) $item->description_translation = Text::_($item->description); } - if (empty($item->alias) && (int) $item->id > 0) { - $app = Factory::getApplication(); - $uri = Uri::getInstance(); - $host = $uri->toString(['host']); - - $aliasTitle = $host . ' ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $item->title); - // Remove the last _TITLE part - if (str_ends_with($item->title, '_TITLE')) { - $pos = strrpos($aliasTitle, '_TITLE'); - $aliasTitle = substr($aliasTitle, 0, $pos); - } - if ($app->get('unicodeslugs') == 1) { - $item->alias = OutputFilter::stringUrlUnicodeSlug($aliasTitle); - } else { - $item->alias = OutputFilter::stringURLSafe($aliasTitle); - } - } - return $item; } @@ -392,7 +347,6 @@ public function duplicate(&$pks) $table->id = 0; $table->published = 0; - $table->alias = $this->generateNewAlias($table->alias, 0); if (!$table->check() || !$table->store()) { throw new \Exception($table->getError()); @@ -543,32 +497,4 @@ protected function setStepsLanguage(int $id, string $language = '*'): bool return $db->setQuery($query) ->execute(); } - - /** - * Method to change the alias when not unique. - * - * @param string $alias The alias. - * @param integer $currentItemId The id of the current tour. - * - * @return string $alias Contains the modified alias. - * - * @since __DEPLOY_VERSION__ - */ - protected function generateNewAlias($alias, $currentItemId) - { - $table = $this->getTable(); - $unique = false; - // Alter the title & alias - while (!$unique) { - // Attempt to load the row by alias. - $aliasItem = $table->load([ 'alias' => $alias ]); - if ($aliasItem && $table->id > 0 && $table->id != $currentItemId) { - $alias = StringHelper::increment($alias, 'dash'); - } else { - $unique = true; - } - } - - return $alias; - } } diff --git a/administrator/components/com_guidedtours/src/Model/ToursModel.php b/administrator/components/com_guidedtours/src/Model/ToursModel.php index 54ccdd90a7cb6..17ca7b0add9e4 100644 --- a/administrator/components/com_guidedtours/src/Model/ToursModel.php +++ b/administrator/components/com_guidedtours/src/Model/ToursModel.php @@ -13,6 +13,7 @@ use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\Model\ListModel; +use Joomla\Component\Guidedtours\Administrator\Helper\GuidedtoursHelper; use Joomla\Database\ParameterType; use Joomla\Registry\Registry; use Joomla\Utilities\ArrayHelper; @@ -248,17 +249,15 @@ public function getItems() { $items = parent::getItems(); - $lang = Factory::getLanguage(); - $lang->load('com_guidedtours.sys', JPATH_ADMINISTRATOR); - - foreach ($items as $item) { - if (!empty($item->alias)) { - $lang->load('com_guidedtours.' . str_replace('-', '_', $item->alias), JPATH_ADMINISTRATOR); + foreach ($items as & $item) { + if (!empty($item->uid)) { + GuidedtoursHelper::loadTranslationFiles($item->uid, false); } $item->title = Text::_($item->title); $item->description = Text::_($item->description); $item->extensions = (new Registry($item->extensions))->toArray(); } + unset($item); return $items; } diff --git a/administrator/components/com_guidedtours/src/Table/TourTable.php b/administrator/components/com_guidedtours/src/Table/TourTable.php index bd64c056140b3..e89bf2972dd27 100644 --- a/administrator/components/com_guidedtours/src/Table/TourTable.php +++ b/administrator/components/com_guidedtours/src/Table/TourTable.php @@ -10,11 +10,14 @@ namespace Joomla\Component\Guidedtours\Administrator\Table; +use Joomla\CMS\Application\ApplicationHelper; use Joomla\CMS\Factory; use Joomla\CMS\Table\Table; +use Joomla\CMS\Uri\Uri; use Joomla\CMS\User\CurrentUserInterface; use Joomla\CMS\User\CurrentUserTrait; use Joomla\Database\DatabaseDriver; +use Joomla\String\StringHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -99,6 +102,90 @@ public function store($updateNulls = true) $this->extensions = ["*"]; } + // set missing Uid + if (empty($this->uid)) { + $this->setTourUid(); + } + + // make sure the uid is unique + $this->ensureUniqueUid(); + return parent::store($updateNulls); } + + + /** + * Method to set the uid when empty + * + * @return string $uid Contains the non-empty uid. + * + * @since __DEPLOY_VERSION__ + */ + protected function setTourUid() + { + // Tour follows Joomla naming convention + if (str_starts_with($this->title, 'COM_GUIDEDTOURS_TOUR_') && str_ends_with($this->title, '_TITLE')) { + $uidTitle = 'joomla_ ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $this->title); + + // Remove the last _TITLE part + $pos = strrpos($uidTitle, "_TITLE"); + if ($pos !== false) { + $uidTitle = substr($uidTitle, 0, $pos); + } + } + // Tour follows component naming pattern + elseif (preg_match('#COM_(\w+)_TOUR_#', $this->title) && str_ends_with($this->title, '_TITLE')) { + $uidTitle = preg_replace('#COM_(\w+)_TOUR_#', '$1.', $this->title); + + // Remove the last _TITLE part + $pos = strrpos($uidTitle, "_TITLE"); + if ($pos !== false) { + $uidTitle = substr($uidTitle, 0, $pos); + } + } else { + $uri = Uri::getInstance(); + $host = $uri->toString(['host']); + $uidTitle = $host . ' ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $this->title); + // Remove the last _TITLE part + if (str_ends_with($uidTitle, '_TITLE')) { + $pos = strrpos($uidTitle, '_TITLE'); + $uidTitle = substr($uidTitle, 0, $pos); + } + } + // ApplicationHelper::stringURLSafe will replace a period (.) separator so we split the construction into multiple parts + $uidTitleParts = explode('.', $uidTitle); + array_walk($uidTitleParts, function (& $value, $key) { + $value = ApplicationHelper::stringURLSafe($value, $this->lang); + }); + $this->uid = implode('.', $uidTitleParts); + + $this->store(); + + return $this->uid; + } + + /** + * Method to change the uid when not unique. + * + * @return string $uid Contains the modified uid. + * + * @since __DEPLOY_VERSION__ + */ + protected function ensureUniqueUid() + { + $table = new TourTable($this->_db); + $unique = false; + // Alter the title & uid + while (!$unique) { + // Attempt to load the row by uid. + $uidItem = $table->load([ 'uid' => $this->uid ]); + if ($uidItem && $table->id > 0 && $table->id != $this->id) { + $this->uid = StringHelper::increment($this->uid, 'dash'); + } else { + $unique = true; + } + } + + return $this->uid; + } } diff --git a/administrator/components/com_guidedtours/tmpl/tour/edit.php b/administrator/components/com_guidedtours/tmpl/tour/edit.php index 07a938d2381af..63ff5db5c7ff6 100644 --- a/administrator/components/com_guidedtours/tmpl/tour/edit.php +++ b/administrator/components/com_guidedtours/tmpl/tour/edit.php @@ -30,9 +30,16 @@ - - - item->id != 0 && strpos($this->item->title, 'GUIDEDTOUR') !== false) : ?> +
+
+ form->renderField('title'); ?> +
+
+ form->renderField('uid'); ?> +
+
+ + item->id != 0 && strpos($this->item->title, 'GUIDEDTOUR') !== false) : ?>
form->setFieldAttribute('title_translation', 'label', Text::sprintf('COM_GUIDEDTOURS_TITLE_TRANSLATION', $lang)); ?> diff --git a/administrator/language/en-GB/com_guidedtours.ini b/administrator/language/en-GB/com_guidedtours.ini index 77b3657d9ad33..9b56a8b2627cb 100644 --- a/administrator/language/en-GB/com_guidedtours.ini +++ b/administrator/language/en-GB/com_guidedtours.ini @@ -67,9 +67,9 @@ COM_GUIDEDTOURS_STEPS_TABLE_CAPTION="Steps" COM_GUIDEDTOURS_STEPS_UNKNOWN_TOUR="Missing Tour ID" COM_GUIDEDTOURS_TITLE="Title" COM_GUIDEDTOURS_TITLE_TRANSLATION="Title (%s)" -COM_GUIDEDTOURS_TOUR_ALIAS_LABEL="Identifier" -COM_GUIDEDTOURS_TOUR_ALIAS_DESC="The tour identifier needs to be unique.
We suggest a format such as AUTHORNAME-TOURNAME, COMPANYNAME-TOURNAME, or SITEDOMAIN-TOURNAME.
If no identifier is provided a value will be computed for you." -COM_GUIDEDTOURS_TOUR_ALIAS_HINT="Unique identifier e.g. author-site-domain-tour-name" +COM_GUIDEDTOURS_TOUR_UID_LABEL="Unique Identifier" +COM_GUIDEDTOURS_TOUR_UID_DESC="The tour unique identifier needs to be unique.
We suggest a format such as authorname-tourname, companyname-tourname, or sitedomain-tourname.
If no identifier is provided a value will be computed for you." +COM_GUIDEDTOURS_TOUR_UID_HINT="Unique identifier e.g. author-site-domain-tour-name" COM_GUIDEDTOURS_TOURS_DUPLICATED="%d tours duplicated." COM_GUIDEDTOURS_TOURS_DUPLICATED_1="Tour duplicated." COM_GUIDEDTOURS_TOURS_LIST="Guided Tours" diff --git a/administrator/language/en-GB/com_guidedtours.joomla_articles.ini b/administrator/language/en-GB/guidedtours.joomla_articles.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_articles.ini rename to administrator/language/en-GB/guidedtours.joomla_articles.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_articles_steps.ini b/administrator/language/en-GB/guidedtours.joomla_articles_steps.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_articles_steps.ini rename to administrator/language/en-GB/guidedtours.joomla_articles_steps.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_banners.ini b/administrator/language/en-GB/guidedtours.joomla_banners.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_banners.ini rename to administrator/language/en-GB/guidedtours.joomla_banners.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_banners_steps.ini b/administrator/language/en-GB/guidedtours.joomla_banners_steps.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_banners_steps.ini rename to administrator/language/en-GB/guidedtours.joomla_banners_steps.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_categories.ini b/administrator/language/en-GB/guidedtours.joomla_categories.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_categories.ini rename to administrator/language/en-GB/guidedtours.joomla_categories.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_categories_steps.ini b/administrator/language/en-GB/guidedtours.joomla_categories_steps.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_categories_steps.ini rename to administrator/language/en-GB/guidedtours.joomla_categories_steps.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_contacts.ini b/administrator/language/en-GB/guidedtours.joomla_contacts.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_contacts.ini rename to administrator/language/en-GB/guidedtours.joomla_contacts.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_contacts_steps.ini b/administrator/language/en-GB/guidedtours.joomla_contacts_steps.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_contacts_steps.ini rename to administrator/language/en-GB/guidedtours.joomla_contacts_steps.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_guidedtours.ini b/administrator/language/en-GB/guidedtours.joomla_guidedtours.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_guidedtours.ini rename to administrator/language/en-GB/guidedtours.joomla_guidedtours.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_guidedtours_steps.ini b/administrator/language/en-GB/guidedtours.joomla_guidedtours_steps.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_guidedtours_steps.ini rename to administrator/language/en-GB/guidedtours.joomla_guidedtours_steps.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_guidedtoursteps.ini b/administrator/language/en-GB/guidedtours.joomla_guidedtoursteps.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_guidedtoursteps.ini rename to administrator/language/en-GB/guidedtours.joomla_guidedtoursteps.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_guidedtoursteps_steps.ini b/administrator/language/en-GB/guidedtours.joomla_guidedtoursteps_steps.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_guidedtoursteps_steps.ini rename to administrator/language/en-GB/guidedtours.joomla_guidedtoursteps_steps.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_menus.ini b/administrator/language/en-GB/guidedtours.joomla_menus.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_menus.ini rename to administrator/language/en-GB/guidedtours.joomla_menus.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_menus_steps.ini b/administrator/language/en-GB/guidedtours.joomla_menus_steps.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_menus_steps.ini rename to administrator/language/en-GB/guidedtours.joomla_menus_steps.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_newsfeeds.ini b/administrator/language/en-GB/guidedtours.joomla_newsfeeds.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_newsfeeds.ini rename to administrator/language/en-GB/guidedtours.joomla_newsfeeds.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_newsfeeds_steps.ini b/administrator/language/en-GB/guidedtours.joomla_newsfeeds_steps.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_newsfeeds_steps.ini rename to administrator/language/en-GB/guidedtours.joomla_newsfeeds_steps.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_smartsearch.ini b/administrator/language/en-GB/guidedtours.joomla_smartsearch.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_smartsearch.ini rename to administrator/language/en-GB/guidedtours.joomla_smartsearch.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_smartsearch_steps.ini b/administrator/language/en-GB/guidedtours.joomla_smartsearch_steps.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_smartsearch_steps.ini rename to administrator/language/en-GB/guidedtours.joomla_smartsearch_steps.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_tags.ini b/administrator/language/en-GB/guidedtours.joomla_tags.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_tags.ini rename to administrator/language/en-GB/guidedtours.joomla_tags.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_tags_steps.ini b/administrator/language/en-GB/guidedtours.joomla_tags_steps.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_tags_steps.ini rename to administrator/language/en-GB/guidedtours.joomla_tags_steps.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_users.ini b/administrator/language/en-GB/guidedtours.joomla_users.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_users.ini rename to administrator/language/en-GB/guidedtours.joomla_users.ini diff --git a/administrator/language/en-GB/com_guidedtours.joomla_users_steps.ini b/administrator/language/en-GB/guidedtours.joomla_users_steps.ini similarity index 100% rename from administrator/language/en-GB/com_guidedtours.joomla_users_steps.ini rename to administrator/language/en-GB/guidedtours.joomla_users_steps.ini diff --git a/administrator/language/en-GB/yoursites.site_check.ini b/administrator/language/en-GB/yoursites.site_check.ini new file mode 100644 index 0000000000000..930af93a5cfcc --- /dev/null +++ b/administrator/language/en-GB/yoursites.site_check.ini @@ -0,0 +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 + +COM_YOURSITES_TOUR_SITE_CHECK_TITLE="How to check a site :D" +COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION="This tour will show you how you can create a menu." 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 16ead6cc201a7..363dfb08d0f23 100644 --- a/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js +++ b/build/media_source/plg_system_guidedtours/js/guidedtours.es6.js @@ -427,15 +427,15 @@ function startTour(obj) { } function loadTour(tourId) { - const tourAlias = Number.parseInt(tourId, 10) > 0 ? '' : encodeURI(tourId); + const tourUid = Number.parseInt(tourId, 10) > 0 ? '' : encodeURI(tourId); const tourNumber = Number.parseInt(tourId, 10) > 0 ? Number.parseInt(tourId, 10) : 0; - if (tourNumber > 0 || tourAlias !== '') { + if (tourNumber > 0 || tourUid !== '') { let url = `${Joomla.getOptions('system.paths').rootFull}administrator/index.php?option=com_ajax&plugin=guidedtours&group=system&format=json`; if (tourNumber > 0) { url += `&id=${tourNumber}`; } else { - url += `&alias=${tourAlias}`; + url += `&uid=${tourUid}`; } fetch(url) .then((response) => response.json()) @@ -472,14 +472,14 @@ document.querySelector('body').addEventListener('click', (event) => { // Click button but missing data-id if ( (!event.target.hasAttribute('data-id') || event.target.getAttribute('data-id') <= 0) - && (!event.target.hasAttribute('data-gt-alias') || event.target.getAttribute('data-gt-alias') === '') + && (!event.target.hasAttribute('data-gt-uid') || event.target.getAttribute('data-gt-uid') === '') ) { Joomla.renderMessages({ error: [Joomla.Text._('PLG_SYSTEM_GUIDEDTOURS_COULD_NOT_LOAD_THE_TOUR')] }); return; } sessionStorage.setItem('tourToken', String(Joomla.getOptions('com_guidedtours.token'))); - loadTour(event.target.getAttribute('data-id') || event.target.getAttribute('data-gt-alias')); + loadTour(event.target.getAttribute('data-id') || event.target.getAttribute('data-gt-uid')); }); // Start a given tour diff --git a/installation/sql/mysql/extensions.sql b/installation/sql/mysql/extensions.sql index 55b36ce7b8635..1cecb47432107 100644 --- a/installation/sql/mysql/extensions.sql +++ b/installation/sql/mysql/extensions.sql @@ -949,7 +949,7 @@ CREATE TABLE IF NOT EXISTS `#__schemaorg` ( CREATE TABLE IF NOT EXISTS `#__guidedtours` ( `id` int NOT NULL AUTO_INCREMENT, `title` varchar(255) DEFAULT '' NOT NULL, - `alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, + `uid` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, `description` text NOT NULL, `ordering` int NOT NULL DEFAULT 0, `extensions` text NOT NULL, @@ -968,14 +968,14 @@ CREATE TABLE IF NOT EXISTS `#__guidedtours` ( KEY `idx_access` (`access`), KEY `idx_state` (`published`), KEY `idx_language` (`language`), - KEY `idx_alias` (`alias`(191)) + KEY `idx_uid` (`uid`(191)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci; -- -- Dumping data for table `#__guidedtours` -- -INSERT INTO `#__guidedtours` (`id`, `title`, `alias`, `description`, `ordering`, `extensions`, `url`, `created`, `created_by`, `modified`, `modified_by`, `checked_out_time`, `checked_out`, `published`, `language`, `access`) VALUES +INSERT INTO `#__guidedtours` (`id`, `title`, `uid`, `description`, `ordering`, `extensions`, `url`, `created`, `created_by`, `modified`, `modified_by`, `checked_out_time`, `checked_out`, `published`, `language`, `access`) VALUES (1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE', 'joomla-guidedtours', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION', 1, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), (2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'joomla-guidedtoursteps', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), (3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'joomla-articles', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["*"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), diff --git a/installation/sql/postgresql/extensions.sql b/installation/sql/postgresql/extensions.sql index 67ede43bf713f..fcece916e647a 100644 --- a/installation/sql/postgresql/extensions.sql +++ b/installation/sql/postgresql/extensions.sql @@ -913,7 +913,7 @@ CREATE TABLE IF NOT EXISTS "#__schemaorg" ( CREATE TABLE IF NOT EXISTS "#__guidedtours" ( "id" serial NOT NULL, "title" varchar(255) DEFAULT '' NOT NULL, - "alias" varchar(255) DEFAULT '' NOT NULL, + "uid" varchar(255) DEFAULT '' NOT NULL, "description" text NOT NULL, "ordering" bigint DEFAULT 0 NOT NULL, "extensions" text NOT NULL, @@ -934,7 +934,7 @@ CREATE TABLE IF NOT EXISTS "#__guidedtours" ( CREATE INDEX "#__guidedtours_idx_access" ON "#__guidedtours" ("access"); CREATE INDEX "#__guidedtours_idx_state" ON "#__guidedtours" ("published"); CREATE INDEX "#__guidedtours_idx_language" ON "#__guidedtours" ("language"); -CREATE INDEX "#__guidedtours_idx_alias" ON "#__guidedtours" ("alias"); +CREATE INDEX "#__guidedtours_idx_uid" ON "#__guidedtours" ("uid"); -- -- Dumping data for table `#__guidedtours` -- diff --git a/plugins/system/guidedtours/src/Extension/GuidedTours.php b/plugins/system/guidedtours/src/Extension/GuidedTours.php index a36448a27647c..1e8856f0446ca 100644 --- a/plugins/system/guidedtours/src/Extension/GuidedTours.php +++ b/plugins/system/guidedtours/src/Extension/GuidedTours.php @@ -105,7 +105,7 @@ public static function getSubscribedEvents(): array public function startTour(Event $event) { $tourId = (int) $this->getApplication()->getInput()->getInt('id'); - $tourAlias = $this->getApplication()->getInput()->getString('alias'); + $tourAlias = $this->getApplication()->getInput()->getString('uid'); $tourAlias = $tourAlias !== '' ? @urldecode($tourAlias) : $tourAlias; $tour = null; @@ -155,7 +155,7 @@ public function onBeforeCompileHead() /** * Get a tour and its steps or null if not found * - * @param integer|string $tourId The ID or Alias of the tour to load + * @param integer|string $tourId The ID or Uid of the tour to load * * @return null|object * From 343496d4b2eb9890525b67e3dadd9204ba3302cf Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Sat, 2 Sep 2023 12:24:17 +0100 Subject: [PATCH 108/127] Missed a reference to tourAlias => tourUid --- plugins/system/guidedtours/src/Extension/GuidedTours.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/system/guidedtours/src/Extension/GuidedTours.php b/plugins/system/guidedtours/src/Extension/GuidedTours.php index 1e8856f0446ca..fdca08f001667 100644 --- a/plugins/system/guidedtours/src/Extension/GuidedTours.php +++ b/plugins/system/guidedtours/src/Extension/GuidedTours.php @@ -105,15 +105,15 @@ public static function getSubscribedEvents(): array public function startTour(Event $event) { $tourId = (int) $this->getApplication()->getInput()->getInt('id'); - $tourAlias = $this->getApplication()->getInput()->getString('uid'); - $tourAlias = $tourAlias !== '' ? @urldecode($tourAlias) : $tourAlias; + $tourUid = $this->getApplication()->getInput()->getString('uid'); + $tourUid = $tourUid !== '' ? @urldecode($tourUid) : $tourUid; $tour = null; if ($tourId > 0) { $tour = $this->getTour($tourId); - } elseif ($tourAlias !== '') { - $tour = $this->getTour($tourAlias); + } elseif ($tourUid !== '') { + $tour = $this->getTour($tourUid); } $event->setArgument('result', $tour ?? new \stdClass()); From d6a9907f625d05a913b0d6141de67410d5abe8d2 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Sat, 2 Sep 2023 12:28:28 +0100 Subject: [PATCH 109/127] no need for @ operator when calling urldecode as it won't throw an exception --- plugins/system/guidedtours/src/Extension/GuidedTours.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/system/guidedtours/src/Extension/GuidedTours.php b/plugins/system/guidedtours/src/Extension/GuidedTours.php index fdca08f001667..576c3f4780ce4 100644 --- a/plugins/system/guidedtours/src/Extension/GuidedTours.php +++ b/plugins/system/guidedtours/src/Extension/GuidedTours.php @@ -106,7 +106,7 @@ public function startTour(Event $event) { $tourId = (int) $this->getApplication()->getInput()->getInt('id'); $tourUid = $this->getApplication()->getInput()->getString('uid'); - $tourUid = $tourUid !== '' ? @urldecode($tourUid) : $tourUid; + $tourUid = $tourUid !== '' ? urldecode($tourUid) : ''; $tour = null; From 6b25133f992cf203b6b69d8a64c73797f3717fd9 Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Sat, 2 Sep 2023 12:45:48 +0100 Subject: [PATCH 110/127] Fix closure call in array_walk for setting initial values for blank uid in postflight method --- administrator/components/com_admin/script.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index 4cb2b419558f2..7310ac9758512 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -2385,7 +2385,7 @@ private function setGuidedToursUid(): bool // Tour follows Joomla naming convention if (str_starts_with($tourItem->title, 'COM_GUIDEDTOURS_TOUR_') && str_ends_with($tourItem->title, '_TITLE')) { - $uidTitle = 'joomla_ ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $tourItem->title); + $uidTitle = 'joomla_' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $tourItem->title); // Remove the last _TITLE part $pos = strrpos($uidTitle, "_TITLE"); @@ -2405,6 +2405,7 @@ private function setGuidedToursUid(): bool } else { $uri = Uri::getInstance(); $host = $uri->toString(['host']); + $host = ApplicationHelper::stringURLSafe($host, $tourItem->lang); $uidTitle = $host . ' ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $tourItem->title); // Remove the last _TITLE part if (str_ends_with($uidTitle, '_TITLE')) { @@ -2414,10 +2415,9 @@ private function setGuidedToursUid(): bool } // ApplicationHelper::stringURLSafe will replace a period (.) separator so we split the construction into multiple parts $uidTitleParts = explode('.', $uidTitle); - $tourLanguage = $tourItem->lang; array_walk($uidTitleParts, function (& $value, $key, $tourLanguage) { $value = ApplicationHelper::stringURLSafe($value, $tourLanguage); - }); + }, $tourItem->lang); $tourItem->uid = implode('.', $uidTitleParts); $tourItem->store(); From ee96de66eb3d538c8cd7399f581084328731280f Mon Sep 17 00:00:00 2001 From: Geraint Edwards Date: Sat, 2 Sep 2023 12:48:51 +0100 Subject: [PATCH 111/127] Fix closure call in array_walk for setting initial values for blank uid in tourTable --- .../components/com_guidedtours/src/Table/TourTable.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/administrator/components/com_guidedtours/src/Table/TourTable.php b/administrator/components/com_guidedtours/src/Table/TourTable.php index e89bf2972dd27..e7acfc68ad8d9 100644 --- a/administrator/components/com_guidedtours/src/Table/TourTable.php +++ b/administrator/components/com_guidedtours/src/Table/TourTable.php @@ -125,7 +125,7 @@ protected function setTourUid() { // Tour follows Joomla naming convention if (str_starts_with($this->title, 'COM_GUIDEDTOURS_TOUR_') && str_ends_with($this->title, '_TITLE')) { - $uidTitle = 'joomla_ ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $this->title); + $uidTitle = 'joomla_' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $this->title); // Remove the last _TITLE part $pos = strrpos($uidTitle, "_TITLE"); @@ -145,6 +145,7 @@ protected function setTourUid() } else { $uri = Uri::getInstance(); $host = $uri->toString(['host']); + $host = ApplicationHelper::stringURLSafe($host, $this->lang); $uidTitle = $host . ' ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $this->title); // Remove the last _TITLE part if (str_ends_with($uidTitle, '_TITLE')) { @@ -154,9 +155,9 @@ protected function setTourUid() } // ApplicationHelper::stringURLSafe will replace a period (.) separator so we split the construction into multiple parts $uidTitleParts = explode('.', $uidTitle); - array_walk($uidTitleParts, function (& $value, $key) { - $value = ApplicationHelper::stringURLSafe($value, $this->lang); - }); + array_walk($uidTitleParts, function (& $value, $key, $tourLanguage) { + $value = ApplicationHelper::stringURLSafe($value, $tourLanguage); + }, $this->lang); $this->uid = implode('.', $uidTitleParts); $this->store(); From 567b8a3f677f8ed5b518ef123fd3e027ab25568d Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Sat, 2 Sep 2023 10:34:44 -0400 Subject: [PATCH 112/127] Update StepModel.php Removed empty line --- administrator/components/com_guidedtours/src/Model/StepModel.php | 1 - 1 file changed, 1 deletion(-) diff --git a/administrator/components/com_guidedtours/src/Model/StepModel.php b/administrator/components/com_guidedtours/src/Model/StepModel.php index 67062fe6ab090..515d934666f63 100644 --- a/administrator/components/com_guidedtours/src/Model/StepModel.php +++ b/administrator/components/com_guidedtours/src/Model/StepModel.php @@ -238,7 +238,6 @@ protected function loadFormData() */ public function getItem($pk = null) { - if ($result = parent::getItem($pk)) { $app = Factory::getApplication(); From 2d69f54e959709dc3fa1d7b7068e4f9a36bcca19 Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Sat, 2 Sep 2023 10:36:25 -0400 Subject: [PATCH 113/127] Update GuidedTours.php Removed spaces in startTour --- plugins/system/guidedtours/src/Extension/GuidedTours.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/system/guidedtours/src/Extension/GuidedTours.php b/plugins/system/guidedtours/src/Extension/GuidedTours.php index 576c3f4780ce4..06adef4694bdd 100644 --- a/plugins/system/guidedtours/src/Extension/GuidedTours.php +++ b/plugins/system/guidedtours/src/Extension/GuidedTours.php @@ -104,7 +104,7 @@ public static function getSubscribedEvents(): array */ public function startTour(Event $event) { - $tourId = (int) $this->getApplication()->getInput()->getInt('id'); + $tourId = (int) $this->getApplication()->getInput()->getInt('id'); $tourUid = $this->getApplication()->getInput()->getString('uid'); $tourUid = $tourUid !== '' ? urldecode($tourUid) : ''; From 8ae7387a9897838db9958ad832b43bed35d0dd31 Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Sat, 2 Sep 2023 10:44:59 -0400 Subject: [PATCH 114/127] Update extensions.sql Wrong column name alias and extensions column update --- installation/sql/postgresql/extensions.sql | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/installation/sql/postgresql/extensions.sql b/installation/sql/postgresql/extensions.sql index fcece916e647a..ac21cf339121e 100644 --- a/installation/sql/postgresql/extensions.sql +++ b/installation/sql/postgresql/extensions.sql @@ -939,18 +939,18 @@ CREATE INDEX "#__guidedtours_idx_uid" ON "#__guidedtours" ("uid"); -- Dumping data for table `#__guidedtours` -- -INSERT INTO "#__guidedtours" ("id", "title", "alias", "description", "ordering", "extensions", "url", "created", "created_by", "modified", "modified_by", "checked_out_time", "checked_out", "published", "language", "access") VALUES +INSERT INTO "#__guidedtours" ("id", "title", "uid", "description", "ordering", "extensions", "url", "created", "created_by", "modified", "modified_by", "checked_out_time", "checked_out", "published", "language", "access") VALUES (1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE', 'joomla-guidedtours', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION', 1, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), (2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'joomla-guidedtoursteps', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'joomla-articles', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["*"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'joomla-categories', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["*"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'joomla-menus', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["*"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(6, 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE', 'joomla-tags', 'COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION', 6, '["*"]', 'administrator/index.php?option=com_tags&view=tags', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(7, 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE', 'joomla-banners', 'COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION', 7, '["*"]', 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE', 'joomla-contacts', 'COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION', 8, '["*"]', 'administrator/index.php?option=com_contact&view=contacts', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE', 'joomla-newsfeeds', 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION', 9, '["*"]', 'administrator/index.php?option=com_newsfeeds&view=newsfeeds', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE', 'joomla-smartsearch', 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION', 10, '["*"]', 'administrator/index.php?option=com_finder&view=filters', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), -(11, 'COM_GUIDEDTOURS_TOUR_USERS_TITLE', 'joomla-users', 'COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION', 11, '["*"]', 'administrator/index.php?option=com_users&view=users', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1); +(3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'joomla-articles', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["com_content","com_categories"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'joomla-categories', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["com_content","com_categories"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'joomla-menus', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["com_menus"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(6, 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE', 'joomla-tags', 'COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION', 6, '["com_tags"]', 'administrator/index.php?option=com_tags&view=tags', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(7, 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE', 'joomla-banners', 'COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION', 7, '["com_banners"]', 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE', 'joomla-contacts', 'COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION', 8, '["com_contact"]', 'administrator/index.php?option=com_contact&view=contacts', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE', 'joomla-newsfeeds', 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION', 9, '["com_newsfeeds"]', 'administrator/index.php?option=com_newsfeeds&view=newsfeeds', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE', 'joomla-smartsearch', 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION', 10, '["com_finder"]', 'administrator/index.php?option=com_finder&view=filters', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1), +(11, 'COM_GUIDEDTOURS_TOUR_USERS_TITLE', 'joomla-users', 'COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION', 11, '["com_users"]', 'administrator/index.php?option=com_users&view=users', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, NULL, 1, '*', 1); SELECT setval('#__guidedtours_id_seq', 12, false); From 5f66dbf536f6cd71c97aea8489cebe0f29553f39 Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Sat, 2 Sep 2023 10:46:57 -0400 Subject: [PATCH 115/127] Update extensions.sql Updates extensions column --- installation/sql/mysql/extensions.sql | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/installation/sql/mysql/extensions.sql b/installation/sql/mysql/extensions.sql index 1cecb47432107..4d74452f77c97 100644 --- a/installation/sql/mysql/extensions.sql +++ b/installation/sql/mysql/extensions.sql @@ -978,15 +978,15 @@ CREATE TABLE IF NOT EXISTS `#__guidedtours` ( INSERT INTO `#__guidedtours` (`id`, `title`, `uid`, `description`, `ordering`, `extensions`, `url`, `created`, `created_by`, `modified`, `modified_by`, `checked_out_time`, `checked_out`, `published`, `language`, `access`) VALUES (1, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_TITLE', 'joomla-guidedtours', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURS_DESCRIPTION', 1, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), (2, 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_TITLE', 'joomla-guidedtoursteps', 'COM_GUIDEDTOURS_TOUR_GUIDEDTOURSTEPS_DESCRIPTION', 2, '["com_guidedtours"]', 'administrator/index.php?option=com_guidedtours&view=tours', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'joomla-articles', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["*"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'joomla-categories', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["*"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'joomla-menus', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["*"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(6, 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE', 'joomla-tags', 'COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION', 6, '["*"]', 'administrator/index.php?option=com_tags&view=tags', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(7, 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE', 'joomla-banners', 'COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION', 7, '["*"]', 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE', 'joomla-contacts', 'COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION', 8, '["*"]', 'administrator/index.php?option=com_contact&view=contacts', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE', 'joomla-newsfeeds', 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION', 9, '["*"]', 'administrator/index.php?option=com_newsfeeds&view=newsfeeds', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE', 'joomla-smartsearch', 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION', 10, '["*"]', 'administrator/index.php?option=com_finder&view=filters', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), -(11, 'COM_GUIDEDTOURS_TOUR_USERS_TITLE', 'joomla-users', 'COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION', 11, '["*"]', 'administrator/index.php?option=com_users&view=users', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1); +(3, 'COM_GUIDEDTOURS_TOUR_ARTICLES_TITLE', 'joomla-articles', 'COM_GUIDEDTOURS_TOUR_ARTICLES_DESCRIPTION', 3, '["com_content","com_categories"]', 'administrator/index.php?option=com_content&view=articles', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(4, 'COM_GUIDEDTOURS_TOUR_CATEGORIES_TITLE', 'joomla-categories', 'COM_GUIDEDTOURS_TOUR_CATEGORIES_DESCRIPTION', 4, '["com_content","com_categories"]', 'administrator/index.php?option=com_categories&view=categories&extension=com_content', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(5, 'COM_GUIDEDTOURS_TOUR_MENUS_TITLE', 'joomla-menus', 'COM_GUIDEDTOURS_TOUR_MENUS_DESCRIPTION', 5, '["com_menus"]', 'administrator/index.php?option=com_menus&view=menus', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(6, 'COM_GUIDEDTOURS_TOUR_TAGS_TITLE', 'joomla-tags', 'COM_GUIDEDTOURS_TOUR_TAGS_DESCRIPTION', 6, '["com_tags"]', 'administrator/index.php?option=com_tags&view=tags', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(7, 'COM_GUIDEDTOURS_TOUR_BANNERS_TITLE', 'joomla-banners', 'COM_GUIDEDTOURS_TOUR_BANNERS_DESCRIPTION', 7, '["com_banners"]', 'administrator/index.php?option=com_banners&view=banners', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(8, 'COM_GUIDEDTOURS_TOUR_CONTACTS_TITLE', 'joomla-contacts', 'COM_GUIDEDTOURS_TOUR_CONTACTS_DESCRIPTION', 8, '["com_contact"]', 'administrator/index.php?option=com_contact&view=contacts', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(9, 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_TITLE', 'joomla-newsfeeds', 'COM_GUIDEDTOURS_TOUR_NEWSFEEDS_DESCRIPTION', 9, '["com_newsfeeds"]', 'administrator/index.php?option=com_newsfeeds&view=newsfeeds', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(10, 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_TITLE', 'joomla-smartsearch', 'COM_GUIDEDTOURS_TOUR_SMARTSEARCH_DESCRIPTION', 10, '["com_finder"]', 'administrator/index.php?option=com_finder&view=filters', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1), +(11, 'COM_GUIDEDTOURS_TOUR_USERS_TITLE', 'joomla-users', 'COM_GUIDEDTOURS_TOUR_USERS_DESCRIPTION', 11, '["com_users"]', 'administrator/index.php?option=com_users&view=users', CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, NULL, 1, '*', 1); -- -------------------------------------------------------- From b88b8166d679013e06b28e96e77e77576e6a4029 Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Sat, 2 Sep 2023 11:00:44 -0400 Subject: [PATCH 116/127] Update TourTable.php Removed spaces --- .../components/com_guidedtours/src/Table/TourTable.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/administrator/components/com_guidedtours/src/Table/TourTable.php b/administrator/components/com_guidedtours/src/Table/TourTable.php index e7acfc68ad8d9..d87188d66735c 100644 --- a/administrator/components/com_guidedtours/src/Table/TourTable.php +++ b/administrator/components/com_guidedtours/src/Table/TourTable.php @@ -132,9 +132,8 @@ protected function setTourUid() if ($pos !== false) { $uidTitle = substr($uidTitle, 0, $pos); } - } - // Tour follows component naming pattern - elseif (preg_match('#COM_(\w+)_TOUR_#', $this->title) && str_ends_with($this->title, '_TITLE')) { + } elseif (preg_match('#COM_(\w+)_TOUR_#', $this->title) && str_ends_with($this->title, '_TITLE')) { + // Tour follows component naming pattern $uidTitle = preg_replace('#COM_(\w+)_TOUR_#', '$1.', $this->title); // Remove the last _TITLE part @@ -155,7 +154,7 @@ protected function setTourUid() } // ApplicationHelper::stringURLSafe will replace a period (.) separator so we split the construction into multiple parts $uidTitleParts = explode('.', $uidTitle); - array_walk($uidTitleParts, function (& $value, $key, $tourLanguage) { + array_walk($uidTitleParts, function (&$value, $key, $tourLanguage) { $value = ApplicationHelper::stringURLSafe($value, $tourLanguage); }, $this->lang); $this->uid = implode('.', $uidTitleParts); From edbcea90c5717fff2cb80b2e626b6e7f30b99a58 Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Sat, 2 Sep 2023 11:01:16 -0400 Subject: [PATCH 117/127] Update GuidedtoursHelper.php Removed spaces --- .../components/com_guidedtours/src/Helper/GuidedtoursHelper.php | 1 - 1 file changed, 1 deletion(-) diff --git a/administrator/components/com_guidedtours/src/Helper/GuidedtoursHelper.php b/administrator/components/com_guidedtours/src/Helper/GuidedtoursHelper.php index 537caf83aade2..c2537556389a4 100644 --- a/administrator/components/com_guidedtours/src/Helper/GuidedtoursHelper.php +++ b/administrator/components/com_guidedtours/src/Helper/GuidedtoursHelper.php @@ -82,7 +82,6 @@ public static function loadTranslationFiles($uid, bool $steps = false) default: $source = JPATH_ADMINISTRATOR . '/components/com_' . $extension; break; - } $lang->load($extension . '.' . str_replace('-', '_', $tourid), JPATH_ADMINISTRATOR) From 82a3e2cdf20d86e4170ea2eb1d0d7d9722b015f9 Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Sat, 2 Sep 2023 11:03:19 -0400 Subject: [PATCH 118/127] Update edit.php Removed tabs --- .../components/com_guidedtours/tmpl/tour/edit.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/administrator/components/com_guidedtours/tmpl/tour/edit.php b/administrator/components/com_guidedtours/tmpl/tour/edit.php index 63ff5db5c7ff6..dce454a24da0c 100644 --- a/administrator/components/com_guidedtours/tmpl/tour/edit.php +++ b/administrator/components/com_guidedtours/tmpl/tour/edit.php @@ -30,16 +30,16 @@ -
-
+
+
form->renderField('title'); ?> -
-
+
+
form->renderField('uid'); ?> -
-
+
+
- item->id != 0 && strpos($this->item->title, 'GUIDEDTOUR') !== false) : ?> + item->id != 0 && strpos($this->item->title, 'GUIDEDTOUR') !== false) : ?>
form->setFieldAttribute('title_translation', 'label', Text::sprintf('COM_GUIDEDTOURS_TITLE_TRANSLATION', $lang)); ?> From d4d425b99fa045a5a5882a4e998b5266823006f5 Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Sat, 2 Sep 2023 11:03:42 -0400 Subject: [PATCH 119/127] Update administrator/components/com_admin/script.php Co-authored-by: Quy --- administrator/components/com_admin/script.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index 32b846941a7c7..014cf8e2eaed5 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -2376,7 +2376,7 @@ private function setGuidedToursUid(): bool $model = Factory::getApplication()->bootComponent('com_guidedtours')->getMVCFactory() ->createModel('Tours', 'Administrator', ['ignore_request' => true]); - $items = $model->getItems(); + $items = $model->getItems(); foreach ($items as $item) { // Set uid for tours where it is empty From f58ecbdb85ee4e25cf80cb3f96c8781e64300d2d Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Sat, 2 Sep 2023 11:05:09 -0400 Subject: [PATCH 120/127] Update script.php Removed spaces --- administrator/components/com_admin/script.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index 014cf8e2eaed5..b730e80da00b8 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -2393,9 +2393,8 @@ private function setGuidedToursUid(): bool if ($pos !== false) { $uidTitle = substr($uidTitle, 0, $pos); } - } - // Tour follows component naming pattern - elseif (preg_match('#COM_(\w+)_TOUR_#', $tourItem->title) && str_ends_with($tourItem->title, '_TITLE')) { + } elseif (preg_match('#COM_(\w+)_TOUR_#', $tourItem->title) && str_ends_with($tourItem->title, '_TITLE')) { + // Tour follows component naming pattern $uidTitle = preg_replace('#COM_(\w+)_TOUR_#', '$1.', $tourItem->title); // Remove the last _TITLE part @@ -2416,7 +2415,7 @@ private function setGuidedToursUid(): bool } // ApplicationHelper::stringURLSafe will replace a period (.) separator so we split the construction into multiple parts $uidTitleParts = explode('.', $uidTitle); - array_walk($uidTitleParts, function (& $value, $key, $tourLanguage) { + array_walk($uidTitleParts, function (&$value, $key, $tourLanguage) { $value = ApplicationHelper::stringURLSafe($value, $tourLanguage); }, $tourItem->lang); $tourItem->uid = implode('.', $uidTitleParts); From f75e5bb8d8b5d7460f8354a7e60f74559148485c Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Sat, 2 Sep 2023 11:06:05 -0400 Subject: [PATCH 121/127] Update administrator/components/com_admin/script.php Co-authored-by: Quy --- administrator/components/com_admin/script.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index b730e80da00b8..e61f81fcb559f 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -2389,7 +2389,7 @@ private function setGuidedToursUid(): bool $uidTitle = 'joomla_' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $tourItem->title); // Remove the last _TITLE part - $pos = strrpos($uidTitle, "_TITLE"); + $pos = strrpos($uidTitle, '_TITLE'); if ($pos !== false) { $uidTitle = substr($uidTitle, 0, $pos); } From 5ba7f45a43a81c9a4b9d4158affaf44871e698b9 Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Sat, 2 Sep 2023 20:41:23 -0400 Subject: [PATCH 122/127] Update GuidedTours.php Fix deprecated urldecode(): Passing null to parameter #1, preventing tours to start --- plugins/system/guidedtours/src/Extension/GuidedTours.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/system/guidedtours/src/Extension/GuidedTours.php b/plugins/system/guidedtours/src/Extension/GuidedTours.php index 06adef4694bdd..0c73365ba8f10 100644 --- a/plugins/system/guidedtours/src/Extension/GuidedTours.php +++ b/plugins/system/guidedtours/src/Extension/GuidedTours.php @@ -105,10 +105,10 @@ public static function getSubscribedEvents(): array public function startTour(Event $event) { $tourId = (int) $this->getApplication()->getInput()->getInt('id'); - $tourUid = $this->getApplication()->getInput()->getString('uid'); + $tourUid = $this->getApplication()->getInput()->getString('uid', ''); $tourUid = $tourUid !== '' ? urldecode($tourUid) : ''; - $tour = null; + $tour = null; if ($tourId > 0) { $tour = $this->getTour($tourId); From 5964f64dbcd104be4fdf576ca9bf854d04a793f7 Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Sat, 2 Sep 2023 20:42:41 -0400 Subject: [PATCH 123/127] Update GuidedtoursHelper.php Removed space --- .../components/com_guidedtours/src/Helper/GuidedtoursHelper.php | 1 - 1 file changed, 1 deletion(-) diff --git a/administrator/components/com_guidedtours/src/Helper/GuidedtoursHelper.php b/administrator/components/com_guidedtours/src/Helper/GuidedtoursHelper.php index c2537556389a4..ca60ebc4c90c3 100644 --- a/administrator/components/com_guidedtours/src/Helper/GuidedtoursHelper.php +++ b/administrator/components/com_guidedtours/src/Helper/GuidedtoursHelper.php @@ -97,7 +97,6 @@ public static function loadTranslationFiles($uid, bool $steps = false) } } - $cache[$uid] = true; return; From e24c947814f11ca3e0c424ef464db39d30ad5a0f Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Sat, 2 Sep 2023 20:56:36 -0400 Subject: [PATCH 124/127] Update TourTable.php $this->lang changed into $this->language --- .../components/com_guidedtours/src/Table/TourTable.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/administrator/components/com_guidedtours/src/Table/TourTable.php b/administrator/components/com_guidedtours/src/Table/TourTable.php index d87188d66735c..5373c4f0730b8 100644 --- a/administrator/components/com_guidedtours/src/Table/TourTable.php +++ b/administrator/components/com_guidedtours/src/Table/TourTable.php @@ -144,7 +144,7 @@ protected function setTourUid() } else { $uri = Uri::getInstance(); $host = $uri->toString(['host']); - $host = ApplicationHelper::stringURLSafe($host, $this->lang); + $host = ApplicationHelper::stringURLSafe($host, $this->language); $uidTitle = $host . ' ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $this->title); // Remove the last _TITLE part if (str_ends_with($uidTitle, '_TITLE')) { @@ -156,7 +156,7 @@ protected function setTourUid() $uidTitleParts = explode('.', $uidTitle); array_walk($uidTitleParts, function (&$value, $key, $tourLanguage) { $value = ApplicationHelper::stringURLSafe($value, $tourLanguage); - }, $this->lang); + }, $this->language); $this->uid = implode('.', $uidTitleParts); $this->store(); From e1b689e4c0a8a210eda3e065846883ccd389de23 Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Sat, 2 Sep 2023 21:00:58 -0400 Subject: [PATCH 125/127] Update script.php Removed return value from setGuidedToursUid() --- administrator/components/com_admin/script.php | 1 - 1 file changed, 1 deletion(-) diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index e61f81fcb559f..def79bca2a9b8 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -2423,7 +2423,6 @@ private function setGuidedToursUid(): bool $tourItem->store(); } } - return true; } /** From 94a912c20b6acd66eea129733e1f55d6bba8ec27 Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Sat, 2 Sep 2023 21:08:04 -0400 Subject: [PATCH 126/127] Update script.php changed $tourItem->lang into $tourItem->language in setGuidedToursUid --- administrator/components/com_admin/script.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index def79bca2a9b8..1dd844855f96c 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -2405,7 +2405,7 @@ private function setGuidedToursUid(): bool } else { $uri = Uri::getInstance(); $host = $uri->toString(['host']); - $host = ApplicationHelper::stringURLSafe($host, $tourItem->lang); + $host = ApplicationHelper::stringURLSafe($host, $tourItem->language); $uidTitle = $host . ' ' . str_replace('COM_GUIDEDTOURS_TOUR_', '', $tourItem->title); // Remove the last _TITLE part if (str_ends_with($uidTitle, '_TITLE')) { @@ -2417,7 +2417,7 @@ private function setGuidedToursUid(): bool $uidTitleParts = explode('.', $uidTitle); array_walk($uidTitleParts, function (&$value, $key, $tourLanguage) { $value = ApplicationHelper::stringURLSafe($value, $tourLanguage); - }, $tourItem->lang); + }, $tourItem->language); $tourItem->uid = implode('.', $uidTitleParts); $tourItem->store(); From 2ae15a68805d4fcd044c00f3294ba33e82c238e7 Mon Sep 17 00:00:00 2001 From: Olivier Buisard Date: Sat, 2 Sep 2023 21:46:49 -0400 Subject: [PATCH 127/127] Update script.php Removed :bool from setGuidedToursUid --- administrator/components/com_admin/script.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index 1dd844855f96c..6c8246fc5e99e 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -2370,7 +2370,7 @@ private function migrateTinymceConfiguration(): bool * * @since __DEPLOY_VERSION__ */ - private function setGuidedToursUid(): bool + private function setGuidedToursUid() { /** @var \Joomla\Component\Cache\Administrator\Model\CacheModel $model */ $model = Factory::getApplication()->bootComponent('com_guidedtours')->getMVCFactory()