diff --git a/README.md b/README.md
index 02654fdea..ac1088627 100644
--- a/README.md
+++ b/README.md
@@ -144,11 +144,11 @@ TODO
+ *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*: 5th January, 2020
++ *Last Build*: 7th January, 2020
+ *Version*: 2.10.10
+ *Copyright*: Copyright (C) 2015 - 2019 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
-+ *Line count*: **280707**
++ *Line count*: **280873**
+ *Field count*: **1503**
+ *File count*: **1769**
+ *Folder count*: **280**
diff --git a/admin/README.txt b/admin/README.txt
index 02654fdea..ac1088627 100644
--- a/admin/README.txt
+++ b/admin/README.txt
@@ -144,11 +144,11 @@ TODO
+ *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*: 5th January, 2020
++ *Last Build*: 7th January, 2020
+ *Version*: 2.10.10
+ *Copyright*: Copyright (C) 2015 - 2019 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
-+ *Line count*: **280707**
++ *Line count*: **280873**
+ *Field count*: **1503**
+ *File count*: **1769**
+ *Folder count*: **280**
diff --git a/admin/language/en-GB/en-GB.com_componentbuilder.ini b/admin/language/en-GB/en-GB.com_componentbuilder.ini
index f920e5a97..09c38275e 100644
--- a/admin/language/en-GB/en-GB.com_componentbuilder.ini
+++ b/admin/language/en-GB/en-GB.com_componentbuilder.ini
@@ -17,6 +17,7 @@ COM_COMPONENTBUILDER_ADD_MORE_FIELDS_TO_THIS_ADMIN_VIEW="Add more fields to this
COM_COMPONENTBUILDER_ADD_TO_BACKUP_FOLDER_AMP_SALES_SERVER_SMALLIF_SETSMALL="Add to Backup Folder & Sales Server (if set)"
COM_COMPONENTBUILDER_ADD_TO_REPOSITORY_FOLDER="Add to Repository Folder"
COM_COMPONENTBUILDER_ADD_YOUR_OWN_JCB_PACKAGES_TO_THE_COMMUNITY_A_S_GITHUBA_REPOSITORYBR_WATCH_THIS_A_S_TUTORIALA_TO_SEE_HOW="Add your own JCB packages to the community gitHub repository.
Watch this tutorial to see how!"
+COM_COMPONENTBUILDER_ADMIN="Admin"
COM_COMPONENTBUILDER_ADMINS_CUSTOM_TABS="Admins Custom Tabs"
COM_COMPONENTBUILDER_ADMINS_CUSTOM_TABS_ACCESS="Admins Custom Tabs Access"
COM_COMPONENTBUILDER_ADMINS_CUSTOM_TABS_ACCESS_DESC="Allows the users in this group to access access admins custom tabs"
@@ -1382,6 +1383,7 @@ COM_COMPONENTBUILDER_ALWAYS_INSURE_THAT_YOU_HAVE_YOUR_LOCAL_COMPONENTS_BACKED_UP
COM_COMPONENTBUILDER_ANY_SELECTION_ONLY_FOUR_LISTRADIOCHECKBOXESDYNAMIC_LIST="Any Selection (only 4 list/radio/checkboxes/dynamic_list)"
COM_COMPONENTBUILDER_AN_ERROR_HAS_OCCURRED="An error has occurred"
COM_COMPONENTBUILDER_ARCHIVED="Archived"
+COM_COMPONENTBUILDER_AREA="Area"
COM_COMPONENTBUILDER_ARE_YOU_SURE_YOU_WOULD_LIKE_TO_ADD_THIS_NEW_JCB_COMMUNITY_SNIPPET_TO_YOUR_LOCAL_SNIPPETS="Are you sure you would like to add this new JCB community snippet to your local snippets?"
COM_COMPONENTBUILDER_ARE_YOU_SURE_YOU_WOULD_LIKE_TO_CONTINUE="Are you sure you would like to continue?"
COM_COMPONENTBUILDER_ARE_YOU_SURE_YOU_WOULD_LIKE_TO_REPLACE_YOUR_LOCAL_SNIPPET_WITH_THIS_JCB_COMMUNITY_SNIPPET="Are you sure you would like to replace your local snippet with this JCB community snippet?"
@@ -1753,6 +1755,7 @@ COM_COMPONENTBUILDER_CLONE="Clone"
COM_COMPONENTBUILDER_CLONE_FAILED="Clone failed!"
COM_COMPONENTBUILDER_CLOSE_NEW="Close & New"
COM_COMPONENTBUILDER_CODE="Code"
+COM_COMPONENTBUILDER_COLUMN="Column"
COM_COMPONENTBUILDER_COMMUNITY_PACKAGES="Community Packages"
COM_COMPONENTBUILDER_COMPANY="Company"
COM_COMPONENTBUILDER_COMPANY_NAME="Company Name"
@@ -7725,6 +7728,7 @@ COM_COMPONENTBUILDER_LINK_LOCAL_DYNAMIC="Link & Local (dynamic)"
COM_COMPONENTBUILDER_LINK_TO_THE_CONTRIBUTOR="Link to the contributor"
COM_COMPONENTBUILDER_LIST_FIELD="List Field"
COM_COMPONENTBUILDER_LIST_VIEW="List View"
+COM_COMPONENTBUILDER_LIST_VIEW_COLUMNS="List View Columns"
COM_COMPONENTBUILDER_LIST_VIEW_NAME="List View Name"
COM_COMPONENTBUILDER_LOADING="loading"
COM_COMPONENTBUILDER_LOCAL="Local"
@@ -7956,7 +7960,6 @@ COM_COMPONENTBUILDER_REVERT_ALL_AHEAD_SNIPPETS="Revert All Ahead Snippets"
COM_COMPONENTBUILDER_REVIEW_THIS_ISSUE_ON_GITHUB="Review this issue on Github"
COM_COMPONENTBUILDER_RIGHT_IN_TAB="Right in Tab"
COM_COMPONENTBUILDER_RIGHT_OF_TABS="Right of Tabs"
-COM_COMPONENTBUILDER_ROW_SELECTION="Row Selection"
COM_COMPONENTBUILDER_RUN_EXPANSION="Run Expansion"
COM_COMPONENTBUILDER_SAVE_SUCCESS="Great! Item successfully saved."
COM_COMPONENTBUILDER_SAVE_WARNING="The value already existed so please select another."
@@ -8132,6 +8135,7 @@ COM_COMPONENTBUILDER_SHOW_ONLY="Show Only"
COM_COMPONENTBUILDER_SHOW_TOGGLE="Show Toggle"
COM_COMPONENTBUILDER_SINCE_THE_OWNER_DETAILS_ARE_DISPLAYED_DURING_BIMPORT_PROCESSB_BEFORE_ADDING_THE_KEY_THIS_WAY_IF_THE_USERDEV_BDOES_NOTB_HAVE_THE_KEY_THEY_CAN_SEE_BWHERE_TO_GET_ITB="Since the owner details are displayed during import process before adding the key, this way if the user/dev does not have the key they can see where to get it."
COM_COMPONENTBUILDER_SINCE_THE_OWNER_DETAILS_ARE_DISPLAYED_DURING_IMPORT_PROCESS_BEFORE_ADDING_THE_KEY_THIS_WAY_IF_THE_USERDEV_DOES_NOT_HAVE_THE_KEY_THEY_CAN_SEE_WHERE_TO_GET_IT="Since the owner details are displayed during import process before adding the key, this way if the user/dev does not have the key they can see where to get it."
+COM_COMPONENTBUILDER_SITE="Site"
COM_COMPONENTBUILDER_SITE_VIEW="Site View"
COM_COMPONENTBUILDER_SITE_VIEWS="Site Views"
COM_COMPONENTBUILDER_SITE_VIEWS_ACCESS="Site Views Access"
@@ -8836,6 +8840,7 @@ COM_COMPONENTBUILDER_S_NOT_LINKED="%s Not Linked"
COM_COMPONENTBUILDER_S_PLEASE_WAIT_THE_COMPONENT_IS_BEING_COMPILED="%s, please wait! The component is being compiled"
COM_COMPONENTBUILDER_TAB="Tab"
COM_COMPONENTBUILDER_TABLE_BSB_NOT_FOUND_IN_THE_LOCAL_DATABASE_SO_ITS_VALUES_COULD_NOT_BE_IMPORTED_PLEASE_UPDATE_YOUR_JCB_INSTALL_AND_TRY_AGAIN="Table %s not found in the local database so its values could not be imported, please update your JCB install and try again."
+COM_COMPONENTBUILDER_TARGET="Target"
COM_COMPONENTBUILDER_TARGET_BEHAVIOUR="Target Behaviour"
COM_COMPONENTBUILDER_TARGET_FIELDS="Target Field/s"
COM_COMPONENTBUILDER_TARGET_PATH="Target Path"
@@ -9034,6 +9039,7 @@ COM_COMPONENTBUILDER_THIS_BSB_IS_NOT_LINKED_TO_ANY_OTHER_AREAS_OF_JCB_AT_THIS_TI
COM_COMPONENTBUILDER_THIS_PACKAGE_BPASSEDB_THE_CHECKSUM_VALIDATIONBR_BR_SMALLMANUALLY_ALSO_VALIDATE_THAT_THE_CORRECT_CHECKSUM_WAS_USEDSMALLBR_THIS_CHECKSUM_BSB_MUST_BE_THE_SAME_AS_THE_ONE_FOUND_A_S_SA="This package PASSED the checksum validation!
Manually also validate that the correct checksum was used.
This checksum: %s must be the same as the one found @ "
COM_COMPONENTBUILDER_THIS_PACKAGE_HAS_NO_KEY="This package has no key."
COM_COMPONENTBUILDER_TITLE="Title"
+COM_COMPONENTBUILDER_TITLE_COLUMN="Title Column"
COM_COMPONENTBUILDER_TOTAL_DOWNLOADS="total downloads"
COM_COMPONENTBUILDER_TO_ADD_SIMPLY_COPY_AND_PAST_THE_SNIPPET_INTO_YOUR_CODE="To add simply copy and past the snippet into your code."
COM_COMPONENTBUILDER_TO_ADD_VALIDATION_TO_A_FIELD_IF_VALIDATION_IS_NOT_PART_OF_FIELD_TYPE_PROPERTIES_LOADED_ABOVE_SO_IF_YOU_HAVE_VALIDATION_SET_AS_A_FIELD_PROPERTY_THIS_EXTRA_PROPERTY_WILL_NOT_BE_NEEDED="To add validation to a field if validation is not part of field type properties loaded above. So if you have validation set as a field property this extra property will not be needed."
diff --git a/admin/views/assistant/tmpl/default_jcbviewsplan.php b/admin/views/assistant/tmpl/default_jcbviewsplan.php
index 83208b0cc..3c4305189 100644
--- a/admin/views/assistant/tmpl/default_jcbviewsplan.php
+++ b/admin/views/assistant/tmpl/default_jcbviewsplan.php
@@ -236,25 +236,185 @@ function buildSubform()
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /// LISTVIEW START
+ /// LISTVIEW SUBFORM END
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // start building the listview area XML
- $listviewXML = new SimpleXMLElement('');
+ // start building the subform field XML
+ $sub_subformXML = new SimpleXMLElement('');
// subform attributes
- $listviewAttribute = array(
- 'type' => 'note',
+ $sub_subformAttribute = array(
+ 'type' => 'subform',
'name' => 'columns',
- 'label' => 'COM_COMPONENTBUILDER_ROW_SELECTION',
- 'description' => '
- More details soon, to help you select the fields for the list display of rows.',
- 'heading' => 'h5'
+ 'label' => 'COM_COMPONENTBUILDER_LIST_VIEW_COLUMNS',
+ 'layout' => 'joomla.form.field.subform.repeatable-table',
+ 'multiple' => 'true',
+ 'icon' => 'list',
+ 'max' => 2,
+ 'min' => 1
);
// load the subform attributes
- ComponentbuilderHelper::xmlAddAttributes($listviewXML, $listviewAttribute);
+ ComponentbuilderHelper::xmlAddAttributes($sub_subformXML, $sub_subformAttribute);
+ // now add the subform child form
+ $sub_childform = $sub_subformXML->addChild('form');
+ // child form attributes
+ $sub_childformAttribute = array(
+ 'hidden' => 'true',
+ 'name' => 'list_properties',
+ 'repeat' => 'true');
+ // load the child form attributes
+ ComponentbuilderHelper::xmlAddAttributes($sub_childform, $sub_childformAttribute);
+
+ // view building the name field XML
+ $targetXML = new SimpleXMLElement('');
+ // subform attributes
+ $targetAttribute = array(
+ 'type' => 'list',
+ 'name' => 'target',
+ 'label' => 'COM_COMPONENTBUILDER_TARGET',
+ 'description' => 'COM_COMPONENTBUILDER_AREA',
+ 'required' => true,
+ 'class' => 'list_class',
+ 'default' => '1'
+ );
+ // load the subform attributes
+ ComponentbuilderHelper::xmlAddAttributes($targetXML, $targetAttribute);
+ // add the options
+ ComponentbuilderHelper::xmlAddOptions($targetXML, array(1 => 'COM_COMPONENTBUILDER_ADMIN', 2 => 'COM_COMPONENTBUILDER_SITE'));
// now add the fields to the child form
- ComponentbuilderHelper::xmlAppend($childForm, $listviewXML);
+ ComponentbuilderHelper::xmlAppend($sub_childform, $targetXML);
+
+ // view building the name field XML
+ $nameXML = new SimpleXMLElement('');
+ // subform attributes
+ $nameAttribute = array(
+ 'type' => 'viewfields',
+ 'name' => 'column_0',
+ 'label' => 'COM_COMPONENTBUILDER_TITLE_COLUMN',
+ 'multiple' => false,
+ 'required' => true,
+ 'class' => 'list_class'
+ );
+ // load the subform attributes
+ ComponentbuilderHelper::xmlAddAttributes($nameXML, $nameAttribute);
+ // now add the fields to the child form
+ ComponentbuilderHelper::xmlAppend($sub_childform, $nameXML);
+
+ // view building the name field XML
+ $nameXML = new SimpleXMLElement('');
+ // subform attributes
+ $nameAttribute = array(
+ 'type' => 'viewfields',
+ 'name' => 'column_1',
+ 'label' => 'COM_COMPONENTBUILDER_COLUMN',
+ 'multiple' => false,
+ 'required' => false,
+ 'class' => 'list_class'
+ );
+ // load the subform attributes
+ ComponentbuilderHelper::xmlAddAttributes($nameXML, $nameAttribute);
+ // now add the fields to the child form
+ ComponentbuilderHelper::xmlAppend($sub_childform, $nameXML);
+
+ // view building the name field XML
+ $nameXML = new SimpleXMLElement('');
+ // subform attributes
+ $nameAttribute = array(
+ 'type' => 'viewfields',
+ 'name' => 'column_2',
+ 'label' => 'COM_COMPONENTBUILDER_COLUMN',
+ 'multiple' => false,
+ 'required' => false,
+ 'class' => 'list_class'
+ );
+ // load the subform attributes
+ ComponentbuilderHelper::xmlAddAttributes($nameXML, $nameAttribute);
+ // now add the fields to the child form
+ ComponentbuilderHelper::xmlAppend($sub_childform, $nameXML);
+
+ // view building the name field XML
+ $nameXML = new SimpleXMLElement('');
+ // subform attributes
+ $nameAttribute = array(
+ 'type' => 'viewfields',
+ 'name' => 'column_3',
+ 'label' => 'COM_COMPONENTBUILDER_COLUMN',
+ 'multiple' => false,
+ 'required' => false,
+ 'class' => 'list_class'
+ );
+ // load the subform attributes
+ ComponentbuilderHelper::xmlAddAttributes($nameXML, $nameAttribute);
+ // now add the fields to the child form
+ ComponentbuilderHelper::xmlAppend($sub_childform, $nameXML);
+
+ // view building the name field XML
+ $nameXML = new SimpleXMLElement('');
+ // subform attributes
+ $nameAttribute = array(
+ 'type' => 'viewfields',
+ 'name' => 'column_4',
+ 'label' => 'COM_COMPONENTBUILDER_COLUMN',
+ 'multiple' => false,
+ 'required' => false,
+ 'class' => 'list_class'
+ );
+ // load the subform attributes
+ ComponentbuilderHelper::xmlAddAttributes($nameXML, $nameAttribute);
+ // now add the fields to the child form
+ ComponentbuilderHelper::xmlAppend($sub_childform, $nameXML);
+
+ // view building the name field XML
+ $nameXML = new SimpleXMLElement('');
+ // subform attributes
+ $nameAttribute = array(
+ 'type' => 'viewfields',
+ 'name' => 'column_5',
+ 'label' => 'COM_COMPONENTBUILDER_COLUMN',
+ 'multiple' => false,
+ 'required' => false,
+ 'class' => 'list_class'
+ );
+ // load the subform attributes
+ ComponentbuilderHelper::xmlAddAttributes($nameXML, $nameAttribute);
+ // now add the fields to the child form
+ ComponentbuilderHelper::xmlAppend($sub_childform, $nameXML);
+
+ // view building the name field XML
+ $nameXML = new SimpleXMLElement('');
+ // subform attributes
+ $nameAttribute = array(
+ 'type' => 'viewfields',
+ 'name' => 'column_6',
+ 'label' => 'COM_COMPONENTBUILDER_COLUMN',
+ 'multiple' => false,
+ 'required' => false,
+ 'class' => 'list_class'
+ );
+ // load the subform attributes
+ ComponentbuilderHelper::xmlAddAttributes($nameXML, $nameAttribute);
+ // now add the fields to the child form
+ ComponentbuilderHelper::xmlAppend($sub_childform, $nameXML);
+
+ // view building the name field XML
+ $nameXML = new SimpleXMLElement('');
+ // subform attributes
+ $nameAttribute = array(
+ 'type' => 'viewfields',
+ 'name' => 'column_7',
+ 'label' => 'COM_COMPONENTBUILDER_COLUMN',
+ 'multiple' => false,
+ 'required' => false,
+ 'class' => 'list_class'
+ );
+ // load the subform attributes
+ ComponentbuilderHelper::xmlAddAttributes($nameXML, $nameAttribute);
+ // now add the fields to the child form
+ ComponentbuilderHelper::xmlAppend($sub_childform, $nameXML);
+
+
+ // no add to main sub from
+ ComponentbuilderHelper::xmlAppend($childForm, $sub_subformXML);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /// LISTVIEW END
+ /// LISTVIEW SUBFORM END
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/componentbuilder.xml b/componentbuilder.xml
index 7b35343bd..a85f04f63 100644
--- a/componentbuilder.xml
+++ b/componentbuilder.xml
@@ -1,7 +1,7 @@
COM_COMPONENTBUILDER
- 5th January, 2020
+ 7th January, 2020
Llewellyn van der Merwe
llewellyn@joomlacomponentbuilder.com
http://www.joomlacomponentbuilder.com