diff --git a/README.md b/README.md
index 5c0a7d231..69a21f15a 100644
--- a/README.md
+++ b/README.md
@@ -150,7 +150,7 @@ TODO
+ *Version*: 2.9.18
+ *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*: **206393**
++ *Line count*: **206424**
+ *Field count*: **1136**
+ *File count*: **1344**
+ *Folder count*: **209**
diff --git a/admin/README.txt b/admin/README.txt
index 5c0a7d231..69a21f15a 100644
--- a/admin/README.txt
+++ b/admin/README.txt
@@ -150,7 +150,7 @@ TODO
+ *Version*: 2.9.18
+ *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*: **206393**
++ *Line count*: **206424**
+ *Field count*: **1136**
+ *File count*: **1344**
+ *Folder count*: **209**
diff --git a/admin/language/en-GB/en-GB.com_componentbuilder.ini b/admin/language/en-GB/en-GB.com_componentbuilder.ini
index a07e188dc..ce57c939c 100644
--- a/admin/language/en-GB/en-GB.com_componentbuilder.ini
+++ b/admin/language/en-GB/en-GB.com_componentbuilder.ini
@@ -3790,18 +3790,20 @@ COM_COMPONENTBUILDER_CUSTOM_CODE_NOTE_PLACEHOLDERS_EXPLAINED_DESCRIPTION="
Soon as enough data is available we will display all the areas where this code is used.
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Scanning Database..
You can edit the above areas where this code is used.
This code is not used in any area of the JCB custom code blocks at this time.
@@ -5461,6 +5463,7 @@ COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WHMCS_URL_LABEL="URL to your WHMCS install
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WHMCS_URL_MESSAGE="Error! Please add website here."
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_YES="Yes"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ZIP="ZIP"
+COM_COMPONENTBUILDER_JOOMLA_FIELDS="Joomla fields"
COM_COMPONENTBUILDER_JUST_GET_ALL_SNIPPETS="Just Get All Snippets"
COM_COMPONENTBUILDER_KEEP_HISTORY="Keep History"
COM_COMPONENTBUILDER_KEEP_ORIGINAL_ACCESS="- Keep Original Access -"
@@ -6273,18 +6276,20 @@ COM_COMPONENTBUILDER_PLACEHOLDER_NOTE_PLACEHOLDERS_PLACEDIN_DESCRIPTION="Soon as enough data is available we will display all the areas where this placeholder is used.
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Scanning Database..
You can edit the above areas where this placeholder is used.
This placeholder is not used in any area of the JCB custom code blocks at this time.
diff --git a/admin/models/ajax.php b/admin/models/ajax.php
index 77128b307..c72d9bd91 100644
--- a/admin/models/ajax.php
+++ b/admin/models/ajax.php
@@ -527,6 +527,7 @@ class ComponentbuilderModelAjax extends JModelList
'dashboard_add' => 'setYesNo',
'checkin' => 'setYesNo',
'history' => 'setYesNo',
+ 'joomla_fields' => 'setYesNo',
'port' => 'setYesNo',
'edit_create_site_view' => 'setYesNo',
'icomoon' => 'setIcoMoon',
@@ -580,6 +581,7 @@ class ComponentbuilderModelAjax extends JModelList
'submenu' => JText::_('COM_COMPONENTBUILDER_SUBMENU'),
'checkin' => JText::_('COM_COMPONENTBUILDER_AUTO_CHECKIN'),
'history' => JText::_('COM_COMPONENTBUILDER_KEEP_HISTORY'),
+ 'joomla_fields' => JText::_('COM_COMPONENTBUILDER_JOOMLA_FIELDS'),
'port' => JText::_('COM_COMPONENTBUILDER_EXPORTIMPORT_DATA'),
'edit_create_site_view' => JText::_('COM_COMPONENTBUILDER_EDITCREATE_SITE_VIEW'),
'icomoon' => JText::_('COM_COMPONENTBUILDER_ICON'),
@@ -2272,7 +2274,14 @@ class ComponentbuilderModelAjax extends JModelList
'not_base64' => array('dashboard_tab' => 'json'),
'name' => 'joomla_component->id:joomla_component.system_name'
),
- // #__componentbuilder_admin_view (c)
+ // #__componentbuilder_component_placeholders (c)
+ 'component_placeholders' => array(
+ 'search' => array('id', 'joomla_component', 'addplaceholders'),
+ 'views' => 'components_placeholders',
+ 'not_base64' => array('addplaceholders' => 'json'),
+ 'name' => 'joomla_component->id:joomla_component.system_name'
+ ),
+ // #__componentbuilder_admin_view (d)
'admin_view' => array(
'search' => array('id', 'system_name', 'javascript_view_file', 'javascript_view_footer',
'javascript_views_file', 'javascript_views_footer', 'html_import_view',
@@ -2285,14 +2294,21 @@ class ComponentbuilderModelAjax extends JModelList
'not_base64' => array(),
'name' => 'system_name'
),
- // #__componentbuilder_admin_fields_relations (d)
+ // #__componentbuilder_admin_fields_relations (e)
'admin_fields_relations' => array(
'search' => array('id', 'admin_view', 'addrelations'),
'views' => 'admins_fields_relations',
'not_base64' => array('addrelations' => 'json'),
'name' => 'admin_view->id:admin_view.system_name'
),
- // #__componentbuilder_custom_admin_view (e)
+ // #__componentbuilder_admin_custom_tabs (f)
+ 'admin_custom_tabs' => array(
+ 'search' => array('id', 'admin_view', 'tabs'),
+ 'views' => 'admins_custom_tabs',
+ 'not_base64' => array('tabs' => 'json'),
+ 'name' => 'admin_view->id:admin_view.system_name'
+ ),
+ // #__componentbuilder_custom_admin_view (g)
'custom_admin_view' => array(
'search' => array('id', 'system_name', 'default', 'php_view', 'php_jview', 'php_jview_display', 'php_document',
'js_document', 'css_document', 'css', 'php_ajaxmethod', 'php_model', 'php_controller'),
@@ -2300,7 +2316,7 @@ class ComponentbuilderModelAjax extends JModelList
'not_base64' => array(),
'name' => 'system_name'
),
- // #__componentbuilder_site_view (f)
+ // #__componentbuilder_site_view (h)
'site_view' => array(
'search' => array('id', 'system_name', 'default', 'php_view', 'php_jview', 'php_jview_display', 'php_document',
'js_document', 'css_document', 'css', 'php_ajaxmethod', 'php_model', 'php_controller'),
@@ -2308,7 +2324,7 @@ class ComponentbuilderModelAjax extends JModelList
'not_base64' => array(),
'name' => 'system_name'
),
- // #__componentbuilder_field (g)
+ // #__componentbuilder_field (i)
'field' => array(
'search' => array('id', 'name', 'xml', 'javascript_view_footer', 'javascript_views_footer'),
'views' => 'fields',
@@ -2316,14 +2332,14 @@ class ComponentbuilderModelAjax extends JModelList
'base64_search' => array('xml' => array('start' => 'type_php', '_start' => '="', 'end' => '"')),
'name' => 'name'
),
- // #__componentbuilder_fieldtype (h)
+ // #__componentbuilder_fieldtype (j)
'fieldtype' => array(
'search' => array('id', 'name', 'properties'),
'views' => 'fieldtypes',
'not_base64' => array('properties' => 'json'),
'name' => 'name'
),
- // #__componentbuilder_dynamic_get (i)
+ // #__componentbuilder_dynamic_get (k)
'dynamic_get' => array(
'search' => array('id', 'name', 'php_before_getitem', 'php_after_getitem', 'php_before_getitems', 'php_after_getitems',
'php_getlistquery'),
@@ -2331,35 +2347,35 @@ class ComponentbuilderModelAjax extends JModelList
'not_base64' => array(),
'name' => 'name'
),
- // #__componentbuilder_template (j)
+ // #__componentbuilder_template (l)
'template' => array(
'search' => array('id', 'name', 'php_view', 'template'),
'views' => 'templates',
'not_base64' => array(),
'name' => 'name'
),
- // #__componentbuilder_layout (k)
+ // #__componentbuilder_layout (m)
'layout' => array(
'search' => array('id', 'name', 'php_view', 'layout'),
'views' => 'layouts',
'not_base64' => array(),
'name' => 'name'
),
- // #__componentbuilder_library (l)
+ // #__componentbuilder_library (n)
'library' => array(
'search' => array('id', 'name', 'php_setdocument'),
'views' => 'libraries',
'not_base64' => array(),
'name' => 'name'
),
- // #__componentbuilder_custom_code (m)
+ // #__componentbuilder_custom_code (o)
'custom_code' => array(
'search' => array('id', 'system_name', 'code'),
'views' => 'custom_codes',
'not_base64' => array(),
'name' => 'system_name'
),
- // #__componentbuilder_validation_rule (n)
+ // #__componentbuilder_validation_rule (p)
'validation_rule' => array(
'search' => array('id', 'name', 'php'),
'views' => 'validation_rules',
diff --git a/admin/models/forms/custom_code.js b/admin/models/forms/custom_code.js
index d2e0dfb44..7fb122223 100644
--- a/admin/models/forms/custom_code.js
+++ b/admin/models/forms/custom_code.js
@@ -313,8 +313,8 @@ function usedin(functioName, ide) {
jQuery('#note-usedin-not').hide();
jQuery('#note-usedin-found').hide();
jQuery('#loading-usedin').show();
- var targets = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n']; // if you update this, also update (below 13) & [customcode-codeUsedInHtmlNote]!
- var targetNumber = 13;
+ var targets = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p']; // if you update this, also update (below 15) & [customcode-codeUsedInHtmlNote]!
+ var targetNumber = 15;
var run = 0;
var usedinChecker = setInterval(function(){
var target = targets[run];
diff --git a/admin/models/forms/placeholder.js b/admin/models/forms/placeholder.js
index b7470de5d..871f1b71d 100644
--- a/admin/models/forms/placeholder.js
+++ b/admin/models/forms/placeholder.js
@@ -79,8 +79,8 @@ function placedin(placeholder, ide) {
jQuery('#note-placedin-not').hide();
jQuery('#note-placedin-found').hide();
jQuery('#loading-placedin').show();
- var targets = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n']; // if you update this, also update (below 13) & [customcode-codeUsedInHtmlNote]!
- var targetNumber = 13;
+ var targets = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p']; // if you update this, also update (below 15) & [customcode-codeUsedInHtmlNote]!
+ var targetNumber = 15;
var run = 0;
var placedinChecker = setInterval(function(){
var target = targets[run];
diff --git a/admin/models/joomla_components.php b/admin/models/joomla_components.php
index 707298c21..1121e55b0 100644
--- a/admin/models/joomla_components.php
+++ b/admin/models/joomla_components.php
@@ -1714,7 +1714,14 @@ class ComponentbuilderModelJoomla_components extends JModelList
'not_base64' => array('dashboard_tab' => 'json'),
'name' => 'joomla_component->id:joomla_component.system_name'
),
- // #__componentbuilder_admin_view (c)
+ // #__componentbuilder_component_placeholders (c)
+ 'component_placeholders' => array(
+ 'search' => array('id', 'joomla_component', 'addplaceholders'),
+ 'views' => 'components_placeholders',
+ 'not_base64' => array('addplaceholders' => 'json'),
+ 'name' => 'joomla_component->id:joomla_component.system_name'
+ ),
+ // #__componentbuilder_admin_view (d)
'admin_view' => array(
'search' => array('id', 'system_name', 'javascript_view_file', 'javascript_view_footer',
'javascript_views_file', 'javascript_views_footer', 'html_import_view',
@@ -1727,14 +1734,21 @@ class ComponentbuilderModelJoomla_components extends JModelList
'not_base64' => array(),
'name' => 'system_name'
),
- // #__componentbuilder_admin_fields_relations (d)
+ // #__componentbuilder_admin_fields_relations (e)
'admin_fields_relations' => array(
'search' => array('id', 'admin_view', 'addrelations'),
'views' => 'admins_fields_relations',
'not_base64' => array('addrelations' => 'json'),
'name' => 'admin_view->id:admin_view.system_name'
),
- // #__componentbuilder_custom_admin_view (e)
+ // #__componentbuilder_admin_custom_tabs (f)
+ 'admin_custom_tabs' => array(
+ 'search' => array('id', 'admin_view', 'tabs'),
+ 'views' => 'admins_custom_tabs',
+ 'not_base64' => array('tabs' => 'json'),
+ 'name' => 'admin_view->id:admin_view.system_name'
+ ),
+ // #__componentbuilder_custom_admin_view (g)
'custom_admin_view' => array(
'search' => array('id', 'system_name', 'default', 'php_view', 'php_jview', 'php_jview_display', 'php_document',
'js_document', 'css_document', 'css', 'php_ajaxmethod', 'php_model', 'php_controller'),
@@ -1742,7 +1756,7 @@ class ComponentbuilderModelJoomla_components extends JModelList
'not_base64' => array(),
'name' => 'system_name'
),
- // #__componentbuilder_site_view (f)
+ // #__componentbuilder_site_view (h)
'site_view' => array(
'search' => array('id', 'system_name', 'default', 'php_view', 'php_jview', 'php_jview_display', 'php_document',
'js_document', 'css_document', 'css', 'php_ajaxmethod', 'php_model', 'php_controller'),
@@ -1750,7 +1764,7 @@ class ComponentbuilderModelJoomla_components extends JModelList
'not_base64' => array(),
'name' => 'system_name'
),
- // #__componentbuilder_field (g)
+ // #__componentbuilder_field (i)
'field' => array(
'search' => array('id', 'name', 'xml', 'javascript_view_footer', 'javascript_views_footer'),
'views' => 'fields',
@@ -1758,14 +1772,14 @@ class ComponentbuilderModelJoomla_components extends JModelList
'base64_search' => array('xml' => array('start' => 'type_php', '_start' => '="', 'end' => '"')),
'name' => 'name'
),
- // #__componentbuilder_fieldtype (h)
+ // #__componentbuilder_fieldtype (j)
'fieldtype' => array(
'search' => array('id', 'name', 'properties'),
'views' => 'fieldtypes',
'not_base64' => array('properties' => 'json'),
'name' => 'name'
),
- // #__componentbuilder_dynamic_get (i)
+ // #__componentbuilder_dynamic_get (k)
'dynamic_get' => array(
'search' => array('id', 'name', 'php_before_getitem', 'php_after_getitem', 'php_before_getitems', 'php_after_getitems',
'php_getlistquery'),
@@ -1773,35 +1787,35 @@ class ComponentbuilderModelJoomla_components extends JModelList
'not_base64' => array(),
'name' => 'name'
),
- // #__componentbuilder_template (j)
+ // #__componentbuilder_template (l)
'template' => array(
'search' => array('id', 'name', 'php_view', 'template'),
'views' => 'templates',
'not_base64' => array(),
'name' => 'name'
),
- // #__componentbuilder_layout (k)
+ // #__componentbuilder_layout (m)
'layout' => array(
'search' => array('id', 'name', 'php_view', 'layout'),
'views' => 'layouts',
'not_base64' => array(),
'name' => 'name'
),
- // #__componentbuilder_library (l)
+ // #__componentbuilder_library (n)
'library' => array(
'search' => array('id', 'name', 'php_setdocument'),
'views' => 'libraries',
'not_base64' => array(),
'name' => 'name'
),
- // #__componentbuilder_custom_code (m)
+ // #__componentbuilder_custom_code (o)
'custom_code' => array(
'search' => array('id', 'system_name', 'code'),
'views' => 'custom_codes',
'not_base64' => array(),
'name' => 'system_name'
),
- // #__componentbuilder_validation_rule (n)
+ // #__componentbuilder_validation_rule (p)
'validation_rule' => array(
'search' => array('id', 'name', 'php'),
'views' => 'validation_rules',