diff --git a/componentbuildercomponentheaderstabs.php b/componentbuildercomponentheaderstabs.php index cce5b3c..1602459 100644 --- a/componentbuildercomponentheaderstabs.php +++ b/componentbuildercomponentheaderstabs.php @@ -1,12 +1,12 @@ - * @github 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 +/** + * @package Joomla.Component.Builder + * + * @created 30th April, 2015 + * @author Llewellyn van der Merwe + * @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 @@ -21,7 +21,7 @@ JLoader::register('ComponentbuilderHelper', JPATH_ADMINISTRATOR . '/components/c * Content - Componentbuilder Component Headers Tabs plugin. * * @package ComponentbuilderComponentHeadersTabs - * @since 1.0.0 + * @since 1.0.1 */ class PlgContentComponentbuilderComponentHeadersTabs extends CMSPlugin { diff --git a/componentbuildercomponentheaderstabs.xml b/componentbuildercomponentheaderstabs.xml index 407895f..28e76be 100644 --- a/componentbuildercomponentheaderstabs.xml +++ b/componentbuildercomponentheaderstabs.xml @@ -1,13 +1,13 @@ - + PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS - 20th February, 2021 + 16th December, 2021 Llewellyn van der Merwe - llewellyn@joomlacomponentbuilder.com - http://www.joomlacomponentbuilder.com + 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.0 + 1.0.1 PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_XML_DESCRIPTION diff --git a/fields/powers.php b/fields/powers.php new file mode 100644 index 0000000..ebcbcd3 --- /dev/null +++ b/fields/powers.php @@ -0,0 +1,184 @@ + + * @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'); + +// import the list field type +jimport('joomla.form.helper'); +JFormHelper::loadFieldClass('list'); + +/** + * Powers Form Field class for the Componentbuilder component + */ +class JFormFieldPowers extends JFormFieldList +{ + /** + * The powers field type. + * + * @var string + */ + public $type = 'powers'; + + /** + * 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 = JFactory::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) JUri::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 = JFactory::getUser(); + // only add if user allowed to create power + if ($user->authorise('power.create', 'com_componentbuilder') && $app->isAdmin()) // TODO for now only in admin area. + { + // build Create button + $button[] = ' + '; + } + // only add if user allowed to edit power + if ($user->authorise('power.edit', 'com_componentbuilder') && $app->isAdmin()) // 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=powers&task=power.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 power field. + if (is_array($button) && count($button) > 0) + { + // Load the needed script. + $document = JFactory::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 JHtml options. + */ + protected function getOptions() + { + // Get the user object. + $user = JFactory::getUser(); + // Get the databse object. + $db = JFactory::getDBO(); + $query = $db->getQuery(true); + $query->select($db->quoteName(array('a.id','a.system_name','a.name','a.type','a.power_version'),array('id','power_admin_component_system_name','name','type','version'))); + $query->from($db->quoteName('#__componentbuilder_power', 'a')); + $query->where($db->quoteName('a.published') . ' >= 1'); + $query->order('a.system_name ASC'); + $query->order('a.type ASC'); + // Implement View Level Access (if set in table) + if (!$user->authorise('core.options', 'com_componentbuilder')) + { + $columns = $db->getTableColumns('#__componentbuilder_power'); + if(isset($columns['access'])) + { + $groups = implode(',', $user->getAuthorisedViewLevels()); + $query->where('a.access IN (' . $groups . ')'); + } + } + $db->setQuery((string)$query); + $items = $db->loadObjectList(); + $options = array(); + // if none was found, we add this to set an alternative to set custom + if (!$items) + { + $options[] = JHtml::_('select.option', '', JText::_('PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_NONE_FOUND')); + } + if ($items) + { + if ($this->multiple === false) + { + $options[] = JHtml::_('select.option', '', JText::_('PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_SELECT_AN_OPTION')); + } + foreach($items as $item) + { + $options[] = JHtml::_('select.option', $item->id, $item->power_admin_component_system_name . ' [' . $item->type . ' ' . $item->name . '] (v' . $item->version . ')'); + } + } + return $options; + + } +} diff --git a/forms/joomla_component.xml b/forms/joomla_component.xml index 311ab6e..f6b925a 100644 --- a/forms/joomla_component.xml +++ b/forms/joomla_component.xml @@ -39,6 +39,18 @@ validate="code" showon="add_admin_component:1" /> + + + + + + + + diff --git a/language/en-GB/en-GB.plg_content_componentbuildercomponentheaderstabs.ini b/language/en-GB/en-GB.plg_content_componentbuildercomponentheaderstabs.ini index 07c4f42..36a5f64 100644 --- a/language/en-GB/en-GB.plg_content_componentbuildercomponentheaderstabs.ini +++ b/language/en-GB/en-GB.plg_content_componentbuildercomponentheaderstabs.ini @@ -1,18 +1,28 @@ PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS="Content - Componentbuilder Component Headers Tabs" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_DESCRIPTION="This plugin is used to set component class custom headers." -PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_XML_DESCRIPTION="

Content - Componentbuilder Component Headers Tabs (v.1.0.0)

This plugin is used to set component class custom headers.

Created by Llewellyn van der Merwe
Development started 26th December, 2020

" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_XML_DESCRIPTION="

Content - Componentbuilder Component Headers Tabs (v.1.0.1)

This plugin is used to set component class custom headers.

Created by Llewellyn van der Merwe
Development started 26th December, 2020

" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_CLASS_HEADERS="Class Headers" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_ADD_ADMIN_COMPONENT_LABEL="Admin Component
Header" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_YES="Yes" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_NO="No" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_ADMIN_COMPONENT_LABEL="Header
(admin.component)" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_POWER_ADMIN_COMPONENT_LABEL="Power Header
+(admin.component)" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_NONE_FOUND="None found" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_SELECT_AN_OPTION="Select an option" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_ADD_SITE_COMPONENT_LABEL="Site Component
Header" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_SITE_COMPONENT_LABEL="Header
(site.component)" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_POWER_SITE_COMPONENT_LABEL="Powers Header
+(site.component)" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_ADD_ADMIN_HELPER_LABEL="Admin Helper
Header" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_ADMIN_HELPER_LABEL="Header
(admin.helper)" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_POWER_ADMIN_HELPER_LABEL="Power Header
+(admin.helper)" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_ADD_SITE_HELPER_LABEL="Site Helper
Header" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_SITE_HELPER_LABEL="Header
+(site.helper)" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_POWER_SITE_HELPER_LABEL="Power Header
(site.helper)" \ No newline at end of file diff --git a/language/en-GB/en-GB.plg_content_componentbuildercomponentheaderstabs.sys.ini b/language/en-GB/en-GB.plg_content_componentbuildercomponentheaderstabs.sys.ini index 07c4f42..36a5f64 100644 --- a/language/en-GB/en-GB.plg_content_componentbuildercomponentheaderstabs.sys.ini +++ b/language/en-GB/en-GB.plg_content_componentbuildercomponentheaderstabs.sys.ini @@ -1,18 +1,28 @@ PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS="Content - Componentbuilder Component Headers Tabs" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_DESCRIPTION="This plugin is used to set component class custom headers." -PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_XML_DESCRIPTION="

Content - Componentbuilder Component Headers Tabs (v.1.0.0)

This plugin is used to set component class custom headers.

Created by Llewellyn van der Merwe
Development started 26th December, 2020

" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_XML_DESCRIPTION="

Content - Componentbuilder Component Headers Tabs (v.1.0.1)

This plugin is used to set component class custom headers.

Created by Llewellyn van der Merwe
Development started 26th December, 2020

" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_CLASS_HEADERS="Class Headers" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_ADD_ADMIN_COMPONENT_LABEL="Admin Component
Header" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_YES="Yes" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_NO="No" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_ADMIN_COMPONENT_LABEL="Header
(admin.component)" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_POWER_ADMIN_COMPONENT_LABEL="Power Header
+(admin.component)" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_NONE_FOUND="None found" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_SELECT_AN_OPTION="Select an option" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_ADD_SITE_COMPONENT_LABEL="Site Component
Header" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_SITE_COMPONENT_LABEL="Header
(site.component)" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_POWER_SITE_COMPONENT_LABEL="Powers Header
+(site.component)" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_ADD_ADMIN_HELPER_LABEL="Admin Helper
Header" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_ADMIN_HELPER_LABEL="Header
(admin.helper)" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_POWER_ADMIN_HELPER_LABEL="Power Header
+(admin.helper)" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_ADD_SITE_HELPER_LABEL="Site Helper
Header" PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_SITE_HELPER_LABEL="Header
+(site.helper)" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_POWER_SITE_HELPER_LABEL="Power Header
(site.helper)" \ No newline at end of file diff --git a/rules/code.php b/rules/code.php index 24935da..8101f79 100644 --- a/rules/code.php +++ b/rules/code.php @@ -1,25 +1,25 @@ - * @github 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('JPATH_PLATFORM') or die; - -use Joomla\CMS\Form\Form; -use Joomla\CMS\Form\FormRule; -use Joomla\Registry\Registry; - -/** - * Form Rule (Code) class for the Joomla Platform. - */ -class JFormRuleCode extends FormRule +/** + * @package Joomla.Component.Builder + * + * @created 30th April, 2015 + * @author Llewellyn van der Merwe + * @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('JPATH_PLATFORM') or die; + +use Joomla\CMS\Form\Form; +use Joomla\CMS\Form\FormRule; +use Joomla\Registry\Registry; + +/** + * Form Rule (Code) class for the Joomla Platform. + */ +class JFormRuleCode extends FormRule { /** * Method to test the value. @@ -49,5 +49,5 @@ class JFormRuleCode extends FormRule * But since some of the placeholders form part of the class/function names and the more, it seems like we are pressed for a much more advance solution. * If you have any ideas to how we can go about to do this, then please open an issue on github and lets begin. (this is a nice to have, so don't break a leg...) */ - } -} + } +} diff --git a/script.php b/script.php index 867d524..48b6a14 100644 --- a/script.php +++ b/script.php @@ -1,12 +1,12 @@ - * @github 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 +/** + * @package Joomla.Component.Builder + * + * @created 30th April, 2015 + * @author Llewellyn van der Merwe + * @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 @@ -43,11 +43,12 @@ class plgContentComponentbuilderComponentHeadersTabsInstallerScript if ('install' === $route) { + // 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'); + $app->enqueueMessage('JCB must first be installed from Joomla Component Builder.', 'error'); return false; } // load the helper class @@ -60,8 +61,8 @@ class plgContentComponentbuilderComponentHeadersTabsInstallerScript { // get the version $jcbVersion = explode('.', $manifest->version); - // check that we have JCB 2.12.4 or higher installed - if (count($jcbVersion) == 3 && $jcbVersion[0] >= 2 && (($jcbVersion[1] == 12 && $jcbVersion[2] >= 4) || $jcbVersion[1] > 12)) + // check that we have JCB 3 or higher installed + if (count($jcbVersion) == 3 && $jcbVersion[0] >= 3) { $blockInstall = false; } @@ -69,7 +70,7 @@ class plgContentComponentbuilderComponentHeadersTabsInstallerScript // allow install if all conditions are met if ($blockInstall) { - $app->enqueueMessage('Please upgrade to JCB 2.12.4 or higher before installing this plugin.', 'error'); + $app->enqueueMessage('Please upgrade to JCB-Pro v3.0.0 or higher before installing this plugin.', 'error'); return false; } }