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;
}
/**