From df65ca3456f2bf96c238e437eb5b6791caa985e5 Mon Sep 17 00:00:00 2001 From: Llewellyn van der Merwe Date: Tue, 31 Jul 2018 04:20:11 +0200 Subject: [PATCH] Added a new global helper method getFieldObject. Update the compiler area to make use of this new method. --- README.md | 4 +- admin/README.txt | 4 +- admin/compiler/joomla_3/Helper.php | 56 +++++++++--- admin/compiler/joomla_3/Helper_site.php | 58 ++++++++---- admin/helpers/componentbuilder.php | 56 +++++++++--- admin/views/compiler/view.html.php | 113 +++++------------------- componentbuilder.xml | 2 +- site/helpers/componentbuilder.php | 58 ++++++++---- 8 files changed, 197 insertions(+), 154 deletions(-) diff --git a/README.md b/README.md index 38a59c502..12a34de6b 100644 --- a/README.md +++ b/README.md @@ -125,11 +125,11 @@ Watch the [proposed development workflow](https://vdm.bz/proposed-development-wo + *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com) + *Name*: [Component Builder](https://github.com/vdm-io/Joomla-Component-Builder) + *First Build*: 30th April, 2015 -+ *Last Build*: 30th July, 2018 ++ *Last Build*: 31st July, 2018 + *Version*: 2.8.5 + *Copyright*: Copyright (C) 2015 - 2018 Vast Development Method. All rights reserved. + *License*: GNU General Public License version 2 or later; see LICENSE.txt -+ *Line count*: **186360** ++ *Line count*: **186347** + *Field count*: **1059** + *File count*: **1239** + *Folder count*: **197** diff --git a/admin/README.txt b/admin/README.txt index 38a59c502..12a34de6b 100644 --- a/admin/README.txt +++ b/admin/README.txt @@ -125,11 +125,11 @@ Watch the [proposed development workflow](https://vdm.bz/proposed-development-wo + *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com) + *Name*: [Component Builder](https://github.com/vdm-io/Joomla-Component-Builder) + *First Build*: 30th April, 2015 -+ *Last Build*: 30th July, 2018 ++ *Last Build*: 31st July, 2018 + *Version*: 2.8.5 + *Copyright*: Copyright (C) 2015 - 2018 Vast Development Method. All rights reserved. + *License*: GNU General Public License version 2 or later; see LICENSE.txt -+ *Line count*: **186360** ++ *Line count*: **186347** + *Field count*: **1059** + *File count*: **1239** + *Folder count*: **197** diff --git a/admin/compiler/joomla_3/Helper.php b/admin/compiler/joomla_3/Helper.php index 51e07c462..ec0a5c897 100644 --- a/admin/compiler/joomla_3/Helper.php +++ b/admin/compiler/joomla_3/Helper.php @@ -753,6 +753,46 @@ abstract class ###Component###Helper } } + /** + * get the field object + * + * @param array $attributes The array of attributes + * @param string $default The default of the field + * @param array $options The options to apply to the XML element + * + * @return object + * + */ + public static function getFieldObject($attributes, $default = '', $options = null) + { + // make sure we have a type + if (isset($attributes['type'])) + { + // make sure the form helper class is loaded + if (!method_exists('JFormHelper', 'loadFieldType')) + { + jimport('joomla.form.form'); + } + // get field type + $field = JFormHelper::loadFieldType($attributes['type'],true); + // start field xml + $XML = new SimpleXMLElement(''); + // load the attributes + self::xmlAddAttributes($XML, $attributes); + // check if we have options + if (self::checkArray($options)) + { + // load the options + self::xmlAddOptions($XML, $options); + } + // setup the field + $field->setup($XML, $default); + // return the field object + return $field; + } + return false; + } + /** * Render Bool Button * @@ -771,8 +811,6 @@ abstract class ###Component###Helper $args = func_get_args(); // check if there is additional button class $additional = isset($args[1]) ? (string) $args[1] : ''; // not used at this time - // start the xml - $buttonXML = new SimpleXMLElement(''); // button attributes $buttonAttributes = array( 'type' => 'radio', @@ -781,22 +819,12 @@ abstract class ###Component###Helper 'class' => 'btn-group', 'filter' => 'INT', 'default' => isset($args[2]) ? (int) $args[2] : 0); - // load the haskey attributes - self::xmlAddAttributes($buttonXML, $buttonAttributes); // set the button options $buttonOptions = array( '1' => isset($args[3]) ? self::htmlEscape($args[3]) : 'JYES', '0' => isset($args[4]) ? self::htmlEscape($args[4]) : 'JNO'); - // load the button options - self::xmlAddOptions($buttonXML, $buttonOptions); - - // get the radio element - $button = JFormHelper::loadFieldType('radio'); - - // run - $button->setup($buttonXML, $buttonAttributes['default']); - - return $button->input; + // return the input + return self::getFieldObject($buttonAttributes, $buttonAttributes['default'], $buttonOptions)->input; } /** diff --git a/admin/compiler/joomla_3/Helper_site.php b/admin/compiler/joomla_3/Helper_site.php index 9cced568a..d405849de 100644 --- a/admin/compiler/joomla_3/Helper_site.php +++ b/admin/compiler/joomla_3/Helper_site.php @@ -399,10 +399,50 @@ abstract class ###Component###Helper } } + /** + * get the field object + * + * @param array $attributes The array of attributes + * @param string $default The default of the field + * @param array $options The options to apply to the XML element + * + * @return object + * + */ + public static function getFieldObject($attributes, $default = '', $options = null) + { + // make sure we have a type + if (isset($attributes['type'])) + { + // make sure the form helper class is loaded + if (!method_exists('JFormHelper', 'loadFieldType')) + { + jimport('joomla.form.form'); + } + // get field type + $field = JFormHelper::loadFieldType($attributes['type'],true); + // start field xml + $XML = new SimpleXMLElement(''); + // load the attributes + self::xmlAddAttributes($XML, $attributes); + // check if we have options + if (self::checkArray($options)) + { + // load the options + self::xmlAddOptions($XML, $options); + } + // setup the field + $field->setup($XML, $default); + // return the field object + return $field; + } + return false; + } + /** * Render Bool Button * - * @param array $args All the args for the button + * @param array $args All the args for the button * 0) name * 1) additional (options class) // not used at this time * 2) default @@ -417,8 +457,6 @@ abstract class ###Component###Helper $args = func_get_args(); // check if there is additional button class $additional = isset($args[1]) ? (string) $args[1] : ''; // not used at this time - // start the xml - $buttonXML = new SimpleXMLElement(''); // button attributes $buttonAttributes = array( 'type' => 'radio', @@ -427,22 +465,12 @@ abstract class ###Component###Helper 'class' => 'btn-group', 'filter' => 'INT', 'default' => isset($args[2]) ? (int) $args[2] : 0); - // load the haskey attributes - self::xmlAddAttributes($buttonXML, $buttonAttributes); // set the button options $buttonOptions = array( '1' => isset($args[3]) ? self::htmlEscape($args[3]) : 'JYES', '0' => isset($args[4]) ? self::htmlEscape($args[4]) : 'JNO'); - // load the button options - self::xmlAddOptions($buttonXML, $buttonOptions); - - // get the radio element - $button = JFormHelper::loadFieldType('radio'); - - // run - $button->setup($buttonXML, $buttonAttributes['default']); - - return $button->input; + // return the input + return self::getFieldObject($buttonAttributes, $buttonAttributes['default'], $buttonOptions)->input; }###HELPER_UIKIT### ###HELPER_CREATEUSER### /** diff --git a/admin/helpers/componentbuilder.php b/admin/helpers/componentbuilder.php index 12b4dbf1a..111411a7d 100644 --- a/admin/helpers/componentbuilder.php +++ b/admin/helpers/componentbuilder.php @@ -4731,6 +4731,46 @@ abstract class ComponentbuilderHelper } } + /** + * get the field object + * + * @param array $attributes The array of attributes + * @param string $default The default of the field + * @param array $options The options to apply to the XML element + * + * @return object + * + */ + public static function getFieldObject($attributes, $default = '', $options = null) + { + // make sure we have a type + if (isset($attributes['type'])) + { + // make sure the form helper class is loaded + if (!method_exists('JFormHelper', 'loadFieldType')) + { + jimport('joomla.form.form'); + } + // get field type + $field = JFormHelper::loadFieldType($attributes['type'],true); + // start field xml + $XML = new SimpleXMLElement(''); + // load the attributes + self::xmlAddAttributes($XML, $attributes); + // check if we have options + if (self::checkArray($options)) + { + // load the options + self::xmlAddOptions($XML, $options); + } + // setup the field + $field->setup($XML, $default); + // return the field object + return $field; + } + return false; + } + /** * Render Bool Button * @@ -4749,8 +4789,6 @@ abstract class ComponentbuilderHelper $args = func_get_args(); // check if there is additional button class $additional = isset($args[1]) ? (string) $args[1] : ''; // not used at this time - // start the xml - $buttonXML = new SimpleXMLElement(''); // button attributes $buttonAttributes = array( 'type' => 'radio', @@ -4759,22 +4797,12 @@ abstract class ComponentbuilderHelper 'class' => 'btn-group', 'filter' => 'INT', 'default' => isset($args[2]) ? (int) $args[2] : 0); - // load the haskey attributes - self::xmlAddAttributes($buttonXML, $buttonAttributes); // set the button options $buttonOptions = array( '1' => isset($args[3]) ? self::htmlEscape($args[3]) : 'JYES', '0' => isset($args[4]) ? self::htmlEscape($args[4]) : 'JNO'); - // load the button options - self::xmlAddOptions($buttonXML, $buttonOptions); - - // get the radio element - $button = JFormHelper::loadFieldType('radio'); - - // run - $button->setup($buttonXML, $buttonAttributes['default']); - - return $button->input; + // return the input + return self::getFieldObject($buttonAttributes, $buttonAttributes['default'], $buttonOptions)->input; } /** diff --git a/admin/views/compiler/view.html.php b/admin/views/compiler/view.html.php index 18684897b..e4c6f4104 100644 --- a/admin/views/compiler/view.html.php +++ b/admin/views/compiler/view.html.php @@ -64,168 +64,99 @@ class ComponentbuilderViewCompiler extends JViewLegacy public function setForm() { - if(ComponentbuilderHelper::checkArray($this->Components)){ - jimport('joomla.form.form'); - + if(ComponentbuilderHelper::checkArray($this->Components)) + { // start the form $form = array(); - - // get the sales radio field - $sales = JFormHelper::loadFieldType('radio',true); - // start sales xml - $salesXML = new SimpleXMLElement(''); // sales attributes - $salesAttributes = array( + $attributes = array( 'type' => 'radio', 'name' => 'backup', 'label' => 'COM_COMPONENTBUILDER_ADD_TO_BACKUP_FOLDER_AMP_SALES_SERVER_SMALLIF_SETSMALL', 'class' => 'btn-group btn-group-yesno', 'description' => 'COM_COMPONENTBUILDER_SHOULD_THE_ZIPPED_PACKAGE_OF_THE_COMPONENT_BE_MOVED_TO_THE_LOCAL_BACKUP_AND_REMOTE_SALES_SERVER_THIS_IS_ONLY_APPLICABLE_IF_THIS_COMPONENT_HAS_THOSE_VALUES_SET', 'default' => '0'); - // load the sales attributes - ComponentbuilderHelper::xmlAddAttributes($salesXML, $salesAttributes); // set the sales options - $salesOptions = array( + $options = array( '1' => 'COM_COMPONENTBUILDER_YES', '0' => 'COM_COMPONENTBUILDER_NO'); - // load the sales options - ComponentbuilderHelper::xmlAddOptions($salesXML, $salesOptions); - // setup the sales radio field - $sales->setup($salesXML,0); // add to form - $form[] = $sales; - - // get the repository radio field - $repository = JFormHelper::loadFieldType('radio',true); - // start repository xml - $repositoryXML = new SimpleXMLElement(''); + $form[] = ComponentbuilderHelper::getFieldObject($attributes, 0, $options); // repository attributes - $repositoryAttributes = array( + $attributes = array( 'type' => 'radio', 'name' => 'repository', 'label' => 'COM_COMPONENTBUILDER_ADD_TO_REPOSITORY_FOLDER', 'class' => 'btn-group btn-group-yesno', 'description' => 'COM_COMPONENTBUILDER_SHOULD_THE_COMPONENT_BE_MOVED_TO_YOUR_LOCAL_REPOSITORY_FOLDER', 'default' => '1'); - // load the repository attributes - ComponentbuilderHelper::xmlAddAttributes($repositoryXML, $repositoryAttributes); // start the repository options - $repositoryOptions = array( + $options = array( '1' => 'COM_COMPONENTBUILDER_YES', '0' => 'COM_COMPONENTBUILDER_NO'); - // load the repository options - ComponentbuilderHelper::xmlAddOptions($repositoryXML, $repositoryOptions); - // setup the repository radio field - $repository->setup($repositoryXML,1); // add to form - $form[] = $repository; - - // get the placeholders radio field - $placeholders = JFormHelper::loadFieldType('radio',true); - // start placeholders xml - $placeholdersXML = new SimpleXMLElement(''); + $form[] = ComponentbuilderHelper::getFieldObject($attributes, 1, $options); // placeholders attributes - $placeholdersAttributes = array( + $attributes = array( 'type' => 'radio', 'name' => 'placeholders', 'label' => 'COM_COMPONENTBUILDER_ADD_CUSTOM_CODE_PLACEHOLDERS', 'class' => 'btn-group btn-group-yesno', 'description' => 'COM_COMPONENTBUILDER_SHOULD_JCB_INSERT_THE_CUSTOM_CODE_PLACEHOLDERS_THIS_IS_ONLY_APPLICABLE_IF_THIS_COMPONENT_HAS_CUSTOM_CODE', 'default' => '2'); - // load the placeholders attributes - ComponentbuilderHelper::xmlAddAttributes($placeholdersXML, $placeholdersAttributes); // start the placeholders options - $placeholdersOptions = array( + $options = array( '2' => 'COM_COMPONENTBUILDER_GLOBAL', '1' => 'COM_COMPONENTBUILDER_YES', '0' => 'COM_COMPONENTBUILDER_NO'); - // load the placeholders options - ComponentbuilderHelper::xmlAddOptions($placeholdersXML, $placeholdersOptions); - // setup the placeholders radio field - $placeholders->setup($placeholdersXML,2); // add to form - $form[] = $placeholders; - - // get the debuglinenr radio field - $debuglinenr = JFormHelper::loadFieldType('radio',true); - // start debuglinenr xml - $debuglinenrXML = new SimpleXMLElement(''); + $form[] = ComponentbuilderHelper::getFieldObject($attributes, 2, $options); // debuglinenr attributes - $debuglinenrAttributes = array( + $attributes = array( 'type' => 'radio', 'name' => 'debuglinenr', 'label' => 'COM_COMPONENTBUILDER_DEBUG_LINE_NUMBERS', 'class' => 'btn-group btn-group-yesno', 'description' => 'COM_COMPONENTBUILDER_ADD_CORRESPONDING_LINE_NUMBERS_TO_THE_DYNAMIC_COMMENTS_SO_TO_SEE_WHERE_IN_THE_COMPILER_THE_LINES_OF_CODE_WAS_BUILD_THIS_WILL_HELP_IF_YOU_NEED_TO_GET_MORE_TECHNICAL_WITH_AN_ISSUE_ON_GITHUB_OR_EVEN_FOR_YOUR_OWN_DEBUGGING', 'default' => '2'); - // load the debuglinenr attributes - ComponentbuilderHelper::xmlAddAttributes($debuglinenrXML, $debuglinenrAttributes); - // start the debuglinenr options - $debuglinenrOptions = array( + $options = array( '2' => 'COM_COMPONENTBUILDER_GLOBAL', '1' => 'COM_COMPONENTBUILDER_YES', '0' => 'COM_COMPONENTBUILDER_NO'); - // load the debuglinenr options - ComponentbuilderHelper::xmlAddOptions($debuglinenrXML, $debuglinenrOptions); - // setup the debuglinenr radio field - $debuglinenr->setup($debuglinenrXML,2); // add to form - $form[] = $debuglinenr; - - // get the minify radio field - $minify = JFormHelper::loadFieldType('radio',true); - // start minify xml - $minifyXML = new SimpleXMLElement(''); + $form[] = ComponentbuilderHelper::getFieldObject($attributes, 2, $options); // minify attributes - $minifyAttributes = array( + $attributes = array( 'type' => 'radio', 'name' => 'minify', 'label' => 'COM_COMPONENTBUILDER_MINIFY_JAVASCRIPT', 'class' => 'btn-group btn-group-yesno', 'description' => 'COM_COMPONENTBUILDER_SHOULD_THE_JAVASCRIPT_BE_MINIFIED_IN_THE_COMPONENT', 'default' => '2'); - // load the minify attributes - ComponentbuilderHelper::xmlAddAttributes($minifyXML, $minifyAttributes); - // start the minify options - $minifyOptions = array( + $options = array( '2' => 'COM_COMPONENTBUILDER_GLOBAL', '1' => 'COM_COMPONENTBUILDER_YES', '0' => 'COM_COMPONENTBUILDER_NO'); - // load the minify options - ComponentbuilderHelper::xmlAddOptions($minifyXML, $minifyOptions); - // setup the minify radio field - $minify->setup($minifyXML,2); // add to form - $form[] = $minify; - - // get the component list field - $component = JFormHelper::loadFieldType('list',true); - // start component xml - $componentXML = new SimpleXMLElement(''); + $form[] = ComponentbuilderHelper::getFieldObject($attributes, 2, $options); // component attributes - $componentAttributes = array( + $attributes = array( 'type' => 'list', 'name' => 'component', 'label' => 'COM_COMPONENTBUILDER_COMPONENTS', 'class' => 'list_class', 'description' => 'COM_COMPONENTBUILDER_SELECT_THE_COMPONENT_TO_COMPILE', 'required' => 'true'); - // load the component attributes - ComponentbuilderHelper::xmlAddAttributes($componentXML, $componentAttributes); // start the component options - $componentOptions = array(); - $componentOptions[''] = 'COM_COMPONENTBUILDER__SELECT_COMPONENT_'; + $options = array(); + $options[''] = 'COM_COMPONENTBUILDER__SELECT_COMPONENT_'; // load component options from array foreach($this->Components as $componet) { - $componentOptions[(int) $componet->id] = $this->escape($componet->name); + $options[(int) $componet->id] = $this->escape($componet->name); } - // load the component options - ComponentbuilderHelper::xmlAddOptions($componentXML, $componentOptions); - // setup the component radio field - $component->setup($componentXML,''); // add to form - $form[] = $component; + $form[] = ComponentbuilderHelper::getFieldObject($attributes, '', $options); // return the form array return $form; diff --git a/componentbuilder.xml b/componentbuilder.xml index d9d3bacea..2592174c9 100644 --- a/componentbuilder.xml +++ b/componentbuilder.xml @@ -1,7 +1,7 @@ COM_COMPONENTBUILDER - 30th July, 2018 + 31st July, 2018 Llewellyn van der Merwe llewellyn@joomlacomponentbuilder.com http://www.joomlacomponentbuilder.com diff --git a/site/helpers/componentbuilder.php b/site/helpers/componentbuilder.php index 224489707..fa5d434c2 100644 --- a/site/helpers/componentbuilder.php +++ b/site/helpers/componentbuilder.php @@ -4017,10 +4017,50 @@ abstract class ComponentbuilderHelper } } + /** + * get the field object + * + * @param array $attributes The array of attributes + * @param string $default The default of the field + * @param array $options The options to apply to the XML element + * + * @return object + * + */ + public static function getFieldObject($attributes, $default = '', $options = null) + { + // make sure we have a type + if (isset($attributes['type'])) + { + // make sure the form helper class is loaded + if (!method_exists('JFormHelper', 'loadFieldType')) + { + jimport('joomla.form.form'); + } + // get field type + $field = JFormHelper::loadFieldType($attributes['type'],true); + // start field xml + $XML = new SimpleXMLElement(''); + // load the attributes + self::xmlAddAttributes($XML, $attributes); + // check if we have options + if (self::checkArray($options)) + { + // load the options + self::xmlAddOptions($XML, $options); + } + // setup the field + $field->setup($XML, $default); + // return the field object + return $field; + } + return false; + } + /** * Render Bool Button * - * @param array $args All the args for the button + * @param array $args All the args for the button * 0) name * 1) additional (options class) // not used at this time * 2) default @@ -4035,8 +4075,6 @@ abstract class ComponentbuilderHelper $args = func_get_args(); // check if there is additional button class $additional = isset($args[1]) ? (string) $args[1] : ''; // not used at this time - // start the xml - $buttonXML = new SimpleXMLElement(''); // button attributes $buttonAttributes = array( 'type' => 'radio', @@ -4045,22 +4083,12 @@ abstract class ComponentbuilderHelper 'class' => 'btn-group', 'filter' => 'INT', 'default' => isset($args[2]) ? (int) $args[2] : 0); - // load the haskey attributes - self::xmlAddAttributes($buttonXML, $buttonAttributes); // set the button options $buttonOptions = array( '1' => isset($args[3]) ? self::htmlEscape($args[3]) : 'JYES', '0' => isset($args[4]) ? self::htmlEscape($args[4]) : 'JNO'); - // load the button options - self::xmlAddOptions($buttonXML, $buttonOptions); - - // get the radio element - $button = JFormHelper::loadFieldType('radio'); - - // run - $button->setup($buttonXML, $buttonAttributes['default']); - - return $button->input; + // return the input + return self::getFieldObject($buttonAttributes, $buttonAttributes['default'], $buttonOptions)->input; } /**