Compare commits

..

39 Commits

Author SHA1 Message Date
c484306d21 addedd the xml update server url 2017-10-06 20:29:35 +02:00
3d1ba0321a Added Wiki to JCB. Resolved gh-125 to insure phone numbers are treated as strings. Resolved gh-128 by adding field to Joomla Component View that allows javascript to be added globaly. Converted a few more repeatable fields to subform fields, this is an ongoing project to remove repeatable fields from JCB. 2017-10-06 20:28:28 +02:00
5bb5e3e909 Updated the readme to link to the new Quick Build of a [Hello World component in JCB video on Youtube](https://youtu.be/1KBBtQUxMTc) 2017-09-20 16:49:38 +02:00
9e140b40da convert repeatable properties field in the field types view to subform field 2017-09-18 04:20:50 +02:00
06416e665d Fixed gh-120 that allows export of component with language translations 2017-09-18 02:18:23 +02:00
72c6136bfb Resolved gh-118 to insure JCB loads the needed language strings to the system language file during compilation 2017-09-13 13:59:58 +02:00
5d3e93c560 Fixed gh-117 to allow custom sql strings to be addedas a value key. 2017-09-13 12:15:14 +02:00
8ccb13f3e0 resolve gh-115 to allow excluding of folders and files in the repository folder 2017-09-13 02:37:43 +02:00
4b3bc9bd03 Moved FTP signature to its own table, so we can use it more securely around JCB (even in the global settings). Improved the Linked view option in admin-views. 2017-08-25 02:56:05 +01:00
8501e37b3e updated some of the component import script, resolved gh-113 to improve assets rules setting for components 2017-08-23 21:38:28 +01:00
1c37f13820 fixed component import issue, to insure mysql dump data in admin-view gets imported correctly 2017-08-23 15:52:31 +01:00
e6b3c2391d fixed function button bug that loaded it to all views, instead of only the owner view 2017-08-22 23:44:53 +01:00
cfc1af2b69 added site-view switch to allow default public access if access is set on the site view as explained in gh-113 2017-08-22 23:17:19 +01:00
9c1ee3e88a updated the donation info 2017-08-21 02:24:30 +01:00
e3528344af Major upgrade, to initiate front-end development for JCB. Little steps at a time forward. 2017-08-20 22:18:16 +01:00
0ccc84e2ff fixed the getVars backward compatibility issue, Added replyto and replytoname to email helper, renamed the email helper class that builds the email table to setTableBody 2017-08-20 21:47:14 +01:00
e0730d3bf6 added JCB initial API frontend to run backups of JCB components, setup automated backup system with cronjob 2017-08-20 18:52:35 +01:00
ddeb02de74 version upgrade 2017-08-12 19:00:05 +01:00
e003be492c Fixed gh-108 to insure that all fields get added if multiple zeros are found. Improved the default value options in global config to allow for array of default values. Fixed typo forward slash. 2017-08-12 12:51:28 +01:00
fb7b5027c2 improved the answer for gh-106 to insure the correct form is submitted on compile 2017-08-05 12:28:24 +01:00
7a902d454a fixed gh-106 to insure the correct form is submitted on compile, also some other minor bug fixes 2017-08-05 12:10:08 +01:00
bd716ae7ef Stable Release 2017-07-24 04:28:27 +01:00
e074d3b5ce added Joomla to the header in the readme since it has become know as JCB 2017-07-21 00:38:35 +01:00
f1a054c0e7 Imporved the Adding of Custom Config Fields, added some shields.io icons to the JCB readme 2017-07-21 00:26:48 +01:00
e037d29935 version upgrade 2017-07-03 01:41:25 +01:00
b60803ef7b added timeago lib to repo for jQuery, and added dates to issue and release info on dash 2017-06-29 23:23:06 +01:00
aceda7bae2 Fixed a bug with the automated update sql that ensured that the sql for new fields gets added. 2017-06-29 22:03:53 +01:00
111aa4a3de donation info updated 2017-06-28 21:02:04 +01:00
9742991690 improved the dashboard of JCB to include releases and better item display of each issue and release 2017-06-28 11:05:31 +01:00
2c1903508c added the subform and custom and other fields to the demo 2017-06-18 11:47:10 +01:00
384c403ae4 Add new release with subform field now also available 2017-06-18 08:38:12 +01:00
6e0bcc0ae2 Resolves gh-96 by adding the feature to auto create the update SQL. Also fixes gh-100 Field Length Issue. 2017-06-16 13:38:06 +01:00
3ad9ae8b8f resolves gh-91 to insure that int and floats are not set as strings in SQL defaults 2017-06-05 21:18:32 +01:00
Dev
5e36ede2ac fixed gh-85 to insure parameter 2 is an array 2017-05-28 23:44:15 +02:00
cb355feaf4 fixed import of components selection 2017-05-20 09:36:26 +02:00
9b1f111251 fix gh-78 to ensure the field options get loaded in the repeatable conditions 2017-05-08 11:09:24 +03:00
4cead46ac4 Fixed gh-75 to insure the column names are loaded as before. Fix gh-76 by adding more checks to insure that the correct date is used in the getLastModifiedDate method. 2017-05-04 23:34:28 +01:00
25c632065a updated the readme 2017-04-26 17:30:09 +01:00
ea1edebc05 Resolves gh-71 bug, so that admin views that has no fields are still accessible. Fixed gh-72 to insure all components on Joomla version 3.7.0 works and looks correctly. Please just recompile your components for Joomla v3.7.0 2017-04-26 09:56:17 +01:00
561 changed files with 25606 additions and 8928 deletions

View File

@ -1,14 +1,17 @@
# Component Builder (2.4.3)
# Joomla Component Builder (JCB)
[![GitHub release](https://img.shields.io/github/release/vdm-io/Joomla-Component-Builder.svg)](https://github.com/vdm-io/Joomla-Component-Builder/releases) [![Total Downloads](https://img.shields.io/github/downloads/vdm-io/Joomla-Component-Builder/total.svg)](https://github.com/vdm-io/Joomla-Component-Builder/releases)
This is a [Joomla 3.x](http://www.joomla.org/) component.
This is a [Joomla 3.x](https://extensions.joomla.org/extension/component-builder/) component. [__See In Action__](https://youtu.be/1KBBtQUxMTc)
![Component Builder image](https://raw.githubusercontent.com/vdm-io/Joomla-Component-Builder/master/admin/assets/images/component-300.jpg "The Component Builder")
![Component Builder image](https://raw.githubusercontent.com/vdm-io/Joomla-Component-Builder/master/admin/assets/images/vdm-component.jpg "The Component Builder")
The Component Builder for [Joomla](http://www.joomla.org/) that is highly advanced, truly able to build extremely complex components in a fraction of the time.
The Component Builder for [Joomla](https://extensions.joomla.org/extension/component-builder/) that is highly advanced, truly able to build extremely complex components in a fraction of the time.
Whether you're a seasoned [Joomla](http://www.joomla.org/) developer, or have just started, Component Builder will safe you lots of time and money. A real must have!
Whether you're a seasoned [Joomla](https://extensions.joomla.org/extension/component-builder/) developer, or have just started, Component Builder will safe you lots of time and money. A real must have!
You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.4.3) with **ALL** its features and **ALL** concepts totally open-source and free!
You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.5.6) with **ALL** its features and **ALL** concepts totally open-source and free!
> Watch Quick Build of a Hello World component in [JCB on Youtube](https://youtu.be/1KBBtQUxMTc)
Once installed upgrades are quick and easy via the default Joomla upgrade area.
@ -75,12 +78,14 @@ Once installed upgrades are quick and easy via the default Joomla upgrade area.
# Get Access to Video Tutorials
> **You can purchase more demo content for Component Builder including access to training & help video tutorials:**
> **You can purchase more [demo content](http://vdm.bz/jcb-packages) for Component Builder including access to training & help video tutorials:**
+ Demo Component* see the build on [github](https://github.com/namibia/demo-joomla-3-component)
+ Sermon Distributor* see the build on [github](https://github.com/SermonDistributor/Joomla-3-Component)
+ Help View Integration*
+ Training & Help Videos* tutorials in the component included.
+ *Demo Component* see the build on [github](https://github.com/namibia/demo-joomla-3-component) or get the [JCB Package](https://github.com/vdm-io/JCB-Packages/raw/master/JCB_demo.zip) _(free)_
+ *Advance Demo Component* get the [JCB Package](https://github.com/vdm-io/JCB-Packages/raw/master/JCB_demoAdvanced.zip) _([buy key](http://vdm.bz/get-advance-demo-key))_
+ *Sermon Distributor* see the build on [github](https://github.com/SermonDistributor/Joomla-3-Component) or get the [JCB Package](https://github.com/vdm-io/JCB-Packages/raw/master/JCB_sermondistributor.zip) _([buy key](http://vdm.bz/get-sermon-distributor-key))_
+ *Location Data* see the build on [github](https://github.com/vdm-io/Joomla-Location-Data) or get the [JCB Package](https://github.com/vdm-io/JCB-Packages/raw/master/JCB_locationData.zip) _([buy key](http://vdm.bz/get-location-data-key))_
+ *Help View Integration*
+ *Training & Help Videos* tutorials in the component included.
[**GET ACCESS NOW!**](http://vdm.bz/component-builder)
@ -105,13 +110,13 @@ Component Builder is mapped as a component in itself on my local development env
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
+ *Name*: [Component Builder](http://vdm.bz/component-builder)
+ *First Build*: 30th April, 2015
+ *Last Build*: 8th April, 2017
+ *Version*: 2.4.3
+ *Last Build*: 6th October, 2017
+ *Version*: 2.5.6
+ *Copyright*: Copyright (C) 2015. All Rights Reserved
+ *License*: GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
+ *Line count*: **105862**
+ *File count*: **640**
+ *Folder count*: **115**
+ *Line count*: **120884**
+ *File count*: **702**
+ *Folder count*: **121**
> This **component** was build with a Joomla [Automated Component Builder](http://vdm.bz/component-builder).
> Developed by [Llewellyn van der Merwe](mailto:joomla@vdm.io)
@ -119,5 +124,6 @@ Component Builder is mapped as a component in itself on my local development env
## Donations
Come on buy me a coffee :)
* PayPal: pay@vdm.io
* Bitcoin: 3H35PYwikEosvcjxHXGPLS1GufZ4b4iFu3
* PayPal: [paypal.me/payvdm](https://www.paypal.me/payvdm)
* Bitcoin: 1FLxiT6wyxgZ3boeviLkYJ1DRpp41uzpxa
* Ethereum: 0x243392daa3c9c8bc841fcacf7c7f72541cb16823

View File

@ -1,14 +1,17 @@
# Component Builder (2.4.3)
# Joomla Component Builder (JCB)
[![GitHub release](https://img.shields.io/github/release/vdm-io/Joomla-Component-Builder.svg)](https://github.com/vdm-io/Joomla-Component-Builder/releases) [![Total Downloads](https://img.shields.io/github/downloads/vdm-io/Joomla-Component-Builder/total.svg)](https://github.com/vdm-io/Joomla-Component-Builder/releases)
This is a [Joomla 3.x](http://www.joomla.org/) component.
This is a [Joomla 3.x](https://extensions.joomla.org/extension/component-builder/) component. [__See In Action__](https://youtu.be/1KBBtQUxMTc)
![Component Builder image](https://raw.githubusercontent.com/vdm-io/Joomla-Component-Builder/master/admin/assets/images/component-300.jpg "The Component Builder")
![Component Builder image](https://raw.githubusercontent.com/vdm-io/Joomla-Component-Builder/master/admin/assets/images/vdm-component.jpg "The Component Builder")
The Component Builder for [Joomla](http://www.joomla.org/) that is highly advanced, truly able to build extremely complex components in a fraction of the time.
The Component Builder for [Joomla](https://extensions.joomla.org/extension/component-builder/) that is highly advanced, truly able to build extremely complex components in a fraction of the time.
Whether you're a seasoned [Joomla](http://www.joomla.org/) developer, or have just started, Component Builder will safe you lots of time and money. A real must have!
Whether you're a seasoned [Joomla](https://extensions.joomla.org/extension/component-builder/) developer, or have just started, Component Builder will safe you lots of time and money. A real must have!
You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.4.3) with **ALL** its features and **ALL** concepts totally open-source and free!
You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.5.6) with **ALL** its features and **ALL** concepts totally open-source and free!
> Watch Quick Build of a Hello World component in [JCB on Youtube](https://youtu.be/1KBBtQUxMTc)
Once installed upgrades are quick and easy via the default Joomla upgrade area.
@ -75,12 +78,14 @@ Once installed upgrades are quick and easy via the default Joomla upgrade area.
# Get Access to Video Tutorials
> **You can purchase more demo content for Component Builder including access to training & help video tutorials:**
> **You can purchase more [demo content](http://vdm.bz/jcb-packages) for Component Builder including access to training & help video tutorials:**
+ Demo Component* see the build on [github](https://github.com/namibia/demo-joomla-3-component)
+ Sermon Distributor* see the build on [github](https://github.com/SermonDistributor/Joomla-3-Component)
+ Help View Integration*
+ Training & Help Videos* tutorials in the component included.
+ *Demo Component* see the build on [github](https://github.com/namibia/demo-joomla-3-component) or get the [JCB Package](https://github.com/vdm-io/JCB-Packages/raw/master/JCB_demo.zip) _(free)_
+ *Advance Demo Component* get the [JCB Package](https://github.com/vdm-io/JCB-Packages/raw/master/JCB_demoAdvanced.zip) _([buy key](http://vdm.bz/get-advance-demo-key))_
+ *Sermon Distributor* see the build on [github](https://github.com/SermonDistributor/Joomla-3-Component) or get the [JCB Package](https://github.com/vdm-io/JCB-Packages/raw/master/JCB_sermondistributor.zip) _([buy key](http://vdm.bz/get-sermon-distributor-key))_
+ *Location Data* see the build on [github](https://github.com/vdm-io/Joomla-Location-Data) or get the [JCB Package](https://github.com/vdm-io/JCB-Packages/raw/master/JCB_locationData.zip) _([buy key](http://vdm.bz/get-location-data-key))_
+ *Help View Integration*
+ *Training & Help Videos* tutorials in the component included.
[**GET ACCESS NOW!**](http://vdm.bz/component-builder)
@ -105,13 +110,13 @@ Component Builder is mapped as a component in itself on my local development env
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
+ *Name*: [Component Builder](http://vdm.bz/component-builder)
+ *First Build*: 30th April, 2015
+ *Last Build*: 8th April, 2017
+ *Version*: 2.4.3
+ *Last Build*: 6th October, 2017
+ *Version*: 2.5.6
+ *Copyright*: Copyright (C) 2015. All Rights Reserved
+ *License*: GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
+ *Line count*: **105862**
+ *File count*: **640**
+ *Folder count*: **115**
+ *Line count*: **120884**
+ *File count*: **702**
+ *Folder count*: **121**
> This **component** was build with a Joomla [Automated Component Builder](http://vdm.bz/component-builder).
> Developed by [Llewellyn van der Merwe](mailto:joomla@vdm.io)
@ -119,5 +124,6 @@ Component Builder is mapped as a component in itself on my local development env
## Donations
Come on buy me a coffee :)
* PayPal: pay@vdm.io
* Bitcoin: 3H35PYwikEosvcjxHXGPLS1GufZ4b4iFu3
* PayPal: [paypal.me/payvdm](https://www.paypal.me/payvdm)
* Bitcoin: 1FLxiT6wyxgZ3boeviLkYJ1DRpp41uzpxa
* Ethereum: 0x243392daa3c9c8bc841fcacf7c7f72541cb16823

View File

@ -19,6 +19,83 @@
<action name="admin_view.batch" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_BATCH_USE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_BATCH_USE_DESC" />
<action name="admin_view.dashboard_add" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_DASHBOARD_ADD" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_DASHBOARD_ADD_DESC" />
<action name="admin_view.dashboard_list" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_DASHBOARD_LIST_DESC" />
<action name="admin_view.edit.add_css_view" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_CSS_VIEW" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_CSS_VIEW_DESC" />
<action name="admin_view.edit.add_css_views" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_CSS_VIEWS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_CSS_VIEWS_DESC" />
<action name="admin_view.edit.add_custom_button" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_CUSTOM_BUTTON" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_CUSTOM_BUTTON_DESC" />
<action name="admin_view.edit.add_custom_import" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_CUSTOM_IMPORT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_CUSTOM_IMPORT_DESC" />
<action name="admin_view.edit.add_fadein" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_FADEIN" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_FADEIN_DESC" />
<action name="admin_view.edit.add_javascript_view_file" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_JAVASCRIPT_VIEW_FILE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_JAVASCRIPT_VIEW_FILE_DESC" />
<action name="admin_view.edit.add_javascript_view_footer" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_JAVASCRIPT_VIEW_FOOTER" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_JAVASCRIPT_VIEW_FOOTER_DESC" />
<action name="admin_view.edit.add_javascript_views_file" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_JAVASCRIPT_VIEWS_FILE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_JAVASCRIPT_VIEWS_FILE_DESC" />
<action name="admin_view.edit.add_javascript_views_footer" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_JAVASCRIPT_VIEWS_FOOTER" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_JAVASCRIPT_VIEWS_FOOTER_DESC" />
<action name="admin_view.edit.add_php_after_delete" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_AFTER_DELETE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_AFTER_DELETE_DESC" />
<action name="admin_view.edit.add_php_after_publish" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_AFTER_PUBLISH" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_AFTER_PUBLISH_DESC" />
<action name="admin_view.edit.add_php_ajax" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_AJAX" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_AJAX_DESC" />
<action name="admin_view.edit.add_php_allowedit" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_ALLOWEDIT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_ALLOWEDIT_DESC" />
<action name="admin_view.edit.add_php_batchcopy" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BATCHCOPY" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BATCHCOPY_DESC" />
<action name="admin_view.edit.add_php_batchmove" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BATCHMOVE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BATCHMOVE_DESC" />
<action name="admin_view.edit.add_php_before_delete" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BEFORE_DELETE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BEFORE_DELETE_DESC" />
<action name="admin_view.edit.add_php_before_publish" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BEFORE_PUBLISH" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BEFORE_PUBLISH_DESC" />
<action name="admin_view.edit.add_php_before_save" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BEFORE_SAVE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BEFORE_SAVE_DESC" />
<action name="admin_view.edit.add_php_document" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_DOCUMENT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_DOCUMENT_DESC" />
<action name="admin_view.edit.add_php_getitem" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_GETITEM" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_GETITEM_DESC" />
<action name="admin_view.edit.add_php_getitems" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_GETITEMS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_GETITEMS_DESC" />
<action name="admin_view.edit.add_php_getitems_after_all" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_GETITEMS_AFTER_ALL" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_GETITEMS_AFTER_ALL_DESC" />
<action name="admin_view.edit.add_php_getlistquery" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_GETLISTQUERY" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_GETLISTQUERY_DESC" />
<action name="admin_view.edit.add_php_postsavehook" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_POSTSAVEHOOK" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_POSTSAVEHOOK_DESC" />
<action name="admin_view.edit.add_php_save" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_SAVE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_SAVE_DESC" />
<action name="admin_view.edit.add_sql" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_SQL" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_SQL_DESC" />
<action name="admin_view.edit.addconditions" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDCONDITIONS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDCONDITIONS_DESC" />
<action name="admin_view.edit.addfields" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDFIELDS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDFIELDS_DESC" />
<action name="admin_view.edit.addlinked_views" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDLINKED_VIEWS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDLINKED_VIEWS_DESC" />
<action name="admin_view.edit.addpermissions" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDPERMISSIONS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDPERMISSIONS_DESC" />
<action name="admin_view.edit.addtables" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDTABLES" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDTABLES_DESC" />
<action name="admin_view.edit.addtabs" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDTABS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDTABS_DESC" />
<action name="admin_view.edit.ajax_input" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_AJAX_INPUT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_AJAX_INPUT_DESC" />
<action name="admin_view.edit.css_view" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_CSS_VIEW" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_CSS_VIEW_DESC" />
<action name="admin_view.edit.css_views" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_CSS_VIEWS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_CSS_VIEWS_DESC" />
<action name="admin_view.edit.custom_button" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_CUSTOM_BUTTON" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_CUSTOM_BUTTON_DESC" />
<action name="admin_view.edit.description" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_DESCRIPTION" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_DESCRIPTION_DESC" />
<action name="admin_view.edit.html_import_view" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_HTML_IMPORT_VIEW" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_HTML_IMPORT_VIEW_DESC" />
<action name="admin_view.edit.icon" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ICON" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ICON_DESC" />
<action name="admin_view.edit.icon_add" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ICON_ADD" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ICON_ADD_DESC" />
<action name="admin_view.edit.icon_category" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ICON_CATEGORY" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ICON_CATEGORY_DESC" />
<action name="admin_view.edit.javascript_view_file" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_JAVASCRIPT_VIEW_FILE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_JAVASCRIPT_VIEW_FILE_DESC" />
<action name="admin_view.edit.javascript_view_footer" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_JAVASCRIPT_VIEW_FOOTER" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_JAVASCRIPT_VIEW_FOOTER_DESC" />
<action name="admin_view.edit.javascript_views_file" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_JAVASCRIPT_VIEWS_FILE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_JAVASCRIPT_VIEWS_FILE_DESC" />
<action name="admin_view.edit.javascript_views_footer" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_JAVASCRIPT_VIEWS_FOOTER" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_JAVASCRIPT_VIEWS_FOOTER_DESC" />
<action name="admin_view.edit.name_list" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_NAME_LIST" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_NAME_LIST_DESC" />
<action name="admin_view.edit.name_single" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_NAME_SINGLE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_NAME_SINGLE_DESC" />
<action name="admin_view.edit.php_after_delete" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_AFTER_DELETE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_AFTER_DELETE_DESC" />
<action name="admin_view.edit.php_after_publish" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_AFTER_PUBLISH" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_AFTER_PUBLISH_DESC" />
<action name="admin_view.edit.php_ajaxmethod" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_AJAXMETHOD" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_AJAXMETHOD_DESC" />
<action name="admin_view.edit.php_allowedit" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_ALLOWEDIT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_ALLOWEDIT_DESC" />
<action name="admin_view.edit.php_batchcopy" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BATCHCOPY" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BATCHCOPY_DESC" />
<action name="admin_view.edit.php_batchmove" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BATCHMOVE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BATCHMOVE_DESC" />
<action name="admin_view.edit.php_before_delete" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BEFORE_DELETE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BEFORE_DELETE_DESC" />
<action name="admin_view.edit.php_before_publish" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BEFORE_PUBLISH" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BEFORE_PUBLISH_DESC" />
<action name="admin_view.edit.php_before_save" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BEFORE_SAVE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BEFORE_SAVE_DESC" />
<action name="admin_view.edit.php_controller" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_CONTROLLER" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_CONTROLLER_DESC" />
<action name="admin_view.edit.php_controller_list" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_CONTROLLER_LIST" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_CONTROLLER_LIST_DESC" />
<action name="admin_view.edit.php_document" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_DOCUMENT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_DOCUMENT_DESC" />
<action name="admin_view.edit.php_getitem" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_GETITEM" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_GETITEM_DESC" />
<action name="admin_view.edit.php_getitems" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_GETITEMS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_GETITEMS_DESC" />
<action name="admin_view.edit.php_getitems_after_all" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_GETITEMS_AFTER_ALL" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_GETITEMS_AFTER_ALL_DESC" />
<action name="admin_view.edit.php_getlistquery" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_GETLISTQUERY" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_GETLISTQUERY_DESC" />
<action name="admin_view.edit.php_import" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT_DESC" />
<action name="admin_view.edit.php_import_display" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT_DISPLAY" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT_DISPLAY_DESC" />
<action name="admin_view.edit.php_import_ext" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT_EXT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT_EXT_DESC" />
<action name="admin_view.edit.php_import_save" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT_SAVE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT_SAVE_DESC" />
<action name="admin_view.edit.php_import_setdata" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT_SETDATA" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT_SETDATA_DESC" />
<action name="admin_view.edit.php_model" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_MODEL" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_MODEL_DESC" />
<action name="admin_view.edit.php_model_list" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_MODEL_LIST" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_MODEL_LIST_DESC" />
<action name="admin_view.edit.php_postsavehook" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_POSTSAVEHOOK" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_POSTSAVEHOOK_DESC" />
<action name="admin_view.edit.php_save" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_SAVE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_SAVE_DESC" />
<action name="admin_view.edit.short_description" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_SHORT_DESCRIPTION" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_SHORT_DESCRIPTION_DESC" />
<action name="admin_view.edit.source" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_SOURCE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_SOURCE_DESC" />
<action name="admin_view.edit.sql" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_SQL" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_SQL_DESC" />
<action name="admin_view.edit.system_name" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_SYSTEM_NAME" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_SYSTEM_NAME_DESC" />
<action name="admin_view.edit.type" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_TYPE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_TYPE_DESC" />
<action name="admin_view.version" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_VERSION" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_VERSION_DESC" />
<action name="admin_view.export" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EXPORT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EXPORT_DESC" />
<action name="admin_view.import" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_IMPORT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_IMPORT_DESC" />
@ -82,12 +159,32 @@
<action name="fieldtype.dashboard_list" title="COM_COMPONENTBUILDER_FIELDTYPES_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_FIELDTYPES_DASHBOARD_LIST_DESC" />
<action name="fieldtype.delete" title="COM_COMPONENTBUILDER_FIELDTYPES_DELETE" description="COM_COMPONENTBUILDER_FIELDTYPES_DELETE_DESC" />
<action name="fieldtype.edit" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_DESC" />
<action name="fieldtype.edit.description" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_DESCRIPTION" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_DESCRIPTION_DESC" />
<action name="fieldtype.edit.name" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_NAME" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_NAME_DESC" />
<action name="fieldtype.edit.own" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_OWN" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_OWN_DESC" />
<action name="fieldtype.edit.properties" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_PROPERTIES" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_PROPERTIES_DESC" />
<action name="fieldtype.edit.short_description" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_SHORT_DESCRIPTION" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_SHORT_DESCRIPTION_DESC" />
<action name="fieldtype.edit.state" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_STATE" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_STATE_DESC" />
<action name="fieldtype.version" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_VERSION" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_VERSION_DESC" />
<action name="fieldtype.export" title="COM_COMPONENTBUILDER_FIELDTYPES_EXPORT" description="COM_COMPONENTBUILDER_FIELDTYPES_EXPORT_DESC" />
<action name="fieldtype.import" title="COM_COMPONENTBUILDER_FIELDTYPES_IMPORT" description="COM_COMPONENTBUILDER_FIELDTYPES_IMPORT_DESC" />
<action name="fieldtype.submenu" title="COM_COMPONENTBUILDER_FIELDTYPES_SUBMENU" description="COM_COMPONENTBUILDER_FIELDTYPES_SUBMENU_DESC" />
<action name="ftp.access" title="COM_COMPONENTBUILDER_FTPS_ACCESS" description="COM_COMPONENTBUILDER_FTPS_ACCESS_DESC" />
<action name="ftp.batch" title="COM_COMPONENTBUILDER_FTPS_BATCH_USE" description="COM_COMPONENTBUILDER_FTPS_BATCH_USE_DESC" />
<action name="ftp.create" title="COM_COMPONENTBUILDER_FTPS_CREATE" description="COM_COMPONENTBUILDER_FTPS_CREATE_DESC" />
<action name="ftp.dashboard_list" title="COM_COMPONENTBUILDER_FTPS_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_FTPS_DASHBOARD_LIST_DESC" />
<action name="ftp.delete" title="COM_COMPONENTBUILDER_FTPS_DELETE" description="COM_COMPONENTBUILDER_FTPS_DELETE_DESC" />
<action name="ftp.edit" title="COM_COMPONENTBUILDER_FTPS_EDIT" description="COM_COMPONENTBUILDER_FTPS_EDIT_DESC" />
<action name="ftp.edit.created_by" title="COM_COMPONENTBUILDER_FTPS_EDIT_CREATED_BY" description="COM_COMPONENTBUILDER_FTPS_EDIT_CREATED_BY_DESC" />
<action name="ftp.edit.created" title="COM_COMPONENTBUILDER_FTPS_EDIT_CREATED_DATE" description="COM_COMPONENTBUILDER_FTPS_EDIT_CREATED_DATE_DESC" />
<action name="ftp.edit.name" title="COM_COMPONENTBUILDER_FTPS_EDIT_NAME" description="COM_COMPONENTBUILDER_FTPS_EDIT_NAME_DESC" />
<action name="ftp.edit.own" title="COM_COMPONENTBUILDER_FTPS_EDIT_OWN" description="COM_COMPONENTBUILDER_FTPS_EDIT_OWN_DESC" />
<action name="ftp.edit.signature" title="COM_COMPONENTBUILDER_FTPS_EDIT_SIGNATURE" description="COM_COMPONENTBUILDER_FTPS_EDIT_SIGNATURE_DESC" />
<action name="ftp.edit.state" title="COM_COMPONENTBUILDER_FTPS_EDIT_STATE" description="COM_COMPONENTBUILDER_FTPS_EDIT_STATE_DESC" />
<action name="ftp.version" title="COM_COMPONENTBUILDER_FTPS_EDIT_VERSION" description="COM_COMPONENTBUILDER_FTPS_EDIT_VERSION_DESC" />
<action name="ftp.export" title="COM_COMPONENTBUILDER_FTPS_EXPORT" description="COM_COMPONENTBUILDER_FTPS_EXPORT_DESC" />
<action name="ftp.import" title="COM_COMPONENTBUILDER_FTPS_IMPORT" description="COM_COMPONENTBUILDER_FTPS_IMPORT_DESC" />
<action name="ftp.submenu" title="COM_COMPONENTBUILDER_FTPS_SUBMENU" description="COM_COMPONENTBUILDER_FTPS_SUBMENU_DESC" />
<action name="help_document.access" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_ACCESS" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_ACCESS_DESC" />
<action name="help_document.batch" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_BATCH_USE" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_BATCH_USE_DESC" />
<action name="help_document.create" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_CREATE" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_CREATE_DESC" />
@ -101,15 +198,93 @@
<action name="help_document.export" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EXPORT" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EXPORT_DESC" />
<action name="help_document.import" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_IMPORT" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_IMPORT_DESC" />
<action name="help_document.submenu" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_SUBMENU" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_SUBMENU_DESC" />
<action name="joomla_component.backup" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_BACKUP_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_BACKUP_BUTTON_ACCESS_DESC" />
<action name="joomla_component.export_components" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_EXPORT_COMPONENTS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_EXPORT_COMPONENTS_BUTTON_ACCESS_DESC" />
<action name="joomla_component.import_components" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_IMPORT_COMPONENTS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_IMPORT_COMPONENTS_BUTTON_ACCESS_DESC" />
<action name="joomla_component.access" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_ACCESS_DESC" />
<action name="joomla_component.batch" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_BATCH_USE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_BATCH_USE_DESC" />
<action name="joomla_component.dashboard_add" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_DASHBOARD_ADD" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_DASHBOARD_ADD_DESC" />
<action name="joomla_component.dashboard_list" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_DASHBOARD_LIST_DESC" />
<action name="joomla_component.edit.add_admin_event" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_ADMIN_EVENT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_ADMIN_EVENT_DESC" />
<action name="joomla_component.edit.add_css" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_CSS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_CSS_DESC" />
<action name="joomla_component.edit.add_email_helper" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_EMAIL_HELPER" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_EMAIL_HELPER_DESC" />
<action name="joomla_component.edit.add_javascript" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_JAVASCRIPT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_JAVASCRIPT_DESC" />
<action name="joomla_component.edit.add_license" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_LICENSE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_LICENSE_DESC" />
<action name="joomla_component.edit.add_php_dashboard_methods" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_DASHBOARD_METHODS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_DASHBOARD_METHODS_DESC" />
<action name="joomla_component.edit.add_php_helper_admin" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_HELPER_ADMIN" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_HELPER_ADMIN_DESC" />
<action name="joomla_component.edit.add_php_helper_both" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_HELPER_BOTH" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_HELPER_BOTH_DESC" />
<action name="joomla_component.edit.add_php_helper_site" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_HELPER_SITE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_HELPER_SITE_DESC" />
<action name="joomla_component.edit.add_php_method_uninstall" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_METHOD_UNINSTALL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_METHOD_UNINSTALL_DESC" />
<action name="joomla_component.edit.add_php_postflight_install" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_POSTFLIGHT_INSTALL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_POSTFLIGHT_INSTALL_DESC" />
<action name="joomla_component.edit.add_php_postflight_update" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_POSTFLIGHT_UPDATE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_POSTFLIGHT_UPDATE_DESC" />
<action name="joomla_component.edit.add_php_preflight_install" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_PREFLIGHT_INSTALL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_PREFLIGHT_INSTALL_DESC" />
<action name="joomla_component.edit.add_php_preflight_update" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_PREFLIGHT_UPDATE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_PREFLIGHT_UPDATE_DESC" />
<action name="joomla_component.edit.add_sales_server" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_SALES_SERVER" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_SALES_SERVER_DESC" />
<action name="joomla_component.edit.add_site_event" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_SITE_EVENT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_SITE_EVENT_DESC" />
<action name="joomla_component.edit.add_sql" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_SQL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_SQL_DESC" />
<action name="joomla_component.edit.add_update_server" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_UPDATE_SERVER" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_UPDATE_SERVER_DESC" />
<action name="joomla_component.edit.addadmin_views" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDADMIN_VIEWS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDADMIN_VIEWS_DESC" />
<action name="joomla_component.edit.addconfig" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDCONFIG" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDCONFIG_DESC" />
<action name="joomla_component.edit.addcontributors" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDCONTRIBUTORS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDCONTRIBUTORS_DESC" />
<action name="joomla_component.edit.addcustom_admin_views" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDCUSTOM_ADMIN_VIEWS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDCUSTOM_ADMIN_VIEWS_DESC" />
<action name="joomla_component.edit.addcustommenus" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDCUSTOMMENUS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDCUSTOMMENUS_DESC" />
<action name="joomla_component.edit.addfiles" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDFILES" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDFILES_DESC" />
<action name="joomla_component.edit.addfolders" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDFOLDERS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDFOLDERS_DESC" />
<action name="joomla_component.edit.addfootable" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDFOOTABLE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDFOOTABLE_DESC" />
<action name="joomla_component.edit.addreadme" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDREADME" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDREADME_DESC" />
<action name="joomla_component.edit.addsite_views" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDSITE_VIEWS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDSITE_VIEWS_DESC" />
<action name="joomla_component.edit.adduikit" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDUIKIT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDUIKIT_DESC" />
<action name="joomla_component.edit.author" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_AUTHOR" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_AUTHOR_DESC" />
<action name="joomla_component.edit.bom" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_BOM" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_BOM_DESC" />
<action name="joomla_component.edit.buildcomp" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_BUILDCOMP" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_BUILDCOMP_DESC" />
<action name="joomla_component.edit.buildcompsql" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_BUILDCOMPSQL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_BUILDCOMPSQL_DESC" />
<action name="joomla_component.edit.companyname" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_COMPANYNAME" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_COMPANYNAME_DESC" />
<action name="joomla_component.edit.component_version" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_COMPONENT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_COMPONENT_VERSION_DESC" />
<action name="joomla_component.edit.copyright" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_COPYRIGHT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_COPYRIGHT_DESC" />
<action name="joomla_component.edit.creatuserhelper" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_CREATUSERHELPER" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_CREATUSERHELPER_DESC" />
<action name="joomla_component.edit.css" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_CSS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_CSS_DESC" />
<action name="joomla_component.edit.dashboard_tab" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_DASHBOARD_TAB" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_DASHBOARD_TAB_DESC" />
<action name="joomla_component.edit.debug_linenr" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_DEBUG_LINENR" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_DEBUG_LINENR_DESC" />
<action name="joomla_component.edit.description" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_DESCRIPTION" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_DESCRIPTION_DESC" />
<action name="joomla_component.edit.email" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EMAIL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EMAIL_DESC" />
<action name="joomla_component.edit.emptycontributors" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EMPTYCONTRIBUTORS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EMPTYCONTRIBUTORS_DESC" />
<action name="joomla_component.edit.export_buy_link" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EXPORT_BUY_LINK" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EXPORT_BUY_LINK_DESC" />
<action name="joomla_component.edit.export_key" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EXPORT_KEY" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EXPORT_KEY_DESC" />
<action name="joomla_component.edit.export_package_link" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EXPORT_PACKAGE_LINK" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EXPORT_PACKAGE_LINK_DESC" />
<action name="joomla_component.edit.image" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_IMAGE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_IMAGE_DESC" />
<action name="joomla_component.edit.javascript" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_JAVASCRIPT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_JAVASCRIPT_DESC" />
<action name="joomla_component.edit.license" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_LICENSE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_LICENSE_DESC" />
<action name="joomla_component.edit.license_type" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_LICENSE_TYPE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_LICENSE_TYPE_DESC" />
<action name="joomla_component.edit.mvc_versiondate" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_MVC_VERSIONDATE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_MVC_VERSIONDATE_DESC" />
<action name="joomla_component.edit.name" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_NAME" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_NAME_DESC" />
<action name="joomla_component.edit.name_code" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_NAME_CODE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_NAME_CODE_DESC" />
<action name="joomla_component.edit.number" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_NUMBER" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_NUMBER_DESC" />
<action name="joomla_component.edit.php_admin_event" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_ADMIN_EVENT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_ADMIN_EVENT_DESC" />
<action name="joomla_component.edit.php_dashboard_methods" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_DASHBOARD_METHODS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_DASHBOARD_METHODS_DESC" />
<action name="joomla_component.edit.php_helper_admin" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_HELPER_ADMIN" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_HELPER_ADMIN_DESC" />
<action name="joomla_component.edit.php_helper_both" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_HELPER_BOTH" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_HELPER_BOTH_DESC" />
<action name="joomla_component.edit.php_helper_site" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_HELPER_SITE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_HELPER_SITE_DESC" />
<action name="joomla_component.edit.php_method_uninstall" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_METHOD_UNINSTALL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_METHOD_UNINSTALL_DESC" />
<action name="joomla_component.edit.php_postflight_install" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_POSTFLIGHT_INSTALL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_POSTFLIGHT_INSTALL_DESC" />
<action name="joomla_component.edit.php_postflight_update" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_POSTFLIGHT_UPDATE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_POSTFLIGHT_UPDATE_DESC" />
<action name="joomla_component.edit.php_preflight_install" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_PREFLIGHT_INSTALL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_PREFLIGHT_INSTALL_DESC" />
<action name="joomla_component.edit.php_preflight_update" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_PREFLIGHT_UPDATE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_PREFLIGHT_UPDATE_DESC" />
<action name="joomla_component.edit.php_site_event" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_SITE_EVENT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_SITE_EVENT_DESC" />
<action name="joomla_component.edit.readme" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_README" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_README_DESC" />
<action name="joomla_component.edit.sales_server_ftp" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SALES_SERVER_FTP" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SALES_SERVER_FTP_DESC" />
<action name="joomla_component.edit.short_description" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SHORT_DESCRIPTION" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SHORT_DESCRIPTION_DESC" />
<action name="joomla_component.edit.sql" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SQL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SQL_DESC" />
<action name="joomla_component.edit.sql_tweak" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SQL_TWEAK" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SQL_TWEAK_DESC" />
<action name="joomla_component.edit.system_name" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SYSTEM_NAME" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SYSTEM_NAME_DESC" />
<action name="joomla_component.edit.toignore" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_TOIGNORE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_TOIGNORE_DESC" />
<action name="joomla_component.edit.update_server" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_UPDATE_SERVER" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_UPDATE_SERVER_DESC" />
<action name="joomla_component.edit.update_server_ftp" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_UPDATE_SERVER_FTP" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_UPDATE_SERVER_FTP_DESC" />
<action name="joomla_component.edit.update_server_target" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_UPDATE_SERVER_TARGET" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_UPDATE_SERVER_TARGET_DESC" />
<action name="joomla_component.version" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION_DESC" />
<action name="joomla_component.edit.version_update" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION_UPDATE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION_UPDATE_DESC" />
<action name="joomla_component.edit.website" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_WEBSITE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_WEBSITE_DESC" />
<action name="joomla_component.edit.whmcs_key" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_WHMCS_KEY" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_WHMCS_KEY_DESC" />
<action name="joomla_component.edit.whmcs_url" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_WHMCS_URL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_WHMCS_URL_DESC" />
<action name="joomla_component.export" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EXPORT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EXPORT_DESC" />
<action name="joomla_component.import" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_IMPORT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_IMPORT_DESC" />
<action name="joomla_component.submenu" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_SUBMENU" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_SUBMENU_DESC" />
@ -170,8 +345,85 @@
<action name="template.submenu" title="COM_COMPONENTBUILDER_TEMPLATES_SUBMENU" description="COM_COMPONENTBUILDER_TEMPLATES_SUBMENU_DESC" />
</section>
<section name="joomla_component">
<action name="joomla_component.edit.system_name" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SYSTEM_NAME" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SYSTEM_NAME_DESC" />
<action name="joomla_component.edit.name_code" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_NAME_CODE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_NAME_CODE_DESC" />
<action name="joomla_component.edit.component_version" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_COMPONENT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_COMPONENT_VERSION_DESC" />
<action name="joomla_component.edit.short_description" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SHORT_DESCRIPTION" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SHORT_DESCRIPTION_DESC" />
<action name="joomla_component.edit.companyname" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_COMPANYNAME" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_COMPANYNAME_DESC" />
<action name="joomla_component.edit.author" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_AUTHOR" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_AUTHOR_DESC" />
<action name="joomla_component.edit.sql" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SQL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SQL_DESC" />
<action name="joomla_component.edit.add_css" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_CSS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_CSS_DESC" />
<action name="joomla_component.edit.description" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_DESCRIPTION" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_DESCRIPTION_DESC" />
<action name="joomla_component.edit.add_admin_event" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_ADMIN_EVENT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_ADMIN_EVENT_DESC" />
<action name="joomla_component.edit.copyright" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_COPYRIGHT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_COPYRIGHT_DESC" />
<action name="joomla_component.edit.php_preflight_update" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_PREFLIGHT_UPDATE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_PREFLIGHT_UPDATE_DESC" />
<action name="joomla_component.edit.debug_linenr" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_DEBUG_LINENR" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_DEBUG_LINENR_DESC" />
<action name="joomla_component.edit.mvc_versiondate" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_MVC_VERSIONDATE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_MVC_VERSIONDATE_DESC" />
<action name="joomla_component.edit.add_site_event" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_SITE_EVENT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_SITE_EVENT_DESC" />
<action name="joomla_component.edit.name" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_NAME" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_NAME_DESC" />
<action name="joomla_component.edit.dashboard_tab" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_DASHBOARD_TAB" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_DASHBOARD_TAB_DESC" />
<action name="joomla_component.edit.creatuserhelper" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_CREATUSERHELPER" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_CREATUSERHELPER_DESC" />
<action name="joomla_component.edit.php_postflight_update" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_POSTFLIGHT_UPDATE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_POSTFLIGHT_UPDATE_DESC" />
<action name="joomla_component.edit.add_php_helper_both" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_HELPER_BOTH" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_HELPER_BOTH_DESC" />
<action name="joomla_component.edit.version_update" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION_UPDATE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION_UPDATE_DESC" />
<action name="joomla_component.edit.email" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EMAIL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EMAIL_DESC" />
<action name="joomla_component.edit.sales_server_ftp" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SALES_SERVER_FTP" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SALES_SERVER_FTP_DESC" />
<action name="joomla_component.edit.website" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_WEBSITE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_WEBSITE_DESC" />
<action name="joomla_component.edit.export_package_link" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EXPORT_PACKAGE_LINK" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EXPORT_PACKAGE_LINK_DESC" />
<action name="joomla_component.edit.add_license" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_LICENSE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_LICENSE_DESC" />
<action name="joomla_component.edit.addfootable" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDFOOTABLE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDFOOTABLE_DESC" />
<action name="joomla_component.edit.license_type" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_LICENSE_TYPE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_LICENSE_TYPE_DESC" />
<action name="joomla_component.edit.add_php_helper_admin" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_HELPER_ADMIN" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_HELPER_ADMIN_DESC" />
<action name="joomla_component.edit.add_php_helper_site" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_HELPER_SITE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_HELPER_SITE_DESC" />
<action name="joomla_component.edit.whmcs_key" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_WHMCS_KEY" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_WHMCS_KEY_DESC" />
<action name="joomla_component.edit.add_javascript" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_JAVASCRIPT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_JAVASCRIPT_DESC" />
<action name="joomla_component.edit.whmcs_url" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_WHMCS_URL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_WHMCS_URL_DESC" />
<action name="joomla_component.edit.add_php_dashboard_methods" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_DASHBOARD_METHODS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_DASHBOARD_METHODS_DESC" />
<action name="joomla_component.edit.license" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_LICENSE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_LICENSE_DESC" />
<action name="joomla_component.edit.php_preflight_install" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_PREFLIGHT_INSTALL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_PREFLIGHT_INSTALL_DESC" />
<action name="joomla_component.edit.bom" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_BOM" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_BOM_DESC" />
<action name="joomla_component.edit.php_postflight_install" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_POSTFLIGHT_INSTALL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_POSTFLIGHT_INSTALL_DESC" />
<action name="joomla_component.edit.image" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_IMAGE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_IMAGE_DESC" />
<action name="joomla_component.edit.php_method_uninstall" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_METHOD_UNINSTALL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_METHOD_UNINSTALL_DESC" />
<action name="joomla_component.edit.add_update_server" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_UPDATE_SERVER" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_UPDATE_SERVER_DESC" />
<action name="joomla_component.edit.readme" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_README" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_README_DESC" />
<action name="joomla_component.edit.update_server_target" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_UPDATE_SERVER_TARGET" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_UPDATE_SERVER_TARGET_DESC" />
<action name="joomla_component.edit.update_server_ftp" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_UPDATE_SERVER_FTP" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_UPDATE_SERVER_FTP_DESC" />
<action name="joomla_component.edit.addadmin_views" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDADMIN_VIEWS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDADMIN_VIEWS_DESC" />
<action name="joomla_component.edit.buildcomp" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_BUILDCOMP" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_BUILDCOMP_DESC" />
<action name="joomla_component.edit.addcustom_admin_views" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDCUSTOM_ADMIN_VIEWS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDCUSTOM_ADMIN_VIEWS_DESC" />
<action name="joomla_component.edit.export_key" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EXPORT_KEY" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EXPORT_KEY_DESC" />
<action name="joomla_component.edit.addsite_views" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDSITE_VIEWS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDSITE_VIEWS_DESC" />
<action name="joomla_component.edit.export_buy_link" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EXPORT_BUY_LINK" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EXPORT_BUY_LINK_DESC" />
<action name="joomla_component.edit.adduikit" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDUIKIT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDUIKIT_DESC" />
<action name="joomla_component.edit.add_email_helper" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_EMAIL_HELPER" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_EMAIL_HELPER_DESC" />
<action name="joomla_component.edit.sql_tweak" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SQL_TWEAK" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_SQL_TWEAK_DESC" />
<action name="joomla_component.edit.php_helper_both" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_HELPER_BOTH" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_HELPER_BOTH_DESC" />
<action name="joomla_component.edit.php_helper_admin" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_HELPER_ADMIN" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_HELPER_ADMIN_DESC" />
<action name="joomla_component.edit.php_admin_event" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_ADMIN_EVENT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_ADMIN_EVENT_DESC" />
<action name="joomla_component.edit.addcustommenus" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDCUSTOMMENUS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDCUSTOMMENUS_DESC" />
<action name="joomla_component.edit.php_helper_site" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_HELPER_SITE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_HELPER_SITE_DESC" />
<action name="joomla_component.edit.php_site_event" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_SITE_EVENT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_SITE_EVENT_DESC" />
<action name="joomla_component.edit.javascript" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_JAVASCRIPT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_JAVASCRIPT_DESC" />
<action name="joomla_component.edit.addconfig" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDCONFIG" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDCONFIG_DESC" />
<action name="joomla_component.edit.css" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_CSS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_CSS_DESC" />
<action name="joomla_component.edit.php_dashboard_methods" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_DASHBOARD_METHODS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_PHP_DASHBOARD_METHODS_DESC" />
<action name="joomla_component.edit.addcontributors" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDCONTRIBUTORS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDCONTRIBUTORS_DESC" />
<action name="joomla_component.edit.add_php_preflight_install" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_PREFLIGHT_INSTALL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_PREFLIGHT_INSTALL_DESC" />
<action name="joomla_component.edit.emptycontributors" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EMPTYCONTRIBUTORS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_EMPTYCONTRIBUTORS_DESC" />
<action name="joomla_component.edit.add_php_preflight_update" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_PREFLIGHT_UPDATE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_PREFLIGHT_UPDATE_DESC" />
<action name="joomla_component.edit.number" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_NUMBER" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_NUMBER_DESC" />
<action name="joomla_component.edit.add_php_postflight_install" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_POSTFLIGHT_INSTALL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_POSTFLIGHT_INSTALL_DESC" />
<action name="joomla_component.edit.add_php_postflight_update" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_POSTFLIGHT_UPDATE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_POSTFLIGHT_UPDATE_DESC" />
<action name="joomla_component.edit.add_php_method_uninstall" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_METHOD_UNINSTALL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_PHP_METHOD_UNINSTALL_DESC" />
<action name="joomla_component.edit.addfiles" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDFILES" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDFILES_DESC" />
<action name="joomla_component.edit.add_sql" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_SQL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_SQL_DESC" />
<action name="joomla_component.edit.addreadme" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDREADME" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDREADME_DESC" />
<action name="joomla_component.edit.addfolders" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDFOLDERS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADDFOLDERS_DESC" />
<action name="joomla_component.edit.update_server" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_UPDATE_SERVER" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_UPDATE_SERVER_DESC" />
<action name="joomla_component.edit.toignore" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_TOIGNORE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_TOIGNORE_DESC" />
<action name="joomla_component.edit.add_sales_server" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_SALES_SERVER" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_SALES_SERVER_DESC" />
<action name="joomla_component.edit.buildcompsql" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_BUILDCOMPSQL" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_BUILDCOMPSQL_DESC" />
<action name="joomla_component.version" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION_DESC" />
</section>
<section name="admin_view">
@ -181,6 +433,83 @@
<action name="core.create" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_CREATE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_CREATE_DESC" />
<action name="core.delete" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_DELETE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_DELETE_DESC" />
<action name="admin_view.access" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_ACCESS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_ACCESS_DESC" />
<action name="admin_view.edit.system_name" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_SYSTEM_NAME" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_SYSTEM_NAME_DESC" />
<action name="admin_view.edit.name_single" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_NAME_SINGLE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_NAME_SINGLE_DESC" />
<action name="admin_view.edit.name_list" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_NAME_LIST" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_NAME_LIST_DESC" />
<action name="admin_view.edit.short_description" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_SHORT_DESCRIPTION" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_SHORT_DESCRIPTION_DESC" />
<action name="admin_view.edit.php_batchmove" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BATCHMOVE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BATCHMOVE_DESC" />
<action name="admin_view.edit.type" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_TYPE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_TYPE_DESC" />
<action name="admin_view.edit.php_save" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_SAVE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_SAVE_DESC" />
<action name="admin_view.edit.description" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_DESCRIPTION" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_DESCRIPTION_DESC" />
<action name="admin_view.edit.php_after_delete" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_AFTER_DELETE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_AFTER_DELETE_DESC" />
<action name="admin_view.edit.add_fadein" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_FADEIN" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_FADEIN_DESC" />
<action name="admin_view.edit.icon" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ICON" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ICON_DESC" />
<action name="admin_view.edit.php_getlistquery" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_GETLISTQUERY" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_GETLISTQUERY_DESC" />
<action name="admin_view.edit.icon_add" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ICON_ADD" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ICON_ADD_DESC" />
<action name="admin_view.edit.php_allowedit" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_ALLOWEDIT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_ALLOWEDIT_DESC" />
<action name="admin_view.edit.icon_category" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ICON_CATEGORY" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ICON_CATEGORY_DESC" />
<action name="admin_view.edit.php_after_publish" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_AFTER_PUBLISH" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_AFTER_PUBLISH_DESC" />
<action name="admin_view.edit.source" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_SOURCE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_SOURCE_DESC" />
<action name="admin_view.edit.php_getitems" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_GETITEMS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_GETITEMS_DESC" />
<action name="admin_view.edit.php_import" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT_DESC" />
<action name="admin_view.edit.addpermissions" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDPERMISSIONS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDPERMISSIONS_DESC" />
<action name="admin_view.edit.php_getitems_after_all" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_GETITEMS_AFTER_ALL" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_GETITEMS_AFTER_ALL_DESC" />
<action name="admin_view.edit.addtabs" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDTABS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDTABS_DESC" />
<action name="admin_view.edit.php_before_save" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BEFORE_SAVE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BEFORE_SAVE_DESC" />
<action name="admin_view.edit.php_postsavehook" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_POSTSAVEHOOK" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_POSTSAVEHOOK_DESC" />
<action name="admin_view.edit.addfields" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDFIELDS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDFIELDS_DESC" />
<action name="admin_view.edit.php_batchcopy" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BATCHCOPY" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BATCHCOPY_DESC" />
<action name="admin_view.edit.php_before_publish" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BEFORE_PUBLISH" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BEFORE_PUBLISH_DESC" />
<action name="admin_view.edit.addconditions" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDCONDITIONS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDCONDITIONS_DESC" />
<action name="admin_view.edit.php_before_delete" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BEFORE_DELETE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_BEFORE_DELETE_DESC" />
<action name="admin_view.edit.addlinked_views" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDLINKED_VIEWS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDLINKED_VIEWS_DESC" />
<action name="admin_view.edit.php_document" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_DOCUMENT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_DOCUMENT_DESC" />
<action name="admin_view.edit.sql" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_SQL" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_SQL_DESC" />
<action name="admin_view.edit.php_import_display" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT_DISPLAY" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT_DISPLAY_DESC" />
<action name="admin_view.edit.php_getitem" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_GETITEM" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_GETITEM_DESC" />
<action name="admin_view.edit.php_import_save" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT_SAVE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT_SAVE_DESC" />
<action name="admin_view.edit.add_css_view" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_CSS_VIEW" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_CSS_VIEW_DESC" />
<action name="admin_view.edit.css_view" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_CSS_VIEW" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_CSS_VIEW_DESC" />
<action name="admin_view.edit.add_php_getitems" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_GETITEMS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_GETITEMS_DESC" />
<action name="admin_view.edit.add_css_views" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_CSS_VIEWS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_CSS_VIEWS_DESC" />
<action name="admin_view.edit.add_php_getitems_after_all" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_GETITEMS_AFTER_ALL" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_GETITEMS_AFTER_ALL_DESC" />
<action name="admin_view.edit.css_views" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_CSS_VIEWS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_CSS_VIEWS_DESC" />
<action name="admin_view.edit.add_php_getlistquery" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_GETLISTQUERY" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_GETLISTQUERY_DESC" />
<action name="admin_view.edit.add_javascript_view_file" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_JAVASCRIPT_VIEW_FILE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_JAVASCRIPT_VIEW_FILE_DESC" />
<action name="admin_view.edit.add_php_before_save" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BEFORE_SAVE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BEFORE_SAVE_DESC" />
<action name="admin_view.edit.javascript_view_file" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_JAVASCRIPT_VIEW_FILE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_JAVASCRIPT_VIEW_FILE_DESC" />
<action name="admin_view.edit.add_php_save" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_SAVE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_SAVE_DESC" />
<action name="admin_view.edit.add_javascript_view_footer" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_JAVASCRIPT_VIEW_FOOTER" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_JAVASCRIPT_VIEW_FOOTER_DESC" />
<action name="admin_view.edit.add_php_postsavehook" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_POSTSAVEHOOK" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_POSTSAVEHOOK_DESC" />
<action name="admin_view.edit.javascript_view_footer" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_JAVASCRIPT_VIEW_FOOTER" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_JAVASCRIPT_VIEW_FOOTER_DESC" />
<action name="admin_view.edit.add_php_allowedit" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_ALLOWEDIT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_ALLOWEDIT_DESC" />
<action name="admin_view.edit.add_javascript_views_file" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_JAVASCRIPT_VIEWS_FILE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_JAVASCRIPT_VIEWS_FILE_DESC" />
<action name="admin_view.edit.add_php_batchcopy" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BATCHCOPY" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BATCHCOPY_DESC" />
<action name="admin_view.edit.javascript_views_file" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_JAVASCRIPT_VIEWS_FILE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_JAVASCRIPT_VIEWS_FILE_DESC" />
<action name="admin_view.edit.add_php_batchmove" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BATCHMOVE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BATCHMOVE_DESC" />
<action name="admin_view.edit.add_javascript_views_footer" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_JAVASCRIPT_VIEWS_FOOTER" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_JAVASCRIPT_VIEWS_FOOTER_DESC" />
<action name="admin_view.edit.add_php_before_publish" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BEFORE_PUBLISH" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BEFORE_PUBLISH_DESC" />
<action name="admin_view.edit.javascript_views_footer" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_JAVASCRIPT_VIEWS_FOOTER" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_JAVASCRIPT_VIEWS_FOOTER_DESC" />
<action name="admin_view.edit.add_php_after_publish" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_AFTER_PUBLISH" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_AFTER_PUBLISH_DESC" />
<action name="admin_view.edit.add_custom_button" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_CUSTOM_BUTTON" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_CUSTOM_BUTTON_DESC" />
<action name="admin_view.edit.add_php_before_delete" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BEFORE_DELETE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_BEFORE_DELETE_DESC" />
<action name="admin_view.edit.custom_button" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_CUSTOM_BUTTON" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_CUSTOM_BUTTON_DESC" />
<action name="admin_view.edit.add_php_after_delete" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_AFTER_DELETE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_AFTER_DELETE_DESC" />
<action name="admin_view.edit.php_controller" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_CONTROLLER" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_CONTROLLER_DESC" />
<action name="admin_view.edit.add_php_document" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_DOCUMENT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_DOCUMENT_DESC" />
<action name="admin_view.edit.php_model" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_MODEL" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_MODEL_DESC" />
<action name="admin_view.edit.add_sql" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_SQL" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_SQL_DESC" />
<action name="admin_view.edit.php_controller_list" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_CONTROLLER_LIST" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_CONTROLLER_LIST_DESC" />
<action name="admin_view.edit.addtables" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDTABLES" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADDTABLES_DESC" />
<action name="admin_view.edit.php_model_list" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_MODEL_LIST" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_MODEL_LIST_DESC" />
<action name="admin_view.edit.add_php_ajax" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_AJAX" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_AJAX_DESC" />
<action name="admin_view.edit.add_custom_import" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_CUSTOM_IMPORT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_CUSTOM_IMPORT_DESC" />
<action name="admin_view.edit.php_ajaxmethod" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_AJAXMETHOD" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_AJAXMETHOD_DESC" />
<action name="admin_view.edit.html_import_view" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_HTML_IMPORT_VIEW" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_HTML_IMPORT_VIEW_DESC" />
<action name="admin_view.edit.ajax_input" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_AJAX_INPUT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_AJAX_INPUT_DESC" />
<action name="admin_view.edit.php_import_setdata" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT_SETDATA" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT_SETDATA_DESC" />
<action name="admin_view.edit.add_php_getitem" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_GETITEM" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_ADD_PHP_GETITEM_DESC" />
<action name="admin_view.edit.php_import_ext" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT_EXT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_PHP_IMPORT_EXT_DESC" />
<action name="admin_view.version" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_VERSION" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_VERSION_DESC" />
</section>
<section name="custom_admin_view">
@ -264,6 +593,10 @@
<action name="fieldtype.create" title="COM_COMPONENTBUILDER_FIELDTYPES_CREATE" description="COM_COMPONENTBUILDER_FIELDTYPES_CREATE_DESC" />
<action name="fieldtype.delete" title="COM_COMPONENTBUILDER_FIELDTYPES_DELETE" description="COM_COMPONENTBUILDER_FIELDTYPES_DELETE_DESC" />
<action name="fieldtype.access" title="COM_COMPONENTBUILDER_FIELDTYPES_ACCESS" description="COM_COMPONENTBUILDER_FIELDTYPES_ACCESS_DESC" />
<action name="fieldtype.edit.name" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_NAME" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_NAME_DESC" />
<action name="fieldtype.edit.description" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_DESCRIPTION" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_DESCRIPTION_DESC" />
<action name="fieldtype.edit.short_description" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_SHORT_DESCRIPTION" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_SHORT_DESCRIPTION_DESC" />
<action name="fieldtype.edit.properties" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_PROPERTIES" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_PROPERTIES_DESC" />
<action name="fieldtype.version" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_VERSION" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_VERSION_DESC" />
</section>
<section name="language_translation">
@ -284,6 +617,19 @@
<action name="language.access" title="COM_COMPONENTBUILDER_LANGUAGES_ACCESS" description="COM_COMPONENTBUILDER_LANGUAGES_ACCESS_DESC" />
<action name="language.version" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT_VERSION" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_VERSION_DESC" />
</section>
<section name="ftp">
<action name="ftp.edit" title="COM_COMPONENTBUILDER_FTPS_EDIT" description="COM_COMPONENTBUILDER_FTPS_EDIT_DESC" />
<action name="ftp.edit.own" title="COM_COMPONENTBUILDER_FTPS_EDIT_OWN" description="COM_COMPONENTBUILDER_FTPS_EDIT_OWN_DESC" />
<action name="ftp.edit.state" title="COM_COMPONENTBUILDER_FTPS_EDIT_STATE" description="COM_COMPONENTBUILDER_FTPS_EDIT_STATE_DESC" />
<action name="ftp.edit.created_by" title="COM_COMPONENTBUILDER_FTPS_EDIT_CREATED_BY" description="COM_COMPONENTBUILDER_FTPS_EDIT_CREATED_BY_DESC" />
<action name="ftp.edit.created" title="COM_COMPONENTBUILDER_FTPS_EDIT_CREATED_DATE" description="COM_COMPONENTBUILDER_FTPS_EDIT_CREATED_DATE_DESC" />
<action name="ftp.create" title="COM_COMPONENTBUILDER_FTPS_CREATE" description="COM_COMPONENTBUILDER_FTPS_CREATE_DESC" />
<action name="ftp.delete" title="COM_COMPONENTBUILDER_FTPS_DELETE" description="COM_COMPONENTBUILDER_FTPS_DELETE_DESC" />
<action name="ftp.access" title="COM_COMPONENTBUILDER_FTPS_ACCESS" description="COM_COMPONENTBUILDER_FTPS_ACCESS_DESC" />
<action name="ftp.edit.name" title="COM_COMPONENTBUILDER_FTPS_EDIT_NAME" description="COM_COMPONENTBUILDER_FTPS_EDIT_NAME_DESC" />
<action name="ftp.edit.signature" title="COM_COMPONENTBUILDER_FTPS_EDIT_SIGNATURE" description="COM_COMPONENTBUILDER_FTPS_EDIT_SIGNATURE_DESC" />
<action name="ftp.version" title="COM_COMPONENTBUILDER_FTPS_EDIT_VERSION" description="COM_COMPONENTBUILDER_FTPS_EDIT_VERSION_DESC" />
</section>
<section name="help_document">
<action name="help_document.edit" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_DESC" />
<action name="help_document.edit.own" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_OWN" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_OWN_DESC" />

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.4.3
@build 8th April, 2017
@version 2.5.6
@build 6th October, 2017
@created 30th April, 2015
@package Component Builder
@subpackage admin.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 109 of this MVC
@build 31st March, 2017
@version @update number 114 of this MVC
@build 28th August, 2017
@created 30th April, 2015
@package Component Builder
@subpackage admin_view.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 109 of this MVC
@build 31st March, 2017
@version @update number 114 of this MVC
@build 28th August, 2017
@created 30th April, 2015
@package Component Builder
@subpackage admin_views.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 47 of this MVC
@build 21st March, 2017
@version @update number 55 of this MVC
@build 13th September, 2017
@created 1st February, 2017
@package Component Builder
@subpackage compiler.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 22 of this MVC
@build 1st March, 2017
@version @update number 27 of this MVC
@build 27th September, 2017
@created 13th August, 2015
@package Component Builder
@subpackage custom_admin_view.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 22 of this MVC
@build 1st March, 2017
@version @update number 27 of this MVC
@build 27th September, 2017
@created 13th August, 2015
@package Component Builder
@subpackage custom_admin_views.css

View File

@ -10,7 +10,7 @@
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 82 of this MVC
@build 3rd April, 2017
@build 4th October, 2017
@created 11th October, 2016
@package Component Builder
@subpackage custom_code.css

View File

@ -10,7 +10,7 @@
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 82 of this MVC
@build 3rd April, 2017
@build 4th October, 2017
@created 11th October, 2016
@package Component Builder
@subpackage custom_codes.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.4.3
@build 8th April, 2017
@version 2.5.6
@build 6th October, 2017
@created 30th April, 2015
@package Component Builder
@subpackage dashboard.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 81 of this MVC
@build 15th January, 2017
@version @update number 94 of this MVC
@build 27th September, 2017
@created 21st May, 2015
@package Component Builder
@subpackage dynamic_get.css
@ -24,4 +24,6 @@
/* CSS Document */
.fieldMedium {
width: 80px !important;
}

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 81 of this MVC
@build 15th January, 2017
@version @update number 94 of this MVC
@build 27th September, 2017
@created 21st May, 2015
@package Component Builder
@subpackage dynamic_gets.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 37 of this MVC
@build 3rd February, 2017
@version @update number 38 of this MVC
@build 28th May, 2017
@created 30th April, 2015
@package Component Builder
@subpackage field.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 37 of this MVC
@build 3rd February, 2017
@version @update number 38 of this MVC
@build 28th May, 2017
@created 30th April, 2015
@package Component Builder
@subpackage fields.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 12 of this MVC
@build 20th October, 2016
@version @update number 15 of this MVC
@build 17th September, 2017
@created 30th April, 2015
@package Component Builder
@subpackage fieldtype.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 12 of this MVC
@build 20th October, 2016
@version @update number 15 of this MVC
@build 17th September, 2017
@created 30th April, 2015
@package Component Builder
@subpackage fieldtypes.css

27
admin/assets/css/ftp.css Normal file
View File

@ -0,0 +1,27 @@
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 10 of this MVC
@build 24th August, 2017
@created 23rd August, 2017
@package Component Builder
@subpackage ftp.css
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
/* CSS Document */

27
admin/assets/css/ftps.css Normal file
View File

@ -0,0 +1,27 @@
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 10 of this MVC
@build 24th August, 2017
@created 23rd August, 2017
@package Component Builder
@subpackage ftps.css
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
/* CSS Document */

View File

@ -10,7 +10,7 @@
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 6 of this MVC
@build 18th October, 2016
@build 17th October, 2016
@created 4th March, 2016
@package Component Builder
@subpackage help_document.css

View File

@ -10,7 +10,7 @@
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 6 of this MVC
@build 18th October, 2016
@build 17th October, 2016
@created 4th March, 2016
@package Component Builder
@subpackage help_documents.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 331 of this MVC
@build 8th April, 2017
@version @update number 385 of this MVC
@build 6th October, 2017
@created 6th May, 2015
@package Component Builder
@subpackage joomla_component.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 331 of this MVC
@build 8th April, 2017
@version @update number 385 of this MVC
@build 6th October, 2017
@created 6th May, 2015
@package Component Builder
@subpackage joomla_components.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 39 of this MVC
@build 7th April, 2017
@version @update number 43 of this MVC
@build 16th September, 2017
@created 3rd April, 2017
@package Component Builder
@subpackage language_translation.css
@ -24,4 +24,7 @@
/* CSS Document */
.translation_text_area {
width: 100%;
}

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 39 of this MVC
@build 7th April, 2017
@version @update number 43 of this MVC
@build 16th September, 2017
@created 3rd April, 2017
@package Component Builder
@subpackage language_translations.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 67 of this MVC
@build 1st April, 2017
@version @update number 81 of this MVC
@build 27th September, 2017
@created 18th May, 2015
@package Component Builder
@subpackage layout.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 67 of this MVC
@build 1st April, 2017
@version @update number 81 of this MVC
@build 27th September, 2017
@created 18th May, 2015
@package Component Builder
@subpackage layouts.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 51 of this MVC
@build 6th March, 2017
@version @update number 54 of this MVC
@build 27th September, 2017
@created 29th May, 2015
@package Component Builder
@subpackage site_view.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 51 of this MVC
@build 6th March, 2017
@version @update number 54 of this MVC
@build 27th September, 2017
@created 29th May, 2015
@package Component Builder
@subpackage site_views.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 16 of this MVC
@build 20th October, 2016
@version @update number 17 of this MVC
@build 27th September, 2017
@created 19th May, 2015
@package Component Builder
@subpackage snippet.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 16 of this MVC
@build 20th October, 2016
@version @update number 17 of this MVC
@build 27th September, 2017
@created 19th May, 2015
@package Component Builder
@subpackage snippets.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 40 of this MVC
@build 1st April, 2017
@version @update number 45 of this MVC
@build 27th September, 2017
@created 26th May, 2015
@package Component Builder
@subpackage template.css

View File

@ -9,8 +9,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 40 of this MVC
@build 1st April, 2017
@version @update number 45 of this MVC
@build 27th September, 2017
@created 26th May, 2015
@package Component Builder
@subpackage templates.css

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

View File

@ -0,0 +1,25 @@
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.5.6
@build 6th October, 2017
@created 30th April, 2015
@package Component Builder
@subpackage admin.js
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
/* JS Document */

View File

@ -52,7 +52,10 @@ class ###Component###View###Component### extends JViewLegacy
// Assign data to the view
$this->icons = $this->get('Icons');
$this->contributors = ###Component###Helper::getContributors();###DASH_GET_CUSTOM_DATA###
// get the manifest details of the component
$this->manifest = ###Component###Helper::manifest();
// Set the toolbar
$this->addToolBar();
@ -87,15 +90,19 @@ class ###Component###View###Component### extends JViewLegacy
/**
* Method to set up the document properties
*
*
* @return void
*/
protected function setDocument()
{
$document = JFactory::getDocument();
// add dashboard style sheets
$document->addStyleSheet(JURI::root() . "administrator/components/com_###component###/assets/css/dashboard.css");
// set page title
$document->setTitle(JText::_('COM_###COMPONENT###_DASHBOARD'));
// add manifest to page JavaScript
$document->addScriptDeclaration("var manifest = jQuery.parseJSON('" . json_encode($this->manifest) . "');", "text/javascript");
}
}

View File

@ -157,7 +157,14 @@ abstract class ###Component###Helper
$query = $db->getQuery(true);
$query->select($db->quoteName(array($what)));
$query->from($db->quoteName('#_'.$main.'_'.$table));
if (empty($table))
{
$query->from($db->quoteName('#__'.$main));
}
else
{
$query->from($db->quoteName('#_'.$main.'_'.$table));
}
$query->where($db->quoteName($whereString) . ' '.$operator.' (' . implode(',',$where) . ')');
$db->setQuery($query);
$db->execute();
@ -440,12 +447,20 @@ abstract class ###Component###Helper
**/
public static function getModel($name, $path = JPATH_COMPONENT_ADMINISTRATOR, $component = '###component###')
{
// load some joomla helpers
JLoader::import('joomla.application.component.model');
// load the model file
JLoader::import( $name, $path . '/models' );
// return instance
return JModelLegacy::getInstance( $name, $component.'Model' );
JModelLegacy::addIncludePath( $path . '/models' );
// get instance
$model = JModelLegacy::getInstance( $name, $component.'Model' );
// if model not found
if ($model == false)
{
// build class name
$class = $prefix.$name;
// initilize the model
new $class();
$model = JModelLegacy::getInstance($name, $prefix);
}
return $model;
}
/**
@ -652,10 +667,16 @@ abstract class ###Component###Helper
return false;
}
// typo sorry!
public static function sorten($string, $length = 40, $addTip = true)
{
return self::shorten($string, $length, $addTip);
}
public static function shorten($string, $length = 40, $addTip = true)
{
if (self::checkString($string))
{
{
$initial = strlen($string);
$words = preg_split('/([\s\n\r]+)/', $string, null, PREG_SPLIT_DELIM_CAPTURE);
$words_count = count($words);
@ -675,7 +696,7 @@ abstract class ###Component###Helper
$final = strlen($newString);
if ($initial != $final && $addTip)
{
$title = self::sorten($string, 400 , false);
$title = self::shorten($string, 400 , false);
return '<span class="hasTip" title="'.$title.'" style="cursor:help">'.trim($newString).'...</span>';
}
elseif ($initial != $final && !$addTip)
@ -706,7 +727,8 @@ abstract class ###Component###Helper
// If you don't need to handle multi-byte characters
// you can use preg_replace rather than mb_ereg_replace
// Thanks @Łukasz Rysiak!
$string = mb_ereg_replace("([^\w\s\d\-_\(\)])", '', $string);
// $string = mb_ereg_replace("([^\w\s\d\-_\(\)])", '', $string);
$string = preg_replace("([^\w\s\d\-_\(\)])", '', $string);
// http://stackoverflow.com/a/2021729/1429677
return preg_replace('/\s+/', ' ', $string);
}
@ -773,15 +795,15 @@ abstract class ###Component###Helper
return '';
}
public static function htmlEscape($var, $charset = 'UTF-8', $sorten = false, $length = 40)
public static function htmlEscape($var, $charset = 'UTF-8', $shorten = false, $length = 40)
{
if (self::checkString($var))
{
$filter = new JFilterInput();
$string = $filter->clean(html_entity_decode(htmlentities($var, ENT_COMPAT, $charset)), 'HTML');
if ($sorten)
if ($shorten)
{
return self::sorten($string,$length);
return self::shorten($string,$length);
}
return $string;
}

View File

@ -114,6 +114,8 @@ abstract class ###Component###Email
$sendmail = $globalConf->get('sendmail');
$mailfrom = $globalConf->get('mailfrom');
$fromname = $globalConf->get('fromname');
$replyto = $globalConf->get('replyto');
$replytoname = $globalConf->get('replytoname');
}
else
{
@ -126,15 +128,15 @@ abstract class ###Component###Email
$sendmail = $conf->get('sendmail');
$mailfrom = $conf->get('mailfrom');
$fromname = $conf->get('fromname');
$mailreply = $conf->get('mailreply');
$replyname = $conf->get('replyname');
$replyto = $conf->get('replyto');
$replytoname = $conf->get('replytoname');
}
// set the global reply-to
if ($mailreply && $fromname)
{
$mail->ClearReplyTos();
$mail->addReplyTo( array( $mailreply, $replyname ) );
}
// set the global reply-to if found
if ($replyto && $replytoname)
{
$mail->ClearReplyTos();
$mail->addReplyTo( array( $replyto, $replytoname ) );
}
// Set global sender
@ -276,4 +278,74 @@ abstract class ###Component###Email
return $sendmail;
}
/**
* Set html text (in a row) and subject (as title) to a email table.
* do not use <p> instead use <br />
* in your html that you pass to this method
* since it is a table row it does not
* work well with paragraphs
*
* @return string on success
*
*/
public static function setTableBody($html, $subject)
{
$body = array();
$body[] = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">";
$body[] = "<html xmlns=\"http://www.w3.org/1999/xhtml\">";
$body[] = "<head>";
$body[] = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />";
$body[] = "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>";
$body[] = "<title>".$subject."</title>";
$body[] = "<style type=\"text/css\">";
$body[] = "#outlook a {padding:0;}";
$body[] = ".ExternalClass {width:100%;}";
$body[] = ".ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} ";
$body[] = "p {margin: 0; padding: 0; font-size: 0px; line-height: 0px;} ";
$body[] = "table td {border-collapse: collapse;}";
$body[] = "table {border-collapse: collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }";
$body[] = "img {display: block; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic;}";
$body[] = "a img {border: none;}";
$body[] = "a {text-decoration: none; color: #000001;}";
$body[] = "a.phone {text-decoration: none; color: #000001 !important; pointer-events: auto; cursor: default;}";
$body[] = "span {font-size: 13px; line-height: 17px; font-family: monospace; color: #000001;}";
$body[] = "</style>";
$body[] = "<!--[if gte mso 9]>";
$body[] = "<style>";
$body[] = "/* Target Outlook 2007 and 2010 */";
$body[] = "</style>";
$body[] = "<![endif]-->";
$body[] = "</head>";
$body[] = "<body style=\"width:100%; margin:0; padding:0; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;\">";
$body[] = "\n<!-- body wrapper -->";
$body[] = "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"margin:0; padding:0; width:100%; line-height: 100% !important;\">";
$body[] = "<tr>";
$body[] = "<td valign=\"top\">";
$body[] = "<!-- edge wrapper -->";
$body[] = "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align=\"center\" width=\"800\" >";
$body[] = "<tr>";
$body[] = "<td valign=\"top\">";
$body[] = "<!-- content wrapper -->";
$body[] = "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align=\"center\" width=\"780\">";
$body[] = "<tr>";
$body[] = "<td valign=\"top\" style=\"vertical-align: top;\">";
$body[] = $html;
$body[] = "</td>";
$body[] = "</tr>";
$body[] = "</table>";
$body[] = "<!-- / content wrapper -->";
$body[] = "</td>";
$body[] = "</tr>";
$body[] = "</table>";
$body[] = "<!-- / edge wrapper -->";
$body[] = "</td>";
$body[] = "</tr>";
$body[] = "</table>";
$body[] = "<!-- / page wrapper -->";
$body[] = "</body>";
$body[] = "</html>";
return implode("\n", $body);
}
}

View File

@ -118,12 +118,23 @@ abstract class ###Component###Helper
**/
public static function getModel($name, $path = JPATH_COMPONENT_SITE, $component = '###component###')
{
// load some joomla helpers
JLoader::import('joomla.application.component.model');
// full path
$fullPath = $path . '/models';
// load the model file
JLoader::import( $name, $path . '/models' );
// return instance
return JModelLegacy::getInstance( $name, $component.'Model' );
JModelLegacy::addIncludePath($fullPath);
// get instance
$model = JModelLegacy::getInstance( $name, $component.'Model' );
// if model not found
if ($model == false)
{
require_once $fullPath.'/'.strtolower($name).'.php';
// build class name
$class = $prefix.$name;
// initialize the model
new $class();
$model = JModelLegacy::getInstance($name, $prefix);
}
return $model;
}
/**
@ -331,7 +342,14 @@ abstract class ###Component###Helper
$query = $db->getQuery(true);
$query->select($db->quoteName(array($what)));
$query->from($db->quoteName('#_'.$main.'_'.$table));
if (empty($table))
{
$query->from($db->quoteName('#__'.$main));
}
else
{
$query->from($db->quoteName('#_'.$main.'_'.$table));
}
$query->where($db->quoteName($whereString) . ' '.$operator.' (' . implode(',',$where) . ')');
$db->setQuery($query);
$db->execute();
@ -644,7 +662,13 @@ abstract class ###Component###Helper
return false;
}
// typo sorry!
public static function sorten($string, $length = 40, $addTip = true)
{
return self::shorten($string, $length, $addTip);
}
public static function shorten($string, $length = 40, $addTip = true)
{
if (self::checkString($string))
{
@ -667,7 +691,7 @@ abstract class ###Component###Helper
$final = strlen($newString);
if ($initial != $final && $addTip)
{
$title = self::sorten($string, 400 , false);
$title = self::shorten($string, 400 , false);
return '<span class="hasTip" title="'.$title.'" style="cursor:help">'.trim($newString).'...</span>';
}
elseif ($initial != $final && !$addTip)
@ -698,7 +722,8 @@ abstract class ###Component###Helper
// If you don't need to handle multi-byte characters
// you can use preg_replace rather than mb_ereg_replace
// Thanks @Łukasz Rysiak!
$string = mb_ereg_replace("([^\w\s\d\-_\(\)])", '', $string);
// $string = mb_ereg_replace("([^\w\s\d\-_\(\)])", '', $string);
$string = preg_replace("([^\w\s\d\-_\(\)])", '', $string);
// http://stackoverflow.com/a/2021729/1429677
return preg_replace('/\s+/', ' ', $string);
}
@ -765,15 +790,15 @@ abstract class ###Component###Helper
return '';
}
public static function htmlEscape($var, $charset = 'UTF-8', $sorten = false, $length = 40)
public static function htmlEscape($var, $charset = 'UTF-8', $shorten = false, $length = 40)
{
if (self::checkString($var))
{
$filter = new JFilterInput();
$string = $filter->clean(html_entity_decode(htmlentities($var, ENT_COMPAT, $charset)), 'HTML');
if ($sorten)
if ($shorten)
{
return self::sorten($string,$length);
return self::shorten($string,$length);
}
return $string;
}

View File

@ -142,7 +142,7 @@ class ###Component###View###Views### extends JViewLegacy
{
JToolbarHelper::trash('###views###.trash');
}###EXPORTBUTTON###
}###IMPORTBUTTON###
}###ADMIN_CUSTOM_FUNCTION_ONLY_BUTTONS_LIST### ###IMPORTBUTTON###
// set help url for this view if found
$help_url = ###Component###Helper::getHelpUrl('###views###');

View File

@ -0,0 +1,4 @@
###BOM###
/* JS Document */
###ADMINJS###

View File

@ -29,30 +29,27 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$manifest = ###Component###Helper::manifest();
JHtml::_('bootstrap.loadCss');
?>
<img alt="<?php echo JText::_('COM_###COMPONENT###'); ?>" src="components/com_###component###/assets/images/component-300.###COMP_IMAGE_TYPE###">
<img alt="<?php echo JText::_('COM_###COMPONENT###'); ?>" src="components/com_###component###/assets/images/vdm-component.###COMP_IMAGE_TYPE###">
<ul class="list-striped">
<li><b><?php echo JText::_('COM_###COMPONENT###_VERSION'); ?>:</b> <?php echo $manifest->version; ?></li>
<li><b><?php echo JText::_('COM_###COMPONENT###_DATE'); ?>:</b> <?php echo $manifest->creationDate; ?></li>
<li><b><?php echo JText::_('COM_###COMPONENT###_AUTHOR'); ?>:</b> <a href="mailto:<?php echo $manifest->authorEmail; ?>"><?php echo $manifest->author; ?></a></li>
<li><b><?php echo JText::_('COM_###COMPONENT###_WEBSITE'); ?>:</b> <a href="<?php echo $manifest->authorUrl; ?>" target="_blank"><?php echo $manifest->authorUrl; ?></a></li>
<li><b><?php echo JText::_('COM_###COMPONENT###_LICENSE'); ?>:</b> <?php echo $manifest->license; ?></li>
<li><b><?php echo $manifest->copyright; ?></b></li>
<li><b><?php echo JText::_('COM_###COMPONENT###_VERSION'); ?>:</b> <?php echo $this->manifest->version; ?>&nbsp;&nbsp;<span class="update-notice"></span></li>
<li><b><?php echo JText::_('COM_###COMPONENT###_DATE'); ?>:</b> <?php echo $this->manifest->creationDate; ?></li>
<li><b><?php echo JText::_('COM_###COMPONENT###_AUTHOR'); ?>:</b> <a href="mailto:<?php echo $this->manifest->authorEmail; ?>"><?php echo $this->manifest->author; ?></a></li>
<li><b><?php echo JText::_('COM_###COMPONENT###_WEBSITE'); ?>:</b> <a href="<?php echo $this->manifest->authorUrl; ?>" target="_blank"><?php echo $this->manifest->authorUrl; ?></a></li>
<li><b><?php echo JText::_('COM_###COMPONENT###_LICENSE'); ?>:</b> <?php echo $this->manifest->license; ?></li>
<li><b><?php echo $this->manifest->copyright; ?></b></li>
</ul>
<div class="clearfix"></div>
<?php if(###Component###Helper::checkArray($this->contributors)): ?>
<?php if(count($this->contributors) > 1): ?>
<h3><?php echo JText::_('COM_###COMPONENT###_CONTRIBUTORS'); ?></h3>
<?php else: ?>
<h3><?php echo JText::_('COM_###COMPONENT###_CONTRIBUTOR'); ?></h3>
<?php endif; ?>
<ul class="list-striped">
<?php foreach($this->contributors as $contributor): ?>
<li><b><?php echo $contributor['title']; ?>:</b> <?php echo $contributor['name']; ?></li>
<?php endforeach; ?>
</ul>
<div class="clearfix"></div>
<?php if(count($this->contributors) > 1): ?>
<h3><?php echo JText::_('COM_###COMPONENT###_CONTRIBUTORS'); ?></h3>
<?php else: ?>
<h3><?php echo JText::_('COM_###COMPONENT###_CONTRIBUTOR'); ?></h3>
<?php endif; ?>
<ul class="list-striped">
<?php foreach($this->contributors as $contributor): ?>
<li><b><?php echo $contributor['title']; ?>:</b> <?php echo $contributor['name']; ?></li>
<?php endforeach; ?>
</ul>
<div class="clearfix"></div>
<?php endif; ?>

View File

@ -29,7 +29,7 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
class HeaderCheck
class ###component###HeaderCheck
{
function js_loaded($script_name)
{

View File

@ -29,7 +29,7 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
class HeaderCheck
class ###component###HeaderCheck
{
function js_loaded($script_name)
{

View File

@ -0,0 +1,4 @@
###BOM###
/* JS Document */
###SITEJS###

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.4.3
@build 8th April, 2017
@version 2.5.6
@build 6th October, 2017
@created 30th April, 2015
@package Component Builder
@subpackage componentbuilder.php
@ -43,7 +43,8 @@ $document->addStyleSheet('components/com_componentbuilder/assets/css/admin.css')
$document->addScript('components/com_componentbuilder/assets/js/admin.js');
// require helper files
JLoader::register('ComponentbuilderHelper', dirname(__FILE__) . '/helpers/componentbuilder.php');
JLoader::register('ComponentbuilderHelper', dirname(__FILE__) . '/helpers/componentbuilder.php');
JLoader::register('ComponentbuilderEmail', JPATH_COMPONENT_ADMINISTRATOR . '/helpers/componentbuilderemail.php');
JLoader::register('JHtmlBatch_', dirname(__FILE__) . '/helpers/html/batch_.php');
// Triger the Global Admin Event

View File

@ -75,7 +75,16 @@
step="10"
/>
<!-- Spacer_hr_a Field. Type: Spacer. A None Database Field. (joomla) -->
<field type="spacer" name="spacer_hr_a" hr="true" class="spacer_hr_a" />
<field type="spacer" name="spacer_hr_a" hr="true" class="spacer_hr_a" />
<!-- Api Field. Type: User. (joomla) -->
<field
type="user"
name="api"
label="COM_COMPONENTBUILDER_CONFIG_API_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_API_DESCRIPTION"
/>
<!-- Spacer_hr_b Field. Type: Spacer. A None Database Field. (joomla) -->
<field type="spacer" name="spacer_hr_b" hr="true" class="spacer_hr_b" />
<field name="autorTitle"
type="spacer"
label="COM_COMPONENTBUILDER_CONFIG_AUTHOR"
@ -146,6 +155,340 @@
COM_COMPONENTBUILDER_CONFIG_GRADIANT_LOAD</option>"
</field>
</fieldset>
<fieldset
name="mail_configuration_custom_config"
label="COM_COMPONENTBUILDER_CONFIG_MAIL_CONFIGURATION">
<!-- Mailonline Field. Type: Radio. (joomla) -->
<field
type="radio"
name="mailonline"
label="COM_COMPONENTBUILDER_CONFIG_MAILONLINE_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_MAILONLINE_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1">
<!-- Option Set. -->
<option value="1">
COM_COMPONENTBUILDER_CONFIG_ON</option>
<option value="0">
COM_COMPONENTBUILDER_CONFIG_OFF</option>
</field>
<!-- Mailer Field. Type: List. (joomla) -->
<field
type="list"
name="mailer"
label="COM_COMPONENTBUILDER_CONFIG_MAILER_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_MAILER_DESCRIPTION"
class="list_class"
multiple="false"
filter="WORD"
required="true"
default="global">
<!-- Option Set. -->
<option value="global">
COM_COMPONENTBUILDER_CONFIG_GLOBAL</option>
<option value="default">
COM_COMPONENTBUILDER_CONFIG_PHP_MAIL</option>
<option value="sendmail">
COM_COMPONENTBUILDER_CONFIG_SENDMAIL</option>
<option value="smtp">
COM_COMPONENTBUILDER_CONFIG_SMTP</option>
</field>
<!-- Emailfrom Field. Type: Text. (joomla) -->
<field
type="text"
name="emailfrom"
label="COM_COMPONENTBUILDER_CONFIG_EMAILFROM_LABEL"
size="60"
maxlength="150"
description="COM_COMPONENTBUILDER_CONFIG_EMAILFROM_DESCRIPTION"
class="text_area"
filter="STRING"
validate="email"
message="Error! Please add email address here."
hint="COM_COMPONENTBUILDER_CONFIG_EMAILFROM_HINT"
showon="mailer:smtp,sendmail,default"
/>
<!-- Fromname Field. Type: Text. (joomla) -->
<field
type="text"
name="fromname"
label="COM_COMPONENTBUILDER_CONFIG_FROMNAME_LABEL"
size="60"
maxlength="150"
description="COM_COMPONENTBUILDER_CONFIG_FROMNAME_DESCRIPTION"
class="text_area"
filter="STRING"
message="Error! Please add some name here."
hint="COM_COMPONENTBUILDER_CONFIG_FROMNAME_HINT"
showon="mailer:smtp,sendmail,default"
/>
<!-- Email reply to Field. Type: Text. (joomla) -->
<field
type="text"
name="replyto"
label="COM_COMPONENTBUILDER_CONFIG_EMAILREPLY_LABEL"
size="60"
maxlength="150"
description="COM_COMPONENTBUILDER_CONFIG_EMAILREPLY_DESCRIPTION"
class="text_area"
filter="STRING"
validate="email"
message="Error! Please add email address here."
hint="COM_COMPONENTBUILDER_CONFIG_EMAILREPLY_HINT"
showon="mailer:smtp,sendmail,default"
/>
<!-- Reply to name Field. Type: Text. (joomla) -->
<field
type="text"
name="replytoname"
label="COM_COMPONENTBUILDER_CONFIG_REPLYNAME_LABEL"
size="60"
maxlength="150"
description="COM_COMPONENTBUILDER_CONFIG_REPLYNAME_DESCRIPTION"
class="text_area"
filter="STRING"
message="Error! Please add some name here."
hint="COM_COMPONENTBUILDER_CONFIG_REPLYNAME_HINT"
showon="mailer:smtp,sendmail,default"
/>
<!-- Sendmail Field. Type: Text. (joomla) -->
<field
type="text"
name="sendmail"
label="COM_COMPONENTBUILDER_CONFIG_SENDMAIL_LABEL"
size="60"
maxlength="150"
description="COM_COMPONENTBUILDER_CONFIG_SENDMAIL_DESCRIPTION"
class="text_area"
required="false"
filter="PATH"
message="Error! Please add path to you local sendmail here."
hint="COM_COMPONENTBUILDER_CONFIG_SENDMAIL_HINT"
showon="mailer:sendmail"
/>
<!-- Smtpauth Field. Type: Radio. (joomla) -->
<field
type="radio"
name="smtpauth"
label="COM_COMPONENTBUILDER_CONFIG_SMTPAUTH_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_SMTPAUTH_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0"
showon="mailer:smtp">
<!-- Option Set. -->
<option value="1">
COM_COMPONENTBUILDER_CONFIG_YES</option>
<option value="0">
COM_COMPONENTBUILDER_CONFIG_NO</option>
</field>
<!-- Smtpsecure Field. Type: List. (joomla) -->
<field
type="list"
name="smtpsecure"
label="COM_COMPONENTBUILDER_CONFIG_SMTPSECURE_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_SMTPSECURE_DESCRIPTION"
class="list_class"
multiple="false"
filter="WORD"
default="none"
showon="mailer:smtp">
<!-- Option Set. -->
<option value="none">
COM_COMPONENTBUILDER_CONFIG_NONE</option>
<option value="ssl">
COM_COMPONENTBUILDER_CONFIG_SSL</option>
<option value="tls">
COM_COMPONENTBUILDER_CONFIG_TLS</option>
</field>
<!-- Smtpport Field. Type: Text. (joomla) -->
<field
type="text"
name="smtpport"
label="COM_COMPONENTBUILDER_CONFIG_SMTPPORT_LABEL"
size="60"
maxlength="150"
default="25"
description="COM_COMPONENTBUILDER_CONFIG_SMTPPORT_DESCRIPTION"
class="text_area"
filter="INT"
message="Error! Please add the port number of your SMTP server here."
hint="COM_COMPONENTBUILDER_CONFIG_SMTPPORT_HINT"
showon="mailer:smtp"
/>
<!-- Smtpuser Field. Type: Text. (joomla) -->
<field
type="text"
name="smtpuser"
label="COM_COMPONENTBUILDER_CONFIG_SMTPUSER_LABEL"
size="60"
maxlength="150"
description="COM_COMPONENTBUILDER_CONFIG_SMTPUSER_DESCRIPTION"
class="text_area"
filter="STRING"
message="Error! Please add the username for SMTP server here."
hint="COM_COMPONENTBUILDER_CONFIG_SMTPUSER_HINT"
showon="mailer:smtp"
/>
<!-- Smtppass Field. Type: Password. (joomla) -->
<field
type="password"
name="smtppass"
label="COM_COMPONENTBUILDER_CONFIG_SMTPPASS_LABEL"
size="60"
description="COM_COMPONENTBUILDER_CONFIG_SMTPPASS_DESCRIPTION"
class="text_area"
filter="raw"
message="Error! Please add the password for SMTP server here."
showon="mailer:smtp"
/>
<!-- Smtphost Field. Type: Text. (joomla) -->
<field
type="text"
name="smtphost"
label="COM_COMPONENTBUILDER_CONFIG_SMTPHOST_LABEL"
size="60"
maxlength="150"
default="localhost"
description="COM_COMPONENTBUILDER_CONFIG_SMTPHOST_DESCRIPTION"
class="text_area"
filter="STRING"
message="Error! Please add the name of the SMTP host here."
hint="COM_COMPONENTBUILDER_CONFIG_SMTPHOST_HINT"
showon="mailer:smtp"
/>
</fieldset>
<fieldset
name="dkim_custom_config"
label="COM_COMPONENTBUILDER_CONFIG_DKIM">
<!-- Dkim Field. Type: Radio. (joomla) -->
<field
type="radio"
name="dkim"
label="COM_COMPONENTBUILDER_CONFIG_DKIM_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_DKIM_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0"
required="true">
<!-- Option Set. -->
<option value="1">
COM_COMPONENTBUILDER_CONFIG_YES</option>
<option value="0">
COM_COMPONENTBUILDER_CONFIG_NO</option>
</field>
<!-- Dkim_domain Field. Type: Text. (joomla) -->
<field
type="text"
name="dkim_domain"
label="COM_COMPONENTBUILDER_CONFIG_DKIM_DOMAIN_LABEL"
size="60"
maxlength="150"
description="COM_COMPONENTBUILDER_CONFIG_DKIM_DOMAIN_DESCRIPTION"
class="text_area"
filter="STRING"
message="Error! Please add DKIM Domain here."
hint="COM_COMPONENTBUILDER_CONFIG_DKIM_DOMAIN_HINT"
showon="dkim:1"
onchange="vdm_dkim();"
/>
<!-- Dkim_selector Field. Type: Text. (joomla) -->
<field
type="text"
name="dkim_selector"
label="COM_COMPONENTBUILDER_CONFIG_DKIM_SELECTOR_LABEL"
size="60"
maxlength="150"
default="vdm"
description="COM_COMPONENTBUILDER_CONFIG_DKIM_SELECTOR_DESCRIPTION"
class="text_area"
filter="STRING"
message="Error! Please add DKIM/DNS selector here."
hint="COM_COMPONENTBUILDER_CONFIG_DKIM_SELECTOR_HINT"
showon="dkim:1"
onchange="vdm_dkim();"
/>
<!-- Dkim_passphrase Field. Type: Password. (joomla) -->
<field
type="password"
name="dkim_passphrase"
label="COM_COMPONENTBUILDER_CONFIG_DKIM_PASSPHRASE_LABEL"
size="60"
description="COM_COMPONENTBUILDER_CONFIG_DKIM_PASSPHRASE_DESCRIPTION"
class="text_area"
filter="raw"
message="Error! Please add passphrase here."
showon="dkim:1"
/>
<!-- Dkim_identity Field. Type: Text. (joomla) -->
<field
type="text"
name="dkim_identity"
label="COM_COMPONENTBUILDER_CONFIG_DKIM_IDENTITY_LABEL"
size="60"
maxlength="150"
description="COM_COMPONENTBUILDER_CONFIG_DKIM_IDENTITY_DESCRIPTION"
class="text_area"
filter="raw"
message="Error! Please add DKIM Identity here."
hint="COM_COMPONENTBUILDER_CONFIG_DKIM_IDENTITY_HINT"
showon="dkim:1"
/>
<!-- Dkim_private_key Field. Type: Textarea. (joomla) -->
<field
type="textarea"
name="dkim_private_key"
label="COM_COMPONENTBUILDER_CONFIG_DKIM_PRIVATE_KEY_LABEL"
rows="15"
cols="5"
description="COM_COMPONENTBUILDER_CONFIG_DKIM_PRIVATE_KEY_DESCRIPTION"
class="input-xxlarge span12"
showon="dkim:1"
/>
<!-- Dkim_public_key Field. Type: Textarea. (joomla) -->
<field
type="textarea"
name="dkim_public_key"
label="COM_COMPONENTBUILDER_CONFIG_DKIM_PUBLIC_KEY_LABEL"
rows="5"
cols="5"
description="COM_COMPONENTBUILDER_CONFIG_DKIM_PUBLIC_KEY_DESCRIPTION"
class="input-xxlarge span12"
showon="dkim:1"
onchange="vdm_dkim();"
/>
<!-- Note_dkim_use Field. Type: Note. A None Database Field. (joomla) -->
<field type="note" name="note_dkim_use" label="COM_COMPONENTBUILDER_CONFIG_NOTE_DKIM_USE_LABEL" description="COM_COMPONENTBUILDER_CONFIG_NOTE_DKIM_USE_DESCRIPTION" heading="h4" class="note_dkim_use" showon="dkim:1" />
<!-- Dkim_key Field. Type: Text. (joomla) -->
<field
type="text"
name="dkim_key"
label="COM_COMPONENTBUILDER_CONFIG_DKIM_KEY_LABEL"
size="40"
maxlength="150"
description="COM_COMPONENTBUILDER_CONFIG_DKIM_KEY_DESCRIPTION"
class="text_area"
filter="STRING"
message="Error! Please add KEY here."
hint="COM_COMPONENTBUILDER_CONFIG_DKIM_KEY_HINT"
showon="dkim:1"
/>
<!-- Dkim_value Field. Type: Text. (joomla) -->
<field
type="text"
name="dkim_value"
label="COM_COMPONENTBUILDER_CONFIG_DKIM_VALUE_LABEL"
size="80"
maxlength="350"
description="COM_COMPONENTBUILDER_CONFIG_DKIM_VALUE_DESCRIPTION"
class="text_area"
filter="STRING"
message="Error! Please add TXT record here."
hint="COM_COMPONENTBUILDER_CONFIG_DKIM_VALUE_HINT"
showon="dkim:1"
/>
</fieldset>
<fieldset
name="encryption_config"
label="COM_COMPONENTBUILDER_CONFIG_ENCRYPTION_LABEL"
@ -159,6 +502,62 @@
default=""
/>
</fieldset>
<fieldset
name="cronjob_custom_config"
label="COM_COMPONENTBUILDER_CONFIG_CRONJOB">
<!-- Backupcronjob_note Field. Type: Note. A None Database Field. (joomla) -->
<field type="note" name="backupcronjob_note" label="COM_COMPONENTBUILDER_CONFIG_BACKUPCRONJOB_NOTE_LABEL" description="COM_COMPONENTBUILDER_CONFIG_BACKUPCRONJOB_NOTE_DESCRIPTION" heading="h4" class="backupcronjob_note" />
<!-- Cronjob_backup_folder_path Field. Type: Text. (joomla) -->
<field
type="text"
name="cronjob_backup_folder_path"
label="COM_COMPONENTBUILDER_CONFIG_CRONJOB_BACKUP_FOLDER_PATH_LABEL"
size="70"
maxlength="150"
description="COM_COMPONENTBUILDER_CONFIG_CRONJOB_BACKUP_FOLDER_PATH_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="PATH"
message="Error! Please add some text here."
hint="COM_COMPONENTBUILDER_CONFIG_CRONJOB_BACKUP_FOLDER_PATH_HINT"
/>
<!-- Backup_email Field. Type: Text. (joomla) -->
<field
type="text"
name="backup_email"
label="COM_COMPONENTBUILDER_CONFIG_BACKUP_EMAIL_LABEL"
size="10"
maxlength="50"
description="COM_COMPONENTBUILDER_CONFIG_BACKUP_EMAIL_DESCRIPTION"
class="text_area"
filter="STRING"
validate="email"
message="Error! Please add email address here."
hint="COM_COMPONENTBUILDER_CONFIG_BACKUP_EMAIL_HINT"
/>
<!-- Package_name_plaeholders Field. Type: Note. A None Database Field. (joomla) -->
<field type="note" name="package_name_plaeholders" label="COM_COMPONENTBUILDER_CONFIG_PACKAGE_NAME_PLAEHOLDERS_LABEL" description="COM_COMPONENTBUILDER_CONFIG_PACKAGE_NAME_PLAEHOLDERS_DESCRIPTION" heading="h4" class="package_name_plaeholders" />
<!-- Backup_package_name Field. Type: Text. (joomla) -->
<field
type="text"
name="backup_package_name"
label="COM_COMPONENTBUILDER_CONFIG_BACKUP_PACKAGE_NAME_LABEL"
size="40"
maxlength="150"
default="JCB_Backup_[YEAR]_[MONTH]_[DAY]"
description="COM_COMPONENTBUILDER_CONFIG_BACKUP_PACKAGE_NAME_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="true"
filter="STRING"
message="Error! Please add name here."
hint="COM_COMPONENTBUILDER_CONFIG_BACKUP_PACKAGE_NAME_HINT"
/>
</fieldset>
<fieldset
name="folder_paths_custom_config"
label="COM_COMPONENTBUILDER_CONFIG_FOLDER_PATHS">
@ -344,47 +743,6 @@
validated="url"
message="Error! Please add link here."
hint="COM_COMPONENTBUILDER_CONFIG_EXPORT_BUY_LINK_HINT"
/>
<!-- Export_buy_query Field. Type: Text. (joomla) -->
<field
type="text"
name="export_buy_query"
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_BUY_QUERY_LABEL"
size="40"
maxlength="150"
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_BUY_QUERY_DESCRIPTION"
class="text_area"
filter="STRING"
message="Error! Please email address here."
hint="COM_COMPONENTBUILDER_CONFIG_EXPORT_BUY_QUERY_HINT"
/>
<!-- Export_package_link Field. Type: Url. (joomla) -->
<field
type="url"
name="export_package_link"
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_PACKAGE_LINK_LABEL"
size="60"
maxlength="150"
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_PACKAGE_LINK_DESCRIPTION"
class="text_area"
required="false"
filter="url"
validated="url"
message="Error! Please add link here."
hint="COM_COMPONENTBUILDER_CONFIG_EXPORT_PACKAGE_LINK_HINT"
/>
<!-- Export_package_query Field. Type: Text. (joomla) -->
<field
type="text"
name="export_package_query"
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_PACKAGE_QUERY_LABEL"
size="40"
maxlength="150"
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_PACKAGE_QUERY_DESCRIPTION"
class="text_area"
filter="STRING"
message="Error! Please email address here."
hint="COM_COMPONENTBUILDER_CONFIG_EXPORT_PACKAGE_QUERY_HINT"
/>
</fieldset>
<fieldset

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.4.3
@build 8th April, 2017
@version 2.5.6
@build 6th October, 2017
@created 30th April, 2015
@package Component Builder
@subpackage controller.php
@ -101,6 +101,7 @@ class ComponentbuilderController extends JControllerLegacy
'fieldtype' => 'fieldtypes',
'language_translation' => 'language_translations',
'language' => 'languages',
'ftp' => 'ftps',
'help_document' => 'help_documents'
);
// check if this is a list view

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 109 of this MVC
@build 31st March, 2017
@version @update number 114 of this MVC
@build 28th August, 2017
@created 30th April, 2015
@package Component Builder
@subpackage admin_view.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 109 of this MVC
@build 31st March, 2017
@version @update number 114 of this MVC
@build 28th August, 2017
@created 30th April, 2015
@package Component Builder
@subpackage admin_views.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.4.3
@build 8th April, 2017
@version 2.5.6
@build 6th October, 2017
@created 30th April, 2015
@package Component Builder
@subpackage ajax.json.php
@ -45,20 +45,19 @@ class ComponentbuilderControllerAjax extends JControllerLegacy
$this->registerTask('isNew', 'ajax');
$this->registerTask('isRead', 'ajax');
$this->registerTask('getComponentDetails', 'ajax');
$this->registerTask('getCronPath', 'ajax');
$this->registerTask('tableColumns', 'ajax');
$this->registerTask('fieldSelectOptions', 'ajax');
$this->registerTask('getImportScripts', 'ajax');
$this->registerTask('layoutDetails', 'ajax');
$this->registerTask('templateDetails', 'ajax');
$this->registerTask('snippetDetails', 'ajax');
$this->registerTask('dynamicValues', 'ajax');
$this->registerTask('dynamicFormDetails', 'ajax');
$this->registerTask('getLayoutDetails', 'ajax');
$this->registerTask('dbTableColumns', 'ajax');
$this->registerTask('viewTableColumns', 'ajax');
$this->registerTask('getDynamicValues', 'ajax');
$this->registerTask('checkFunctionName', 'ajax');
$this->registerTask('usedin', 'ajax');
$this->registerTask('snippetDetails', 'ajax');
$this->registerTask('fieldOptions', 'ajax');
$this->registerTask('getBuildTable', 'ajax');
$this->registerTask('getButton', 'ajax');
}
@ -188,6 +187,44 @@ class ComponentbuilderControllerAjax extends JControllerLegacy
}
}
break;
case 'getCronPath':
try
{
$returnRaw = $jinput->get('raw', false, 'BOOLEAN');
$getTypeValue = $jinput->get('getType', NULL, 'WORD');
if($getTypeValue && $user->id != 0)
{
$result = $this->getModel('ajax')->getCronPath($getTypeValue);
}
else
{
$result = false;
}
if($callback = $jinput->get('callback', null, 'CMD'))
{
echo $callback . "(".json_encode($result).");";
}
elseif($returnRaw)
{
echo json_encode($result);
}
else
{
echo "(".json_encode($result).");";
}
}
catch(Exception $e)
{
if($callback = $jinput->get('callback', null, 'CMD'))
{
echo $callback."(".json_encode($e).");";
}
else
{
echo "(".json_encode($e).");";
}
}
break;
case 'tableColumns':
try
{
@ -302,44 +339,6 @@ class ComponentbuilderControllerAjax extends JControllerLegacy
}
}
break;
case 'layoutDetails':
try
{
$returnRaw = $jinput->get('raw', false, 'BOOLEAN');
$idValue = $jinput->get('id', null, 'INT');
if($idValue && $user->id != 0)
{
$result = $this->getModel('ajax')->getLayoutDetails($idValue);
}
else
{
$result = false;
}
if($callback = $jinput->get('callback', null, 'CMD'))
{
echo $callback . "(".json_encode($result).");";
}
elseif($returnRaw)
{
echo json_encode($result);
}
else
{
echo "(".json_encode($result).");";
}
}
catch(Exception $e)
{
if($callback = $jinput->get('callback', null, 'CMD'))
{
echo $callback."(".json_encode($e).");";
}
else
{
echo "(".json_encode($e).");";
}
}
break;
case 'templateDetails':
try
{
@ -378,91 +377,14 @@ class ComponentbuilderControllerAjax extends JControllerLegacy
}
}
break;
case 'snippetDetails':
case 'getLayoutDetails':
try
{
$returnRaw = $jinput->get('raw', false, 'BOOLEAN');
$idValue = $jinput->get('id', NULL, 'INT');
if($idValue && $user->id != 0)
{
$result = $this->getModel('ajax')->getSnippetDetails($idValue);
}
else
{
$result = false;
}
if($callback = $jinput->get('callback', null, 'CMD'))
{
echo $callback . "(".json_encode($result).");";
}
elseif($returnRaw)
{
echo json_encode($result);
}
else
{
echo "(".json_encode($result).");";
}
}
catch(Exception $e)
{
if($callback = $jinput->get('callback', null, 'CMD'))
{
echo $callback."(".json_encode($e).");";
}
else
{
echo "(".json_encode($e).");";
}
}
break;
case 'dynamicValues':
try
{
$returnRaw = $jinput->get('raw', false, 'BOOLEAN');
$idValue = $jinput->get('id', NULL, 'INT');
$viewValue = $jinput->get('view', NULL, 'WORD');
if($idValue && $viewValue && $user->id != 0)
{
$result = $this->getModel('ajax')->getDynamicValues($idValue, $viewValue);
}
else
{
$result = false;
}
if($callback = $jinput->get('callback', null, 'CMD'))
{
echo $callback . "(".json_encode($result).");";
}
elseif($returnRaw)
{
echo json_encode($result);
}
else
{
echo "(".json_encode($result).");";
}
}
catch(Exception $e)
{
if($callback = $jinput->get('callback', null, 'CMD'))
{
echo $callback."(".json_encode($e).");";
}
else
{
echo "(".json_encode($e).");";
}
}
break;
case 'dynamicFormDetails':
try
{
$returnRaw = $jinput->get('raw', false, 'BOOLEAN');
$idValue = $jinput->get('id', NULL, 'INT');
if($idValue && $user->id != 0)
{
$result = $this->getModel('ajax')->getDynamicFormDetails($idValue);
$result = $this->getModel('ajax')->getLayoutDetails($idValue);
}
else
{
@ -573,6 +495,45 @@ class ComponentbuilderControllerAjax extends JControllerLegacy
}
}
break;
case 'getDynamicValues':
try
{
$returnRaw = $jinput->get('raw', false, 'BOOLEAN');
$idValue = $jinput->get('id', NULL, 'INT');
$viewValue = $jinput->get('view', NULL, 'WORD');
if($idValue && $viewValue && $user->id != 0)
{
$result = $this->getModel('ajax')->getDynamicValues($idValue, $viewValue);
}
else
{
$result = false;
}
if($callback = $jinput->get('callback', null, 'CMD'))
{
echo $callback . "(".json_encode($result).");";
}
elseif($returnRaw)
{
echo json_encode($result);
}
else
{
echo "(".json_encode($result).");";
}
}
catch(Exception $e)
{
if($callback = $jinput->get('callback', null, 'CMD'))
{
echo $callback."(".json_encode($e).");";
}
else
{
echo "(".json_encode($e).");";
}
}
break;
case 'checkFunctionName':
try
{
@ -652,14 +613,14 @@ class ComponentbuilderControllerAjax extends JControllerLegacy
}
}
break;
case 'fieldOptions':
case 'snippetDetails':
try
{
$returnRaw = $jinput->get('raw', false, 'BOOLEAN');
$idValue = $jinput->get('id', NULL, 'INT');
if($idValue && $user->id != 0)
{
$result = $this->getModel('ajax')->getFieldOptions($idValue);
$result = $this->getModel('ajax')->getSnippetDetails($idValue);
}
else
{
@ -690,15 +651,14 @@ class ComponentbuilderControllerAjax extends JControllerLegacy
}
}
break;
case 'getBuildTable':
case 'fieldOptions':
try
{
$returnRaw = $jinput->get('raw', false, 'BOOLEAN');
$idNameValue = $jinput->get('idName', NULL, 'CMD');
$objectValue = $jinput->get('object', NULL, 'STRING');
if($idNameValue && $objectValue && $user->id != 0)
$idValue = $jinput->get('id', NULL, 'INT');
if($idValue && $user->id != 0)
{
$result = $this->getModel('ajax')->getBuildTable($idNameValue, $objectValue);
$result = $this->getModel('ajax')->getFieldOptions($idValue);
}
else
{

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 47 of this MVC
@build 21st March, 2017
@version @update number 55 of this MVC
@build 13th September, 2017
@created 1st February, 2017
@package Component Builder
@subpackage compiler.php
@ -70,13 +70,13 @@ class ComponentbuilderControllerCompiler extends JControllerAdmin
$componentId = $jinput->post->get('component', 0, 'INT');
$version = $jinput->post->get('version', 0, 'INT');
$addBackup = $jinput->post->get('backup', 0, 'INT');
$addGit = $jinput->post->get('git', 0, 'INT');
$addRepo = $jinput->post->get('repository', 0, 'INT');
$addPlaceholders = $jinput->post->get('placeholders', 2, 'INT');
$debugLinenr = $jinput->post->get('debuglinenr', 2, 'INT');
// include component compiler
require_once JPATH_ADMINISTRATOR.'/components/com_componentbuilder/helpers/compiler.php';
$model = $this->getModel('compiler');
if ($model->builder($version,$componentId,$addBackup,$addGit,$addPlaceholders,$debugLinenr))
if ($model->builder($version,$componentId,$addBackup,$addRepo,$addPlaceholders,$debugLinenr))
{
$cache = JFactory::getCache('mod_menu');
$cache->clean();

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.4.3
@build 8th April, 2017
@version 2.5.6
@build 6th October, 2017
@created 30th April, 2015
@package Component Builder
@subpackage componentbuilder.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 22 of this MVC
@build 1st March, 2017
@version @update number 27 of this MVC
@build 27th September, 2017
@created 13th August, 2015
@package Component Builder
@subpackage custom_admin_view.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 22 of this MVC
@build 1st March, 2017
@version @update number 27 of this MVC
@build 27th September, 2017
@created 13th August, 2015
@package Component Builder
@subpackage custom_admin_views.php

View File

@ -11,7 +11,7 @@
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 82 of this MVC
@build 3rd April, 2017
@build 4th October, 2017
@created 11th October, 2016
@package Component Builder
@subpackage custom_code.php

View File

@ -11,7 +11,7 @@
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 82 of this MVC
@build 3rd April, 2017
@build 4th October, 2017
@created 11th October, 2016
@package Component Builder
@subpackage custom_codes.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 81 of this MVC
@build 15th January, 2017
@version @update number 94 of this MVC
@build 27th September, 2017
@created 21st May, 2015
@package Component Builder
@subpackage dynamic_get.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 81 of this MVC
@build 15th January, 2017
@version @update number 94 of this MVC
@build 27th September, 2017
@created 21st May, 2015
@package Component Builder
@subpackage dynamic_gets.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 37 of this MVC
@build 3rd February, 2017
@version @update number 38 of this MVC
@build 28th May, 2017
@created 30th April, 2015
@package Component Builder
@subpackage field.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 37 of this MVC
@build 3rd February, 2017
@version @update number 38 of this MVC
@build 28th May, 2017
@created 30th April, 2015
@package Component Builder
@subpackage fields.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 12 of this MVC
@build 20th October, 2016
@version @update number 15 of this MVC
@build 17th September, 2017
@created 30th April, 2015
@package Component Builder
@subpackage fieldtype.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 12 of this MVC
@build 20th October, 2016
@version @update number 15 of this MVC
@build 17th September, 2017
@created 30th April, 2015
@package Component Builder
@subpackage fieldtypes.php

326
admin/controllers/ftp.php Normal file
View File

@ -0,0 +1,326 @@
<?php
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 10 of this MVC
@build 24th August, 2017
@created 23rd August, 2017
@package Component Builder
@subpackage ftp.php
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import Joomla controllerform library
jimport('joomla.application.component.controllerform');
/**
* Ftp Controller
*/
class ComponentbuilderControllerFtp extends JControllerForm
{
/**
* Current or most recently performed task.
*
* @var string
* @since 12.2
* @note Replaces _task.
*/
protected $task;
public function __construct($config = array())
{
$this->view_list = 'Ftps'; // safeguard for setting the return view listing to the main view.
parent::__construct($config);
}
/**
* Method override to check if you can add a new record.
*
* @param array $data An array of input data.
*
* @return boolean
*
* @since 1.6
*/
protected function allowAdd($data = array())
{
// Access check.
$access = JFactory::getUser()->authorise('ftp.access', 'com_componentbuilder');
if (!$access)
{
return false;
}
// In the absense of better information, revert to the component permissions.
return JFactory::getUser()->authorise('ftp.create', $this->option);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
*
* @since 1.6
*/
protected function allowEdit($data = array(), $key = 'id')
{
// get user object.
$user = JFactory::getUser();
// get record id.
$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
// Access check.
$access = ($user->authorise('ftp.access', 'com_componentbuilder.ftp.' . (int) $recordId) && $user->authorise('ftp.access', 'com_componentbuilder'));
if (!$access)
{
return false;
}
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('ftp.edit', 'com_componentbuilder.ftp.' . (int) $recordId);
if (!$permission)
{
if ($user->authorise('ftp.edit.own', 'com_componentbuilder.ftp.' . $recordId))
{
// Now test the owner is the user.
$ownerId = (int) isset($data['created_by']) ? $data['created_by'] : 0;
if (empty($ownerId))
{
// Need to do a lookup from the model.
$record = $this->getModel()->getItem($recordId);
if (empty($record))
{
return false;
}
$ownerId = $record->created_by;
}
// If the owner matches 'me' then allow.
if ($ownerId == $user->id)
{
if ($user->authorise('ftp.edit.own', 'com_componentbuilder'))
{
return true;
}
}
}
return false;
}
}
// Since there is no permission, revert to the component permissions.
return $user->authorise('ftp.edit', $this->option);
}
/**
* Gets the URL arguments to append to an item redirect.
*
* @param integer $recordId The primary key id for the item.
* @param string $urlVar The name of the URL variable for the id.
*
* @return string The arguments to append to the redirect URL.
*
* @since 12.2
*/
protected function getRedirectToItemAppend($recordId = null, $urlVar = 'id')
{
$tmpl = $this->input->get('tmpl');
$layout = $this->input->get('layout', 'edit', 'string');
$ref = $this->input->get('ref', 0, 'string');
$refid = $this->input->get('refid', 0, 'int');
// Setup redirect info.
$append = '';
if ($refid)
{
$append .= '&ref='.(string)$ref.'&refid='.(int)$refid;
}
elseif ($ref)
{
$append .= '&ref='.(string)$ref;
}
if ($tmpl)
{
$append .= '&tmpl=' . $tmpl;
}
if ($layout)
{
$append .= '&layout=' . $layout;
}
if ($recordId)
{
$append .= '&' . $urlVar . '=' . $recordId;
}
return $append;
}
/**
* Method to run batch operations.
*
* @param object $model The model.
*
* @return boolean True if successful, false otherwise and internal error is set.
*
* @since 2.5
*/
public function batch($model = null)
{
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Ftp', '', array());
// Preset the redirect
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=ftps' . $this->getRedirectToListAppend(), false));
return parent::batch($model);
}
/**
* Method to cancel an edit.
*
* @param string $key The name of the primary key of the URL variable.
*
* @return boolean True if access level checks pass, false otherwise.
*
* @since 12.2
*/
public function cancel($key = null)
{
// get the referal details
$this->ref = $this->input->get('ref', 0, 'word');
$this->refid = $this->input->get('refid', 0, 'int');
$cancel = parent::cancel($key);
if ($cancel)
{
if ($this->refid)
{
$redirect = '&view='.(string)$this->ref.'&layout=edit&id='.(int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view='.(string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
}
else
{
// Redirect to the items screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . '&view=' . $this->view_list, false
)
);
}
return $cancel;
}
/**
* Method to save a record.
*
* @param string $key The name of the primary key of the URL variable.
* @param string $urlVar The name of the URL variable if different from the primary key (sometimes required to avoid router collisions).
*
* @return boolean True if successful, false otherwise.
*
* @since 12.2
*/
public function save($key = null, $urlVar = null)
{
// get the referal details
$this->ref = $this->input->get('ref', 0, 'word');
$this->refid = $this->input->get('refid', 0, 'int');
if ($this->ref || $this->refid)
{
// to make sure the item is checkedin on redirect
$this->task = 'save';
}
$saved = parent::save($key, $urlVar);
if ($this->refid && $saved)
{
$redirect = '&view='.(string)$this->ref.'&layout=edit&id='.(int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref && $saved)
{
$redirect = '&view='.(string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $saved;
}
/**
* Function that allows child controller access to model data
* after the data has been saved.
*
* @param JModel &$model The data model object.
* @param array $validData The validated data.
*
* @return void
*
* @since 11.1
*/
protected function postSaveHook(JModelLegacy $model, $validData = array())
{
return;
}
}

111
admin/controllers/ftps.php Normal file
View File

@ -0,0 +1,111 @@
<?php
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 10 of this MVC
@build 24th August, 2017
@created 23rd August, 2017
@package Component Builder
@subpackage ftps.php
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import Joomla controlleradmin library
jimport('joomla.application.component.controlleradmin');
/**
* Ftps Controller
*/
class ComponentbuilderControllerFtps extends JControllerAdmin
{
protected $text_prefix = 'COM_COMPONENTBUILDER_FTPS';
/**
* Proxy for getModel.
* @since 2.5
*/
public function getModel($name = 'Ftp', $prefix = 'ComponentbuilderModel', $config = array())
{
$model = parent::getModel($name, $prefix, array('ignore_request' => true));
return $model;
}
public function exportData()
{
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// check if export is allowed for this user.
$user = JFactory::getUser();
if ($user->authorise('ftp.export', 'com_componentbuilder') && $user->authorise('core.export', 'com_componentbuilder'))
{
// Get the input
$input = JFactory::getApplication()->input;
$pks = $input->post->get('cid', array(), 'array');
// Sanitize the input
JArrayHelper::toInteger($pks);
// Get the model
$model = $this->getModel('Ftps');
// get the data to export
$data = $model->getExportData($pks);
if (ComponentbuilderHelper::checkArray($data))
{
// now set the data to the spreadsheet
$date = JFactory::getDate();
ComponentbuilderHelper::xls($data,'Ftps_'.$date->format('jS_F_Y'),'Ftps exported ('.$date->format('jS F, Y').')','ftps');
}
}
// Redirect to the list screen with error.
$message = JText::_('COM_COMPONENTBUILDER_EXPORT_FAILED');
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=ftps', false), $message, 'error');
return;
}
public function importData()
{
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// check if import is allowed for this user.
$user = JFactory::getUser();
if ($user->authorise('ftp.import', 'com_componentbuilder') && $user->authorise('core.import', 'com_componentbuilder'))
{
// Get the import model
$model = $this->getModel('Ftps');
// get the headers to import
$headers = $model->getExImPortHeaders();
if (ComponentbuilderHelper::checkObject($headers))
{
// Load headers to session.
$session = JFactory::getSession();
$headers = json_encode($headers);
$session->set('ftp_VDM_IMPORTHEADERS', $headers);
$session->set('backto_VDM_IMPORT', 'ftps');
$session->set('dataType_VDM_IMPORTINTO', 'ftp');
// Redirect to import view.
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_FTPS');
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=import', false), $message);
return;
}
}
// Redirect to the list screen with error.
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_FAILED');
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=ftps', false), $message, 'error');
return;
}
}

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.4.3
@build 8th April, 2017
@version 2.5.6
@build 6th October, 2017
@created 30th April, 2015
@package Component Builder
@subpackage help.php

View File

@ -11,7 +11,7 @@
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 6 of this MVC
@build 18th October, 2016
@build 17th October, 2016
@created 4th March, 2016
@package Component Builder
@subpackage help_document.php

View File

@ -11,7 +11,7 @@
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 6 of this MVC
@build 18th October, 2016
@build 17th October, 2016
@created 4th March, 2016
@package Component Builder
@subpackage help_documents.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.4.3
@build 8th April, 2017
@version 2.5.6
@build 6th October, 2017
@created 30th April, 2015
@package Component Builder
@subpackage import.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.4.3
@build 8th April, 2017
@version 2.5.6
@build 6th October, 2017
@created 30th April, 2015
@package Component Builder
@subpackage import_joomla_components.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 331 of this MVC
@build 8th April, 2017
@version @update number 385 of this MVC
@build 6th October, 2017
@created 6th May, 2015
@package Component Builder
@subpackage joomla_component.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 331 of this MVC
@build 8th April, 2017
@version @update number 385 of this MVC
@build 6th October, 2017
@created 6th May, 2015
@package Component Builder
@subpackage joomla_components.php
@ -114,8 +114,8 @@ class ComponentbuilderControllerJoomla_components extends JControllerAdmin
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// check if import is allowed for this user.
$user = JFactory::getUser();
if ($user->authorise('joomla_component.import', 'com_componentbuilder') && $user->authorise('core.import', 'com_componentbuilder'))
$model->user = JFactory::getUser();
if ($model->user->authorise('joomla_component.import', 'com_componentbuilder') && $model->user->authorise('core.import', 'com_componentbuilder'))
{
$session = JFactory::getSession();
$session->set('backto_VDM_IMPORT', 'joomla_components');
@ -135,9 +135,11 @@ class ComponentbuilderControllerJoomla_components extends JControllerAdmin
{
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// Get the model
$model = $this->getModel('Joomla_components');
// check if export is allowed for this user.
$user = JFactory::getUser();
if ($user->authorise('joomla_component.export', 'com_componentbuilder') && $user->authorise('core.export', 'com_componentbuilder'))
$model->user = JFactory::getUser();
if ($model->user->authorise('joomla_component.export', 'com_componentbuilder') && $model->user->authorise('core.export', 'com_componentbuilder'))
{
// Get the input
$input = JFactory::getApplication()->input;
@ -152,8 +154,6 @@ class ComponentbuilderControllerJoomla_components extends JControllerAdmin
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=joomla_components', false), $message, 'error');
return;
}
// Get the model
$model = $this->getModel('Joomla_components');
// set auto loader
ComponentbuilderHelper::autoLoader('smart');
// get the data to export
@ -239,4 +239,154 @@ class ComponentbuilderControllerJoomla_components extends JControllerAdmin
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=joomla_components', false), $message, 'error');
return;
}
public function backup()
{
// get params
if (!isset($this->params) || !ComponentbuilderHelper::checkObject($this->params))
{
$this->params = JComponentHelper::getParams('com_componentbuilder');
}
// get all component IDs to backup
$pks = componentbuilderHelper::getComponentIDs();
// Get the model
$model = componentbuilderHelper::getModel('joomla_components', JPATH_ADMINISTRATOR . '/components/com_componentbuilder');
// set user
$model->user = $this->getApiUser();
// make sure to set active type to backup
$model->activeType = 'manualBackup';
// set auto loader
ComponentbuilderHelper::autoLoader('smart');
// manual backup message
$backupNotice = array();
// get the data to export
if (ComponentbuilderHelper::checkArray($pks) && $model->getSmartExport($pks))
{
$backupNotice[] = JText::_('COM_COMPONENTBUILDER_BACKUP_WAS_DONE_SUCCESSFULLY');
$backupNoticeStatus = 'Success';
// set the key string
if (componentbuilderHelper::checkString($model->key) && strlen($model->key) == 32)
{
$textNotice = array();
$keyNotice = '<h1>' . JText::sprintf('COM_COMPONENTBUILDER_THE_PACKAGE_KEY_IS_CODESCODE', $model->key) . '</h1>';
$textNotice[] = JText::sprintf('COM_COMPONENTBUILDER_THE_PACKAGE_KEY_IS_S', $model->key);
$keyNotice .= JText::_('COM_COMPONENTBUILDER_YOUR_DATA_IS_ENCRYPTED_WITH_A_AES_ONE_HUNDRED_AND_TWENTY_EIGHT_BIT_ENCRYPTION_USING_THE_ABOVE_THIRTY_TWO_CHARACTER_KEY_WITHOUT_THIS_KEY_IT_WILL_TAKE_THE_CURRENT_TECHNOLOGY_WITH_A_BRUTE_FORCE_ATTACK_METHOD_MORE_THEN_A_HREFHTTPRANDOMIZECOMHOWLONGTOHACKPASS_TARGET_BLANK_TITLEHOW_LONG_TO_HACK_PASSSEVEN_HUNDRED_ZERO_ZERO_ZERO_ZERO_ZERO_ZERO_ZERO_ZERO_ZERO_ZEROA_YEARS_TO_CRACK_THEORETICALLY_UNLESS_THEY_HAVE_THIS_KEY_ABOVE_SO_DO_KEEP_IT_SAFE') . '<br />';
// set the package owner info
if ((isset($model->info['getKeyFrom']['company']) && componentbuilderHelper::checkString($model->info['getKeyFrom']['company'])) || (isset($model->info['getKeyFrom']['owner']) && componentbuilderHelper::checkString($model->info['getKeyFrom']['owner'])))
{
$ownerDetails = '<h2>' . JText::_('COM_COMPONENTBUILDER_PACKAGE_OWNER_DETAILS') . '</h2>';
$textNotice[] = '# ' . JText::_('COM_COMPONENTBUILDER_PACKAGE_OWNER_DETAILS');
$ownerDetails .= '<ul>';
if (isset($model->info['getKeyFrom']['company']) && componentbuilderHelper::checkString($model->info['getKeyFrom']['company']))
{
$ownerDetails .= '<li>' . JText::sprintf('COM_COMPONENTBUILDER_EMCOMPANYEM_BSB', $model->info['getKeyFrom']['company']) . '</li>';
$textNotice[] = '- ' . JText::sprintf('COM_COMPONENTBUILDER_COMPANY_S', $model->info['getKeyFrom']['company']);
}
// add value only if set
if (isset($model->info['getKeyFrom']['owner']) && componentbuilderHelper::checkString($model->info['getKeyFrom']['owner']))
{
$ownerDetails .= '<li>' . JText::sprintf('COM_COMPONENTBUILDER_EMOWNEREM_BSB', $model->info['getKeyFrom']['owner']) . '</li>';
$textNotice[] = '- ' . JText::sprintf('COM_COMPONENTBUILDER_OWNER_S', $model->info['getKeyFrom']['owner']);
}
// add value only if set
if (isset($model->info['getKeyFrom']['website']) && componentbuilderHelper::checkString($model->info['getKeyFrom']['website']))
{
$ownerDetails .= '<li>' . JText::sprintf('COM_COMPONENTBUILDER_EMWEBSITEEM_BSB', $model->info['getKeyFrom']['website']) . '</li>';
$textNotice[] = '- ' . JText::sprintf('COM_COMPONENTBUILDER_WEBSITE_S', $model->info['getKeyFrom']['website']);
}
// add value only if set
if (isset($model->info['getKeyFrom']['email']) && componentbuilderHelper::checkString($model->info['getKeyFrom']['email']))
{
$ownerDetails .= '<li>' . JText::sprintf('COM_COMPONENTBUILDER_EMEMAILEM_BSB', $model->info['getKeyFrom']['email']) . '</li>';
$textNotice[] = '- ' . JText::sprintf('COM_COMPONENTBUILDER_EMAIL_S', $model->info['getKeyFrom']['email']);
}
// add value only if set
if (isset($model->info['getKeyFrom']['license']) && componentbuilderHelper::checkString($model->info['getKeyFrom']['license']))
{
$ownerDetails .= '<li>' . JText::sprintf('COM_COMPONENTBUILDER_EMLICENSEEM_BSB', $model->info['getKeyFrom']['license']) . '</li>';
$textNotice[] = '- ' . JText::sprintf('COM_COMPONENTBUILDER_LICENSE_S', $model->info['getKeyFrom']['license']);
}
// add value only if set
if (isset($model->info['getKeyFrom']['copyright']) && componentbuilderHelper::checkString($model->info['getKeyFrom']['copyright']))
{
$ownerDetails .= '<li>' . JText::sprintf('COM_COMPONENTBUILDER_EMCOPYRIGHTEM_BSB', $model->info['getKeyFrom']['copyright']) . '</li>';
$textNotice[] = '- ' . JText::sprintf('COM_COMPONENTBUILDER_COPYRIGHT_S', $model->info['getKeyFrom']['copyright']);
}
$ownerDetails .= '</ul>';
$backupNotice[] = JText::_('COM_COMPONENTBUILDER_OWNER_DETAILS_WAS_SET');
}
else
{
$ownerDetails = '<h2>' . JText::_('COM_COMPONENTBUILDER_PACKAGE_OWNER_NOT_SET') . '</h2>';
$textNotice[] = '# ' . JText::_('COM_COMPONENTBUILDER_PACKAGE_OWNER_DETAILS');
$ownerDetails .= JText::_('COM_COMPONENTBUILDER_TO_CHANGE_THE_PACKAGE_OWNER_DEFAULTS_OPEN_THE_BJCB_GLOBAL_OPTIONSB_GO_TO_THE_BCOMPANYB_TAB_AND_ADD_THE_CORRECT_COMPANY_DETAILS_THERE') . '<br />';
$textNotice[] = JText::_('COM_COMPONENTBUILDER_TO_CHANGE_THE_PACKAGE_OWNER_DEFAULTS_OPEN_THE_JCB_GLOBAL_OPTIONS_GO_TO_THE_COMPANY_TAB_AND_ADD_THE_CORRECT_COMPANY_DETAILS_THERE');
$ownerDetails .= '<h3>' . JText::_('COM_COMPONENTBUILDER_YOU_SHOULD_ADD_THE_CORRECT_OWNER_DETAILS') . '</h3>';
$textNotice[] = '## ' . JText::_('COM_COMPONENTBUILDER_YOU_SHOULD_ADD_THE_CORRECT_OWNER_DETAILS');
$ownerDetails .= JText::_('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') . '<br />';
$textNotice[] = JText::_('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');
$backupNotice[] = JText::_('COM_COMPONENTBUILDER_CHECK_YOUR_OWNER_DETAILS_IT_HAS_NOT_BEEN_SET_OPEN_THE_JCB_GLOBAL_OPTIONS_GO_TO_THE_COMPANY_TAB_AND_ADD_THE_CORRECT_COMPANY_DETAILS_THERE');
}
}
else
{
$keyNotice = '<h1>' . JText::_('COM_COMPONENTBUILDER_THIS_PACKAGE_HAS_NO_KEY') . '</h1>';
$textNotice[] = '# ' . JText::_('COM_COMPONENTBUILDER_THIS_PACKAGE_HAS_NO_KEY');
$ownerDetails = JText::_('COM_COMPONENTBUILDER_THAT_MEANS_ANYONE_WHO_HAS_THIS_PACKAGE_CAN_INSTALL_IT_INTO_JCB_TO_ADD_AN_EXPORT_KEY_SIMPLY_OPEN_THE_COMPONENT_GO_TO_THE_TAB_CALLED_BSETTINGSB_BOTTOM_RIGHT_THERE_IS_A_FIELD_CALLED_BEXPORT_KEYB') . '<br />';
$textNotice[] = JText::_('COM_COMPONENTBUILDER_THAT_MEANS_ANYONE_WHO_HAS_THIS_PACKAGE_CAN_INSTALL_IT_INTO_JCB_TO_ADD_AN_EXPORT_KEY_SIMPLY_OPEN_THE_COMPONENT_GO_TO_THE_TAB_CALLED_SETTINGS_BOTTOM_RIGHT_THERE_IS_A_FIELD_CALLED_EXPORT_KEY');
$backupNotice[] = JText::_('COM_COMPONENTBUILDER_NO_KEYS_WERE_FOUND_TO_ADD_AN_EXPORT_KEY_SIMPLY_OPEN_THE_COMPONENT_GO_TO_THE_TAB_CALLED_SETTINGS_BOTTOM_RIGHT_THERE_IS_A_FIELD_CALLED_EXPORT_KEY');
}
// get email
if ($email = $this->params->get('backup_email', null))
{
// plain text
$plainText = implode("\n", $textNotice);
// set hash to track changes
$hashTracker = md5($plainText);
if (ComponentbuilderHelper::newHash($hashTracker))
{
// Build final massage.
$message = $keyNotice . $ownerDetails . '<br /><small>HASH: ' . $hashTracker . '</small>';
// set the subject
$subject = JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_BUILDER_BACKUP_KEY');
// email the message
componentbuilderEmail::send($email, $subject, componentbuilderEmail::setTableBody($message, $subject), $plainText, 1);
$backupNotice[] = JText::_('COM_COMPONENTBUILDER_EMAIL_WITH_THE_NEW_KEY_WAS_SEND');
}
else
{
$backupNotice[] = JText::_('COM_COMPONENTBUILDER_KEY_HAS_NOT_CHANGED');
}
}
}
else
{
$backupNotice[] = JText::_('COM_COMPONENTBUILDER_BACKUP_FAILED_PLEASE_TRY_AGAIN_IF_THE_ERROR_CONTINUE_PLEASE_CONTACT_YOUR_SYSTEM_ADMINISTRATOR');
$backupNoticeStatus = 'Error';
if (componentbuilderHelper::checkString($model->packagePath))
{
// clear all if not successful
ComponentbuilderHelper::removeFolder($model->packagePath);
}
if (componentbuilderHelper::checkString($model->zipPath))
{
// clear all if not successful
JFile::delete($model->zipPath);
}
}
// quite only if auto backup (adding this script from custom code :)
if ('backup' === 'manualBackup')
{
echo "# " . $backupNoticeStatus . "\n" .implode("\n", $backupNotice);
jexit();
}
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=joomla_components', false), implode("<br />", $backupNotice), $backupNoticeStatus);
return;
}
protected function getApiUser()
{
// admin area does not have API user, only front-end (so we fallback on login user)
return JFactory::getUser();
}
}

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 39 of this MVC
@build 7th April, 2017
@version @update number 43 of this MVC
@build 16th September, 2017
@created 3rd April, 2017
@package Component Builder
@subpackage language_translation.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 39 of this MVC
@build 7th April, 2017
@version @update number 43 of this MVC
@build 16th September, 2017
@created 3rd April, 2017
@package Component Builder
@subpackage language_translations.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 67 of this MVC
@build 1st April, 2017
@version @update number 81 of this MVC
@build 27th September, 2017
@created 18th May, 2015
@package Component Builder
@subpackage layout.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 67 of this MVC
@build 1st April, 2017
@version @update number 81 of this MVC
@build 27th September, 2017
@created 18th May, 2015
@package Component Builder
@subpackage layouts.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 51 of this MVC
@build 6th March, 2017
@version @update number 54 of this MVC
@build 27th September, 2017
@created 29th May, 2015
@package Component Builder
@subpackage site_view.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 51 of this MVC
@build 6th March, 2017
@version @update number 54 of this MVC
@build 27th September, 2017
@created 29th May, 2015
@package Component Builder
@subpackage site_views.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 16 of this MVC
@build 20th October, 2016
@version @update number 17 of this MVC
@build 27th September, 2017
@created 19th May, 2015
@package Component Builder
@subpackage snippet.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 16 of this MVC
@build 20th October, 2016
@version @update number 17 of this MVC
@build 27th September, 2017
@created 19th May, 2015
@package Component Builder
@subpackage snippets.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 40 of this MVC
@build 1st April, 2017
@version @update number 45 of this MVC
@build 27th September, 2017
@created 26th May, 2015
@package Component Builder
@subpackage template.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 40 of this MVC
@build 1st April, 2017
@version @update number 45 of this MVC
@build 27th September, 2017
@created 26th May, 2015
@package Component Builder
@subpackage templates.php

232
admin/custom/timeago.js Normal file
View File

@ -0,0 +1,232 @@
/**
* Timeago is a jQuery plugin that makes it easy to support automatically
* updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago").
*
* @name timeago
* @version 1.5.4
* @requires jQuery v1.2.3+
* @author Ryan McGeary
* @license MIT License - http://www.opensource.org/licenses/mit-license.php
*
* For usage and examples, visit:
* http://timeago.yarp.com/
*
* Copyright (c) 2008-2017, Ryan McGeary (ryan -[at]- mcgeary [*dot*] org)
*/
(function (factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['jquery'], factory);
} else if (typeof module === 'object' && typeof module.exports === 'object') {
factory(require('jquery'));
} else {
// Browser globals
factory(jQuery);
}
}(function ($) {
$.timeago = function(timestamp) {
if (timestamp instanceof Date) {
return inWords(timestamp);
} else if (typeof timestamp === "string") {
return inWords($.timeago.parse(timestamp));
} else if (typeof timestamp === "number") {
return inWords(new Date(timestamp));
} else {
return inWords($.timeago.datetime(timestamp));
}
};
var $t = $.timeago;
$.extend($.timeago, {
settings: {
refreshMillis: 60000,
allowPast: true,
allowFuture: false,
localeTitle: false,
cutoff: 0,
autoDispose: true,
strings: {
prefixAgo: null,
prefixFromNow: null,
suffixAgo: "ago",
suffixFromNow: "from now",
inPast: 'any moment now',
seconds: "less than a minute",
minute: "about a minute",
minutes: "%d minutes",
hour: "about an hour",
hours: "about %d hours",
day: "a day",
days: "%d days",
month: "about a month",
months: "%d months",
year: "about a year",
years: "%d years",
wordSeparator: " ",
numbers: []
}
},
inWords: function(distanceMillis) {
if (!this.settings.allowPast && ! this.settings.allowFuture) {
throw 'timeago allowPast and allowFuture settings can not both be set to false.';
}
var $l = this.settings.strings;
var prefix = $l.prefixAgo;
var suffix = $l.suffixAgo;
if (this.settings.allowFuture) {
if (distanceMillis < 0) {
prefix = $l.prefixFromNow;
suffix = $l.suffixFromNow;
}
}
if (!this.settings.allowPast && distanceMillis >= 0) {
return this.settings.strings.inPast;
}
var seconds = Math.abs(distanceMillis) / 1000;
var minutes = seconds / 60;
var hours = minutes / 60;
var days = hours / 24;
var years = days / 365;
function substitute(stringOrFunction, number) {
var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction;
var value = ($l.numbers && $l.numbers[number]) || number;
return string.replace(/%d/i, value);
}
var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) ||
seconds < 90 && substitute($l.minute, 1) ||
minutes < 45 && substitute($l.minutes, Math.round(minutes)) ||
minutes < 90 && substitute($l.hour, 1) ||
hours < 24 && substitute($l.hours, Math.round(hours)) ||
hours < 42 && substitute($l.day, 1) ||
days < 30 && substitute($l.days, Math.round(days)) ||
days < 45 && substitute($l.month, 1) ||
days < 365 && substitute($l.months, Math.round(days / 30)) ||
years < 1.5 && substitute($l.year, 1) ||
substitute($l.years, Math.round(years));
var separator = $l.wordSeparator || "";
if ($l.wordSeparator === undefined) { separator = " "; }
return $.trim([prefix, words, suffix].join(separator));
},
parse: function(iso8601) {
var s = $.trim(iso8601);
s = s.replace(/\.\d+/,""); // remove milliseconds
s = s.replace(/-/,"/").replace(/-/,"/");
s = s.replace(/T/," ").replace(/Z/," UTC");
s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400
s = s.replace(/([\+\-]\d\d)$/," $100"); // +09 -> +0900
return new Date(s);
},
datetime: function(elem) {
var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title");
return $t.parse(iso8601);
},
isTime: function(elem) {
// jQuery's `is()` doesn't play well with HTML5 in IE
return $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time");
}
});
// functions that can be called via $(el).timeago('action')
// init is default when no action is given
// functions are called with context of a single element
var functions = {
init: function() {
functions.dispose.call(this);
var refresh_el = $.proxy(refresh, this);
refresh_el();
var $s = $t.settings;
if ($s.refreshMillis > 0) {
this._timeagoInterval = setInterval(refresh_el, $s.refreshMillis);
}
},
update: function(timestamp) {
var date = (timestamp instanceof Date) ? timestamp : $t.parse(timestamp);
$(this).data('timeago', { datetime: date });
if ($t.settings.localeTitle) {
$(this).attr("title", date.toLocaleString());
}
refresh.apply(this);
},
updateFromDOM: function() {
$(this).data('timeago', { datetime: $t.parse( $t.isTime(this) ? $(this).attr("datetime") : $(this).attr("title") ) });
refresh.apply(this);
},
dispose: function () {
if (this._timeagoInterval) {
window.clearInterval(this._timeagoInterval);
this._timeagoInterval = null;
}
}
};
$.fn.timeago = function(action, options) {
var fn = action ? functions[action] : functions.init;
if (!fn) {
throw new Error("Unknown function name '"+ action +"' for timeago");
}
// each over objects here and call the requested function
this.each(function() {
fn.call(this, options);
});
return this;
};
function refresh() {
var $s = $t.settings;
//check if it's still visible
if ($s.autoDispose && !$.contains(document.documentElement,this)) {
//stop if it has been removed
$(this).timeago("dispose");
return this;
}
var data = prepareData(this);
if (!isNaN(data.datetime)) {
if ( $s.cutoff === 0 || Math.abs(distance(data.datetime)) < $s.cutoff) {
$(this).text(inWords(data.datetime));
} else {
if ($(this).attr('title').length > 0) {
$(this).text($(this).attr('title'));
}
}
}
return this;
}
function prepareData(element) {
element = $(element);
if (!element.data("timeago")) {
element.data("timeago", { datetime: $t.datetime(element) });
var text = $.trim(element.text());
if ($t.settings.localeTitle) {
element.attr("title", element.data('timeago').datetime.toLocaleString());
} else if (text.length > 0 && !($t.isTime(element) && element.attr("title"))) {
element.attr("title", text);
}
}
return element.data("timeago");
}
function inWords(date) {
return $t.inWords(distance(date));
}
function distance(date) {
return (new Date().getTime() - date.getTime());
}
// fix for IE6 suckage
document.createElement("abbr");
document.createElement("time");
}));

View File

@ -54,7 +54,7 @@ class Compiler extends Infusion
// fixed pathes
protected $dynamicIntegration = false;
protected $backupPath = false;
protected $gitPath = false;
protected $repoPath = false;
protected $addCustomCodeAt = array();
/**
@ -76,9 +76,9 @@ class Compiler extends Infusion
$this->backupPath = $this->params->get('backup_folder_path', $this->tempPath).'/'.$this->componentBackupName.'.zip';
$this->dynamicIntegration = true;
}
if ($config['addGit'])
if ($config['addRepo'])
{
$this->gitPath = $this->params->get('git_folder_path', null);
$this->repoPath = $this->params->get('git_folder_path', null);
}
// remove site folder if not needed (TODO add check if custom script was moved to site folder then we must do a more complex cleanup here)
if ($this->removeSiteFolder)
@ -244,7 +244,7 @@ class Compiler extends Infusion
protected function setUpdateServer()
{
// move the update server to host
if ($this->componentData->add_update_server && $this->componentData->update_server_target == 1 && isset($this->updateServerFileName) && $this->dynamicIntegration)
if ($this->componentData->add_update_server == 1 && $this->componentData->update_server_target == 1 && isset($this->updateServerFileName) && $this->dynamicIntegration)
{
$xml_update_server_path = $this->componentPath.'/'.$this->updateServerFileName.'.xml';
// make sure we have the correct file
@ -402,15 +402,15 @@ class Compiler extends Infusion
private function zipComponent()
{
// before we zip the component we first need to move it to the git folder if set
if (ComponentbuilderHelper::checkString($this->gitPath))
// before we zip the component we first need to move it to the repo folder if set
if (ComponentbuilderHelper::checkString($this->repoPath))
{
// set the git path
$this->gitPath = $this->gitPath.'/com_'.$this->componentData->sales_name.'__joomla_'.$this->joomlaVersion;
// set the repo path
$repoFullPath = $this->repoPath.'/com_'.$this->componentData->sales_name.'__joomla_'.$this->joomlaVersion;
// remove old data
$this->removeFolder($this->gitPath,true);
$this->removeFolder($repoFullPath, $this->componentData->toignore);
// set the new data
JFolder::copy($this->componentPath, $this->gitPath, '', true);
JFolder::copy($this->componentPath, $repoFullPath, '', true);
}
// the name of the zip file to create
$this->filepath = $this->tempPath.'/'.$this->componentFolderName.'.zip';
@ -423,8 +423,9 @@ class Compiler extends Infusion
{
JFile::copy($this->filepath, $this->backupPath);
}
// move to sales server host
if ($this->componentData->add_sales_server && $this->dynamicIntegration)
if ($this->componentData->add_sales_server == 1 && $this->dynamicIntegration)
{
// make sure we have the correct file
if (isset($this->componentData->sales_server_ftp))
@ -474,30 +475,31 @@ class Compiler extends Infusion
private function getFTP($clientInput)
{
$signature = md5($clientInput);
if (isset($this->FTP[$signature]) && $this->FTP[$signature] instanceof JClientFtp)
$s1GnAtnr3 = md5($clientInput);
if (isset($this->FTP[$s1GnAtnr3]) && $this->FTP[$s1GnAtnr3] instanceof JClientFtp)
{
return $this->FTP[$signature];
// return the FTP instance
return $this->FTP[$s1GnAtnr3];
}
else
{
// make sure we have a string and it is not default or empty
if (ComponentbuilderHelper::checkString($clientInput))
{
// turn into vars
parse_str($clientInput);
// turn into variables
parse_str($clientInput); // because of this I am using strand variable naming to avoid any collisions.
// set options
if (isset($options) && ComponentbuilderHelper::checkArray($options))
{
foreach ($options as $option => $value)
foreach ($options as $o__p0t1on => $vAln3)
{
if ('timeout' === $option)
if ('timeout' === $o__p0t1on)
{
$options[$option] = (int) $value;
$options[$o__p0t1on] = (int) $vAln3;
}
if ('type' === $option)
if ('type' === $o__p0t1on)
{
$options[$option] = (string) $value;
$options[$o__p0t1on] = (string) $vAln3;
}
}
}
@ -509,8 +511,9 @@ class Compiler extends Infusion
if (isset($host) && $host != 'HOSTNAME' && isset($port) && $port != 'PORT_INT' && isset($username) && $username != 'user@name.com' && isset($password) && $password != 'password')
{
// load for reuse
$this->FTP[$signature] = JClientFtp::getInstance($host, $port, $options, $username, $password);
return $this->FTP[$signature];
$this->FTP[$s1GnAtnr3] = JClientFtp::getInstance($host, $port, $options, $username, $password);
// return the FTP instance
return $this->FTP[$s1GnAtnr3];
}
}
}

View File

@ -476,7 +476,20 @@ class Get
* @var array
*/
public $siteFields = array();
/**
* The add SQL
*
* @var array
*/
public $addSQL = array();
/**
* The update SQL
*
* @var array
*/
public $updateSQL = array();
/***
* Constructor
@ -518,6 +531,27 @@ class Get
}
// get the component data
$this->componentData = $this->getComponentData();
// make sure we have a version
if (strpos($this->componentData->component_version, '.') === FALSE)
{
$this->componentData->component_version = '1.0.0';
}
// update the version
if (!isset($this->componentData->old_component_version)
&& (ComponentbuilderHelper::checkArray($this->addSQL) || ComponentbuilderHelper::checkArray($this->updateSQL)))
{
// set the new version
$version = (array) explode('.', $this->componentData->component_version);
// get last key
end($version);
$key = key($version);
// just increment the last
$version[$key]++;
// set the old version
$this->componentData->old_component_version = $this->componentData->component_version;
// set the new version, and set update switch
$this->componentData->component_version = implode('.', $version);
}
// set the percentage when a language can be added
$this->percentageLanguageAdd = (int) $this->params->get('percentagelanguageadd', 50);
@ -591,6 +625,7 @@ class Get
}
unset($component->addfolders);
}
// ser the addfiles data
$addfiles = json_decode($component->addfiles,true);
if (ComponentbuilderHelper::checkArray($addfiles))
@ -657,6 +692,7 @@ class Get
// set the admin_view data
$admin_views = json_decode($component->addadmin_views,true);
if (ComponentbuilderHelper::checkArray($admin_views))
{
foreach ($admin_views as $option => $values)
@ -830,8 +866,38 @@ class Get
$component->version_update[$nr][$option] = $value;
}
}
}
// build update SQL
if ($old_component = $this->getHistoryWatch('joomla_component', $this->componentID))
{
// add new views if found
if (isset($old_component->addadmin_views) && ComponentbuilderHelper::checkJson($old_component->addadmin_views))
{
$this->setUpdateSQL(json_decode($old_component->addadmin_views, true), $admin_views, 'adminview');
}
// check if a new version was manualy set
$old_component_version = preg_replace('/[^0-9.]+/', '', $old_component->component_version);
if ($old_component_version != $this->component_version)
{
// yes, this is a new version, this mean there may be manual sql and must be checked and updated
$component->old_component_version = $old_component_version;
}
// clear this data
unset($old_component);
}
// add_javascript
if ($component->add_javascript == 1)
{
$this->customScriptBuilder['component_js'] = base64_decode($component->javascript);
}
else
{
$this->customScriptBuilder['component_js'] = '';
}
unset($component->javascript);
// add_css
if ($component->add_css == 1)
{
@ -842,6 +908,7 @@ class Get
$this->customScriptBuilder['component_css'] = '';
}
unset($component->css);
// set the lang target
$this->lang = 'admin';
// add PHP in ADMIN
@ -977,7 +1044,43 @@ class Get
$component->php_dashboard_methods = '';
$component->dashboard_tab = '';
}
// add the update FTP server sig
if ($component->add_update_server == 1 && is_numeric($component->update_server_ftp) && $component->update_server_ftp > 0)
{
$component->update_server_ftp = ComponentbuilderHelper::getVar('ftp', (int) $component->update_server_ftp, 'id', 'signature');
}
else
{
$component->update_server_ftp = 0;
}
// add the sales FTP server sig
if ($component->add_sales_server == 1 && is_numeric($component->sales_server_ftp) && $component->sales_server_ftp > 0)
{
$component->sales_server_ftp = ComponentbuilderHelper::getVar('ftp', (int) $component->sales_server_ftp, 'id', 'signature');
}
else
{
$component->sales_server_ftp = 0;
$component->add_sales_server = 0;
}
// set the ignore folders for repo if found
if (isset($component->toignore) && ComponentbuilderHelper::checkString($component->toignore))
{
if (strpos($component->toignore, ',') !== false)
{
$component->toignore = array_map('trim', (array) explode(',', $component->toignore));
}
else
{
$component->toignore = array(trim($component->toignore));
}
}
else
{
// the default is to ignore the repo folder
$component->toignore = array('.git');
}
// return the found component data
return $component;
}
@ -985,7 +1088,7 @@ class Get
/**
* To limit the SQL Demo date build in the views
*
* @param array $settings Teaking array.
* @param array $settings Tweaking array.
*
* @return void
*
@ -1093,6 +1196,19 @@ class Get
}
$this->customScriptBuilder['token'][$name_single] = false;
$this->customScriptBuilder['token'][$name_list] = false;
// set some placeholders
$this->placeholders['###view###'] = ComponentbuilderHelper::safeString($name_single);
$this->placeholders['###views###'] = ComponentbuilderHelper::safeString($name_list);
$this->placeholders['###View###'] = ComponentbuilderHelper::safeString($name_single, 'F');
$this->placeholders['###Views###'] = ComponentbuilderHelper::safeString($name_list, 'F');
$this->placeholders['###VIEW###'] = ComponentbuilderHelper::safeString($name_single, 'U');
$this->placeholders['###VIEWS###'] = ComponentbuilderHelper::safeString($name_list, 'U');
$this->placeholders['[[[view]]]'] = $this->placeholders['###view###'];
$this->placeholders['[[[views]]]'] = $this->placeholders['###views###'];
$this->placeholders['[[[View]]]'] = $this->placeholders['###View###'];
$this->placeholders['[[[Views]]]'] = $this->placeholders['###Views###'];
$this->placeholders['[[[VIEW]]]'] = $this->placeholders['###VIEW###'];
$this->placeholders['[[[VIEWS]]]'] = $this->placeholders['###VIEWS###'];
// load the values form params
$permissions = json_decode($view->addpermissions,true);
unset($view->addpermissions);
@ -1106,6 +1222,22 @@ class Get
unset($view->addlinked_views);
$tables = json_decode($view->addtables,true);
unset($view->addtables);
// build update SQL
if ($old_view = $this->getHistoryWatch('admin_view', $id))
{
// add new fields were added
if (isset($old_view->addfields) && ComponentbuilderHelper::checkJson($old_view->addfields))
{
$this->setUpdateSQL(json_decode($old_view->addfields, true), $fields, 'field', $name_single);
}
// check if the view name changed
if (ComponentbuilderHelper::checkString($old_view->name_single))
{
$this->setUpdateSQL(ComponentbuilderHelper::safeString($old_view->name_single), $name_single, 'table_name', $name_single);
}
// clear this data
unset($old_view);
}
// sort the values
if (ComponentbuilderHelper::checkArray($tables))
{
@ -1305,7 +1437,7 @@ class Get
}
}
// add_php
$addArrayP = array('php_getitem','php_save','php_postsavehook','php_getitems','php_getitems_after_all','php_getlistquery','php_allowedit','php_before_delete','php_after_delete','php_before_publish','php_after_publish','php_batchcopy','php_batchmove','php_document');
$addArrayP = array('php_getitem','php_before_save','php_save','php_postsavehook','php_getitems','php_getitems_after_all','php_getlistquery','php_allowedit','php_before_delete','php_after_delete','php_before_publish','php_after_publish','php_batchcopy','php_batchmove','php_document');
foreach ($addArrayP as $scripter)
{
if (isset($view->{'add_'.$scripter}) && $view->{'add_'.$scripter} == 1)
@ -1417,19 +1549,33 @@ class Get
// add_sql
if ($view->add_sql == 1)
{
if ($view->source == 1)
if ($view->source == 1 && isset($view->tables))
{
// build and add the SQL dump
$this->customScriptBuilder['sql'][$name_single] = $this->buildSqlDump($view->tables,$name_single, $id);
unset($view->tables);
}
elseif ($view->source == 2)
elseif ($view->source == 2 && isset($view->sql))
{
// add the SQL dump string
$this->customScriptBuilder['sql'][$name_single] = base64_decode($view->sql);
unset($view->sql);
}
}
// clear placeholders
unset($this->placeholders['###view###']);
unset($this->placeholders['###views###']);
unset($this->placeholders['###View###']);
unset($this->placeholders['###Views###']);
unset($this->placeholders['###VIEW###']);
unset($this->placeholders['###VIEWS###']);
unset($this->placeholders['[[[view]]]']);
unset($this->placeholders['[[[views]]]']);
unset($this->placeholders['[[[View]]]']);
unset($this->placeholders['[[[Views]]]']);
unset($this->placeholders['[[[VIEW]]]']);
unset($this->placeholders['[[[VIEWS]]]']);
// store this view to class object
$this->_adminViewData[$id] = $view;
}
// return the found view data
@ -1509,7 +1655,7 @@ class Get
$main_get = $this->setGetData(array($view->main_get),$view->code);
$view->main_get = $main_get[0];
// set the custom_get data
$view->custom_get = $this->setGetData(json_decode($view->custom_get,true),$view->code);
$view->custom_get = $this->setGetData(json_decode($view->custom_get, true),$view->code);
// set array adding array of scripts
$addArray = array('php_view','php_jview','php_jview_display','php_document','js_document','css_document','css');
foreach ($addArray as $scripter)
@ -1645,7 +1791,7 @@ class Get
// Order it by the ordering field.
$query->select('a.*');
$query->select($this->db->quoteName(array('c.name', 'c.properties'),array('type_name','type_properties')));
$query->select($this->db->quoteName(array('c.name', 'c.properties'),array('type_name','properties')));
$query->from('#__componentbuilder_field AS a');
$query->join('LEFT', $this->db->quoteName('#__componentbuilder_fieldtype', 'c') . ' ON (' . $this->db->quoteName('a.fieldtype') . ' = ' . $this->db->quoteName('c.id') . ')');
$query->where($this->db->quoteName('a.id') . ' = '. $this->db->quote($id));
@ -1665,19 +1811,8 @@ class Get
$field->xml = $this->setDynamicValues(json_decode($field->xml));
// load the type values form type params
$properties = json_decode($field->type_properties,true);
unset($field->type_properties);
$field->properties = json_decode($field->properties,true);
if (ComponentbuilderHelper::checkArray($properties))
{
foreach ($properties as $option => $values)
{
foreach ($values as $nr => $value)
{
$field->properties[$nr][$option] = $value;
}
}
}
// check if we have advanced encryption
if (4 == $field->store && (!isset($this->advancedEncryption) || !$this->advancedEncryption))
{
@ -1689,6 +1824,9 @@ class Get
$this->basicEncryption = true;
}
// get the last used version
$field->history = $this->getHistoryWatch('field', $id);
$this->_fieldData[$id] = $field;
}
else
@ -1832,7 +1970,7 @@ class Get
* @return oject the get dynamicGet data
*
*/
public function setGetData($ids,$view_code)
public function setGetData($ids, $view_code)
{
if (ComponentbuilderHelper::checkArray($ids))
{
@ -1923,14 +2061,14 @@ class Get
{
case 1:
// set the view data
$result->main_get[0]['selection'] = $this->setDataSelection($result->key,$view_code,$result->view_selection,$result->view_table_main,'a','','view');
$result->main_get[0]['selection'] = $this->setDataSelection($result->key, $view_code, $result->view_selection, $result->view_table_main, 'a', '', 'view');
$result->main_get[0]['as'] = 'a';
$result->main_get[0]['key'] = $result->key;
unset($result->view_selection);
break;
case 2:
// set the database data
$result->main_get[0]['selection'] = $this->setDataSelection($result->key,$view_code,$result->db_selection,$result->db_table_main,'a','','db');
$result->main_get[0]['selection'] = $this->setDataSelection($result->key, $view_code, $result->db_selection, $result->db_table_main, 'a', '', 'db');
$result->main_get[0]['as'] = 'a';
$result->main_get[0]['key'] = $result->key;
unset($result->db_selection);
@ -1943,206 +2081,148 @@ class Get
break;
}
// set join_view_table details
$join_view_table = json_decode($result->join_view_table,true);
unset($result->join_view_table);
$result->join_view_table = array();
if (ComponentbuilderHelper::checkArray($join_view_table))
$result->join_view_table = json_decode($result->join_view_table, true);
if (ComponentbuilderHelper::checkArray($result->join_view_table))
{
foreach ($join_view_table as $option => $values)
foreach ($result->join_view_table as $nr => &$option)
{
foreach ($values as $nr => $value)
if (ComponentbuilderHelper::checkString($option['selection']))
{
if (ComponentbuilderHelper::checkString($value))
// convert the type
$option['type'] = $typeArray[$option['type']];
// convert the operator
$option['operator'] = $operatorArray[$option['operator']];
// get the on field values
$on_field = array(); // array(on_field_as, on_field)
$on_field = array_map('trim', explode('.',$option['on_field']));
// get the join field values
$join_field = array(); // array(join_field_as, join_field)
$join_field = array_map('trim', explode('.',$option['join_field']));
$option['selection'] =
$this->setDataSelection($result->key, $view_code, $option['selection'], $option['view_table'], $option['as'], $option['row_type'], 'view');
$option['key'] = $result->key;
// load to the getters
if ($option['row_type'] == 1)
{
if ($option === 'selection')
$result->main_get[] = $option;
if ($on_field[0] === 'a')
{
$on_field_as = '';
$on_field = '';
list($on_field_as,$on_field) = array_map('trim', explode('.',$result->join_view_table[$nr]['on_field']));
$join_field_as = '';
$join_field = '';
list($join_field_as,$join_field) = array_map('trim', explode('.',$result->join_view_table[$nr]['join_field']));
$result->join_view_table[$nr][$option] =
$this->setDataSelection($result->key,$view_code,$value,$result->join_view_table[$nr]['view_table'],$result->join_view_table[$nr]['as'],$result->join_view_table[$nr]['row_type'],'view');
$result->join_view_table[$nr]['key'] = $result->key;
if ($result->join_view_table[$nr]['row_type'] == 1)
{
$result->main_get[] = $result->join_view_table[$nr];
if ($on_field_as === 'a')
{
$this->siteMainGet[$this->target][$view_code][$result->join_view_table[$nr]['as']] = $result->join_view_table[$nr]['as'];
}
else
{
$this->siteDynamicGet[$this->target][$view_code][$result->join_view_table[$nr]['as']][$join_field] = $on_field_as;
}
}
elseif ($result->join_view_table[$nr]['row_type'] == 2)
{
$result->custom_get[] = $result->join_view_table[$nr];
if ($on_field_as != 'a')
{
$this->siteDynamicGet[$this->target][$view_code][$result->join_view_table[$nr]['as']][$join_field] = $on_field_as;
}
}
unset($result->join_view_table[$nr]);
$this->siteMainGet[$this->target][$view_code][$option['as']] = $option['as'];
}
else
{
if ($option === 'type')
{
$value = $typeArray[$value];
}
if ($option === 'operator')
{
$value = $operatorArray[$value];
}
$result->join_view_table[$nr][$option] = $value;
$this->siteDynamicGet[$this->target][$view_code][$option['as']][$join_field[1]] = $on_field[0];
}
}
elseif ($option['row_type'] == 2)
{
$result->custom_get[] = $option;
if ($on_field[0] != 'a')
{
$this->siteDynamicGet[$this->target][$view_code][$option['as']][$join_field[1]] = $on_field[0];
}
}
}
unset($result->join_view_table[$nr]);
}
}
unset($result->join_view_table);
// set join_db_table details
$join_db_table = json_decode($result->join_db_table,true);
unset($result->join_db_table);
$result->join_db_table = array();
if (ComponentbuilderHelper::checkArray($join_db_table))
$result->join_db_table = json_decode($result->join_db_table, true);
if (ComponentbuilderHelper::checkArray($result->join_db_table))
{
foreach ($join_db_table as $option => $values)
foreach ($result->join_db_table as $nr => &$option1)
{
foreach ($values as $nr => $value)
if (ComponentbuilderHelper::checkString($option1['selection']))
{
if (ComponentbuilderHelper::checkString($value))
// convert the type
$option1['type'] = $typeArray[$option1['type']];
// convert the operator
$option1['operator'] = $operatorArray[$option1['operator']];
// get the on field values
$on_field = array(); // array(on_field_as, on_field)
$on_field = array_map('trim', explode('.',$option1['on_field']));
// get the join field values
$join_field = array(); // array(join_field_as, join_field)
$join_field = array_map('trim', explode('.',$option1['join_field']));
$option1['selection'] =
$this->setDataSelection($result->key, $view_code, $value, $option1['db_table'], $option1['as'], $option1['row_type'], 'db');
$option1['key'] = $result->key;
// load to the getters
if ($option1['row_type'] == 1)
{
if ($option === 'selection')
$result->main_get[] = $option1;
if ($on_field[0] === 'a')
{
$on_field_as = '';
$on_field = '';
list($on_field_as,$on_field) = array_map('trim', explode('.',$result->join_db_table[$nr]['on_field']));
$join_field_as = '';
$join_field = '';
list($join_field_as,$join_field) = array_map('trim', explode('.',$result->join_db_table[$nr]['join_field']));
$result->join_db_table[$nr][$option] =
$this->setDataSelection($result->key,$view_code,$value,$result->join_db_table[$nr]['db_table'],$result->join_db_table[$nr]['as'],$result->join_db_table[$nr]['row_type'],'db');
$result->join_db_table[$nr]['key'] = $result->key;
if ($result->join_db_table[$nr]['row_type'] == 1)
{
$result->main_get[] = $result->join_db_table[$nr];
if ($on_field_as === 'a')
{
$this->siteMainGet[$this->target][$view_code][$result->join_db_table[$nr]['as']] = $result->join_db_table[$nr]['as'];
}
else
{
$this->siteDynamicGet[$this->target][$view_code][$result->join_db_table[$nr]['as']][$join_field] = $on_field_as;
}
}
elseif ($result->join_db_table[$nr]['row_type'] == 2)
{
$result->custom_get[] = $result->join_db_table[$nr];
if ($on_field_as != 'a')
{
$this->siteDynamicGet[$this->target][$view_code][$result->join_db_table[$nr]['as']][$join_field] = $on_field_as;
}
}
unset($result->join_db_table[$nr]);
$this->siteMainGet[$this->target][$view_code][$option1['as']] = $option1['as'];
}
else
{
if ($option === 'type')
{
$value = $typeArray[$value];
}
if ($option === 'operator')
{
$value = $operatorArray[$value];
}
$result->join_db_table[$nr][$option] = $value;
$this->siteDynamicGet[$this->target][$view_code][$option1['as']][$join_field[1]] = $on_field[0];
}
}
elseif ($option1['row_type'] == 2)
{
$result->custom_get[] = $option1;
if ($on_field[0] != 'a')
{
$this->siteDynamicGet[$this->target][$view_code][$option1['as']][$join_field[1]] = $on_field[0];
}
}
}
unset($result->join_db_table[$nr]);
}
}
unset($result->join_db_table);
// set filter details
$filter = json_decode($result->filter,true);
unset($result->filter);
$result->filter = array();
if (ComponentbuilderHelper::checkArray($filter))
$result->filter = json_decode($result->filter, true);
if (ComponentbuilderHelper::checkArray($result->filter))
{
foreach ($filter as $option => $values)
foreach ($result->filter as $nr => &$option2)
{
foreach ($values as $nr => $value)
if (isset($option2['operator']))
{
if (ComponentbuilderHelper::checkString($value))
{
if ($option === 'operator')
{
$value = $operatorArray[$value];
$result->filter[$nr]['key'] = $result->key;
}
$result->filter[$nr][$option] = $value;
}
$option2['operator'] = $operatorArray[$option2['operator']];
$option2['key'] = $result->key;
}
}
}
// set global details
$global = json_decode($result->global,true);
unset($result->global);
$result->global = array();
if (ComponentbuilderHelper::checkArray($global))
{
foreach ($global as $option => $values)
{
foreach ($values as $nr => $value)
else
{
if (ComponentbuilderHelper::checkString($value))
{
$result->global[$nr][$option] = $value;
}
}
}
}
// set order details
$order = json_decode($result->order,true);
unset($result->order);
$result->order = array();
if (ComponentbuilderHelper::checkArray($order))
{
foreach ($order as $option => $values)
{
foreach ($values as $nr => $value)
{
if (ComponentbuilderHelper::checkString($value))
{
$result->order[$nr][$option] = $value;
}
unset($result->filter[$nr]);
}
}
}
// set where details
$where = json_decode($result->where,true);
unset($result->where);
$result->where = array();
if (ComponentbuilderHelper::checkArray($where))
$result->where = json_decode($result->where, true);
if (ComponentbuilderHelper::checkArray($result->where))
{
foreach ($where as $option => $values)
foreach ($result->where as $nr => &$option3)
{
foreach ($values as $nr => $value)
if (isset($option3['operator']))
{
if (ComponentbuilderHelper::checkString($value))
{
if ($option === 'operator')
{
$value = $operatorArray[$value];
}
$result->where[$nr][$option] = $value;
}
$option3['operator'] = $operatorArray[$option3['operator']];
}
else
{
unset($result->where[$nr]);
}
}
}
else
{
unset($result->where);
}
// set order details
$result->order = json_decode($result->order, true);
if (!ComponentbuilderHelper::checkArray($result->order))
{
unset($result->order);
}
// set global details
$result->global = json_decode($result->global, true);
if (!ComponentbuilderHelper::checkArray($result->global))
{
unset($result->global);
}
}
return $results;
}
@ -2151,6 +2231,210 @@ class Get
return false;
}
/**
* check if an update SQL is needed
*
* @param mix $old The old values
* @param mix $new The new values
* @param string $type The type of values
* @param int $key The id/key where values changed
*
* @return void
*
*/
protected function setUpdateSQL($old, $new, $type, $key = null)
{
// check if there were new items added
if (isset($new[$type]) && ComponentbuilderHelper::checkArray($new[$type])
&& isset($old[$type]) && ComponentbuilderHelper::checkArray($old[$type]))
{
foreach ($new[$type] as $item)
{
if (!in_array($item, $old[$type]))
{
// we have a new item, lets add to SQL
if (!isset($this->addSQL[$type]) || !ComponentbuilderHelper::checkArray($this->addSQL[$type]))
{
$this->addSQL[$type] = array();
}
// add key if found
if ($key)
{
if (!isset($this->addSQL[$type][$key]) || !ComponentbuilderHelper::checkArray($this->addSQL[$type][$key]))
{
$this->addSQL[$type][$key] = array();
}
$this->addSQL[$type][$key][] = (int) $item;
}
else
{
// convert adminview id to name
if ('adminview' === $type)
{
$this->addSQL[$type][] = ComponentbuilderHelper::safeString($this->getAdminViewData($item)->name_single);
}
else
{
$this->addSQL[$type][] = (int) item;
}
}
}
}
}
elseif ($key && ComponentbuilderHelper::checkString($new)
&& ComponentbuilderHelper::checkString($old)
&& $new !== $old)
{
// the string changed, lets add to SQL update
if (!isset($this->updateSQL[$type]) || !ComponentbuilderHelper::checkArray($this->updateSQL[$type]))
{
$this->updateSQL[$type] = array();
}
// set at key
$this->updateSQL[$type][$key] = array('old' => $old, 'new' => $new);
}
}
/**
* Get Item History values
*
* @param string $type The type of item
* @param int $id The item ID
*
* @return oject The history
*
*/
protected function getHistoryWatch($type, $id)
{
// quick class object to store old history object
$this->tmpHistory = null;
// Create a new query object.
$query = $this->db->getQuery(true);
$query->select('h.*');
$query->from('#__ucm_history AS h');
$query->where($this->db->quoteName('h.ucm_item_id') . ' = '. (int) $id);
// Join over the content type for the type id
$query->join('LEFT', '#__content_types AS ct ON ct.type_id = h.ucm_type_id');
$query->where('ct.type_alias = ' . $this->db->quote('com_componentbuilder.'.$type));
$query->order('h.save_date DESC');
$this->db->setQuery($query, 0, 1);
$this->db->execute();
if ($this->db->getNumRows())
{
// new version of this item found
// so we need to mark it as the last compiled version
$newActive = $this->db->loadObject();
// set the new version watch
$this->setHistoryWatch($newActive, 1);
}
// Get last compiled verion
$query = $this->db->getQuery(true);
$query->select('h.*');
$query->from('#__ucm_history AS h');
$query->where($this->db->quoteName('h.ucm_item_id') . ' = ' . (int) $id);
$query->where('h.keep_forever = 1');
$query->where('h.version_note LIKE ' . $this->db->quote('%component%'));
// make sure it does not return the active version
if (isset($newActive) && isset($newActive->version_id))
{
$query->where('h.version_id != ' . (int) $newActive->version_id);
}
// Join over the content type for the type id
$query->join('LEFT', '#__content_types AS ct ON ct.type_id = h.ucm_type_id');
$query->where('ct.type_alias = ' . $this->db->quote('com_componentbuilder.'.$type));
$query->order('h.save_date DESC');
$this->db->setQuery($query);
$this->db->execute();
if ($this->db->getNumRows())
{
// the old active version was found
// so we may need to do an SQL update
// and unmark the old compiled version
$oldActives = $this->db->loadObjectList();
foreach ($oldActives as $oldActive)
{
// remove old version watch
$this->setHistoryWatch($oldActive, 0);
}
}
// return the last used history record or null.
return $this->tmpHistory;
}
/**
* Set Item History Watch
*
* @param Object $object The history object
* @param int $action The action to take
* 0 = remove watch
* 1 = add watch
* @param string $type The type of item
*
* @return bool
*
*/
protected function setHistoryWatch($object, $action)
{
// check the note
if (ComponentbuilderHelper::checkJson($object->version_note))
{
$version_note = json_decode($object->version_note, true);
}
else
{
$version_note = array('component' => array());
}
// set watch
switch ($action)
{
case 0:
// remove watch
if(isset($version_note['component']) && ($key = array_search($this->componentID, $version_note['component'])) !== false)
{
// last version that was used to build/compile
$this->tmpHistory = json_decode($object->version_data);
// remove it from this component
unset($version_note['component'][$key]);
}
else
{
// since it was not found, no need to update anything
return true;
}
break;
case 1:
// add watch
if (!in_array($this->componentID, $version_note['component']))
{
$version_note['component'][] = $this->componentID;
}
else
{
// since it is there already, no need to update anything
return true;
}
break;
}
// check if we need to still keep this locked
if (isset($version_note['component']) && ComponentbuilderHelper::checkArray($version_note['component']))
{
// insure component ids are only added once per item
$version_note['component'] = array_unique($version_note['component']);
// we may change this, little risky (but since JCB does not have history notes it should be okay for now)
$object->version_note = json_encode($version_note);
$object->keep_forever = '1';
}
else
{
$object->version_note = '';
$object->keep_forever = '0';
}
// run the update
return $this->db->updateObject('#__ucm_history', $object, 'version_id');
}
/**
* Set Template and Layout Data
*
@ -2384,7 +2668,7 @@ class Get
* @return array the select query
*
*/
public function setDataSelection($method_key,$view_code,$string,$asset,$as,$row_type,$type)
public function setDataSelection($method_key, $view_code, $string, $asset, $as, $row_type, $type)
{
if (ComponentbuilderHelper::checkString($string))
{
@ -2953,7 +3237,7 @@ class Get
}
// check what type of place holders we should load here
$placeholderType = (int) $item['comment_type'].'2';
if (stripos($item['code'], '[[[view') !== false || stripos($item['code'], '[[[sview') !== false)
if (stripos($item['code'], '[[[view') !== false || stripos($item['code'], '[[[sview') !== false || stripos($item['code'], '[[[arg') !== false)
{
// if view is being set dynamicly then we can't update this code via IDE (TODO)
$placeholderType = 3;
@ -3072,26 +3356,24 @@ class Get
}
// if we have an array continue
if (isset($this->multiLangString[$string]['translation'])
&& ComponentbuilderHelper::checkArray($this->multiLangString[$string]['translation'])
&& isset($this->multiLangString[$string]['translation']['translation'])
&& isset($this->multiLangString[$string]['translation']['language'])
&& ComponentbuilderHelper::checkArray($this->multiLangString[$string]['translation']['language'])
&& ComponentbuilderHelper::checkArray($this->multiLangString[$string]['translation']['translation']))
&& ComponentbuilderHelper::checkArray($this->multiLangString[$string]['translation']))
{
// great lets build the multi languages strings
foreach ($this->multiLangString[$string]['translation']['translation'] as $at => $lang)
foreach ($this->multiLangString[$string]['translation'] as $translations)
{
$_tag = $this->multiLangString[$string]['translation']['language'][$at];
// build arrays
if (!isset($this->languages[$_tag]))
if (isset($translations['language']) && isset($translations['translation']))
{
$this->languages[$_tag] = array();
// build arrays
if (!isset($this->languages[$translations['language']]))
{
$this->languages[$translations['language']] = array();
}
if (!isset($this->languages[$translations['language']][$area]))
{
$this->languages[$translations['language']][$area] = array();
}
$this->languages[$translations['language']][$area][$placeholder] = $translations['translation'];
}
if (!isset($this->languages[$_tag][$area]))
{
$this->languages[$_tag][$area] = array();
}
$this->languages[$_tag][$area][$placeholder] = $lang;
}
}
else
@ -3313,7 +3595,7 @@ class Get
elseif (ComponentbuilderHelper::checkJson($item['translation']))
{
$translation = json_decode($item['translation'], true);
if (ComponentbuilderHelper::checkArray($translation) && ComponentbuilderHelper::checkArray($translation['translation']))
if (ComponentbuilderHelper::checkArray($translation))
{
// only archive the item and update the string to unlink the current component
$this->setUpdateExistingLangStrings($item['id'], $components, 2, $today, $counterUpdate);

View File

@ -721,16 +721,19 @@ class Structure extends Get
*/
public function getLastModifiedDate($view)
{
if (isset($view['settings']->modified) && ComponentbuilderHelper::checkString($view['settings']->modified))
// first set the main date
if (isset($view['settings']->modified)
&& ComponentbuilderHelper::checkString($view['settings']->modified)
&& '0000-00-00 00:00:00' !== $view['settings']->modified)
{
// first set the main date
$date = strtotime($view['settings']->modified);
}
else
{
// first set the main date
// use todays date
$date = strtotime("now");
}
// search for the last modified date
if (isset($view['adminview']))
{
$id = $view['adminview'].'admin';
@ -741,7 +744,9 @@ class Structure extends Get
{
foreach ($view['settings']->fields as $field)
{
if (isset($field['settings']) && ComponentbuilderHelper::checkObject($field['settings']) && isset($field['settings']->modified))
if (isset($field['settings']) && ComponentbuilderHelper::checkObject($field['settings'])
&& isset($field['settings']->modified) && ComponentbuilderHelper::checkString($field['settings']->modified)
&& '0000-00-00 00:00:00' !== $field['settings']->modified)
{
$anotherDate = strtotime($field['settings']->modified);
if ($anotherDate > $date)
@ -759,7 +764,9 @@ class Structure extends Get
// now check if value has been set
if (!isset($this->lastModifiedDate[$id]))
{
if (isset($view['settings']->main_get->modified))
if (isset($view['settings']->main_get->modified)
&& ComponentbuilderHelper::checkString($view['settings']->main_get->modified)
&& '0000-00-00 00:00:00' !== $view['settings']->main_get->modified)
{
$anotherDate = strtotime($view['settings']->main_get->modified);
if ($anotherDate > $date)
@ -775,7 +782,9 @@ class Structure extends Get
// now check if value has been set
if (!isset($this->lastModifiedDate[$id]))
{
if (isset($view['settings']->main_get->modified))
if (isset($view['settings']->main_get->modified)
&& ComponentbuilderHelper::checkString($view['settings']->main_get->modified)
&& '0000-00-00 00:00:00' !== $view['settings']->main_get->modified)
{
$anotherDate = strtotime($view['settings']->main_get->modified);
if ($anotherDate > $date)
@ -801,14 +810,14 @@ class Structure extends Get
/**
* Set the Static File & Folder
*
* @param array $target The main target and name
*
* @param array $target The main target and name
* @param string $type The type in the target
* @param string $fileName The custom file name
* @param array $cofig to add more data to the files info
*
* @param array $cofig to add more data to the files info
*
* @return boolean
*
*
*/
public function buildDynamique($target, $type, $fileName = false, $config = false)
{
@ -1090,14 +1099,14 @@ class Structure extends Get
/**
* Remove folders with files
*
* @param string $dir The path to folder to remove
* @param boolean $git if there is a git folder in that must not be removed
* @param string $dir The path to folder to remove
* @param boolean $ignore The files and folders to ignore
*
* @return boolean True if all is removed
*
*/
protected function removeFolder($dir, $git = false)
protected function removeFolder($dir, $ignore = false)
{
return ComponentbuilderHelper::removeFolder($dir, $git);
return ComponentbuilderHelper::removeFolder($dir, $ignore);
}
}

View File

@ -61,6 +61,13 @@ class Fields extends Structure
*/
public $layoutBuilder = array();
/**
* used to fix the zero order
*
* @var array
*/
private $zeroOrderFix = array();
/**
* Site field data
*
@ -229,6 +236,13 @@ class Fields extends Structure
*/
public $jsonStringBuilder = array();
/**
* Json String Builder for return values to array
*
* @var array
*/
public $jsonItemBuilderArray = array();
/**
* Json Item Builder
*
@ -463,7 +477,6 @@ class Fields extends Structure
{
$dynamcfields .= $this->setDynamicField($field, $view, $view['settings']->type, $langView, $viewName, $listViewName, $spacerCounter, $this->placeholders, $dbkey, true);
}
// set the defautl fields
$fieldSet = array();
$fieldSet[] = '<fieldset name="details">';
@ -761,8 +774,8 @@ class Fields extends Structure
}
elseif ($this->defaultField($typeName, 'special'))
{
// set the repeatable field
if ($typeName === 'repeatable')
// set the repeatable field or subform field
if ($typeName === 'repeatable' || $typeName === 'subform')
{
if ($build)
{
@ -1026,6 +1039,93 @@ class Fields extends Structure
$fieldSet .= PHP_EOL."\t\t\t</fields>";
$fieldSet .= PHP_EOL."\t\t</field>";
}
// set the subform fields (it is a repeatable without the modal)
elseif ($typeName === 'subform')
{
// now add to the field set
$fieldSet .= PHP_EOL."\t\t<!--" . $this->setLine(__LINE__) . " " . ComponentbuilderHelper::safeString($name, 'F') . " Field. Type: " . ComponentbuilderHelper::safeString($typeName, 'F') . ". (joomla) -->";
$fieldSet .= PHP_EOL."\t\t<field";
$fieldsSet = array();
foreach ($fieldAttributes as $property => $value)
{
if ($property != 'fields')
{
$fieldSet .= PHP_EOL."\t\t\t" . $property . '="' . $value . '"';
}
}
$fieldSet .= ">";
$fieldSet .= PHP_EOL."\t\t\t" . '<form hidden="true" name="list_' . $fieldAttributes['name'] . '_modal" repeat="true">';
if (strpos($fieldAttributes['fields'], ',') !== false)
{
// mulitpal fields
$fieldsSets = (array) explode(',', $fieldAttributes['fields']);
}
elseif (is_numeric($fieldAttributes['fields']))
{
// single field
$fieldsSets[] = (int) $fieldAttributes['fields'];
}
// only continue if we have a field set
if (ComponentbuilderHelper::checkArray($fieldsSets))
{
foreach ($fieldsSets as $fieldId)
{
// get the field data
$fieldData = array();
$fieldData['settings'] = $this->getFieldData($fieldId, $viewName);
if (ComponentbuilderHelper::checkObject($fieldData['settings']))
{
$r_name = ComponentbuilderHelper::safeString($fieldData['settings']->name);
$r_typeName = ComponentbuilderHelper::safeString($fieldData['settings']->type_name);
$r_multiple = false;
$r_langLabel = '';
// add the tabs needed
$taber = "\t\t";
// get field values
$r_fieldValues = $this->setFieldAttributes($fieldData, $view, $r_name, $r_typeName, $r_multiple, $r_langLabel, $langView, $spacerCounter, $listViewName, $viewName, $placeholders, true);
// check if values were set
if (ComponentbuilderHelper::checkArray($r_fieldValues))
{
//reset options array
$r_optionArray = array();
if ($this->defaultField($r_typeName, 'option'))
{
// now add to the field set
$fieldSet .= $this->setField('option', $taber, $r_fieldValues, $r_name, $r_typeName, $langView, $viewName, $listViewName, $placeholders, $r_optionArray);
}
elseif ($this->defaultField($r_typeName, 'plain'))
{
// now add to the field set
$fieldSet .= $this->setField('plain', $taber, $r_fieldValues, $r_name, $r_typeName, $langView, $viewName, $listViewName, $placeholders, $r_optionArray);
}
elseif (ComponentbuilderHelper::checkArray($r_fieldValues['custom']))
{
// add to custom
$custom = $r_fieldValues['custom'];
unset($r_fieldValues['custom']);
// now add to the field set
$fieldSet .= $this->setField('custom', $taber, $r_fieldValues, $r_name, $r_typeName, $langView, $viewName, $listViewName, $placeholders, $r_optionArray);
// set lang (just incase)
$r_listLangName = $langView . '_' . ComponentbuilderHelper::safeString($r_name, 'U');
// add to lang array
$this->langContent[$this->lang][$r_listLangName] = ComponentbuilderHelper::safeString($r_name, 'W');
// if label was set use instead
if (ComponentbuilderHelper::checkString($r_langLabel))
{
$r_listLangName = $r_langLabel;
}
// set the custom array
$data = array('type' => $r_typeName, 'code' => $r_name, 'lang' => $r_listLangName, 'custom' => $custom);
// set the custom field file
$this->setCustomFieldTypeFile($data, $listViewName, $viewName);
}
}
}
}
}
$fieldSet .= PHP_EOL."\t\t\t</form>";
$fieldSet .= PHP_EOL."\t\t</field>";
}
}
elseif ($setType === 'custom')
{
@ -1067,6 +1167,26 @@ class Fields extends Structure
*/
public function setLayoutBuilder(&$viewName,&$tabName,&$name,&$field)
{
// first fix the zero order
// to insure it lands before all the other fields
// as zero is expected to behave
if ($field['order_edit'] == 0)
{
if (!isset($this->zeroOrderFix[$viewName]))
{
$this->zeroOrderFix[$viewName] = array();
}
if (!isset($this->zeroOrderFix[$viewName][(int) $field['tab']]))
{
$this->zeroOrderFix[$viewName][(int) $field['tab']] = -999;
}
else
{
$this->zeroOrderFix[$viewName][(int) $field['tab']]++;
}
$field['order_edit'] = $this->zeroOrderFix[$viewName][(int) $field['tab']];
}
// now build the layout
if (ComponentbuilderHelper::checkString($tabName) && $tabName != 'publishing')
{
$this->tabCounter[$viewName][(int) $field['tab']] = $tabName;
@ -1489,6 +1609,12 @@ class Fields extends Structure
{
$this->doNotEscape[$listViewName][] = $fieldAttributes['name'];
}
// check if we have display switch for dynamic placment
$display = ComponentbuilderHelper::getBetween($field['settings']->xml, 'display="', '"');
if (ComponentbuilderHelper::checkString($display))
{
$fieldAttributes['display'] = $display;
}
}
}
return $fieldAttributes;
@ -1670,6 +1796,8 @@ class Fields extends Structure
{
$this->queryBuilder[$viewName][$name]['default'] = 'EMPTY';
}
// to identify the field
$this->queryBuilder[$viewName][$name]['ID'] = $field['settings']->id;
$this->queryBuilder[$viewName][$name]['null_switch'] = $field['settings']->null_switch;
// set index types
if ($field['settings']->indexes == 1 && !in_array($field['settings']->datatype, $textKeys))
@ -1727,7 +1855,7 @@ class Fields extends Structure
}
}
// build the list values
if ($field['list'] == 1 && $typeName != 'repeatable')
if ($field['list'] == 1 && $typeName != 'repeatable' && $typeName != 'subform')
{
// load to list builder
$this->listBuilder[$listViewName][] = array(
@ -1763,7 +1891,7 @@ class Fields extends Structure
$this->intFieldsBuilder[$viewName] .= ',"' . $name . '"';
}
// set all dynamic field of this view
if ($typeName != 'category' && $typeName != 'repeatable' && !in_array($name, $this->defaultFields))
if ($typeName != 'category' && $typeName != 'repeatable' && $typeName != 'subform' && !in_array($name, $this->defaultFields))
{
if (!isset($this->dynamicfieldsBuilder[$viewName]))
{
@ -1788,7 +1916,7 @@ class Fields extends Structure
}
}
// set the custom builder
if (ComponentbuilderHelper::checkArray($custom) && $typeName != 'category' && $typeName != 'repeatable')
if (ComponentbuilderHelper::checkArray($custom) && $typeName != 'category' && $typeName != 'repeatable' && $typeName != 'subform')
{
$this->customBuilder[$listViewName][] = array('type' => $typeName, 'code' => $name, 'lang' => $listLangName, 'custom' => $custom, 'method' => $field['settings']->store);
// set the custom fields needed in content type data
@ -1834,7 +1962,7 @@ class Fields extends Structure
$this->checkboxBuilder[$viewName][] = $name;
}
// setup checkboxes and other json items for this view
if (($typeName === 'checkboxes' || $multiple || $field['settings']->store != 0) && $typeName != 'tag')
if (($typeName === 'subform' || $typeName === 'checkboxes' || $multiple || $field['settings']->store != 0) && $typeName != 'tag')
{
switch ($field['settings']->store)
{
@ -1876,7 +2004,7 @@ class Fields extends Structure
}
// load the json list display fix
if ($field['list'] == 1 && $typeName != 'repeatable')
if ($field['list'] == 1 && $typeName != 'repeatable' && $typeName != 'subform')
{
if (ComponentbuilderHelper::checkArray($options))
{
@ -1887,6 +2015,12 @@ class Fields extends Structure
$this->getItemsMethodListStringFixBuilder[$viewName][] = array('name' => $name, 'type' => $typeName, 'translation' => false, 'custom' => $custom, 'method' => $field['settings']->store);
}
}
// if subform the values must revert to array
if ('subform' === $typeName)
{
$this->jsonItemBuilderArray[$viewName][] = $name;
}
}
// build the data for the export & import methods $typeName === 'repeatable' ||
if (($typeName === 'checkboxes' || $multiple || $field['settings']->store != 0) && !ComponentbuilderHelper::checkArray($options))
@ -1897,12 +2031,12 @@ class Fields extends Structure
// check if field should be added to uikit
$this->buildSiteFieldData($viewName, $name, 'uikit', $typeName);
// load the selection translation fix
if (ComponentbuilderHelper::checkArray($options) && $field['list'] == 1 && $typeName != 'repeatable')
if (ComponentbuilderHelper::checkArray($options) && $field['list'] == 1 && $typeName != 'repeatable' && $typeName != 'subform')
{
$this->selectionTranslationFixBuilder[$listViewName][$name] = $options;
}
// build the sort values
if ($field['sort'] == 1 && $field['list'] == 1 && (!$multiple && $typeName != 'checkbox' && $typeName != 'checkboxes' && $typeName != 'repeatable'))
if ($field['sort'] == 1 && $field['list'] == 1 && (!$multiple && $typeName != 'checkbox' && $typeName != 'checkboxes' && $typeName != 'repeatable' && $typeName != 'subform'))
{
$this->sortBuilder[$listViewName][] = array('type' => $typeName, 'code' => $name, 'lang' => $listLangName, 'custom' => $custom, 'options' => $options);
}
@ -1912,7 +2046,7 @@ class Fields extends Structure
$this->searchBuilder[$listViewName][] = array('type' => $typeName, 'code' => $name, 'custom' => $custom, 'list' => $field['list']);
}
// build the filter values
if ($field['filter'] == 1 && $field['list'] == 1 && (!$multiple && $typeName != 'checkbox' && $typeName != 'checkboxes' && $typeName != 'repeatable'))
if ($field['filter'] == 1 && $field['list'] == 1 && (!$multiple && $typeName != 'checkbox' && $typeName != 'checkboxes' && $typeName != 'repeatable' && $typeName != 'subform'))
{
$this->filterBuilder[$listViewName][] = array('type' => $typeName, 'code' => $name, 'lang' => $listLangName, 'database' => $viewName, 'function' => ComponentbuilderHelper::safeString($name, 'F'), 'custom' => $custom, 'options' => $options);
}
@ -2069,7 +2203,7 @@ class Fields extends Structure
'chromestyle', 'contenttype', 'databaseconnection', 'editors', 'email', 'file',
'filelist', 'folderlist', 'groupedlist', 'hidden', 'file', 'headertag', 'helpsite',
'imagelist', 'integer', 'language', 'list', 'media', 'menu', 'note', 'number', 'password',
'plugins', 'radio', 'repeatable', 'range', 'rules', 'sessionhandler', 'spacer', 'sql', 'tag',
'plugins', 'radio', 'repeatable', 'range', 'rules', 'subform', 'sessionhandler', 'spacer', 'sql', 'tag',
'tel', 'menuitem', 'meter', 'modulelayout', 'moduleorder', 'moduleposition', 'moduletag',
'templatestyle', 'text', 'textarea', 'timezone', 'url', 'user', 'usergroup'
),
@ -2090,7 +2224,7 @@ class Fields extends Structure
),
'special' => array(
'contentlanguage', 'groupedlist', 'moduleposition', 'plugin',
'repeatable', 'templatestyle'
'repeatable', 'templatestyle', 'subform'
)
);

File diff suppressed because it is too large Load Diff

View File

@ -143,16 +143,23 @@ class Infusion extends Interpretation
$this->setConfigFieldsets(1);
$this->lang = $keepLang;
// ###ADMINJS###
$this->fileContentStatic['###ADMINJS###'] = $this->setPlaceholders($this->customScriptBuilder['component_js'], $this->placeholders);
// ###SITEJS###
$this->fileContentStatic['###SITEJS###'] = $this->setPlaceholders($this->customScriptBuilder['component_js'], $this->placeholders);
// ###ADMINCSS###
$this->fileContentStatic['###ADMINCSS###'] = $this->setPlaceholders($this->customScriptBuilder['component_css'], $this->placeholders);
// ###SITECSS###
$this->fileContentStatic['###SITECSS###'] = $this->setPlaceholders($this->customScriptBuilder['component_css'], $this->placeholders);
// ###CUSTOM_HELPER_SCRIPT###
$this->fileContentStatic['###CUSTOM_HELPER_SCRIPT###'] = $this->setPlaceholders($this->customScriptBuilder['component_php_helper_admin'], $this->placeholders);
$this->fileContentStatic['###CUSTOM_HELPER_SCRIPT###']
= $this->setPlaceholders($this->customScriptBuilder['component_php_helper_admin'], $this->placeholders);
// ###BOTH_CUSTOM_HELPER_SCRIPT###
$this->fileContentStatic['###BOTH_CUSTOM_HELPER_SCRIPT###'] = $this->setPlaceholders($this->customScriptBuilder['component_php_helper_both'], $this->placeholders);
$this->fileContentStatic['###BOTH_CUSTOM_HELPER_SCRIPT###']
= $this->setPlaceholders($this->customScriptBuilder['component_php_helper_both'], $this->placeholders);
// ###ADMIN_GLOBAL_EVENT_HELPER###
$this->fileContentStatic['###ADMIN_GLOBAL_EVENT_HELPER###'] = '';
@ -168,14 +175,16 @@ class Infusion extends Interpretation
{
// ###ADMIN_GLOBAL_EVENT###
$this->fileContentStatic['###ADMIN_GLOBAL_EVENT###'] = PHP_EOL.PHP_EOL.'// Triger the Global Admin Event';
$this->fileContentStatic['###ADMIN_GLOBAL_EVENT###'] .= PHP_EOL.$this->fileContentStatic['###Component###'].'Helper::globalEvent($document);';
$this->fileContentStatic['###ADMIN_GLOBAL_EVENT###']
.= PHP_EOL.$this->fileContentStatic['###Component###'].'Helper::globalEvent($document);';
// ###ADMIN_GLOBAL_EVENT_HELPER###
$this->fileContentStatic['###ADMIN_GLOBAL_EVENT_HELPER###'] = PHP_EOL.PHP_EOL."\t".'/**';
$this->fileContentStatic['###ADMIN_GLOBAL_EVENT_HELPER###'] .= PHP_EOL."\t".'* The Global Admin Event Method.';
$this->fileContentStatic['###ADMIN_GLOBAL_EVENT_HELPER###'] .= PHP_EOL."\t".'**/';
$this->fileContentStatic['###ADMIN_GLOBAL_EVENT_HELPER###'] .= PHP_EOL."\t".'public static function globalEvent($document)';
$this->fileContentStatic['###ADMIN_GLOBAL_EVENT_HELPER###'] .= PHP_EOL."\t".'{';
$this->fileContentStatic['###ADMIN_GLOBAL_EVENT_HELPER###'] .= PHP_EOL.$this->setPlaceholders($this->customScriptBuilder['component_php_admin_event'], $this->placeholders);
$this->fileContentStatic['###ADMIN_GLOBAL_EVENT_HELPER###']
.= PHP_EOL.$this->setPlaceholders($this->customScriptBuilder['component_php_admin_event'], $this->placeholders);
$this->fileContentStatic['###ADMIN_GLOBAL_EVENT_HELPER###'] .= PHP_EOL."\t".'}';
}
@ -192,8 +201,6 @@ class Infusion extends Interpretation
$this->fileContentStatic['###HELP###'] = $this->noHelp();
// ###HELP_SITE###
$this->fileContentStatic['###HELP_SITE###'] = $this->noHelp();
// ###UPDATE_VERSION_MYSQL###
$this->setVersionController();
// build route parse switch
$this->fileContentStatic['###ROUTER_PARSE_SWITCH###'] = '';
@ -260,7 +267,8 @@ class Infusion extends Interpretation
$this->setLockLicensePer($viewName_list, $this->target);
// ###FIELDSETS### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###FIELDSETS###'] = $this->setFieldSet($view, $this->fileContentStatic['###component###']);
$this->fileContentDynamic[$viewName_single]['###FIELDSETS###']
= $this->setFieldSet($view, $this->fileContentStatic['###component###']);
// ###ACCESSCONTROL### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###ACCESSCONTROL###'] = $this->setFieldSetAccessControl($viewName_single);
@ -283,11 +291,14 @@ class Infusion extends Interpretation
// ###AJAXTOKE### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###AJAXTOKE###'] = $this->setAjaxToke($viewName_single);
if (isset($this->customScriptBuilder['php_document'][$viewName_single]) && ComponentbuilderHelper::checkString($this->customScriptBuilder['php_document'][$viewName_single]))
if (isset($this->customScriptBuilder['php_document'][$viewName_single])
&& ComponentbuilderHelper::checkString($this->customScriptBuilder['php_document'][$viewName_single]))
{
// ###DOCUMENT_CUSTOM_PHP### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###DOCUMENT_CUSTOM_PHP###']
= PHP_EOL.$this->setPlaceholders($this->customScriptBuilder['php_document'][$viewName_single], $this->placeholders);
= PHP_EOL.$this->setPlaceholders(
$this->customScriptBuilder['php_document'][$viewName_single],
$this->placeholders);
// clear some memory
unset($this->customScriptBuilder['php_document'][$viewName_single]);
}
@ -300,7 +311,8 @@ class Infusion extends Interpretation
$this->fileContentDynamic[$viewName_single]['###LINKEDVIEWTABLESCRIPTS###'] = '';
// ###VALIDATEFIX### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###VALIDATIONFIX###'] = $this->setValidationFix($viewName_single, $this->fileContentStatic['###Component###']);
$this->fileContentDynamic[$viewName_single]['###VALIDATIONFIX###']
= $this->setValidationFix($viewName_single, $this->fileContentStatic['###Component###']);
// ###EDITBODY### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###EDITBODY###'] = $this->setEditBody($view);
@ -324,16 +336,20 @@ class Infusion extends Interpretation
$this->fileContentDynamic[$viewName_single]['###LINKEDVIEWMETHODS###'] = '';
// ###JMODELADMIN_BEFORE_DELETE### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###JMODELADMIN_BEFORE_DELETE###'] = $this->getCustomScriptBuilder('php_before_delete', $viewName_single, PHP_EOL);
$this->fileContentDynamic[$viewName_single]['###JMODELADMIN_BEFORE_DELETE###']
= $this->getCustomScriptBuilder('php_before_delete', $viewName_single, PHP_EOL);
// ###JMODELADMIN_AFTER_DELETE### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###JMODELADMIN_AFTER_DELETE###'] = $this->getCustomScriptBuilder('php_after_delete', $viewName_single, PHP_EOL.PHP_EOL);
$this->fileContentDynamic[$viewName_single]['###JMODELADMIN_AFTER_DELETE###']
= $this->getCustomScriptBuilder('php_after_delete', $viewName_single, PHP_EOL.PHP_EOL);
// ###JMODELADMIN_BEFORE_DELETE### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###JMODELADMIN_BEFORE_PUBLISH###'] = $this->getCustomScriptBuilder('php_before_publish', $viewName_single, PHP_EOL);
$this->fileContentDynamic[$viewName_single]['###JMODELADMIN_BEFORE_PUBLISH###']
= $this->getCustomScriptBuilder('php_before_publish', $viewName_single, PHP_EOL);
// ###JMODELADMIN_AFTER_DELETE### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###JMODELADMIN_AFTER_PUBLISH###'] = $this->getCustomScriptBuilder('php_after_publish', $viewName_single, PHP_EOL.PHP_EOL);
$this->fileContentDynamic[$viewName_single]['###JMODELADMIN_AFTER_PUBLISH###']
= $this->getCustomScriptBuilder('php_after_publish', $viewName_single, PHP_EOL.PHP_EOL);
// ###CHECKBOX_SAVE### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###CHECKBOX_SAVE###'] = $this->setCheckboxSave($viewName_single);
@ -342,9 +358,12 @@ class Infusion extends Interpretation
$this->fileContentDynamic[$viewName_single]['###METHOD_ITEM_SAVE###'] = $this->setMethodItemSave($viewName_single);
// ###POSTSAVEHOOK### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###POSTSAVEHOOK###'] = $this->getCustomScriptBuilder('php_postsavehook', $viewName_single, PHP_EOL, null, true, PHP_EOL."\t\treturn;", PHP_EOL.PHP_EOL."\t\treturn;");
$this->fileContentDynamic[$viewName_single]['###POSTSAVEHOOK###']
= $this->getCustomScriptBuilder('php_postsavehook', $viewName_single, PHP_EOL, null, true,
PHP_EOL."\t\treturn;", PHP_EOL.PHP_EOL."\t\treturn;");
if (isset($this->customScriptBuilder['css_view'][$viewName_single]) && ComponentbuilderHelper::checkString($this->customScriptBuilder['css_view'][$viewName_single]))
if (isset($this->customScriptBuilder['css_view'][$viewName_single])
&& ComponentbuilderHelper::checkString($this->customScriptBuilder['css_view'][$viewName_single]))
{
// ###VIEWCSS### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###VIEWCSS###']
@ -360,7 +379,8 @@ class Infusion extends Interpretation
// add css to front end
if ($view['edit_create_site_view'])
{
$this->fileContentDynamic[$viewName_single]['###SITE_VIEWCSS###'] = $this->fileContentDynamic[$viewName_single]['###VIEWCSS###'];
$this->fileContentDynamic[$viewName_single]['###SITE_VIEWCSS###']
= $this->fileContentDynamic[$viewName_single]['###VIEWCSS###'];
}
}
// set the views names
@ -411,9 +431,11 @@ class Infusion extends Interpretation
if ($view['checkin'] == 1)
{
// ###AUTOCHECKIN### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###AUTOCHECKIN###'] = $this->setAutoCheckin($viewName_single,$this->fileContentStatic['###component###']);
$this->fileContentDynamic[$viewName_list]['###AUTOCHECKIN###']
= $this->setAutoCheckin($viewName_single,$this->fileContentStatic['###component###']);
// ###CHECKINCALL### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###CHECKINCALL###'] = $this->setCheckinCall();
$this->fileContentDynamic[$viewName_list]['###CHECKINCALL###']
= $this->setCheckinCall();
}
else
{
@ -423,19 +445,26 @@ class Infusion extends Interpretation
$this->fileContentDynamic[$viewName_list]['###CHECKINCALL###'] = '';
}
// ###ADMIN_CUSTOM_BUTTONS_LIST###
$this->fileContentDynamic[$viewName_list]['###ADMIN_CUSTOM_BUTTONS_LIST###'] = $this->setCustomButtons($view, 3, "\t");
$this->fileContentDynamic[$viewName_list]['###ADMIN_CUSTOM_BUTTONS_LIST###']
= $this->setCustomButtons($view, 3, "\t");
$this->fileContentDynamic[$viewName_list]['###ADMIN_CUSTOM_FUNCTION_ONLY_BUTTONS_LIST###']
= $this->setFunctionOnlyButtons($viewName_list);
// ###GET_ITEMS_METHOD_STRING_FIX### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###GET_ITEMS_METHOD_STRING_FIX###'] = $this->setGetItemsMethodStringFix($viewName_single,$this->fileContentStatic['###Component###']);
$this->fileContentDynamic[$viewName_list]['###GET_ITEMS_METHOD_STRING_FIX###']
= $this->setGetItemsMethodStringFix($viewName_single,$this->fileContentStatic['###Component###']);
// ###GET_ITEMS_METHOD_AFTER_ALL### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###GET_ITEMS_METHOD_AFTER_ALL###'] = $this->getCustomScriptBuilder('php_getitems_after_all', $viewName_single, PHP_EOL);
$this->fileContentDynamic[$viewName_list]['###GET_ITEMS_METHOD_AFTER_ALL###']
= $this->getCustomScriptBuilder('php_getitems_after_all', $viewName_single, PHP_EOL);
// ###SELECTIONTRANSLATIONFIX### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###SELECTIONTRANSLATIONFIX###'] = $this->setSelectionTranslationFix($viewName_list,$this->fileContentStatic['###Component###']);
$this->fileContentDynamic[$viewName_list]['###SELECTIONTRANSLATIONFIX###']
= $this->setSelectionTranslationFix($viewName_list,$this->fileContentStatic['###Component###']);
// ###SELECTIONTRANSLATIONFIXFUNC### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###SELECTIONTRANSLATIONFIXFUNC###'] = $this->setSelectionTranslationFixFunc($viewName_list,$this->fileContentStatic['###Component###']);
$this->fileContentDynamic[$viewName_list]['###SELECTIONTRANSLATIONFIXFUNC###']
= $this->setSelectionTranslationFixFunc($viewName_list,$this->fileContentStatic['###Component###']);
// ###FILTER_FIELDS### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###FILTER_FIELDS###'] = $this->setFilterFields($viewName_list);
@ -457,28 +486,34 @@ class Infusion extends Interpretation
{
$this->fileContentStatic['###ROUTER_CATEGORY_VIEWS###'] = '';
}
$this->fileContentStatic['###ROUTER_CATEGORY_VIEWS###'] .= $this->setRouterCategoryViews($viewName_single,$viewName_list);
$this->fileContentStatic['###ROUTER_CATEGORY_VIEWS###']
.= $this->setRouterCategoryViews($viewName_single,$viewName_list);
// ###OTHERFILTERS### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###OTHERFILTERS###'] = $this->setOtherFilter($viewName_list);
// ###FILTERFUNCTIONS### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###FILTERFUNCTIONS###'] = $this->setFilterFunctions($viewName_single,$viewName_list);
$this->fileContentDynamic[$viewName_list]['###FILTERFUNCTIONS###']
= $this->setFilterFunctions($viewName_single,$viewName_list);
// ###LISTQUERY### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###LISTQUERY###'] = $this->setListQuery($viewName_single,$viewName_list);
// ###MODELEXPORTMETHOD### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###MODELEXPORTMETHOD###'] = $this->setModelExportMethod($viewName_single, $viewName_list);
$this->fileContentDynamic[$viewName_list]['###MODELEXPORTMETHOD###']
= $this->setModelExportMethod($viewName_single, $viewName_list);
// ###MODELEXIMPORTMETHOD### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###CONTROLLEREXIMPORTMETHOD###'] = $this->setControllerEximportMethod($viewName_single, $viewName_list);
$this->fileContentDynamic[$viewName_list]['###CONTROLLEREXIMPORTMETHOD###']
= $this->setControllerEximportMethod($viewName_single, $viewName_list);
// ###EXPORTBUTTON### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###EXPORTBUTTON###'] = $this->setExportButton($viewName_single, $viewName_list);
$this->fileContentDynamic[$viewName_list]['###EXPORTBUTTON###']
= $this->setExportButton($viewName_single, $viewName_list);
// ###IMPORTBUTTON### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###IMPORTBUTTON###'] = $this->setImportButton($viewName_single, $viewName_list);
$this->fileContentDynamic[$viewName_list]['###IMPORTBUTTON###']
= $this->setImportButton($viewName_single, $viewName_list);
// ###LISTHEAD### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###LISTHEAD###'] = $this->setListHead($viewName_single,$viewName_list);
@ -490,9 +525,11 @@ class Infusion extends Interpretation
$this->fileContentDynamic[$viewName_list]['###LISTCOLNR###'] = $this->setListColnr($viewName_list);
// ###JVIEWLISTCANDO### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###JVIEWLISTCANDO###'] = $this->setJviewListCanDo($viewName_single,$viewName_list);
$this->fileContentDynamic[$viewName_list]['###JVIEWLISTCANDO###']
= $this->setJviewListCanDo($viewName_single,$viewName_list);
if (isset($this->customScriptBuilder['css_views'][$viewName_list]) && ComponentbuilderHelper::checkString($this->customScriptBuilder['css_views'][$viewName_list]))
if (isset($this->customScriptBuilder['css_views'][$viewName_list])
&& ComponentbuilderHelper::checkString($this->customScriptBuilder['css_views'][$viewName_list]))
{
// ###VIEWCSS### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###VIEWSCSS###']
@ -526,28 +563,36 @@ class Infusion extends Interpretation
$this->fileContentDynamic[$viewName_list]['###BATCH_ONCLICK_CANCEL_SCRIPT###'] = ''; // TODO <-- must still be build
// ###JCONTROLLERFORM_ALLOWADD### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###JCONTROLLERFORM_ALLOWADD###'] = $this->setJcontrollerAllowAdd($viewName_single,$viewName_list);
$this->fileContentDynamic[$viewName_single]['###JCONTROLLERFORM_ALLOWADD###']
= $this->setJcontrollerAllowAdd($viewName_single,$viewName_list);
// ###JCONTROLLERFORM_ALLOWEDIT### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###JCONTROLLERFORM_ALLOWEDIT###'] = $this->setJcontrollerAllowEdit($viewName_single,$viewName_list);
$this->fileContentDynamic[$viewName_single]['###JCONTROLLERFORM_ALLOWEDIT###']
= $this->setJcontrollerAllowEdit($viewName_single,$viewName_list);
// ###JMODELADMIN_GETFORM### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###JMODELADMIN_GETFORM###'] = $this->setJmodelAdminGetForm($viewName_single,$viewName_list);
$this->fileContentDynamic[$viewName_single]['###JMODELADMIN_GETFORM###']
= $this->setJmodelAdminGetForm($viewName_single,$viewName_list);
// ###JMODELADMIN_ALLOWEDIT### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###JMODELADMIN_ALLOWEDIT###'] = $this->setJmodelAdminAllowEdit($viewName_single,$viewName_list);
$this->fileContentDynamic[$viewName_single]['###JMODELADMIN_ALLOWEDIT###']
= $this->setJmodelAdminAllowEdit($viewName_single,$viewName_list);
// ###JMODELADMIN_CANDELETE### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###JMODELADMIN_CANDELETE###'] = $this->setJmodelAdminCanDelete($viewName_single,$viewName_list);
$this->fileContentDynamic[$viewName_single]['###JMODELADMIN_CANDELETE###']
= $this->setJmodelAdminCanDelete($viewName_single,$viewName_list);
// ###JMODELADMIN_CANEDITSTATE### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_single]['###JMODELADMIN_CANEDITSTATE###'] = $this->setJmodelAdminCanEditState($viewName_single,$viewName_list);
$this->fileContentDynamic[$viewName_single]['###JMODELADMIN_CANEDITSTATE###']
= $this->setJmodelAdminCanEditState($viewName_single,$viewName_list);
// set custom admin view Toolbare buttons
// ###CUSTOM_ADMIN_DYNAMIC_BUTTONS### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###CUSTOM_ADMIN_DYNAMIC_BUTTONS###'] = $this->setCustomAdminDynamicButton($viewName_list);
$this->fileContentDynamic[$viewName_list]['###CUSTOM_ADMIN_DYNAMIC_BUTTONS###']
= $this->setCustomAdminDynamicButton($viewName_list);
// ###CUSTOM_ADMIN_DYNAMIC_BUTTONS_CONTROLLER### <<<DYNAMIC>>>
$this->fileContentDynamic[$viewName_list]['###CUSTOM_ADMIN_DYNAMIC_BUTTONS_CONTROLLER###'] = $this->setCustomAdminDynamicButtonController($viewName_list);
$this->fileContentDynamic[$viewName_list]['###CUSTOM_ADMIN_DYNAMIC_BUTTONS_CONTROLLER###']
= $this->setCustomAdminDynamicButtonController($viewName_list);
// set helper router
if (!isset($this->fileContentStatic['###ROUTEHELPER###']))
@ -599,7 +644,8 @@ class Infusion extends Interpretation
}
if (!isset($this->langContent[$this->lang][$this->langPrefix.'_'.$view['settings']->CODE.'_DESC']))
{
$this->langContent[$this->lang][$this->langPrefix.'_'.$view['settings']->CODE.'_DESC'] = $view['settings']->description;
$this->langContent[$this->lang][$this->langPrefix.'_'.$view['settings']->CODE.'_DESC']
= $view['settings']->description;
}
// ###ICOMOON### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###ICOMOON###'] = $view['icomoon'];
@ -624,7 +670,8 @@ class Infusion extends Interpretation
if ($view['settings']->main_get->gettype == 1)
{
// check if there is any custom script
if (isset($this->customScriptBuilder[$this->target.'_php_before_getitem'][$view['settings']->code]) && ComponentbuilderHelper::checkString($this->customScriptBuilder[$this->target.'_php_before_getitem'][$view['settings']->code]))
if (isset($this->customScriptBuilder[$this->target.'_php_before_getitem'][$view['settings']->code])
&& ComponentbuilderHelper::checkString($this->customScriptBuilder[$this->target.'_php_before_getitem'][$view['settings']->code]))
{
// ###CUSTOM_ADMIN_BEFORE_GET_ITEM### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_BEFORE_GET_ITEM###']
@ -639,10 +686,12 @@ class Infusion extends Interpretation
}
// ###CUSTOM_ADMIN_GET_ITEM### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_GET_ITEM###'] = $this->setCustomViewGetItem($view['settings']->main_get, $view['settings']->code,"\t\t");
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_GET_ITEM###']
= $this->setCustomViewGetItem($view['settings']->main_get, $view['settings']->code,"\t\t");
// check if there is any custom script
if (isset($this->customScriptBuilder[$this->target.'_php_after_getitem'][$view['settings']->code]) && ComponentbuilderHelper::checkString($this->customScriptBuilder[$this->target.'_php_after_getitem'][$view['settings']->code]))
if (isset($this->customScriptBuilder[$this->target.'_php_after_getitem'][$view['settings']->code])
&& ComponentbuilderHelper::checkString($this->customScriptBuilder[$this->target.'_php_after_getitem'][$view['settings']->code]))
{
// ###CUSTOM_ADMIN_AFTER_GET_ITEM### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_AFTER_GET_ITEM###']
@ -659,10 +708,12 @@ class Infusion extends Interpretation
elseif ($view['settings']->main_get->gettype == 2)
{
// ###CUSTOM_ADMIN_GET_LIST_QUERY### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_GET_LIST_QUERY###'] = $this->setCustomViewListQuery($view['settings']->main_get, $view['settings']->code);
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_GET_LIST_QUERY###']
= $this->setCustomViewListQuery($view['settings']->main_get, $view['settings']->code);
// check if there is any custom script
if (isset($this->customScriptBuilder[$this->target.'_php_getlistquery'][$view['settings']->code]) && ComponentbuilderHelper::checkString($this->customScriptBuilder[$this->target.'_php_getlistquery'][$view['settings']->code]))
if (isset($this->customScriptBuilder[$this->target.'_php_getlistquery'][$view['settings']->code])
&& ComponentbuilderHelper::checkString($this->customScriptBuilder[$this->target.'_php_getlistquery'][$view['settings']->code]))
{
// ###CUSTOM_ADMIN_CUSTOM_BEFORE_LIST_QUERY### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_CUSTOM_BEFORE_LIST_QUERY###']
@ -677,7 +728,8 @@ class Infusion extends Interpretation
}
// check if there is any custom script
if (isset($this->customScriptBuilder[$this->target.'_php_before_getitems'][$view['settings']->code]) && ComponentbuilderHelper::checkString($this->customScriptBuilder[$this->target.'_php_before_getitems'][$view['settings']->code]))
if (isset($this->customScriptBuilder[$this->target.'_php_before_getitems'][$view['settings']->code])
&& ComponentbuilderHelper::checkString($this->customScriptBuilder[$this->target.'_php_before_getitems'][$view['settings']->code]))
{
// ###CUSTOM_ADMIN_BEFORE_GET_ITEMS### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_BEFORE_GET_ITEMS###']
@ -692,10 +744,12 @@ class Infusion extends Interpretation
}
// ###CUSTOM_ADMIN_GET_ITEMS### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_GET_ITEMS###'] = $this->setCustomViewGetItems($view['settings']->main_get, $view['settings']->code);
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_GET_ITEMS###']
= $this->setCustomViewGetItems($view['settings']->main_get, $view['settings']->code);
// check if there is any custom script
if (isset($this->customScriptBuilder[$this->target.'_php_after_getitems'][$view['settings']->code]) && ComponentbuilderHelper::checkString($this->customScriptBuilder[$this->target.'_php_after_getitems'][$view['settings']->code]))
if (isset($this->customScriptBuilder[$this->target.'_php_after_getitems'][$view['settings']->code])
&& ComponentbuilderHelper::checkString($this->customScriptBuilder[$this->target.'_php_after_getitems'][$view['settings']->code]))
{
// ###CUSTOM_ADMIN_AFTER_GET_ITEMS### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_AFTER_GET_ITEMS###']
@ -711,20 +765,25 @@ class Infusion extends Interpretation
}
// ###CUSTOM_ADMIN_CUSTOM_METHODS### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_CUSTOM_METHODS###'] = $this->setCustomViewCustomItemMethods($view['settings']->main_get, $view['settings']->code);
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_CUSTOM_METHODS###'] .= $this->setCustomViewCustomMethods($view, $view['settings']->code);
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_CUSTOM_METHODS###']
= $this->setCustomViewCustomItemMethods($view['settings']->main_get, $view['settings']->code);
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_CUSTOM_METHODS###']
.= $this->setCustomViewCustomMethods($view, $view['settings']->code);
// ###CUSTOM_ADMIN_DIPLAY_METHOD### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_DIPLAY_METHOD###'] = $this->setCustomViewDisplayMethod($view);
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_DIPLAY_METHOD###']
= $this->setCustomViewDisplayMethod($view);
// set document details
$this->setPrepareDocument($view);
// ###CUSTOM_ADMIN_EXTRA_DIPLAY_METHODS### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_EXTRA_DIPLAY_METHODS###'] = $this->setCustomViewExtraDisplayMethods($view);
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_EXTRA_DIPLAY_METHODS###']
= $this->setCustomViewExtraDisplayMethods($view);
// ###CUSTOM_ADMIN_CODE_BODY### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_CODE_BODY###'] = $this->setCustomViewCodeBody($view);
// ###CUSTOM_ADMIN_BODY### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_BODY###'] = $this->setCustomViewBody($view);
// ###CUSTOM_ADMIN_SUBMITBUTTON_SCRIPT### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_SUBMITBUTTON_SCRIPT###'] = $this->setCustomViewSubmitButtonScript($view);
$this->fileContentDynamic[$view['settings']->code]['###CUSTOM_ADMIN_SUBMITBUTTON_SCRIPT###']
= $this->setCustomViewSubmitButtonScript($view);
// setup the templates
$this->setCustomViewTemplateBody($view);
@ -760,6 +819,9 @@ class Infusion extends Interpretation
// ###UNINSTALL###
$this->fileContentStatic['###UNINSTALL###'] = $this->setUninstall();
// ###UPDATE_VERSION_MYSQL###
$this->setVersionController();
// ###DASHBOARDICONS###
$this->fileContentDynamic[$this->fileContentStatic['###component###']]['###DASHBOARDICONS###'] = $this->setDashboardIcons();
@ -881,7 +943,8 @@ class Infusion extends Interpretation
}
// insure the needed route helper is loaded
$this->fileContentStatic['###ROUTEHELPER###'] .= $this->setRouterHelp($view['settings']->code,$view['settings']->code, true);
$this->fileContentStatic['###ROUTEHELPER###']
.= $this->setRouterHelp($view['settings']->code,$view['settings']->code, true);
// build route details
$this->fileContentStatic['###ROUTER_PARSE_SWITCH###'] .= $this->routerParseSwitch($view['settings']->code, $view);
$this->fileContentStatic['###ROUTER_BUILD_VIEWS###'] .= $this->routerBuildViews($view['settings']->code);
@ -889,9 +952,11 @@ class Infusion extends Interpretation
if ($view['settings']->main_get->gettype == 1)
{
// set user permission access check ###USER_PERMISSION_CHECK_ACCESS### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###USER_PERMISSION_CHECK_ACCESS###'] = $this->setUserPermissionCheckAccess($view, 1);
$this->fileContentDynamic[$view['settings']->code]['###USER_PERMISSION_CHECK_ACCESS###']
= $this->setUserPermissionCheckAccess($view, 1);
// check if there is any custom script
if (isset($this->customScriptBuilder[$this->target.'_php_before_getitem'][$view['settings']->code]) && ComponentbuilderHelper::checkString($this->customScriptBuilder[$this->target.'_php_before_getitem'][$view['settings']->code]))
if (isset($this->customScriptBuilder[$this->target.'_php_before_getitem'][$view['settings']->code])
&& ComponentbuilderHelper::checkString($this->customScriptBuilder[$this->target.'_php_before_getitem'][$view['settings']->code]))
{
// ###SITE_BEFORE_GET_ITEM### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###SITE_BEFORE_GET_ITEM###']
@ -906,10 +971,12 @@ class Infusion extends Interpretation
}
// ###SITE_GET_ITEM### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###SITE_GET_ITEM###'] = $this->setCustomViewGetItem($view['settings']->main_get, $view['settings']->code,"\t\t");
$this->fileContentDynamic[$view['settings']->code]['###SITE_GET_ITEM###']
= $this->setCustomViewGetItem($view['settings']->main_get, $view['settings']->code,"\t\t");
// check if there is any custom script
if (isset($this->customScriptBuilder[$this->target.'_php_after_getitem'][$view['settings']->code]) && ComponentbuilderHelper::checkString($this->customScriptBuilder[$this->target.'_php_after_getitem'][$view['settings']->code]))
if (isset($this->customScriptBuilder[$this->target.'_php_after_getitem'][$view['settings']->code])
&& ComponentbuilderHelper::checkString($this->customScriptBuilder[$this->target.'_php_after_getitem'][$view['settings']->code]))
{
// ###SITE_AFTER_GET_ITEM### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###SITE_AFTER_GET_ITEM###']
@ -926,12 +993,15 @@ class Infusion extends Interpretation
elseif ($view['settings']->main_get->gettype == 2)
{
// set user permission access check ###USER_PERMISSION_CHECK_ACCESS### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###USER_PERMISSION_CHECK_ACCESS###'] = $this->setUserPermissionCheckAccess($view, 2);
$this->fileContentDynamic[$view['settings']->code]['###USER_PERMISSION_CHECK_ACCESS###']
= $this->setUserPermissionCheckAccess($view, 2);
// ###SITE_GET_LIST_QUERY### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###SITE_GET_LIST_QUERY###'] = $this->setCustomViewListQuery($view['settings']->main_get, $view['settings']->code);
$this->fileContentDynamic[$view['settings']->code]['###SITE_GET_LIST_QUERY###']
= $this->setCustomViewListQuery($view['settings']->main_get, $view['settings']->code);
// check if there is any custom script
if (isset($this->customScriptBuilder[$this->target.'_php_before_getitems'][$view['settings']->code]) && ComponentbuilderHelper::checkString($this->customScriptBuilder[$this->target.'_php_before_getitems'][$view['settings']->code]))
if (isset($this->customScriptBuilder[$this->target.'_php_before_getitems'][$view['settings']->code])
&& ComponentbuilderHelper::checkString($this->customScriptBuilder[$this->target.'_php_before_getitems'][$view['settings']->code]))
{
// ###SITE_BEFORE_GET_ITEMS### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###SITE_BEFORE_GET_ITEMS###']
@ -946,10 +1016,12 @@ class Infusion extends Interpretation
}
// ###SITE_GET_ITEMS### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###SITE_GET_ITEMS###'] = $this->setCustomViewGetItems($view['settings']->main_get, $view['settings']->code);
$this->fileContentDynamic[$view['settings']->code]['###SITE_GET_ITEMS###']
= $this->setCustomViewGetItems($view['settings']->main_get, $view['settings']->code);
// check if there is any custom script
if (isset($this->customScriptBuilder[$this->target.'_php_after_getitems'][$view['settings']->code]) && ComponentbuilderHelper::checkString($this->customScriptBuilder[$this->target.'_php_after_getitems'][$view['settings']->code]))
if (isset($this->customScriptBuilder[$this->target.'_php_after_getitems'][$view['settings']->code])
&& ComponentbuilderHelper::checkString($this->customScriptBuilder[$this->target.'_php_after_getitems'][$view['settings']->code]))
{
// ###SITE_AFTER_GET_ITEMS### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###SITE_AFTER_GET_ITEMS###']
@ -970,17 +1042,22 @@ class Infusion extends Interpretation
}
if (!isset($this->langContent['site'][$this->langPrefix.'_'.$view['settings']->CODE.'_DESC']))
{
$this->langContent['site'][$this->langPrefix.'_'.$view['settings']->CODE.'_DESC'] = $view['settings']->description;
$this->langContent['site'][$this->langPrefix.'_'.$view['settings']->CODE.'_DESC']
= $view['settings']->description;
}
// ###SITE_CUSTOM_METHODS### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###SITE_CUSTOM_METHODS###'] = $this->setCustomViewCustomItemMethods($view['settings']->main_get, $view['settings']->code);
$this->fileContentDynamic[$view['settings']->code]['###SITE_CUSTOM_METHODS###'] .= $this->setCustomViewCustomMethods($view, $view['settings']->code);
$this->fileContentDynamic[$view['settings']->code]['###SITE_CUSTOM_METHODS###']
= $this->setCustomViewCustomItemMethods($view['settings']->main_get, $view['settings']->code);
$this->fileContentDynamic[$view['settings']->code]['###SITE_CUSTOM_METHODS###']
.= $this->setCustomViewCustomMethods($view, $view['settings']->code);
// ###SITE_DIPLAY_METHOD### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###SITE_DIPLAY_METHOD###'] = $this->setCustomViewDisplayMethod($view);
$this->fileContentDynamic[$view['settings']->code]['###SITE_DIPLAY_METHOD###']
= $this->setCustomViewDisplayMethod($view);
// set document details
$this->setPrepareDocument($view);
// ###SITE_EXTRA_DIPLAY_METHODS### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###SITE_EXTRA_DIPLAY_METHODS###'] = $this->setCustomViewExtraDisplayMethods($view);
$this->fileContentDynamic[$view['settings']->code]['###SITE_EXTRA_DIPLAY_METHODS###']
= $this->setCustomViewExtraDisplayMethods($view);
// ###SITE_CODE_BODY### <<<DYNAMIC>>>
$this->fileContentDynamic[$view['settings']->code]['###SITE_CODE_BODY###'] = $this->setCustomViewCodeBody($view);
// ###SITE_BODY### <<<DYNAMIC>>>
@ -989,9 +1066,15 @@ class Infusion extends Interpretation
// setup the templates
$this->setCustomViewTemplateBody($view);
}
// if no default site view was set, the redirect to root
if (!isset($this->fileContentStatic['###SITE_DEFAULT_VIEW###']))
{
$this->fileContentStatic['###SITE_DEFAULT_VIEW###'] = '';
}
// set site custom script to helper class
// ###SITE_CUSTOM_HELPER_SCRIPT###
$this->fileContentStatic['###SITE_CUSTOM_HELPER_SCRIPT###'] = $this->setPlaceholders($this->customScriptBuilder['component_php_helper_site'], $this->placeholders);
$this->fileContentStatic['###SITE_CUSTOM_HELPER_SCRIPT###']
= $this->setPlaceholders($this->customScriptBuilder['component_php_helper_site'], $this->placeholders);
// ###SITE_GLOBAL_EVENT_HELPER###
$this->fileContentStatic['###SITE_GLOBAL_EVENT_HELPER###'] = '';
// ###SITE_GLOBAL_EVENT###
@ -1000,14 +1083,17 @@ class Infusion extends Interpretation
if ($this->componentData->add_site_event == 1)
{
$this->fileContentStatic['###SITE_GLOBAL_EVENT###'] = PHP_EOL.PHP_EOL.'// Triger the Global Site Event';
$this->fileContentStatic['###SITE_GLOBAL_EVENT###'] .= PHP_EOL.$this->fileContentStatic['###Component###'].'Helper::globalEvent($document);';
$this->fileContentStatic['###SITE_GLOBAL_EVENT###']
.= PHP_EOL.$this->fileContentStatic['###Component###'].'Helper::globalEvent($document);';
// ###SITE_GLOBAL_EVENT_HELPER###
$this->fileContentStatic['###SITE_GLOBAL_EVENT_HELPER###'] = PHP_EOL.PHP_EOL."\t".'/**';
$this->fileContentStatic['###SITE_GLOBAL_EVENT_HELPER###'] .= PHP_EOL."\t".'* The Global Site Event Method.';
$this->fileContentStatic['###SITE_GLOBAL_EVENT_HELPER###'] .= PHP_EOL."\t".'**/';
$this->fileContentStatic['###SITE_GLOBAL_EVENT_HELPER###'] .= PHP_EOL."\t".'public static function globalEvent($document)';
$this->fileContentStatic['###SITE_GLOBAL_EVENT_HELPER###']
.= PHP_EOL."\t".'public static function globalEvent($document)';
$this->fileContentStatic['###SITE_GLOBAL_EVENT_HELPER###'] .= PHP_EOL."\t".'{';
$this->fileContentStatic['###SITE_GLOBAL_EVENT_HELPER###'] .= PHP_EOL.$this->setPlaceholders($this->customScriptBuilder['component_php_site_event'], $this->placeholders);
$this->fileContentStatic['###SITE_GLOBAL_EVENT_HELPER###']
.= PHP_EOL.$this->setPlaceholders($this->customScriptBuilder['component_php_site_event'], $this->placeholders);
$this->fileContentStatic['###SITE_GLOBAL_EVENT_HELPER###'] .= PHP_EOL."\t".'}';
}
// setup the layouts
@ -1041,7 +1127,8 @@ class Infusion extends Interpretation
$this->fileContentStatic['###CONFIG_FIELDSETS###'] = implode(PHP_EOL,$this->configFieldSets);
// check if this has been set
if (!isset($this->fileContentStatic['###ROUTER_BUILD_VIEWS###']) || !ComponentbuilderHelper::checkString($this->fileContentStatic['###ROUTER_BUILD_VIEWS###']))
if (!isset($this->fileContentStatic['###ROUTER_BUILD_VIEWS###'])
|| !ComponentbuilderHelper::checkString($this->fileContentStatic['###ROUTER_BUILD_VIEWS###']))
{
$this->fileContentStatic['###ROUTER_BUILD_VIEWS###'] = 0;
}

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.4.3
@build 8th April, 2017
@version 2.5.6
@build 6th October, 2017
@created 30th April, 2015
@package Component Builder
@subpackage componentbuilder.php
@ -39,8 +39,34 @@ abstract class ComponentbuilderHelper
{
// the Session keeps track of all data related to the current session of this user
self::loadSession();
}
}
/**
* The global params
**/
protected static $params = false;
/*
* get all component IDs
*/
public static function getComponentIDs()
{
// Get a db connection.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id')));
$query->from($db->quoteName('#__componentbuilder_joomla_component'));
$query->where($db->quoteName('published') . ' >= 1'); // do not backup trash
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
return $db->loadColumn();
}
return false;
}
/*
* Autoloader
*/
@ -77,6 +103,72 @@ abstract class ComponentbuilderHelper
// load this for all
jimport('joomla.application');
}
/**
* Remove folders with files
*
* @param string $dir The path to folder to remove
* @param boolean $ignore The folders and files to ignore and not remove
*
* @return boolean True in all is removed
*
*/
public static function removeFolder($dir, $ignore = false)
{
if (JFolder::exists($dir))
{
$it = new RecursiveDirectoryIterator($dir);
$it = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST);
foreach ($it as $file)
{
if ('.' === $file->getBasename() || '..' === $file->getBasename()) continue;
if ($file->isDir())
{
$keeper = false;
if (self::checkArray($ignore))
{
foreach ($ignore as $keep)
{
if (strpos($file->getPathname(), $dir.'/'.$keep) !== false)
{
$keeper = true;
}
}
}
if ($keeper)
{
continue;
}
JFolder::delete($file->getPathname());
}
else
{
$keeper = false;
if (self::checkArray($ignore))
{
foreach ($ignore as $keep)
{
if (strpos($file->getPathname(), $dir.'/'.$keep) !== false)
{
$keeper = true;
}
}
}
if ($keeper)
{
continue;
}
JFile::delete($file->getPathname());
}
}
if (!self::checkArray($ignore))
{
return JFolder::delete($dir);
}
return true;
}
return false;
}
/**
* The dynamic builder of views, tables and fields
@ -130,83 +222,28 @@ abstract class ComponentbuilderHelper
}
return false;
}
/**
* Remove folders with files
*
* @param string $dir The path to folder to remove
* @param boolean $git if there is a git folder in that must not be removed
*
* @return boolean True in all is removed
*
*/
public static function removeFolder($dir, $git = false)
{
if (JFolder::exists($dir))
{
$it = new RecursiveDirectoryIterator($dir);
$it = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST);
foreach ($it as $file)
{
if ('.' === $file->getBasename() || '..' === $file->getBasename()) continue;
if ($file->isDir())
{
if ($git && strpos($file->getPathname(), $dir.'/.git') !== false) continue;
JFolder::delete($file->getPathname());
}
else
{
if ($git && strpos($file->getPathname(), $dir.'/.git') !== false) continue;
JFile::delete($file->getPathname());
}
}
if (!$git && JFolder::delete($dir))
{
return true;
}
}
return false;
}
/**
* Create file and write data to the file
**/
public static function writeFile($path, $data)
{
$klaar = false;
// open the file
$fh = fopen($path, "w");
if (!is_resource($fh))
{
return false;
return $klaar;
}
// write to the file
if (fwrite($fh, $data))
{
// close file.
fclose($fh);
return true;
// has been done
$klaar = true;
}
// close file.
fclose($fh);
return false;
}
/**
* The user notice info File Name
**/
protected static $usernotice = false;
public static function getFilePath($type, $name = 'listing', $key = '', $fileType = '.json', $PATH = JPATH_COMPONENT_SITE)
{
if (!self::checkString(self::${$type.$name}))
{
// Get local key
$localkey = self::getLocalKey();
// set the name
$fileName = md5($type.$name.$localkey.$key);
// set file path
self::${$type.$name} = $PATH.'/helpers/'.$fileName.$fileType;
}
// return the path
return self::${$type.$name};
return $klaar;
}
public static function getFieldOptions($value, $type, $settings = array())
@ -228,20 +265,18 @@ abstract class ComponentbuilderHelper
{
$result = $db->loadObject();
$properties = json_decode($result->properties,true);
$pointer = 0;
$field = array('values' => "<field ", 'values_description' => '<ul>', 'short_description' => $result->short_description, 'description' => $result->description);
foreach ($properties['name'] as $line)
foreach ($properties as $property)
{
$field['values_description'] .= '<li><b>'.$properties['name'][$pointer].'</b> '.$properties['description'][$pointer].'</li>';
if(isset($settings[$properties['name'][$pointer]]))
$field['values_description'] .= '<li><b>'.$property['name'].'</b> '.$property['description'].'</li>';
if(isset($settings[$property['name']]))
{
$field['values'] .= "\n\t".$properties['name'][$pointer].'="'.$settings[$properties['name'][$pointer]].'" ';
$field['values'] .= "\n\t".$property['name'].'="'.$settings[$property['name']].'" ';
}
else
{
$field['values'] .= "\n\t".$properties['name'][$pointer].'="'.$properties['example'][$pointer].'" ';
$field['values'] .= "\n\t".$property['name'].'="'.$property['example'].'" ';
}
$pointer++;
}
$field['values'] .= "\n/>";
$field['values_description'] .= '</ul>';
@ -1053,7 +1088,7 @@ abstract class ComponentbuilderHelper
$script['ext'][] = "\t * @return boolean True on success";
$script['ext'][] = "\t *";
$script['ext'][] = "\t */";
$script['ext'][] = "\tprotected function checkExtention(\$file)";
$script['ext'][] = "\tprotected function checkExtension(\$file)";
$script['ext'][] = "\t{";
$script['ext'][] = "\t\t// check the extention";
$script['ext'][] = "\t\tswitch(strtolower(pathinfo(\$file, PATHINFO_EXTENSION)))";
@ -1131,7 +1166,96 @@ abstract class ComponentbuilderHelper
}
return self::$localSession[$key];
}
/**
* check if it is a new hash
**/
public static function newHash($hash, $name = 'backup', $type = 'hash', $key = '', $fileType = 'txt')
{
// make sure we have a hash
if (self::checkString($hash))
{
// first get the file path
$path_filename = self::getFilePath('path', $name.$type, $fileType, $key, JPATH_COMPONENT_ADMINISTRATOR);
// set as read if not already set
if (($content = @file_get_contents($path_filename)) !== FALSE)
{
if ($hash == $content)
{
return false;
}
}
// set the hash
return self::writeFile($path_filename, $hash);
}
return false;
}
/**
* Get the file path or url
*
* @param string $type The (url/path) type to return
* @param string $target The Params Target name (if set)
* @param string $fileType The kind of filename to generate (if not set no file name is generated)
* @param string $key The key to adjust the filename (if not set ignored)
* @param string $default The default path if not set in Params (fallback path)
* @param bool $createIfNotSet The switch to create the folder if not found
*
* @return string On success the path or url is returned based on the type requested
*
*/
public static function getFilePath($type = 'path', $target = 'filepath', $fileType = null, $key = '', $default = JPATH_SITE . '/images/', $createIfNotSet = true)
{
// get the global settings
if (!self::checkObject(self::$params))
{
self::$params = JComponentHelper::getParams('com_componentbuilder');
}
$filePath = self::$params->get($target, $default);
// check the file path (revert to default only of not a hidden file path)
if ('hiddenfilepath' !== $target && strpos($filePath, JPATH_SITE) === false)
{
$filePath = JPATH_SITE . '/images/';
}
jimport('joomla.filesystem.folder');
// create the folder if it does not exist
if ($createIfNotSet && !JFolder::exists($filePath))
{
JFolder::create($filePath);
}
// setup the file name
$fileName = '';
if (self::checkString($fileType))
{
// Get basic key
$basickey = 'Th!s_iS_n0t_sAfe_buT_b3tter_then_n0thiug';
if (method_exists(get_called_class(), "getCryptKey"))
{
$basickey = self::getCryptKey('basic', $basickey);
}
// check the key
if (self::checkString($key))
{
$key = 'vDm';
}
// set the name
$fileName = trim(md5($type.$target.$basickey.$key) . '.' . trim($fileType, '.'));
}
// return the url
if ($type === 'url')
{
if (strpos($filePath, JPATH_SITE) !== false)
{
$filePath = trim( str_replace( JPATH_SITE, '', $filePath), '/');
return JURI::root() . $filePath . '/' . $fileName;
}
// since the path is behind the root folder of the site, return only the root url (may be used to build the link)
return JURI::root();
}
// sanitize the path
return '/' . trim( $filePath, '/' ) . '/' . $fileName;
}
/**
* Load the Component xml manifest.
**/
@ -1319,6 +1443,10 @@ abstract class ComponentbuilderHelper
{
JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_SUBMENU_LANGUAGES'), 'index.php?option=com_componentbuilder&view=languages', $submenu === 'languages');
}
if ($user->authorise('ftp.access', 'com_componentbuilder') && $user->authorise('ftp.submenu', 'com_componentbuilder'))
{
JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_SUBMENU_FTPS'), 'index.php?option=com_componentbuilder&view=ftps', $submenu === 'ftps');
}
if ($user->authorise('help_document.access', 'com_componentbuilder') && $user->authorise('help_document.submenu', 'com_componentbuilder'))
{
JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_SUBMENU_HELP_DOCUMENTS'), 'index.php?option=com_componentbuilder&view=help_documents', $submenu === 'help_documents');
@ -1670,7 +1798,14 @@ abstract class ComponentbuilderHelper
$query = $db->getQuery(true);
$query->select($db->quoteName(array($what)));
$query->from($db->quoteName('#_'.$main.'_'.$table));
if (empty($table))
{
$query->from($db->quoteName('#__'.$main));
}
else
{
$query->from($db->quoteName('#_'.$main.'_'.$table));
}
$query->where($db->quoteName($whereString) . ' '.$operator.' (' . implode(',',$where) . ')');
$db->setQuery($query);
$db->execute();
@ -1953,12 +2088,20 @@ abstract class ComponentbuilderHelper
**/
public static function getModel($name, $path = JPATH_COMPONENT_ADMINISTRATOR, $component = 'componentbuilder')
{
// load some joomla helpers
JLoader::import('joomla.application.component.model');
// load the model file
JLoader::import( $name, $path . '/models' );
// return instance
return JModelLegacy::getInstance( $name, $component.'Model' );
JModelLegacy::addIncludePath( $path . '/models' );
// get instance
$model = JModelLegacy::getInstance( $name, $component.'Model' );
// if model not found
if ($model == false)
{
// build class name
$class = $prefix.$name;
// initilize the model
new $class();
$model = JModelLegacy::getInstance($name, $prefix);
}
return $model;
}
/**
@ -2165,10 +2308,16 @@ abstract class ComponentbuilderHelper
return false;
}
// typo sorry!
public static function sorten($string, $length = 40, $addTip = true)
{
return self::shorten($string, $length, $addTip);
}
public static function shorten($string, $length = 40, $addTip = true)
{
if (self::checkString($string))
{
{
$initial = strlen($string);
$words = preg_split('/([\s\n\r]+)/', $string, null, PREG_SPLIT_DELIM_CAPTURE);
$words_count = count($words);
@ -2188,7 +2337,7 @@ abstract class ComponentbuilderHelper
$final = strlen($newString);
if ($initial != $final && $addTip)
{
$title = self::sorten($string, 400 , false);
$title = self::shorten($string, 400 , false);
return '<span class="hasTip" title="'.$title.'" style="cursor:help">'.trim($newString).'...</span>';
}
elseif ($initial != $final && !$addTip)
@ -2219,7 +2368,8 @@ abstract class ComponentbuilderHelper
// If you don't need to handle multi-byte characters
// you can use preg_replace rather than mb_ereg_replace
// Thanks @Łukasz Rysiak!
$string = mb_ereg_replace("([^\w\s\d\-_\(\)])", '', $string);
// $string = mb_ereg_replace("([^\w\s\d\-_\(\)])", '', $string);
$string = preg_replace("([^\w\s\d\-_\(\)])", '', $string);
// http://stackoverflow.com/a/2021729/1429677
return preg_replace('/\s+/', ' ', $string);
}
@ -2286,15 +2436,15 @@ abstract class ComponentbuilderHelper
return '';
}
public static function htmlEscape($var, $charset = 'UTF-8', $sorten = false, $length = 40)
public static function htmlEscape($var, $charset = 'UTF-8', $shorten = false, $length = 40)
{
if (self::checkString($var))
{
$filter = new JFilterInput();
$string = $filter->clean(html_entity_decode(htmlentities($var, ENT_COMPAT, $charset)), 'HTML');
if ($sorten)
if ($shorten)
{
return self::sorten($string,$length);
return self::shorten($string,$length);
}
return $string;
}

View File

@ -0,0 +1,348 @@
<?php
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.5.6
@build 6th October, 2017
@created 30th April, 2015
@package Component Builder
@subpackage componentbuilderemail.php
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
/**
* Componentbuilder component email helper
*/
abstract class ComponentbuilderEmail
{
/**
* Configuraiton object
*
* @var JConfig
*/
public static $config = null;
/**
* Mailer object
*
* @var JMail
*/
public static $mailer = null;
/**
* Get a configuration object
*
*/
public static function getConfig()
{
if (!self::$config)
{
self::$config = JComponentHelper::getParams('com_componentbuilder');
}
return self::$config;
}
/**
* Get a mailer object.
*
* Returns the global {@link JMail} object, only creating it if it doesn't already exist.
*
* @return JMail object
*
* @see JMail
*/
public static function getMailer()
{
if (!self::$mailer)
{
self::$mailer = self::createMailer();
}
$copy = clone self::$mailer;
return $copy;
}
/**
* Create a mailer object
*
* @return JMail object
*
* @see JMail
*/
protected static function createMailer()
{
// set component params
$conf = self::getConfig();
// now load the mailer
$mailer = $conf->get('mailer', 'global');
// Create a JMail object
$mail = JMail::getInstance();
// check if set to global
if ('global' == $mailer)
{
// get the global details
$globalConf = JFactory::getConfig();
$mailer = $globalConf->get('mailer');
$smtpauth = ($globalConf->get('smtpauth') == 0) ? null : 1;
$smtpuser = $globalConf->get('smtpuser');
$smtppass = $globalConf->get('smtppass');
$smtphost = $globalConf->get('smtphost');
$smtpsecure = $globalConf->get('smtpsecure');
$smtpport = $globalConf->get('smtpport');
$sendmail = $globalConf->get('sendmail');
$mailfrom = $globalConf->get('mailfrom');
$fromname = $globalConf->get('fromname');
$replyto = $globalConf->get('replyto');
$replytoname = $globalConf->get('replytoname');
}
else
{
$smtpauth = ($conf->get('smtpauth') == 0) ? null : 1;
$smtpuser = $conf->get('smtpuser');
$smtppass = $conf->get('smtppass');
$smtphost = $conf->get('smtphost');
$smtpsecure = $conf->get('smtpsecure');
$smtpport = $conf->get('smtpport');
$sendmail = $conf->get('sendmail');
$mailfrom = $conf->get('mailfrom');
$fromname = $conf->get('fromname');
$replyto = $conf->get('replyto');
$replytoname = $conf->get('replytoname');
}
// set the global reply-to if found
if ($replyto && $replytoname)
{
$mail->ClearReplyTos();
$mail->addReplyTo( array( $replyto, $replytoname ) );
}
// Set global sender
$mail->setSender(array($mailfrom, $fromname));
// Default mailer is to use PHP's mail function
switch ($mailer)
{
case 'smtp':
// set the SMTP option
$mail->useSMTP($smtpauth, $smtphost, $smtpuser, $smtppass, $smtpsecure, $smtpport);
break;
case 'sendmail':
// set the sendmail option
$mail->useSendmail($sendmail);
$mail->IsSendmail();
break;
default:
$mail->IsMail();
break;
}
return $mail;
}
/**
* Send an email
*
* @return bool on success
*
*/
public static function send($recipient, $subject, $body, $textonly, $mode = 0, $bounce_email = null, $idsession = null, $mailreply = null, $replyname = null , $mailfrom = null, $fromname = null, $cc = null, $bcc = null, $attachment = null, $embeded = null , $embeds = null)
{
// Get a JMail instance
$mail = self::getMailer();
// set component params
$conf = self::getConfig();
// do some house cleaning
$mail->ClearReplyTos();
// set if we have override
if ($mailfrom && $fromname)
{
$mail->setSender(array($mailfrom, $fromname));
}
// load the bounce email as sender if set
if (!is_null($bounce_email))
{
$mail->Sender = $bounce_email;
}
// Add tag to email to identify it
if (!is_null($idsession))
{
$mail->addCustomHeader('X-VDMmethodID:'.$idsession);
}
// set the subject & Body
$mail->setSubject($subject);
$mail->setBody($body);
// Are we sending the email as HTML?
if ($mode)
{
$mail->IsHTML(true);
$mail->AltBody = $textonly;
}
//embed images
if ($embeded)
{
if(ComponentbuilderHelper::checkArray($embeds))
{
foreach($embeds as $embed)
{
$mail->AddEmbeddedImage($embed->Path,$embed->FileName);
}
}
}
$mail->addRecipient($recipient);
$mail->addCC($cc);
$mail->addBCC($bcc);
$mail->addAttachment($attachment);
// Take care of reply email addresses
if (is_array($mailreply))
{
$mail->ClearReplyTos();
$numReplyTo = count($mailreply);
for ($i=0; $i < $numReplyTo; $i++)
{
$mail->addReplyTo($mailreply[$i], $replyname[$i]);
}
}
elseif (!empty($mailreply))
{
$mail->ClearReplyTos();
$mail->addReplyTo($mailreply, $replyname);
}
// check if we can add the DKIM to email
if ($conf->get('enable_dkim'))
{
if (!empty($conf->get('dkim_domain')) && !empty($conf->get('dkim_selector')) && !empty($conf->get('dkim_private')) && !empty($conf->get('dkim_public')))
{
$mail->DKIM_domain = $conf->get('dkim_domain');
$mail->DKIM_selector = $conf->get('dkim_selector');
$mail->DKIM_identity = $conf->get('dkim_identity');
$mail->DKIM_passphrase = $conf->get('dkim_passphrase');
$tmp = tempnam(sys_get_temp_dir(), 'VDM');
$h = fopen($tmp, 'w');
fwrite($h, $conf->get('dkim_private'));
fclose($h);
$mail->DKIM_private = $tmp;
}
}
$sendmail = $mail->Send();
if ($conf->get('enable_dkim') && !empty($conf->get('dkim_domain')) && !empty($conf->get('dkim_selector')) && !empty($conf->get('dkim_private')) && !empty($conf->get('dkim_public')))
{
@unlink($tmp);
}
if (method_exists('ComponentbuilderHelper','storeMessage'))
{
// store the massage if the method is set
ComponentbuilderHelper::storeMessage($sendmail, $recipient, $subject, $body, $textonly, $mode, 'email');
}
return $sendmail;
}
/**
* Set html text (in a row) and subject (as title) to a email table.
* do not use <p> instead use <br />
* in your html that you pass to this method
* since it is a table row it does not
* work well with paragraphs
*
* @return string on success
*
*/
public static function setTableBody($html, $subject)
{
$body = array();
$body[] = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">";
$body[] = "<html xmlns=\"http://www.w3.org/1999/xhtml\">";
$body[] = "<head>";
$body[] = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />";
$body[] = "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>";
$body[] = "<title>".$subject."</title>";
$body[] = "<style type=\"text/css\">";
$body[] = "#outlook a {padding:0;}";
$body[] = ".ExternalClass {width:100%;}";
$body[] = ".ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} ";
$body[] = "p {margin: 0; padding: 0; font-size: 0px; line-height: 0px;} ";
$body[] = "table td {border-collapse: collapse;}";
$body[] = "table {border-collapse: collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }";
$body[] = "img {display: block; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic;}";
$body[] = "a img {border: none;}";
$body[] = "a {text-decoration: none; color: #000001;}";
$body[] = "a.phone {text-decoration: none; color: #000001 !important; pointer-events: auto; cursor: default;}";
$body[] = "span {font-size: 13px; line-height: 17px; font-family: monospace; color: #000001;}";
$body[] = "</style>";
$body[] = "<!--[if gte mso 9]>";
$body[] = "<style>";
$body[] = "/* Target Outlook 2007 and 2010 */";
$body[] = "</style>";
$body[] = "<![endif]-->";
$body[] = "</head>";
$body[] = "<body style=\"width:100%; margin:0; padding:0; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;\">";
$body[] = "\n<!-- body wrapper -->";
$body[] = "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"margin:0; padding:0; width:100%; line-height: 100% !important;\">";
$body[] = "<tr>";
$body[] = "<td valign=\"top\">";
$body[] = "<!-- edge wrapper -->";
$body[] = "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align=\"center\" width=\"800\" >";
$body[] = "<tr>";
$body[] = "<td valign=\"top\">";
$body[] = "<!-- content wrapper -->";
$body[] = "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align=\"center\" width=\"780\">";
$body[] = "<tr>";
$body[] = "<td valign=\"top\" style=\"vertical-align: top;\">";
$body[] = $html;
$body[] = "</td>";
$body[] = "</tr>";
$body[] = "</table>";
$body[] = "<!-- / content wrapper -->";
$body[] = "</td>";
$body[] = "</tr>";
$body[] = "</table>";
$body[] = "<!-- / edge wrapper -->";
$body[] = "</td>";
$body[] = "</tr>";
$body[] = "</table>";
$body[] = "<!-- / page wrapper -->";
$body[] = "</body>";
$body[] = "</html>";
return implode("\n", $body);
}
}

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.4.3
@build 8th April, 2017
@version 2.5.6
@build 6th October, 2017
@created 30th April, 2015
@package Component Builder
@subpackage headercheck.php
@ -26,7 +26,7 @@
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
class HeaderCheck
class componentbuilderHeaderCheck
{
function js_loaded($script_name)
{

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.4.3
@build 8th April, 2017
@version 2.5.6
@build 6th October, 2017
@created 30th April, 2015
@package Component Builder
@subpackage batch_.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.4.3
@build 8th April, 2017
@version 2.5.6
@build 6th October, 2017
@created 30th April, 2015
@package Component Builder
@subpackage indenter.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.4.3
@build 8th April, 2017
@version 2.5.6
@build 6th October, 2017
@created 30th April, 2015
@package Component Builder
@subpackage js.php

View File

@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.4.3
@build 8th April, 2017
@version 2.5.6
@build 6th October, 2017
@created 30th April, 2015
@package Component Builder
@subpackage minify.php

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More