From 37065afedde0d491fe24c6d86b36f22d1de8540c Mon Sep 17 00:00:00 2001 From: Llewellyn van der Merwe Date: Wed, 18 May 2022 13:08:14 +0200 Subject: [PATCH] update - v2.0.0 --- ...ntbuildercomponentdashboardheaderstabs.php | 2 +- ...ntbuildercomponentdashboardheaderstabs.xml | 6 +- fields/index.html | 1 - fields/powers.php | 184 ----------- forms/component_dashboard.xml | 300 +++++++++++++++--- ...ntbuildercomponentdashboardheaderstabs.ini | 9 +- ...ildercomponentdashboardheaderstabs.sys.ini | 9 +- rules/code.php | 53 ---- rules/index.html | 1 - script.php | 6 +- 10 files changed, 272 insertions(+), 299 deletions(-) delete mode 100644 fields/index.html delete mode 100644 fields/powers.php delete mode 100644 rules/code.php delete mode 100644 rules/index.html diff --git a/componentbuildercomponentdashboardheaderstabs.php b/componentbuildercomponentdashboardheaderstabs.php index 24b8453..e86ba19 100644 --- a/componentbuildercomponentdashboardheaderstabs.php +++ b/componentbuildercomponentdashboardheaderstabs.php @@ -21,7 +21,7 @@ JLoader::register('ComponentbuilderHelper', JPATH_ADMINISTRATOR . '/components/c * Content - Componentbuilder Component Dashboard Headers Tabs plugin. * * @package ComponentbuilderComponentDashboardHeadersTabs - * @since 1.0.2 + * @since 2.0.0 */ class PlgContentComponentbuilderComponentDashboardHeadersTabs extends CMSPlugin { diff --git a/componentbuildercomponentdashboardheaderstabs.xml b/componentbuildercomponentdashboardheaderstabs.xml index 11dc4b5..1f7cf9e 100644 --- a/componentbuildercomponentdashboardheaderstabs.xml +++ b/componentbuildercomponentdashboardheaderstabs.xml @@ -1,13 +1,13 @@ PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS - 9th May, 2022 + 18th May, 2022 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_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_XML_DESCRIPTION @@ -24,8 +24,6 @@ componentbuildercomponentdashboardheaderstabs.php index.html language - fields forms - rules \ No newline at end of file diff --git a/fields/index.html b/fields/index.html deleted file mode 100644 index fa6d84e..0000000 --- a/fields/index.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/fields/powers.php b/fields/powers.php deleted file mode 100644 index 37c857a..0000000 --- a/fields/powers.php +++ /dev/null @@ -1,184 +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'); - -// 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.guid','a.system_name','a.name','a.type','a.power_version'),array('guid','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->guid, $item->power_admin_component_system_name . ' [' . $item->type . ' ' . $item->name . '] (v' . $item->version . ')'); - } - } - return $options; - - } -} diff --git a/forms/component_dashboard.xml b/forms/component_dashboard.xml index 04a604d..0da818e 100644 --- a/forms/component_dashboard.xml +++ b/forms/component_dashboard.xml @@ -1,12 +1,11 @@ -
+ - -
+
- + + buttons="add,remove,move" + description="PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_POWER_DASHBOARD_VIEW_DESCRIPTION" + icon="list" + max="50" + showon="add_dashboard_view:1"> + + + + + + + + + + + + + + - + + buttons="add,remove,move" + description="PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_POWER_DASHBOARD_VIEW_HTML_DESCRIPTION" + icon="list" + max="50" + showon="add_dashboard_view_html:1"> +
diff --git a/language/en-GB/en-GB.plg_content_componentbuildercomponentdashboardheaderstabs.ini b/language/en-GB/en-GB.plg_content_componentbuildercomponentdashboardheaderstabs.ini index 6821e15..127bd01 100644 --- a/language/en-GB/en-GB.plg_content_componentbuildercomponentdashboardheaderstabs.ini +++ b/language/en-GB/en-GB.plg_content_componentbuildercomponentdashboardheaderstabs.ini @@ -1,6 +1,6 @@ PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS="Content - Componentbuilder Component Dashboard Headers Tabs" PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_DESCRIPTION="This plugin is used to set component dashboard class custom headers." -PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_XML_DESCRIPTION="

Content - Componentbuilder Component Dashboard Headers Tabs (v.1.0.2)

This plugin is used to set component dashboard class custom headers.

Created by Llewellyn van der Merwe
Development started 6th December, 2021

" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_XML_DESCRIPTION="

Content - Componentbuilder Component Dashboard Headers Tabs (v.2.0.0)

This plugin is used to set component dashboard class custom headers.

Created by Llewellyn van der Merwe
Development started 6th December, 2021

" PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_CLASS_HEADERS="Class Headers" PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_ADD_DASHBOARD_VIEW_LABEL="Target Dashboard View
Default Template Header" PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_YES="Yes" @@ -11,6 +11,13 @@ PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_DASHBOARD_VIEW_DESCRIP PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_POWER_DASHBOARD_VIEW_LABEL="Power Header
(dashboard.view)" PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_POWER_DASHBOARD_VIEW_DESCRIPTION="The power header for dashboard view." +PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_POWER_LABEL="use" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_POWER="Power" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_AS_LABEL="as" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_BUILD_LABEL="build" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_ALWAYS="Always" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_BASED_ON_COMPONENT="Based on Component" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_EXCLUDE="Exclude" PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_ADD_DASHBOARD_VIEW_HTML_LABEL="Target Dashboard View
Class Header" PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_DASHBOARD_VIEW_HTML_LABEL="Class Header
(dashboard.view.html)" diff --git a/language/en-GB/en-GB.plg_content_componentbuildercomponentdashboardheaderstabs.sys.ini b/language/en-GB/en-GB.plg_content_componentbuildercomponentdashboardheaderstabs.sys.ini index 6821e15..127bd01 100644 --- a/language/en-GB/en-GB.plg_content_componentbuildercomponentdashboardheaderstabs.sys.ini +++ b/language/en-GB/en-GB.plg_content_componentbuildercomponentdashboardheaderstabs.sys.ini @@ -1,6 +1,6 @@ PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS="Content - Componentbuilder Component Dashboard Headers Tabs" PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_DESCRIPTION="This plugin is used to set component dashboard class custom headers." -PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_XML_DESCRIPTION="

Content - Componentbuilder Component Dashboard Headers Tabs (v.1.0.2)

This plugin is used to set component dashboard class custom headers.

Created by Llewellyn van der Merwe
Development started 6th December, 2021

" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_XML_DESCRIPTION="

Content - Componentbuilder Component Dashboard Headers Tabs (v.2.0.0)

This plugin is used to set component dashboard class custom headers.

Created by Llewellyn van der Merwe
Development started 6th December, 2021

" PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_CLASS_HEADERS="Class Headers" PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_ADD_DASHBOARD_VIEW_LABEL="Target Dashboard View
Default Template Header" PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_YES="Yes" @@ -11,6 +11,13 @@ PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_DASHBOARD_VIEW_DESCRIP PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_POWER_DASHBOARD_VIEW_LABEL="Power Header
(dashboard.view)" PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_POWER_DASHBOARD_VIEW_DESCRIPTION="The power header for dashboard view." +PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_POWER_LABEL="use" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_POWER="Power" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_AS_LABEL="as" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_BUILD_LABEL="build" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_ALWAYS="Always" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_BASED_ON_COMPONENT="Based on Component" +PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_EXCLUDE="Exclude" PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_ADD_DASHBOARD_VIEW_HTML_LABEL="Target Dashboard View
Class Header" PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_DASHBOARD_VIEW_HTML_LABEL="Class Header
(dashboard.view.html)" diff --git a/rules/code.php b/rules/code.php deleted file mode 100644 index 8101f79..0000000 --- a/rules/code.php +++ /dev/null @@ -1,53 +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('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. - * - * @param \SimpleXMLElement $element The SimpleXMLElement object representing the `` tag for the form field object. - * @param mixed $value The form field value to validate. - * @param string $group The field name group control value. This acts as an array container for the field. - * For example if the field has name="foo" and the group value is set to "bar" then the - * full field name would end up being "bar[foo]". - * @param Registry $input An optional Registry object with the entire data set to validate against the entire form. - * @param Form $form The form object for which the field is being tested. - * - * @return boolean True if the value is valid, false otherwise. - */ - public function test(\SimpleXMLElement $element, $value, $group = null, Registry $input = null, Form $form = null) - { - // This removes all validation (is dangerous) but needed to submit code via JCB - return true; - - /** - * My idea is to add some kind of validation to improve JCB code (per/language) - * - * So at this time this code validation is used for JavaScript,CSS,HTML and PHP. - * We can see what language is being worked on with the syntax property in the $element. (in JCB) - * What complicates things is the placeholders, of both custom code, component, and view names. - * Ideally we could strip them and then validate the code to being syntactically correct. - * 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/rules/index.html b/rules/index.html deleted file mode 100644 index fa6d84e..0000000 --- a/rules/index.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/script.php b/script.php index fd29ba8..1cd7ee6 100644 --- a/script.php +++ b/script.php @@ -61,10 +61,10 @@ class plgContentComponentbuilderComponentDashboardHeadersTabsInstallerScript { // get the version $jcbVersion = explode('.', $manifest->version); - // check that we have JCB 3.0.11 or higher installed + // check that we have JCB 3.0.14 or higher installed if (count($jcbVersion) == 3 && $jcbVersion[0] >= 3 && ( - ($jcbVersion[0] == 3 && $jcbVersion[1] == 0 && $jcbVersion[2] >= 11) || + ($jcbVersion[0] == 3 && $jcbVersion[1] == 0 && $jcbVersion[2] >= 14) || ($jcbVersion[0] == 3 && $jcbVersion[1] > 0) || $jcbVersion[0] > 3) ) @@ -75,7 +75,7 @@ class plgContentComponentbuilderComponentDashboardHeadersTabsInstallerScript // allow install if all conditions are met if ($blockInstall) { - $app->enqueueMessage('Please upgrade to JCB-Pro v3.0.11 or higher before installing this plugin.', 'error'); + $app->enqueueMessage('Please upgrade to JCB-Pro v3.0.14 or higher before installing this plugin.', 'error'); return false; } }