From cc91098d0aa821877d78a87e3777e28e0a1986c7 Mon Sep 17 00:00:00 2001 From: aB0t Date: Mon, 11 Mar 2024 18:34:39 +0200 Subject: [PATCH] Release of v2.0.0 --- componentbuilderlanguagetabs.php | 12 +- componentbuilderlanguagetabs.xml | 6 +- fields/excludedlanguages.php | 180 ------------------ ...g_content_componentbuilderlanguagetabs.ini | 2 +- ...ntent_componentbuilderlanguagetabs.sys.ini | 2 +- script.php | 70 ------- 6 files changed, 9 insertions(+), 263 deletions(-) delete mode 100644 fields/excludedlanguages.php diff --git a/componentbuilderlanguagetabs.php b/componentbuilderlanguagetabs.php index d200866..0903d5f 100644 --- a/componentbuilderlanguagetabs.php +++ b/componentbuilderlanguagetabs.php @@ -12,23 +12,19 @@ // No direct access to this file defined('_JEXEC') or die('Restricted access'); -use Joomla\CMS\Application\CMSApplication; use Joomla\CMS\Plugin\CMSPlugin; -use Joomla\Registry\Registry; use Joomla\CMS\Form\Form; - -JLoader::register('ComponentbuilderHelper', JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php'); /** * Content - Componentbuilder Language Tabs plugin. * * @package ComponentbuilderLanguageTabs - * @since 1.0.2 + * @since 2.0.0 */ class PlgContentComponentbuilderLanguageTabs extends CMSPlugin { /** - * Affects constructor behavior. If true, language files will be loaded automatically. + * Affects constructor behaviour. If true, language files will be loaded automatically. * * @var boolean * @since 1.0 @@ -38,8 +34,8 @@ class PlgContentComponentbuilderLanguageTabs extends CMSPlugin /** * Runs on content preparation of form. * - * @param JForm $form The form - * @param stdClass $data The data + * @param Form $form The form + * @param \stdClass $data The data * * @return boolean * diff --git a/componentbuilderlanguagetabs.xml b/componentbuilderlanguagetabs.xml index 838259d..5fda546 100644 --- a/componentbuilderlanguagetabs.xml +++ b/componentbuilderlanguagetabs.xml @@ -1,13 +1,13 @@ - + PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS - 9th March, 2024 + 11th March, 2024 Llewellyn van der Merwe joomla@vdm.io https://dev.vdm.io Copyright (C) 2015 Vast Development Method. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt - 1.0.2 + 2.0.0 PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_XML_DESCRIPTION diff --git a/fields/excludedlanguages.php b/fields/excludedlanguages.php deleted file mode 100644 index 231117c..0000000 --- a/fields/excludedlanguages.php +++ /dev/null @@ -1,180 +0,0 @@ - - * @git Joomla Component Builder - * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. - * @license GNU General Public License version 2 or later; see LICENSE.txt - */ - -// No direct access to this file -defined('_JEXEC') or die('Restricted access'); - -use Joomla\CMS\Factory; -use Joomla\CMS\Language\Text; -use Joomla\CMS\HTML\HTMLHelper as Html; - -// import the list field type -jimport('joomla.form.helper'); -JFormHelper::loadFieldClass('list'); - -/** - * Excludedlanguages Form Field class for the Componentbuilder component - */ -class JFormFieldExcludedlanguages extends JFormFieldList -{ - /** - * The excludedlanguages field type. - * - * @var string - */ - public $type = 'excludedlanguages'; - - /** - * Override to add new button - * - * @return string The field input markup. - * - * @since 3.2 - */ - protected function getInput() - { - // see if we should add buttons - $set_button = $this->getAttribute('button'); - // get html - $html = parent::getInput(); - // if true set button - if ($set_button === 'true') - { - $button = array(); - $script = array(); - $button_code_name = $this->getAttribute('name'); - // get the input from url - $app = Factory::getApplication(); - $jinput = $app->input; - // get the view name & id - $values = $jinput->getArray(array( - 'id' => 'int', - 'view' => 'word' - )); - // check if new item - $ref = ''; - $refJ = ''; - if (!is_null($values['id']) && strlen($values['view'])) - { - // only load referral if not new item. - $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; - $refJ = '&ref=' . $values['view'] . '&refid=' . $values['id']; - // get the return value. - $_uri = (string) \Joomla\CMS\Uri\Uri::getInstance(); - $_return = urlencode(base64_encode($_uri)); - // load return value. - $ref .= '&return=' . $_return; - $refJ .= '&return=' . $_return; - } - // get button label - $button_label = trim($button_code_name); - $button_label = preg_replace('/_+/', ' ', $button_label); - $button_label = preg_replace('/\s+/', ' ', $button_label); - $button_label = preg_replace("/[^A-Za-z ]/", '', $button_label); - $button_label = ucfirst(strtolower($button_label)); - // get user object - $user = Factory::getUser(); - // only add if user allowed to create language - if ($user->authorise('language.create', 'com_componentbuilder') && $app->isClient('administrator')) // TODO for now only in admin area. - { - // build Create button - $button[] = ' - '; - } - // only add if user allowed to edit language - if ($user->authorise('language.edit', 'com_componentbuilder') && $app->isClient('administrator')) // TODO for now only in admin area. - { - // build edit button - $button[] = ''; - // build script - $script[] = " - jQuery(document).ready(function() { - jQuery('#adminForm').on('change', '#jform_".$button_code_name."',function (e) { - e.preventDefault(); - var ".$button_code_name."Value = jQuery('#jform_".$button_code_name."').val(); - ".$button_code_name."Button(".$button_code_name."Value); - }); - var ".$button_code_name."Value = jQuery('#jform_".$button_code_name."').val(); - ".$button_code_name."Button(".$button_code_name."Value); - }); - function ".$button_code_name."Button(value) { - if (value > 0) { - // hide the create button - jQuery('#".$button_code_name."Create').hide(); - // show edit button - jQuery('#".$button_code_name."Edit').show(); - var url = 'index.php?option=com_componentbuilder&view=languages&task=language.edit&id='+value+'".$refJ."'; - jQuery('#".$button_code_name."Edit').attr('href', url); - } else { - // show the create button - jQuery('#".$button_code_name."Create').show(); - // hide edit button - jQuery('#".$button_code_name."Edit').hide(); - } - }"; - } - // check if button was created for language field. - if (is_array($button) && count($button) > 0) - { - // Load the needed script. - $document = Factory::getDocument(); - $document->addScriptDeclaration(implode(' ',$script)); - // return the button attached to input field. - return '
' .$html . implode('',$button).'
'; - } - } - return $html; - } - - /** - * Method to get a list of options for a list input. - * - * @return array An array of Html options. - */ - protected function getOptions() - { - $db = JFactory::getDBO(); - $query = $db->getQuery(true); - $query->select($db->quoteName(array('a.langtag','a.name'),array('langtag','languages_name'))); - $query->from($db->quoteName('#__componentbuilder_language', 'a')); - $query->where($db->quoteName('a.published') . ' >= 1'); - $query->order('a.langtag ASC'); - $db->setQuery((string)$query); - $items = $db->loadObjectList(); - // add the main language - $main_lang = trim(JComponentHelper::getParams('com_componentbuilder')->get('language', 'en-GB')); - // check if any language was added - $wasAdded = false; - $options = array(); - if ($items) - { - $options[] = JHtml::_('select.option', '', 'Select an option'); - foreach($items as $item) - { - $item->langtag = trim($item->langtag); - // do not add main language - if ($main_lang !== $item->langtag) - { - $options[] = JHtml::_('select.option', $item->langtag, $item->languages_name . ' (' .$item->langtag.')'); - $wasAdded = true; - } - } - } - // now if none was added give notice - if (!$wasAdded) - { - $options[] = JHtml::_('select.option', '', 'Add languages to select'); - } - return $options; - } -} diff --git a/language/en-GB/en-GB.plg_content_componentbuilderlanguagetabs.ini b/language/en-GB/en-GB.plg_content_componentbuilderlanguagetabs.ini index c1ba828..8a67c13 100644 --- a/language/en-GB/en-GB.plg_content_componentbuilderlanguagetabs.ini +++ b/language/en-GB/en-GB.plg_content_componentbuilderlanguagetabs.ini @@ -1,6 +1,6 @@ PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS="Content - Componentbuilder Language Tabs" PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_DESCRIPTION="This plugin is used to link your components to the language packaging and extending options, so you can set all the required details for the integration." -PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_XML_DESCRIPTION="

Content - Componentbuilder Language Tabs (v.1.0.2)

This plugin is used to link your components to the language packaging and extending options, so you can set all the required details for the integration.

Created by Llewellyn van der Merwe
Development started 19th March, 2020

" +PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_XML_DESCRIPTION="

Content - Componentbuilder Language Tabs (v.2.0.0)

This plugin is used to link your components to the language packaging and extending options, so you can set all the required details for the integration.

Created by Llewellyn van der Merwe
Development started 10th March, 2024

" PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_LANGUAGE_OPTIONS="Language Options" PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_NOTE_LANGUAGE_NOTE_LABEL="Would you like to move languages to their own packages?" PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_NOTE_LANGUAGE_NOTE_DESCRIPTION="

Adding all your translations to your component can increase its size dramatically, so now you are able to move each extra language translation to its own installing package, leaving just your main language in the component.

Please note that this is only relevant if you actually have added extra translations to your component in the Language Translations area of JCB.

" diff --git a/language/en-GB/en-GB.plg_content_componentbuilderlanguagetabs.sys.ini b/language/en-GB/en-GB.plg_content_componentbuilderlanguagetabs.sys.ini index c1ba828..8a67c13 100644 --- a/language/en-GB/en-GB.plg_content_componentbuilderlanguagetabs.sys.ini +++ b/language/en-GB/en-GB.plg_content_componentbuilderlanguagetabs.sys.ini @@ -1,6 +1,6 @@ PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS="Content - Componentbuilder Language Tabs" PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_DESCRIPTION="This plugin is used to link your components to the language packaging and extending options, so you can set all the required details for the integration." -PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_XML_DESCRIPTION="

Content - Componentbuilder Language Tabs (v.1.0.2)

This plugin is used to link your components to the language packaging and extending options, so you can set all the required details for the integration.

Created by Llewellyn van der Merwe
Development started 19th March, 2020

" +PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_XML_DESCRIPTION="

Content - Componentbuilder Language Tabs (v.2.0.0)

This plugin is used to link your components to the language packaging and extending options, so you can set all the required details for the integration.

Created by Llewellyn van der Merwe
Development started 10th March, 2024

" PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_LANGUAGE_OPTIONS="Language Options" PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_NOTE_LANGUAGE_NOTE_LABEL="Would you like to move languages to their own packages?" PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_NOTE_LANGUAGE_NOTE_DESCRIPTION="

Adding all your translations to your component can increase its size dramatically, so now you are able to move each extra language translation to its own installing package, leaving just your main language in the component.

Please note that this is only relevant if you actually have added extra translations to your component in the Language Translations area of JCB.

" diff --git a/script.php b/script.php index 8b1142d..b301c03 100644 --- a/script.php +++ b/script.php @@ -24,74 +24,4 @@ use Joomla\CMS\Filesystem\Folder; */ class plgContentComponentbuilderLanguageTabsInstallerScript { - - /** - * Called before any type of action - * - * @param string $route Which action is happening (install|uninstall|discover_install|update) - * @param Joomla\CMS\Installer\InstallerAdapter $adapter The object responsible for running this script - * - * @return boolean True on success - */ - public function preflight($route, $adapter) - { - // get application - $app = Factory::getApplication(); - - // the default for both install and update - $jversion = new JVersion(); - if (!$jversion->isCompatible('3.8.0')) - { - $app->enqueueMessage('Please upgrade to at least Joomla! 3.8.0 before continuing!', 'error'); - return false; - } - - if ('install' === $route) - { -// needs fix - - - // check that componentbuilder is installed - $pathToCore = JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php'; - if (!JFile::exists($pathToCore)) - { - $app->enqueueMessage('Joomla Component Builder must first be installed from Joomla Component Builder.', 'error'); - return false; - } - - // load the helper class - JLoader::register('ComponentbuilderHelper', JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php'); - - // block install - $blockInstall = true; - - // check the version of JCB - $manifest = ComponentbuilderHelper::manifest(); - if (isset($manifest->version) && strpos($manifest->version, '.') !== false) - { - // get the version - $jcbVersion = explode('.', $manifest->version); - // check that we have JCB 3.0.0 or higher installed - if (count($jcbVersion) == 3 && $jcbVersion[0] >= 3 && - ( - ($jcbVersion[0] == 3 && $jcbVersion[1] == 0 && $jcbVersion[2] >= 0) || - ($jcbVersion[0] == 3 && $jcbVersion[1] > 0) || - $jcbVersion[0] > 3) - ) - { - $blockInstall = false; - } - } - - // allow install if all conditions are met - if ($blockInstall) - { - $app->enqueueMessage('Please upgrade to JCB v3.0.0 or higher before installing this plugin.', 'error'); - return false; - } - - } - - return true; - } }