Compare commits
44 Commits
Author | SHA1 | Date | |
---|---|---|---|
cb355feaf4 | |||
9b1f111251 | |||
4cead46ac4 | |||
25c632065a | |||
ea1edebc05 | |||
498c75dfcf | |||
f39a877db2 | |||
7afbb131ce | |||
6bba258fec | |||
1cf259a54d | |||
d113d7b91b | |||
2f90f9359c | |||
b1d9b672ab | |||
d9b2e51f8c | |||
2caaa1a1e3 | |||
1b3cb2bfdd | |||
5a6ef33c5b | |||
7eb5a2473c | |||
34d14ed95d | |||
d31b0b6c0c | |||
f3f91f492f | |||
bd0febd92c | |||
b294af2e7d | |||
82fd08cf57 | |||
5dc3f97f15 | |||
cca07258d6 | |||
f61bb46073 | |||
8b522f44d9 | |||
63b1bac955 | |||
3c610acb31 | |||
cfd9b33b30 | |||
952d26f1f8 | |||
b0ad2ddffc | |||
7534aed01d | |||
28198e9b9e | |||
3953df845c | |||
30e37dcfde | |||
bc9e5495d7 | |||
4d47f8292f | |||
a1ff74f157 | |||
dc1217e6d1 | |||
f2e4df6ecb | |||
a197f503a9 | |||
79ab3164a6 |
27
README.md
27
README.md
@ -1,4 +1,4 @@
|
||||
# Component Builder (2.3.4)
|
||||
# Component Builder (2.4.6)
|
||||
|
||||
This is a [Joomla 3.x](http://www.joomla.org/) component.
|
||||
|
||||
@ -8,7 +8,7 @@ The Component Builder for [Joomla](http://www.joomla.org/) that is highly advanc
|
||||
|
||||
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!
|
||||
|
||||
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.3.4) 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.4.6) with **ALL** its features and **ALL** concepts totally open-source and free!
|
||||
|
||||
Once installed upgrades are quick and easy via the default Joomla upgrade area.
|
||||
|
||||
@ -70,16 +70,19 @@ Once installed upgrades are quick and easy via the default Joomla upgrade area.
|
||||
+ You can dynamically add internal help structures to all component.
|
||||
+ There is no limitations on how big or how much you want to build (server limitation only).
|
||||
+ This is a complete factory kind of component that functions like a deployment hub.
|
||||
+ Export any component completely mapped in JCB and import into another JCB.
|
||||
+ This and much much more are all possible with this component builder!
|
||||
|
||||
# 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)
|
||||
|
||||
@ -104,13 +107,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*: 13th February, 2017
|
||||
+ *Version*: 2.3.4
|
||||
+ *Last Build*: 20th May, 2017
|
||||
+ *Version*: 2.4.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*: **91942**
|
||||
+ *File count*: **594**
|
||||
+ *Folder count*: **105**
|
||||
+ *Line count*: **106004**
|
||||
+ *File count*: **643**
|
||||
+ *Folder count*: **115**
|
||||
|
||||
> 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)
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Component Builder (2.3.4)
|
||||
# Component Builder (2.4.6)
|
||||
|
||||
This is a [Joomla 3.x](http://www.joomla.org/) component.
|
||||
|
||||
@ -8,7 +8,7 @@ The Component Builder for [Joomla](http://www.joomla.org/) that is highly advanc
|
||||
|
||||
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!
|
||||
|
||||
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.3.4) 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.4.6) with **ALL** its features and **ALL** concepts totally open-source and free!
|
||||
|
||||
Once installed upgrades are quick and easy via the default Joomla upgrade area.
|
||||
|
||||
@ -70,16 +70,19 @@ Once installed upgrades are quick and easy via the default Joomla upgrade area.
|
||||
+ You can dynamically add internal help structures to all component.
|
||||
+ There is no limitations on how big or how much you want to build (server limitation only).
|
||||
+ This is a complete factory kind of component that functions like a deployment hub.
|
||||
+ Export any component completely mapped in JCB and import into another JCB.
|
||||
+ This and much much more are all possible with this component builder!
|
||||
|
||||
# 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)
|
||||
|
||||
@ -104,13 +107,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*: 13th February, 2017
|
||||
+ *Version*: 2.3.4
|
||||
+ *Last Build*: 20th May, 2017
|
||||
+ *Version*: 2.4.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*: **91942**
|
||||
+ *File count*: **594**
|
||||
+ *Folder count*: **105**
|
||||
+ *Line count*: **106004**
|
||||
+ *File count*: **643**
|
||||
+ *Folder count*: **115**
|
||||
|
||||
> 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)
|
||||
|
@ -101,6 +101,41 @@
|
||||
<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.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_license" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_LICENSE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_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.version" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION_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" />
|
||||
<action name="language_translation.access" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_ACCESS" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_ACCESS_DESC" />
|
||||
<action name="language_translation.batch" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_BATCH_USE" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_BATCH_USE_DESC" />
|
||||
<action name="language_translation.create" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_CREATE" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_CREATE_DESC" />
|
||||
<action name="language_translation.dashboard_list" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_DASHBOARD_LIST_DESC" />
|
||||
<action name="language_translation.delete" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_DELETE" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_DELETE_DESC" />
|
||||
<action name="language_translation.edit" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_DESC" />
|
||||
<action name="language_translation.edit.own" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_OWN" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_OWN_DESC" />
|
||||
<action name="language_translation.edit.state" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_STATE" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_STATE_DESC" />
|
||||
<action name="language_translation.version" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_VERSION" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_VERSION_DESC" />
|
||||
<action name="language_translation.export" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EXPORT" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EXPORT_DESC" />
|
||||
<action name="language_translation.import" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_IMPORT" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_IMPORT_DESC" />
|
||||
<action name="language_translation.submenu" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_SUBMENU" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_SUBMENU_DESC" />
|
||||
<action name="language.access" title="COM_COMPONENTBUILDER_LANGUAGES_ACCESS" description="COM_COMPONENTBUILDER_LANGUAGES_ACCESS_DESC" />
|
||||
<action name="language.batch" title="COM_COMPONENTBUILDER_LANGUAGES_BATCH_USE" description="COM_COMPONENTBUILDER_LANGUAGES_BATCH_USE_DESC" />
|
||||
<action name="language.create" title="COM_COMPONENTBUILDER_LANGUAGES_CREATE" description="COM_COMPONENTBUILDER_LANGUAGES_CREATE_DESC" />
|
||||
<action name="language.delete" title="COM_COMPONENTBUILDER_LANGUAGES_DELETE" description="COM_COMPONENTBUILDER_LANGUAGES_DELETE_DESC" />
|
||||
<action name="language.edit" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_DESC" />
|
||||
<action name="language.edit.own" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT_OWN" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_OWN_DESC" />
|
||||
<action name="language.edit.state" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT_STATE" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_STATE_DESC" />
|
||||
<action name="language.version" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT_VERSION" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_VERSION_DESC" />
|
||||
<action name="language.export" title="COM_COMPONENTBUILDER_LANGUAGES_EXPORT" description="COM_COMPONENTBUILDER_LANGUAGES_EXPORT_DESC" />
|
||||
<action name="language.import" title="COM_COMPONENTBUILDER_LANGUAGES_IMPORT" description="COM_COMPONENTBUILDER_LANGUAGES_IMPORT_DESC" />
|
||||
<action name="language.submenu" title="COM_COMPONENTBUILDER_LANGUAGES_SUBMENU" description="COM_COMPONENTBUILDER_LANGUAGES_SUBMENU_DESC" />
|
||||
<action name="layout.access" title="COM_COMPONENTBUILDER_LAYOUTS_ACCESS" description="COM_COMPONENTBUILDER_LAYOUTS_ACCESS_DESC" />
|
||||
<action name="layout.batch" title="COM_COMPONENTBUILDER_LAYOUTS_BATCH_USE" description="COM_COMPONENTBUILDER_LAYOUTS_BATCH_USE_DESC" />
|
||||
<action name="layout.dashboard_add" title="COM_COMPONENTBUILDER_LAYOUTS_DASHBOARD_ADD" description="COM_COMPONENTBUILDER_LAYOUTS_DASHBOARD_ADD_DESC" />
|
||||
@ -134,6 +169,11 @@
|
||||
<action name="template.import" title="COM_COMPONENTBUILDER_TEMPLATES_IMPORT" description="COM_COMPONENTBUILDER_TEMPLATES_IMPORT_DESC" />
|
||||
<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.add_license" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_LICENSE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_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.version" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION_DESC" />
|
||||
</section>
|
||||
<section name="admin_view">
|
||||
<action name="core.edit" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_DESC" />
|
||||
<action name="core.edit.state" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_STATE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_STATE_DESC" />
|
||||
@ -226,6 +266,24 @@
|
||||
<action name="fieldtype.access" title="COM_COMPONENTBUILDER_FIELDTYPES_ACCESS" description="COM_COMPONENTBUILDER_FIELDTYPES_ACCESS_DESC" />
|
||||
<action name="fieldtype.version" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_VERSION" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_VERSION_DESC" />
|
||||
</section>
|
||||
<section name="language_translation">
|
||||
<action name="language_translation.edit" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_DESC" />
|
||||
<action name="language_translation.edit.own" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_OWN" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_OWN_DESC" />
|
||||
<action name="language_translation.edit.state" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_STATE" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_STATE_DESC" />
|
||||
<action name="language_translation.create" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_CREATE" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_CREATE_DESC" />
|
||||
<action name="language_translation.delete" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_DELETE" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_DELETE_DESC" />
|
||||
<action name="language_translation.access" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_ACCESS" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_ACCESS_DESC" />
|
||||
<action name="language_translation.version" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_VERSION" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_VERSION_DESC" />
|
||||
</section>
|
||||
<section name="language">
|
||||
<action name="language.edit" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_DESC" />
|
||||
<action name="language.edit.own" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT_OWN" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_OWN_DESC" />
|
||||
<action name="language.edit.state" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT_STATE" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_STATE_DESC" />
|
||||
<action name="language.create" title="COM_COMPONENTBUILDER_LANGUAGES_CREATE" description="COM_COMPONENTBUILDER_LANGUAGES_CREATE_DESC" />
|
||||
<action name="language.delete" title="COM_COMPONENTBUILDER_LANGUAGES_DELETE" description="COM_COMPONENTBUILDER_LANGUAGES_DELETE_DESC" />
|
||||
<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="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" />
|
||||
|
@ -9,8 +9,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage admin.css
|
||||
|
@ -9,8 +9,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 95 of this MVC
|
||||
@build 3rd February, 2017
|
||||
@version @update number 111 of this MVC
|
||||
@build 7th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage admin_view.css
|
||||
|
@ -9,8 +9,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 95 of this MVC
|
||||
@build 3rd February, 2017
|
||||
@version @update number 111 of this MVC
|
||||
@build 7th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage admin_views.css
|
||||
|
@ -9,8 +9,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 17 of this MVC
|
||||
@build 13th February, 2017
|
||||
@version @update number 48 of this MVC
|
||||
@build 25th April, 2017
|
||||
@created 1st February, 2017
|
||||
@package Component Builder
|
||||
@subpackage compiler.css
|
||||
|
@ -10,7 +10,7 @@
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 22 of this MVC
|
||||
@build 3rd February, 2017
|
||||
@build 1st March, 2017
|
||||
@created 13th August, 2015
|
||||
@package Component Builder
|
||||
@subpackage custom_admin_view.css
|
||||
|
@ -10,7 +10,7 @@
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 22 of this MVC
|
||||
@build 3rd February, 2017
|
||||
@build 1st March, 2017
|
||||
@created 13th August, 2015
|
||||
@package Component Builder
|
||||
@subpackage custom_admin_views.css
|
||||
|
@ -9,8 +9,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 55 of this MVC
|
||||
@build 13th February, 2017
|
||||
@version @update number 82 of this MVC
|
||||
@build 25th April, 2017
|
||||
@created 11th October, 2016
|
||||
@package Component Builder
|
||||
@subpackage custom_code.css
|
||||
|
@ -9,8 +9,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 55 of this MVC
|
||||
@build 13th February, 2017
|
||||
@version @update number 82 of this MVC
|
||||
@build 25th April, 2017
|
||||
@created 11th October, 2016
|
||||
@package Component Builder
|
||||
@subpackage custom_codes.css
|
||||
|
@ -9,8 +9,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage dashboard.css
|
||||
|
@ -9,8 +9,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 81 of this MVC
|
||||
@build 15th January, 2017
|
||||
@version @update number 84 of this MVC
|
||||
@build 4th May, 2017
|
||||
@created 21st May, 2015
|
||||
@package Component Builder
|
||||
@subpackage dynamic_get.css
|
||||
|
@ -9,8 +9,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 81 of this MVC
|
||||
@build 15th January, 2017
|
||||
@version @update number 84 of this MVC
|
||||
@build 4th May, 2017
|
||||
@created 21st May, 2015
|
||||
@package Component Builder
|
||||
@subpackage dynamic_gets.css
|
||||
|
@ -9,11 +9,11 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 81 of this MVC
|
||||
@build 13th February, 2017
|
||||
@version @update number 338 of this MVC
|
||||
@build 20th May, 2017
|
||||
@created 6th May, 2015
|
||||
@package Component Builder
|
||||
@subpackage component.css
|
||||
@subpackage joomla_component.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
|
@ -9,11 +9,11 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 81 of this MVC
|
||||
@build 13th February, 2017
|
||||
@version @update number 338 of this MVC
|
||||
@build 20th May, 2017
|
||||
@created 6th May, 2015
|
||||
@package Component Builder
|
||||
@subpackage components.css
|
||||
@subpackage joomla_components.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
|
27
admin/assets/css/language.css
Normal file
27
admin/assets/css/language.css
Normal file
@ -0,0 +1,27 @@
|
||||
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
|
||||
__ __ _ _____ _ _ __ __ _ _ _
|
||||
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
|
||||
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
|
||||
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
|
||||
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
|
||||
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
|
||||
| |
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 3 of this MVC
|
||||
@build 3rd April, 2017
|
||||
@created 3rd April, 2017
|
||||
@package Component Builder
|
||||
@subpackage language.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/language_translation.css
Normal file
27
admin/assets/css/language_translation.css
Normal file
@ -0,0 +1,27 @@
|
||||
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
|
||||
__ __ _ _____ _ _ __ __ _ _ _
|
||||
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
|
||||
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
|
||||
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
|
||||
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
|
||||
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
|
||||
| |
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 39 of this MVC
|
||||
@build 7th April, 2017
|
||||
@created 3rd April, 2017
|
||||
@package Component Builder
|
||||
@subpackage language_translation.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/language_translations.css
Normal file
27
admin/assets/css/language_translations.css
Normal file
@ -0,0 +1,27 @@
|
||||
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
|
||||
__ __ _ _____ _ _ __ __ _ _ _
|
||||
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
|
||||
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
|
||||
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
|
||||
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
|
||||
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
|
||||
| |
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 39 of this MVC
|
||||
@build 7th April, 2017
|
||||
@created 3rd April, 2017
|
||||
@package Component Builder
|
||||
@subpackage language_translations.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/languages.css
Normal file
27
admin/assets/css/languages.css
Normal file
@ -0,0 +1,27 @@
|
||||
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
|
||||
__ __ _ _____ _ _ __ __ _ _ _
|
||||
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
|
||||
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
|
||||
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
|
||||
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
|
||||
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
|
||||
| |
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 3 of this MVC
|
||||
@build 3rd April, 2017
|
||||
@created 3rd April, 2017
|
||||
@package Component Builder
|
||||
@subpackage languages.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 */
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 67 of this MVC
|
||||
@build 11th February, 2017
|
||||
@build 1st April, 2017
|
||||
@created 18th May, 2015
|
||||
@package Component Builder
|
||||
@subpackage layout.css
|
||||
|
@ -10,7 +10,7 @@
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 67 of this MVC
|
||||
@build 11th February, 2017
|
||||
@build 1st April, 2017
|
||||
@created 18th May, 2015
|
||||
@package Component Builder
|
||||
@subpackage layouts.css
|
||||
|
@ -9,8 +9,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 48 of this MVC
|
||||
@build 3rd February, 2017
|
||||
@version @update number 51 of this MVC
|
||||
@build 6th March, 2017
|
||||
@created 29th May, 2015
|
||||
@package Component Builder
|
||||
@subpackage site_view.css
|
||||
|
@ -9,8 +9,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 48 of this MVC
|
||||
@build 3rd February, 2017
|
||||
@version @update number 51 of this MVC
|
||||
@build 6th March, 2017
|
||||
@created 29th May, 2015
|
||||
@package Component Builder
|
||||
@subpackage site_views.css
|
||||
|
@ -10,7 +10,7 @@
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 40 of this MVC
|
||||
@build 3rd February, 2017
|
||||
@build 1st April, 2017
|
||||
@created 26th May, 2015
|
||||
@package Component Builder
|
||||
@subpackage template.css
|
||||
|
@ -10,7 +10,7 @@
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 40 of this MVC
|
||||
@build 3rd February, 2017
|
||||
@build 1st April, 2017
|
||||
@created 26th May, 2015
|
||||
@package Component Builder
|
||||
@subpackage templates.css
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
BIN
admin/assets/images/icons/language_translations.png
Normal file
BIN
admin/assets/images/icons/language_translations.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 35 KiB |
@ -146,13 +146,18 @@ abstract class ###Component###Helper
|
||||
|
||||
if (self::checkArray($where))
|
||||
{
|
||||
// prep main <-- why? well if $main='' is empty then $table can be categories or users
|
||||
if (self::checkString($main))
|
||||
{
|
||||
$main = '_'.ltrim($main, '_');
|
||||
}
|
||||
// Get a db connection.
|
||||
$db = JFactory::getDbo();
|
||||
// Create a new query object.
|
||||
$query = $db->getQuery(true);
|
||||
|
||||
$query->select($db->quoteName(array($what)));
|
||||
$query->from($db->quoteName('#__'.$main.'_'.$table));
|
||||
$query->from($db->quoteName('#_'.$main.'_'.$table));
|
||||
$query->where($db->quoteName($whereString) . ' '.$operator.' (' . implode(',',$where) . ')');
|
||||
$db->setQuery($query);
|
||||
$db->execute();
|
||||
@ -681,13 +686,30 @@ abstract class ###Component###Helper
|
||||
return $string;
|
||||
}
|
||||
|
||||
public static function safeString($string, $type = 'L', $spacer = '_')
|
||||
public static function safeString($string, $type = 'L', $spacer = '_', $replaceNumbers = true)
|
||||
{
|
||||
// remove all numbers and replace with english text version (works well only up to millions)
|
||||
$string = self::replaceNumbers($string);
|
||||
if ($replaceNumbers === true)
|
||||
{
|
||||
// remove all numbers and replace with english text version (works well only up to millions)
|
||||
$string = self::replaceNumbers($string);
|
||||
}
|
||||
// 0nly continue if we have a string
|
||||
if (self::checkString($string))
|
||||
{
|
||||
// create file name without the extention that is safe
|
||||
if ($type === 'filename')
|
||||
{
|
||||
// make sure VDM is not in the string
|
||||
$string = str_replace('VDM', 'vDm', $string);
|
||||
// Remove anything which isn't a word, whitespace, number
|
||||
// or any of the following caracters -_()
|
||||
// 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);
|
||||
// http://stackoverflow.com/a/2021729/1429677
|
||||
return preg_replace('/\s+/', ' ', $string);
|
||||
}
|
||||
// remove all other characters
|
||||
$string = trim($string);
|
||||
$string = preg_replace('/'.$spacer.'+/', ' ', $string);
|
||||
|
35
admin/compiler/joomla_3/Helper_category.php
Normal file
35
admin/compiler/joomla_3/Helper_category.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
|
||||
__ __ _ _____ _ _ __ __ _ _ _
|
||||
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
|
||||
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
|
||||
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
|
||||
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
|
||||
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
|
||||
| |
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@package Component Builder
|
||||
@subpackage componentbuilder.php
|
||||
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
|
||||
@my wife Roline van der Merwe <http://www.vdm.io/>
|
||||
@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');
|
||||
?>
|
||||
###BOM###
|
||||
|
||||
// No direct access to this file
|
||||
defined('_JEXEC') or die('Restricted access');
|
||||
|
||||
/**
|
||||
* ###Component### Component Category Tree
|
||||
*/
|
||||
###CATEGORY_CLASS_TREES###
|
50
admin/compiler/joomla_3/Helper_category_view.php
Normal file
50
admin/compiler/joomla_3/Helper_category_view.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
|
||||
__ __ _ _____ _ _ __ __ _ _ _
|
||||
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
|
||||
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
|
||||
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
|
||||
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
|
||||
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
|
||||
| |
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@package Component Builder
|
||||
@subpackage componentbuilder.php
|
||||
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
|
||||
@my wife Roline van der Merwe <http://www.vdm.io/>
|
||||
@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');
|
||||
?>
|
||||
###BOM###
|
||||
|
||||
// No direct access to this file
|
||||
defined('_JEXEC') or die('Restricted access');
|
||||
|
||||
/**
|
||||
* ###Component### ###View### Component Category Tree
|
||||
*/
|
||||
class ###Component######Views###Categories extends JCategories
|
||||
{
|
||||
/**
|
||||
* Class constructor
|
||||
*
|
||||
* @param array $options Array of options
|
||||
*
|
||||
*/
|
||||
public function __construct($options = array())
|
||||
{
|
||||
$options['table'] = '#__###component###_###view###';
|
||||
$options['extension'] = 'com_###component###.###views###';
|
||||
|
||||
parent::__construct($options);
|
||||
}
|
||||
}
|
@ -320,13 +320,18 @@ abstract class ###Component###Helper
|
||||
|
||||
if (self::checkArray($where))
|
||||
{
|
||||
// prep main <-- why? well if $main='' is empty then $table can be categories or users
|
||||
if (self::checkString($main))
|
||||
{
|
||||
$main = '_'.ltrim($main, '_');
|
||||
}
|
||||
// Get a db connection.
|
||||
$db = JFactory::getDbo();
|
||||
// Create a new query object.
|
||||
$query = $db->getQuery(true);
|
||||
|
||||
$query->select($db->quoteName(array($what)));
|
||||
$query->from($db->quoteName('#__'.$main.'_'.$table));
|
||||
$query->from($db->quoteName('#_'.$main.'_'.$table));
|
||||
$query->where($db->quoteName($whereString) . ' '.$operator.' (' . implode(',',$where) . ')');
|
||||
$db->setQuery($query);
|
||||
$db->execute();
|
||||
@ -673,13 +678,30 @@ abstract class ###Component###Helper
|
||||
return $string;
|
||||
}
|
||||
|
||||
public static function safeString($string, $type = 'L', $spacer = '_')
|
||||
public static function safeString($string, $type = 'L', $spacer = '_', $replaceNumbers = true)
|
||||
{
|
||||
// remove all numbers and replace with english text version (works well only up to millions)
|
||||
$string = self::replaceNumbers($string);
|
||||
if ($replaceNumbers === true)
|
||||
{
|
||||
// remove all numbers and replace with english text version (works well only up to millions)
|
||||
$string = self::replaceNumbers($string);
|
||||
}
|
||||
// 0nly continue if we have a string
|
||||
if (self::checkString($string))
|
||||
{
|
||||
// create file name without the extention that is safe
|
||||
if ($type === 'filename')
|
||||
{
|
||||
// make sure VDM is not in the string
|
||||
$string = str_replace('VDM', 'vDm', $string);
|
||||
// Remove anything which isn't a word, whitespace, number
|
||||
// or any of the following caracters -_()
|
||||
// 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);
|
||||
// http://stackoverflow.com/a/2021729/1429677
|
||||
return preg_replace('/\s+/', ' ', $string);
|
||||
}
|
||||
// remove all other characters
|
||||
$string = trim($string);
|
||||
$string = preg_replace('/'.$spacer.'+/', ' ', $string);
|
||||
|
@ -47,5 +47,5 @@ class ###Component###Controller###Views### extends JControllerAdmin
|
||||
$model = parent::getModel($name, $prefix, array('ignore_request' => true));
|
||||
|
||||
return $model;
|
||||
}###CONTROLLEREXIMPORTMETHOD### ###CUSTOM_ADMIN_DYNAMIC_BUTTONS_CONTROLLER###
|
||||
}###CONTROLLEREXIMPORTMETHOD### ###CUSTOM_ADMIN_DYNAMIC_BUTTONS_CONTROLLER### ###ADMIN_CUSTOM_BUTTONS_CONTROLLER_LIST###
|
||||
}
|
||||
|
@ -34,6 +34,11 @@ defined('_JEXEC') or die('Restricted access');
|
||||
*/
|
||||
class ###Component###ModelImport extends JModelLegacy
|
||||
{
|
||||
// set uploading values
|
||||
protected $use_streams = false;
|
||||
protected $allow_unsafe = false;
|
||||
protected $safeFileOptions = array();
|
||||
|
||||
/**
|
||||
* @var object JTable object
|
||||
*/
|
||||
@ -75,10 +80,6 @@ class ###Component###ModelImport extends JModelLegacy
|
||||
// Recall the 'Import from Directory' path.
|
||||
$path = $app->getUserStateFromRequest($this->_context . '.import_directory', 'import_directory', $app->get('tmp_path'));
|
||||
$this->setState('import.directory', $path);
|
||||
// set uploading values
|
||||
$this->use_streams = false;
|
||||
$this->allow_unsafe = false;
|
||||
$this->safeFileOptions = array();
|
||||
parent::populateState();
|
||||
}
|
||||
|
||||
@ -285,21 +286,16 @@ class ###Component###ModelImport extends JModelLegacy
|
||||
}
|
||||
|
||||
// check the extention
|
||||
switch(strtolower(pathinfo($p_dir, PATHINFO_EXTENSION))){
|
||||
case 'xls':
|
||||
case 'ods':
|
||||
case 'csv':
|
||||
break;
|
||||
|
||||
default:
|
||||
if(!$this->checkExtension($p_dir))
|
||||
{
|
||||
// set error message
|
||||
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning');
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
|
||||
$package['packagename'] = null;
|
||||
$package['dir'] = $p_dir;
|
||||
$package['type'] = $type;
|
||||
$package['dir'] = $p_dir;
|
||||
$package['type'] = $type;
|
||||
|
||||
return $package;
|
||||
}
|
||||
@ -357,21 +353,15 @@ class ###Component###ModelImport extends JModelLegacy
|
||||
$archivename = JPath::clean($archivename);
|
||||
|
||||
// check the extention
|
||||
switch(strtolower(pathinfo($archivename, PATHINFO_EXTENSION))){
|
||||
case 'xls':
|
||||
case 'ods':
|
||||
case 'csv':
|
||||
break;
|
||||
|
||||
default:
|
||||
if(!$this->checkExtension($archivename))
|
||||
{
|
||||
// Cleanup the import files
|
||||
$this->remove($archivename);
|
||||
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning');
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$config = JFactory::getConfig();
|
||||
$config = JFactory::getConfig();
|
||||
// set Package Name
|
||||
$check['packagename'] = $archivename;
|
||||
|
||||
@ -384,6 +374,28 @@ class ###Component###ModelImport extends JModelLegacy
|
||||
return $check;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the extension
|
||||
*
|
||||
* @param string $file Name of the uploaded file
|
||||
*
|
||||
* @return boolean True on success
|
||||
*
|
||||
*/
|
||||
protected function checkExtension($file)
|
||||
{
|
||||
// check the extention
|
||||
switch(strtolower(pathinfo($file, PATHINFO_EXTENSION)))
|
||||
{
|
||||
case 'xls':
|
||||
case 'ods':
|
||||
case 'csv':
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean up temporary uploaded spreadsheet
|
||||
*
|
||||
|
@ -34,6 +34,11 @@ defined('_JEXEC') or die('Restricted access');
|
||||
*/
|
||||
class ###Component###Model###View### extends JModelLegacy
|
||||
{
|
||||
// set uploading values
|
||||
protected $use_streams = false;
|
||||
protected $allow_unsafe = false;
|
||||
protected $safeFileOptions = array();
|
||||
|
||||
/**
|
||||
* @var object JTable object
|
||||
*/
|
||||
@ -75,10 +80,6 @@ class ###Component###Model###View### extends JModelLegacy
|
||||
// Recall the 'Import from Directory' path.
|
||||
$path = $app->getUserStateFromRequest($this->_context . '.import_directory', 'import_directory', $app->get('tmp_path'));
|
||||
$this->setState('import.directory', $path);
|
||||
// set uploading values
|
||||
$this->use_streams = false;
|
||||
$this->allow_unsafe = false;
|
||||
$this->safeFileOptions = array();
|
||||
parent::populateState();
|
||||
}
|
||||
###IMPORT_METHOD_CUSTOM###
|
||||
@ -175,21 +176,16 @@ class ###Component###Model###View### extends JModelLegacy
|
||||
}
|
||||
|
||||
// check the extention
|
||||
switch(strtolower(pathinfo($p_dir, PATHINFO_EXTENSION))){
|
||||
case 'xls':
|
||||
case 'ods':
|
||||
case 'csv':
|
||||
break;
|
||||
|
||||
default:
|
||||
if(!$this->checkExtension($p_dir))
|
||||
{
|
||||
// set error message
|
||||
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning');
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
|
||||
$package['packagename'] = null;
|
||||
$package['dir'] = $p_dir;
|
||||
$package['type'] = $type;
|
||||
$package['dir'] = $p_dir;
|
||||
$package['type'] = $type;
|
||||
|
||||
return $package;
|
||||
}
|
||||
@ -247,21 +243,15 @@ class ###Component###Model###View### extends JModelLegacy
|
||||
$archivename = JPath::clean($archivename);
|
||||
|
||||
// check the extention
|
||||
switch(strtolower(pathinfo($archivename, PATHINFO_EXTENSION))){
|
||||
case 'xls':
|
||||
case 'ods':
|
||||
case 'csv':
|
||||
break;
|
||||
|
||||
default:
|
||||
if(!$this->checkExtension($archivename))
|
||||
{
|
||||
// Cleanup the import files
|
||||
$this->remove($archivename);
|
||||
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning');
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$config = JFactory::getConfig();
|
||||
$config = JFactory::getConfig();
|
||||
// set Package Name
|
||||
$check['packagename'] = $archivename;
|
||||
|
||||
@ -273,6 +263,7 @@ class ###Component###Model###View### extends JModelLegacy
|
||||
|
||||
return $check;
|
||||
}
|
||||
###IMPORT_EXT_METHOD_CUSTOM###
|
||||
|
||||
/**
|
||||
* Clean up temporary uploaded spreadsheet
|
||||
|
@ -47,7 +47,7 @@ class ###Component###Model###Views### extends JModelList
|
||||
}
|
||||
|
||||
parent::__construct($config);
|
||||
}
|
||||
}###ADMIN_CUSTOM_BUTTONS_METHOD_LIST###
|
||||
|
||||
/**
|
||||
* Method to auto-populate the model state.
|
||||
|
@ -52,7 +52,8 @@ class ###Component###ViewImport extends JViewLegacy
|
||||
}
|
||||
|
||||
// Check for errors.
|
||||
if (count($errors = $this->get('Errors'))){
|
||||
if (count($errors = $this->get('Errors')))
|
||||
{
|
||||
JError::raiseError(500, implode('<br />', $errors));
|
||||
return false;
|
||||
}
|
||||
|
@ -132,7 +132,7 @@ class ###Component###View###Views### extends JViewLegacy
|
||||
// add the button to the page
|
||||
$dhtml = $layout->render(array('title' => $title));
|
||||
$bar->appendButton('Custom', $dhtml, 'batch');
|
||||
}###CUSTOM_ADMIN_DYNAMIC_BUTTONS###
|
||||
}###CUSTOM_ADMIN_DYNAMIC_BUTTONS### ###ADMIN_CUSTOM_BUTTONS_LIST###
|
||||
|
||||
if ($this->state->get('filter.published') == -2 && ($this->canState && $this->canDelete))
|
||||
{
|
||||
|
@ -60,8 +60,7 @@
|
||||
</files>
|
||||
|
||||
<languages folder="site">
|
||||
<language tag="en-GB">language/en-GB/en-GB.com_###component###.ini</language>
|
||||
<language tag="en-GB">language/en-GB/en-GB.com_###component###.sys.ini</language>
|
||||
###SITE_LANGUAGES###
|
||||
</languages>
|
||||
|
||||
<administration>
|
||||
@ -86,8 +85,7 @@
|
||||
</files>
|
||||
|
||||
<languages folder="admin">
|
||||
<language tag="en-GB">language/en-GB/en-GB.com_###component###.ini</language>
|
||||
<language tag="en-GB">language/en-GB/en-GB.com_###component###.sys.ini</language>
|
||||
###ADMIN_LANGUAGES###
|
||||
</languages>
|
||||
|
||||
</administration>###UPDATESERVER###
|
||||
|
@ -30,7 +30,6 @@ defined('_JEXEC') or die('Restricted access');
|
||||
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###">
|
||||
|
@ -1,6 +1,11 @@
|
||||
###INSTALL###
|
||||
|
||||
--
|
||||
-- Always insure this column is large enough for all the access control values.
|
||||
-- Always insure this column rules is large enough for all the access control values.
|
||||
--
|
||||
ALTER TABLE `#__assets` CHANGE `rules` `rules` MEDIUMTEXT NOT NULL COMMENT 'JSON encoded access control.';
|
||||
|
||||
--
|
||||
-- Always insure this column name is large enough for long component and view names.
|
||||
--
|
||||
ALTER TABLE `#__assets` CHANGE `name` `name` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'The unique name for the asset.';
|
||||
|
@ -157,24 +157,19 @@
|
||||
"rename": "Helper_site",
|
||||
"type": "file"
|
||||
},
|
||||
"Helper_category.php": {
|
||||
"naam":"Helper_category.php",
|
||||
"path": "c0mp0n3nt/site/helpers",
|
||||
"rename": "new",
|
||||
"newName": "category.php",
|
||||
"type": "file"
|
||||
},
|
||||
"script.php": {
|
||||
"naam":"script.php",
|
||||
"path": "c0mp0n3nt/",
|
||||
"rename": false,
|
||||
"type": "file"
|
||||
},
|
||||
"en-GB.com_admin.ini": {
|
||||
"naam":"en-GB.com_admin.ini",
|
||||
"path": "c0mp0n3nt/admin/language/en-GB",
|
||||
"rename": "admin",
|
||||
"type": "file"
|
||||
},
|
||||
"en-GB.com_admin.sys.ini": {
|
||||
"naam":"en-GB.com_admin.sys.ini",
|
||||
"path": "c0mp0n3nt/admin/language/en-GB",
|
||||
"rename": "admin",
|
||||
"type": "file"
|
||||
},
|
||||
"install.mysql.utf8.sql": {
|
||||
"naam":"install.mysql.utf8.sql",
|
||||
"path": "c0mp0n3nt/admin/sql",
|
||||
@ -212,18 +207,6 @@
|
||||
"rename": false,
|
||||
"type": "file"
|
||||
},
|
||||
"en-GB.com_site.ini": {
|
||||
"naam":"en-GB.com_site.ini",
|
||||
"path": "c0mp0n3nt/site/language/en-GB",
|
||||
"rename": "site",
|
||||
"type": "file"
|
||||
},
|
||||
"en-GB.com_site.sys.ini": {
|
||||
"naam":"en-GB.com_site.sys.ini",
|
||||
"path": "c0mp0n3nt/site/language/en-GB",
|
||||
"rename": "site",
|
||||
"type": "file"
|
||||
},
|
||||
"headercheck.php": {
|
||||
"naam":"headercheck.php",
|
||||
"path": "c0mp0n3nt/site/helpers",
|
||||
@ -677,6 +660,11 @@
|
||||
"rename": "new",
|
||||
"newName": "submitbutton.js",
|
||||
"type": "custom_form"
|
||||
},
|
||||
"Helper_category_view.php": {
|
||||
"path": "c0mp0n3nt/site/helpers",
|
||||
"rename": "Helper_category_view",
|
||||
"type": "category"
|
||||
}
|
||||
},
|
||||
"custom_admin": {
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage componentbuilder.php
|
||||
@ -44,7 +44,10 @@ $document->addScript('components/com_componentbuilder/assets/js/admin.js');
|
||||
|
||||
// require helper files
|
||||
JLoader::register('ComponentbuilderHelper', dirname(__FILE__) . '/helpers/componentbuilder.php');
|
||||
JLoader::register('JHtmlBatch_', dirname(__FILE__) . '/helpers/html/batch_.php');
|
||||
JLoader::register('JHtmlBatch_', dirname(__FILE__) . '/helpers/html/batch_.php');
|
||||
|
||||
// Triger the Global Admin Event
|
||||
ComponentbuilderHelper::globalEvent($document);
|
||||
|
||||
// import joomla controller library
|
||||
jimport('joomla.application.component.controller');
|
||||
|
123
admin/config.xml
123
admin/config.xml
@ -61,6 +61,19 @@
|
||||
<option value="0">
|
||||
COM_COMPONENTBUILDER_CONFIG_NO</option>
|
||||
</field>
|
||||
<!-- Percentagelanguageadd Field. Type: Number. (joomla) -->
|
||||
<field
|
||||
type="number"
|
||||
name="percentagelanguageadd"
|
||||
label="COM_COMPONENTBUILDER_CONFIG_PERCENTAGELANGUAGEADD_LABEL"
|
||||
default="50"
|
||||
description="COM_COMPONENTBUILDER_CONFIG_PERCENTAGELANGUAGEADD_DESCRIPTION"
|
||||
class="text_area"
|
||||
required="true"
|
||||
min="10"
|
||||
max="100"
|
||||
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 name="autorTitle"
|
||||
@ -222,6 +235,116 @@
|
||||
message="Error! Please add folder path here."
|
||||
hint="COM_COMPONENTBUILDER_CONFIG_GIT_FOLDER_PATH_HINT"
|
||||
/>
|
||||
</fieldset>
|
||||
<fieldset
|
||||
name="company_custom_config"
|
||||
label="COM_COMPONENTBUILDER_CONFIG_COMPANY">
|
||||
|
||||
<!-- Export_company Field. Type: Text. (joomla) -->
|
||||
<field
|
||||
type="text"
|
||||
name="export_company"
|
||||
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_COMPANY_LABEL"
|
||||
size="40"
|
||||
maxlength="150"
|
||||
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_COMPANY_DESCRIPTION"
|
||||
class="text_area"
|
||||
readonly="false"
|
||||
disabled="false"
|
||||
required="true"
|
||||
filter="STRING"
|
||||
message="Error! Please add company name here."
|
||||
hint="COM_COMPONENTBUILDER_CONFIG_EXPORT_COMPANY_HINT"
|
||||
/>
|
||||
<!-- Export_owner Field. Type: Text. (joomla) -->
|
||||
<field
|
||||
type="text"
|
||||
name="export_owner"
|
||||
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_OWNER_LABEL"
|
||||
size="10"
|
||||
maxlength="120"
|
||||
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_OWNER_DESCRIPTION"
|
||||
class="text_area"
|
||||
readonly="false"
|
||||
disabled="false"
|
||||
required="true"
|
||||
filter="HTML"
|
||||
message="Error! Please add owner name here."
|
||||
hint="COM_COMPONENTBUILDER_CONFIG_EXPORT_OWNER_HINT"
|
||||
/>
|
||||
<!-- Export_email Field. Type: Text. (joomla) -->
|
||||
<field
|
||||
type="text"
|
||||
name="export_email"
|
||||
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_EMAIL_LABEL"
|
||||
size="40"
|
||||
maxlength="150"
|
||||
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_EMAIL_DESCRIPTION"
|
||||
class="text_area"
|
||||
required="true"
|
||||
filter="STRING"
|
||||
validate="email"
|
||||
message="Error! Please email address here."
|
||||
hint="COM_COMPONENTBUILDER_CONFIG_EXPORT_EMAIL_HINT"
|
||||
/>
|
||||
<!-- Export_website Field. Type: Url. (joomla) -->
|
||||
<field
|
||||
type="url"
|
||||
name="export_website"
|
||||
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_WEBSITE_LABEL"
|
||||
size="60"
|
||||
maxlength="150"
|
||||
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_WEBSITE_DESCRIPTION"
|
||||
class="text_area"
|
||||
required="true"
|
||||
filter="url"
|
||||
validated="url"
|
||||
message="Error! Please add website here."
|
||||
hint="COM_COMPONENTBUILDER_CONFIG_EXPORT_WEBSITE_HINT"
|
||||
/>
|
||||
<!-- Export_license Field. Type: Textarea. (joomla) -->
|
||||
<field
|
||||
type="textarea"
|
||||
name="export_license"
|
||||
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_LICENSE_LABEL"
|
||||
rows="7"
|
||||
cols="10"
|
||||
default="GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html"
|
||||
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_LICENSE_DESCRIPTION"
|
||||
class="text_area span12"
|
||||
filter="HTML"
|
||||
hint="COM_COMPONENTBUILDER_CONFIG_EXPORT_LICENSE_HINT"
|
||||
required="true"
|
||||
/>
|
||||
<!-- Export_copyright Field. Type: Textarea. (joomla) -->
|
||||
<field
|
||||
type="textarea"
|
||||
name="export_copyright"
|
||||
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_COPYRIGHT_LABEL"
|
||||
rows="7"
|
||||
cols="10"
|
||||
default="Copyright (C) 2015. All Rights Reserved"
|
||||
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_COPYRIGHT_DESCRIPTION"
|
||||
class="text_area span12"
|
||||
filter="HTML"
|
||||
hint="COM_COMPONENTBUILDER_CONFIG_EXPORT_COPYRIGHT_HINT"
|
||||
required="true"
|
||||
/>
|
||||
<!-- Export_buy_link Field. Type: Url. (joomla) -->
|
||||
<field
|
||||
type="url"
|
||||
name="export_buy_link"
|
||||
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_BUY_LINK_LABEL"
|
||||
size="60"
|
||||
maxlength="150"
|
||||
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_BUY_LINK_DESCRIPTION"
|
||||
class="text_area"
|
||||
required="false"
|
||||
filter="url"
|
||||
validated="url"
|
||||
message="Error! Please add link here."
|
||||
hint="COM_COMPONENTBUILDER_CONFIG_EXPORT_BUY_LINK_HINT"
|
||||
/>
|
||||
</fieldset>
|
||||
<fieldset
|
||||
name="permissions"
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage controller.php
|
||||
@ -88,7 +88,7 @@ class ComponentbuilderController extends JControllerLegacy
|
||||
if (ComponentbuilderHelper::checkString($view))
|
||||
{
|
||||
$views = array(
|
||||
'component' => 'components',
|
||||
'joomla_component' => 'joomla_components',
|
||||
'admin_view' => 'admin_views',
|
||||
'custom_admin_view' => 'custom_admin_views',
|
||||
'site_view' => 'site_views',
|
||||
@ -99,6 +99,8 @@ class ComponentbuilderController extends JControllerLegacy
|
||||
'snippet' => 'snippets',
|
||||
'field' => 'fields',
|
||||
'fieldtype' => 'fieldtypes',
|
||||
'language_translation' => 'language_translations',
|
||||
'language' => 'languages',
|
||||
'help_document' => 'help_documents'
|
||||
);
|
||||
// check if this is a list view
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 95 of this MVC
|
||||
@build 3rd February, 2017
|
||||
@version @update number 111 of this MVC
|
||||
@build 7th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage admin_view.php
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 95 of this MVC
|
||||
@build 3rd February, 2017
|
||||
@version @update number 111 of this MVC
|
||||
@build 7th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage admin_views.php
|
||||
@ -107,5 +107,5 @@ class ComponentbuilderControllerAdmin_views extends JControllerAdmin
|
||||
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_FAILED');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=admin_views', false), $message, 'error');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage ajax.json.php
|
||||
@ -44,6 +44,7 @@ class ComponentbuilderControllerAjax extends JControllerLegacy
|
||||
// load the tasks
|
||||
$this->registerTask('isNew', 'ajax');
|
||||
$this->registerTask('isRead', 'ajax');
|
||||
$this->registerTask('getComponentDetails', 'ajax');
|
||||
$this->registerTask('tableColumns', 'ajax');
|
||||
$this->registerTask('fieldSelectOptions', 'ajax');
|
||||
$this->registerTask('getImportScripts', 'ajax');
|
||||
@ -56,7 +57,9 @@ class ComponentbuilderControllerAjax extends JControllerLegacy
|
||||
$this->registerTask('viewTableColumns', 'ajax');
|
||||
$this->registerTask('checkFunctionName', 'ajax');
|
||||
$this->registerTask('usedin', 'ajax');
|
||||
$this->registerTask('fieldOptions', 'ajax');
|
||||
$this->registerTask('fieldOptions', 'ajax');
|
||||
$this->registerTask('getBuildTable', 'ajax');
|
||||
$this->registerTask('getButton', 'ajax');
|
||||
}
|
||||
|
||||
public function ajax()
|
||||
@ -147,6 +150,44 @@ class ComponentbuilderControllerAjax extends JControllerLegacy
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'getComponentDetails':
|
||||
try
|
||||
{
|
||||
$returnRaw = $jinput->get('raw', false, 'BOOLEAN');
|
||||
$idValue = $jinput->get('id', NULL, 'INT');
|
||||
if($idValue && $user->id != 0)
|
||||
{
|
||||
$result = $this->getModel('ajax')->getComponentDetails($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 'tableColumns':
|
||||
try
|
||||
{
|
||||
@ -577,9 +618,10 @@ class ComponentbuilderControllerAjax extends JControllerLegacy
|
||||
$returnRaw = $jinput->get('raw', false, 'BOOLEAN');
|
||||
$functioNameValue = $jinput->get('functioName', NULL, 'WORD');
|
||||
$idValue = $jinput->get('id', NULL, 'INT');
|
||||
if($functioNameValue && $idValue && $user->id != 0)
|
||||
$targetValue = $jinput->get('target', NULL, 'WORD');
|
||||
if($functioNameValue && $idValue && $targetValue && $user->id != 0)
|
||||
{
|
||||
$result = $this->getModel('ajax')->usedin($functioNameValue, $idValue);
|
||||
$result = $this->getModel('ajax')->usedin($functioNameValue, $idValue, $targetValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -647,6 +689,83 @@ class ComponentbuilderControllerAjax extends JControllerLegacy
|
||||
echo "(".json_encode($e).");";
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'getBuildTable':
|
||||
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)
|
||||
{
|
||||
$result = $this->getModel('ajax')->getBuildTable($idNameValue, $objectValue);
|
||||
}
|
||||
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 'getButton':
|
||||
try
|
||||
{
|
||||
$returnRaw = $jinput->get('raw', false, 'BOOLEAN');
|
||||
$typeValue = $jinput->get('type', NULL, 'WORD');
|
||||
if($typeValue && $user->id != 0)
|
||||
{
|
||||
$result = $this->getModel('ajax')->getButton($typeValue);
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 17 of this MVC
|
||||
@build 13th February, 2017
|
||||
@version @update number 48 of this MVC
|
||||
@build 25th April, 2017
|
||||
@created 1st February, 2017
|
||||
@package Component Builder
|
||||
@subpackage compiler.php
|
||||
@ -66,9 +66,9 @@ class ComponentbuilderControllerCompiler extends JControllerAdmin
|
||||
if($user->authorise('core.admin', 'com_componentbuilder'))
|
||||
{
|
||||
// get the post values
|
||||
$jinput = JFactory::getApplication()->input;
|
||||
$jinput = JFactory::getApplication()->input;
|
||||
$componentId = $jinput->post->get('component', 0, 'INT');
|
||||
$version = $jinput->post->get('version', 0, 'INT');
|
||||
$version = $jinput->post->get('version', 0, 'INT');
|
||||
$addBackup = $jinput->post->get('backup', 0, 'INT');
|
||||
$addGit = $jinput->post->get('git', 0, 'INT');
|
||||
$addPlaceholders = $jinput->post->get('placeholders', 2, 'INT');
|
||||
@ -93,62 +93,37 @@ class ComponentbuilderControllerCompiler extends JControllerAdmin
|
||||
if (empty($redirect_url) && $componentId > 0)
|
||||
{
|
||||
$redirect_url = JRoute::_('index.php?option=com_componentbuilder&view=compiler', false);
|
||||
// setup the unrealistic numbers
|
||||
$counter = $model->getCount();
|
||||
$folders = $counter['folders'] * 5;
|
||||
$files = $counter['files'] * 5;
|
||||
$lines = $counter['lines'] * 10;
|
||||
$seconds = $folders + $files + $lines;
|
||||
$totalHours = round($seconds / 3600);
|
||||
$totalDays = round($totalHours / 8);
|
||||
// setup the more realistic numbers
|
||||
$debugging = $seconds / 4;
|
||||
$planning = $seconds / 7;
|
||||
$mapping = $seconds / 10;
|
||||
$office = $seconds / 6;
|
||||
$seconds = $folders + $files + $lines + $debugging + $planning + $mapping + $office;
|
||||
$actualTotalHours = round($seconds / 3600);
|
||||
$actualTotalDays = round($actualTotalHours / 8);
|
||||
$debuggingHours = round($debugging / 3600);
|
||||
$planningHours = round($planning / 3600);
|
||||
$mappingHours = round($mapping / 3600);
|
||||
$officeHours = round($office / 3600);
|
||||
// the actual time spent
|
||||
$actualHoursSpent = $actualTotalHours - $totalHours;
|
||||
$actualDaysSpent = $actualTotalDays - $totalDays;
|
||||
// calculate the projects actual time frame of completion
|
||||
$projectWeekTime = round($actualTotalDays / 5,1);
|
||||
$projectMonthTime = round($actualTotalDays / 24,1);
|
||||
if (($pos = strpos($counter['filePath'], "/tmp/")) !== FALSE)
|
||||
if (($pos = strpos($model->compiler->filepath, "/tmp/")) !== FALSE)
|
||||
{
|
||||
$url = JURI::root() . substr($counter['filePath'], $pos + 1);
|
||||
$url = JURI::root() . substr($model->compiler->filepath, $pos + 1);
|
||||
}
|
||||
// Message of successful build
|
||||
$message = '<h1>The ('.$counter['filename'].') Was Successfully Compiled!</h1>';
|
||||
$message = '<h1>The ('.$model->compiler->componentFolderName.') Was Successfully Compiled!</h1>';
|
||||
$message .= '<p><button class="btn btn-small btn-success" onclick="Joomla.submitbutton(\'compiler.installExtention\')">';
|
||||
$message .= 'Install '.$counter['filename'].' on this <span class="icon-joomla icon-white"></span>Joomla website.</button></p>';
|
||||
$message .= 'Install '.$model->compiler->componentFolderName.' on this <span class="icon-joomla icon-white"></span>Joomla website.</button></p>';
|
||||
$message .= '<h2>Total time saved</h2>';
|
||||
$message .= '<ul>';
|
||||
$message .= '<li>Total folders created: <b>'.$counter['folders'].'</b></li>';
|
||||
$message .= '<li>Total files created: <b>'.$counter['files'].'</b></li>';
|
||||
$message .= '<li>Total lines written: <b>'.$counter['lines'].'</b></li>';
|
||||
$message .= '<li>Total folders created: <b>'.$model->compiler->folderCount.'</b></li>';
|
||||
$message .= '<li>Total files created: <b>'.$model->compiler->fileCount.'</b></li>';
|
||||
$message .= '<li>Total lines written: <b>'.$model->compiler->lineCount.'</b></li>';
|
||||
$message .= '<li>A4 Book of: <b>'.$model->compiler->pageCount.' pages</b></li>';
|
||||
$message .= '</ul>';
|
||||
$message .= '<p><b>'.$totalHours.' Hours</b> or <b>'.$totalDays.' Eight Hour Days</b> <em>(actual time you saved)</em><br />';
|
||||
$message .= '<p><b>'.$model->compiler->totalHours.' Hours</b> or <b>'.$model->compiler->totalDays.' Eight Hour Days</b> <em>(actual time you saved)</em><br />';
|
||||
$message .= '<small>(if creating a folder and file took <b>5 seconds</b> and writing one line of code took <b>10 seconds</b>, never making one mistake or taking any coffee break.)</small><br />';
|
||||
$message .= '<b>'.$actualHoursSpent.' Hours</b> or <b>'.$actualDaysSpent.' Eight Hour Days</b> <em>(the actual time you spent)</em><br />';
|
||||
$message .= '<small>(with the following break down: <b>debugging @'.$debuggingHours.'hours</b> = codingtime / 4; <b>planning @'.$planningHours.'hours</b> = codingtime / 7; <b>mapping @'.$mappingHours.'hours</b> = codingtime / 10; <b>office @'.$officeHours.'hours</b> = codingtime / 6;)</small></p>';
|
||||
$message .= '<p><b>'.$actualTotalHours.' Hours</b> or <b>'.$actualTotalDays.' Eight Hour Days</b> <em>(a total of the realistic time frame for this project)</em><br />';
|
||||
$message .= '<b>'.$model->compiler->actualHoursSpent.' Hours</b> or <b>'.$model->compiler->actualDaysSpent.' Eight Hour Days</b> <em>(the actual time you spent)</em><br />';
|
||||
$message .= '<small>(with the following break down: <b>debugging @'.$model->compiler->debuggingHours.'hours</b> = codingtime / 4; <b>planning @'.$model->compiler->planningHours.'hours</b> = codingtime / 7; <b>mapping @'.$model->compiler->mappingHours.'hours</b> = codingtime / 10; <b>office @'.$model->compiler->officeHours.'hours</b> = codingtime / 6;)</small></p>';
|
||||
$message .= '<p><b>'.$model->compiler->actualTotalHours.' Hours</b> or <b>'.$model->compiler->actualTotalDays.' Eight Hour Days</b> <em>(a total of the realistic time frame for this project)</em><br />';
|
||||
$message .= '<small>(if creating a folder and file took <b>5 seconds</b> and writing one line of code took <b>10 seconds</b>, with the normal everyday realities at the office, that includes the component planning, mapping & debugging.)</small></p>';
|
||||
$message .= '<p>Project duration: <b>'.$projectWeekTime. ' weeks</b> or <b>'.$projectMonthTime.' months</b></p>';
|
||||
$message .= '<p>Project duration: <b>'.$model->compiler->projectWeekTime. ' weeks</b> or <b>'.$model->compiler->projectMonthTime.' months</b></p>';
|
||||
$message .= '<h2>Path to Zip File</h2>';
|
||||
$message .= '<p><b>Path:</b> <code>'.$counter['filePath'].'</code><br />';
|
||||
$message .= '<p><b>Path:</b> <code>'.$model->compiler->filepath.'</code><br />';
|
||||
$message .= '<b>URL:</b> <code>'.$url.'</code><br /><br />';
|
||||
$message .= '<small>Hey! you can also download the file right now!</small><br /><a class="btn btn-success" href="'.$url.'" ><span class="icon-download icon-white"></span>Download</a></p>';
|
||||
$message .= '<p><small><b>Remember!</b> This file is in your tmp folder and therefore publicly accessible untill you click [Clear tmp]!</small> </p>';
|
||||
$message .= '<p><small>Compilation took <b>'.$counter['time'].'</b> seconds to complete.</small> </p>';
|
||||
$message .= '<p><small>Compilation took <b>'.$model->compiler->secondsCompiled.'</b> seconds to complete.</small> </p>';
|
||||
// set redirect
|
||||
$this->setRedirect($redirect_url,$message,'message');
|
||||
$app->setUserState('com_componentbuilder.extension_name', $counter['filename']);
|
||||
$app->setUserState('com_componentbuilder.extension_name', $model->compiler->componentFolderName);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage componentbuilder.php
|
||||
|
@ -11,7 +11,7 @@
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 22 of this MVC
|
||||
@build 3rd February, 2017
|
||||
@build 1st March, 2017
|
||||
@created 13th August, 2015
|
||||
@package Component Builder
|
||||
@subpackage custom_admin_view.php
|
||||
|
@ -11,7 +11,7 @@
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 22 of this MVC
|
||||
@build 3rd February, 2017
|
||||
@build 1st March, 2017
|
||||
@created 13th August, 2015
|
||||
@package Component Builder
|
||||
@subpackage custom_admin_views.php
|
||||
@ -107,5 +107,5 @@ class ComponentbuilderControllerCustom_admin_views extends JControllerAdmin
|
||||
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_FAILED');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=custom_admin_views', false), $message, 'error');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 55 of this MVC
|
||||
@build 13th February, 2017
|
||||
@version @update number 82 of this MVC
|
||||
@build 25th April, 2017
|
||||
@created 11th October, 2016
|
||||
@package Component Builder
|
||||
@subpackage custom_code.php
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 55 of this MVC
|
||||
@build 13th February, 2017
|
||||
@version @update number 82 of this MVC
|
||||
@build 25th April, 2017
|
||||
@created 11th October, 2016
|
||||
@package Component Builder
|
||||
@subpackage custom_codes.php
|
||||
@ -107,5 +107,5 @@ class ComponentbuilderControllerCustom_codes extends JControllerAdmin
|
||||
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_FAILED');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=custom_codes', false), $message, 'error');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 81 of this MVC
|
||||
@build 15th January, 2017
|
||||
@version @update number 84 of this MVC
|
||||
@build 4th May, 2017
|
||||
@created 21st May, 2015
|
||||
@package Component Builder
|
||||
@subpackage dynamic_get.php
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 81 of this MVC
|
||||
@build 15th January, 2017
|
||||
@version @update number 84 of this MVC
|
||||
@build 4th May, 2017
|
||||
@created 21st May, 2015
|
||||
@package Component Builder
|
||||
@subpackage dynamic_gets.php
|
||||
@ -107,5 +107,5 @@ class ComponentbuilderControllerDynamic_gets extends JControllerAdmin
|
||||
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_FAILED');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=dynamic_gets', false), $message, 'error');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -107,5 +107,5 @@ class ComponentbuilderControllerFields extends JControllerAdmin
|
||||
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_FAILED');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=fields', false), $message, 'error');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -107,5 +107,5 @@ class ComponentbuilderControllerFieldtypes extends JControllerAdmin
|
||||
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_FAILED');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=fieldtypes', false), $message, 'error');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage help.php
|
||||
|
@ -107,5 +107,5 @@ class ComponentbuilderControllerHelp_documents extends JControllerAdmin
|
||||
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_FAILED');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=help_documents', false), $message, 'error');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage import.php
|
||||
|
67
admin/controllers/import_joomla_components.php
Normal file
67
admin/controllers/import_joomla_components.php
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
|
||||
__ __ _ _____ _ _ __ __ _ _ _
|
||||
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
|
||||
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
|
||||
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
|
||||
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
|
||||
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
|
||||
| |
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage import_joomla_components.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');
|
||||
|
||||
/**
|
||||
* Componentbuilder Import_joomla_components Controller
|
||||
*/
|
||||
class ComponentbuilderControllerImport_joomla_components extends JControllerLegacy
|
||||
{
|
||||
/**
|
||||
* Import an spreadsheet.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function import()
|
||||
{
|
||||
// Check for request forgeries
|
||||
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
|
||||
|
||||
$model = $this->getModel('Import_joomla_components');
|
||||
if ($model->import())
|
||||
{
|
||||
$cache = JFactory::getCache('mod_menu');
|
||||
$cache->clean();
|
||||
// TODO: Reset the users acl here as well to kill off any missing bits
|
||||
}
|
||||
|
||||
$app = JFactory::getApplication();
|
||||
$redirect_url = $app->getUserState('com_componentbuilder.redirect_url');
|
||||
if (empty($redirect_url))
|
||||
{
|
||||
$redirect_url = JRoute::_('index.php?option=com_componentbuilder&view=import_joomla_components', false);
|
||||
}
|
||||
else
|
||||
{
|
||||
// wipe out the user state when we're going to redirect
|
||||
$app->setUserState('com_componentbuilder.redirect_url', '');
|
||||
$app->setUserState('com_componentbuilder.message', '');
|
||||
$app->setUserState('com_componentbuilder.extension_message', '');
|
||||
}
|
||||
$this->setRedirect($redirect_url);
|
||||
}
|
||||
}
|
@ -10,11 +10,11 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 81 of this MVC
|
||||
@build 13th February, 2017
|
||||
@version @update number 338 of this MVC
|
||||
@build 20th May, 2017
|
||||
@created 6th May, 2015
|
||||
@package Component Builder
|
||||
@subpackage component.php
|
||||
@subpackage joomla_component.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
|
||||
@ -30,9 +30,9 @@ defined('_JEXEC') or die('Restricted access');
|
||||
jimport('joomla.application.component.controllerform');
|
||||
|
||||
/**
|
||||
* Component Controller
|
||||
* Joomla_component Controller
|
||||
*/
|
||||
class ComponentbuilderControllerComponent extends JControllerForm
|
||||
class ComponentbuilderControllerJoomla_component extends JControllerForm
|
||||
{
|
||||
/**
|
||||
* Current or most recently performed task.
|
||||
@ -45,7 +45,7 @@ class ComponentbuilderControllerComponent extends JControllerForm
|
||||
|
||||
public function __construct($config = array())
|
||||
{
|
||||
$this->view_list = 'Components'; // safeguard for setting the return view listing to the main view.
|
||||
$this->view_list = 'Joomla_components'; // safeguard for setting the return view listing to the main view.
|
||||
parent::__construct($config);
|
||||
}
|
||||
|
||||
@ -59,7 +59,14 @@ class ComponentbuilderControllerComponent extends JControllerForm
|
||||
* @since 1.6
|
||||
*/
|
||||
protected function allowAdd($data = array())
|
||||
{ // In the absense of better information, revert to the component permissions.
|
||||
{
|
||||
// Access check.
|
||||
$access = JFactory::getUser()->authorise('joomla_component.access', 'com_componentbuilder');
|
||||
if (!$access)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
// In the absense of better information, revert to the component permissions.
|
||||
return parent::allowAdd($data);
|
||||
}
|
||||
|
||||
@ -84,10 +91,10 @@ class ComponentbuilderControllerComponent extends JControllerForm
|
||||
if ($recordId)
|
||||
{
|
||||
// The record has been set. Check the record permissions.
|
||||
$permission = $user->authorise('core.edit', 'com_componentbuilder.component.' . (int) $recordId);
|
||||
$permission = $user->authorise('core.edit', 'com_componentbuilder.joomla_component.' . (int) $recordId);
|
||||
if (!$permission)
|
||||
{
|
||||
if ($user->authorise('core.edit.own', 'com_componentbuilder.component.' . $recordId))
|
||||
if ($user->authorise('core.edit.own', 'com_componentbuilder.joomla_component.' . $recordId))
|
||||
{
|
||||
// Now test the owner is the user.
|
||||
$ownerId = (int) isset($data['created_by']) ? $data['created_by'] : 0;
|
||||
@ -182,10 +189,10 @@ class ComponentbuilderControllerComponent extends JControllerForm
|
||||
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
|
||||
|
||||
// Set the model
|
||||
$model = $this->getModel('Component', '', array());
|
||||
$model = $this->getModel('Joomla_component', '', array());
|
||||
|
||||
// Preset the redirect
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=components' . $this->getRedirectToListAppend(), false));
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=joomla_components' . $this->getRedirectToListAppend(), false));
|
||||
|
||||
return parent::batch($model);
|
||||
}
|
242
admin/controllers/joomla_components.php
Normal file
242
admin/controllers/joomla_components.php
Normal file
@ -0,0 +1,242 @@
|
||||
<?php
|
||||
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
|
||||
__ __ _ _____ _ _ __ __ _ _ _
|
||||
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
|
||||
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
|
||||
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
|
||||
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
|
||||
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
|
||||
| |
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 338 of this MVC
|
||||
@build 20th May, 2017
|
||||
@created 6th May, 2015
|
||||
@package Component Builder
|
||||
@subpackage joomla_components.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');
|
||||
|
||||
/**
|
||||
* Joomla_components Controller
|
||||
*/
|
||||
class ComponentbuilderControllerJoomla_components extends JControllerAdmin
|
||||
{
|
||||
protected $text_prefix = 'COM_COMPONENTBUILDER_JOOMLA_COMPONENTS';
|
||||
/**
|
||||
* Proxy for getModel.
|
||||
* @since 2.5
|
||||
*/
|
||||
public function getModel($name = 'Joomla_component', $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('joomla_component.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('Joomla_components');
|
||||
// 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,'Joomla_components_'.$date->format('jS_F_Y'),'Joomla components exported ('.$date->format('jS F, Y').')','joomla components');
|
||||
}
|
||||
}
|
||||
// Redirect to the list screen with error.
|
||||
$message = JText::_('COM_COMPONENTBUILDER_EXPORT_FAILED');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=joomla_components', 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('joomla_component.import', 'com_componentbuilder') && $user->authorise('core.import', 'com_componentbuilder'))
|
||||
{
|
||||
// Get the import model
|
||||
$model = $this->getModel('Joomla_components');
|
||||
// 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('joomla_component_VDM_IMPORTHEADERS', $headers);
|
||||
$session->set('backto_VDM_IMPORT', 'joomla_components');
|
||||
$session->set('dataType_VDM_IMPORTINTO', 'joomla_component');
|
||||
// Redirect to import view.
|
||||
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_JOOMLA_COMPONENTS');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=import_joomla_components', 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=joomla_components', false), $message, 'error');
|
||||
return;
|
||||
}
|
||||
|
||||
public function smartImport()
|
||||
{
|
||||
// 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'))
|
||||
{
|
||||
$session = JFactory::getSession();
|
||||
$session->set('backto_VDM_IMPORT', 'joomla_components');
|
||||
$session->set('dataType_VDM_IMPORTINTO', 'smart_package');
|
||||
// Redirect to import view.
|
||||
$message = JText::_('COM_COMPONENTBUILDER_YOU_CAN_NOW_SELECT_THE_COMPONENT_BZIPB_PACKAGE_YOU_WOULD_LIKE_TO_IMPORTBR_SMALLPLEASE_NOTE_THAT_SMART_COMPONENT_IMPORT_ONLY_WORKS_WITH_THE_FOLLOWING_FORMAT_BZIPBSMALL');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=import_joomla_components&target=smartPackage', false), $message);
|
||||
return;
|
||||
}
|
||||
// Redirect to the list screen with error.
|
||||
$message = JText::_('COM_COMPONENTBUILDER_YOU_DO_NOT_HAVE_PERMISSION_TO_IMPORT_A_COMPONENT_PLEASE_CONTACT_YOUR_SYSTEM_ADMINISTRATOR_FOR_MORE_HELP');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=joomla_components', false), $message, 'error');
|
||||
return;
|
||||
}
|
||||
|
||||
public function smartExport()
|
||||
{
|
||||
// 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('joomla_component.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);
|
||||
// check if there is any selections
|
||||
if (!ComponentbuilderHelper::checkArray($pks))
|
||||
{
|
||||
// Redirect to the list screen with error.
|
||||
$message = JText::_('COM_COMPONENTBUILDER_NO_COMPONENTS_WERE_SELECTED_PLEASE_MAKE_A_SELECTION_AND_TRY_AGAIN');
|
||||
$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
|
||||
if ($model->getSmartExport($pks))
|
||||
{
|
||||
// set the key string
|
||||
if (componentbuilderHelper::checkString($model->key) && strlen($model->key) == 32)
|
||||
{
|
||||
$keyNotice = '<h1>' . JText::sprintf('COM_COMPONENTBUILDER_THE_PACKAGE_KEY_IS_CODESCODE', $model->key) . '</h1>';
|
||||
$keyNotice .= '<p>' . JText::_('COM_COMPONENTBUILDER_YOUR_DATA_IS_ENCRYPTED_WITH_A_AES_ONE_HUNDRED_AND_TWENTY_EIGHT_BIT_ENCRYPTION_USING_THE_ABOVE_THIRTY_TWO_CHARACTER_KEYBR_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') . '</h1>';
|
||||
// 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>';
|
||||
$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>';
|
||||
}
|
||||
// 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>';
|
||||
}
|
||||
// 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>';
|
||||
}
|
||||
// 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>';
|
||||
}
|
||||
// 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>';
|
||||
}
|
||||
// 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>';
|
||||
}
|
||||
$ownerDetails .= '</ul>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$ownerDetails = '<h2>' . JText::_('COM_COMPONENTBUILDER_PACKAGE_OWNER_NOT_SET') . '</h2>';
|
||||
$ownerDetails .= '<p>' . 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') . '</p>';
|
||||
$ownerDetails .= '<h3>' . JText::_('COM_COMPONENTBUILDER_YOU_SHOULD_ADD_THE_CORRECT_OWNER_DETAILS') . '</h3>';
|
||||
$ownerDetails .= '<p>' . 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') . '</p>';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$keyNotice = '<h1>' . JText::_('COM_COMPONENTBUILDER_THIS_PACKAGE_HAS_NO_KEY') . '</h1>';
|
||||
$ownerDetails = '<p>' . 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') . '</p>';
|
||||
}
|
||||
// Redirect to the list screen with success.
|
||||
$message = array();
|
||||
$message[] = '<h1>' . JText::_('COM_COMPONENTBUILDER_EXPORT_COMPLETED') . '</h1>';
|
||||
$message[] = '<p>' . JText::sprintf('COM_COMPONENTBUILDER_PATH_TO_THE_ZIPPED_PACKAGE_IS_CODESCODE_BR_S_S', $model->zipPath, $keyNotice, $ownerDetails) . '</p>';
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=joomla_components', false), implode('', $message), 'Success');
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Redirect to the list screen with error.
|
||||
$message = JText::_('COM_COMPONENTBUILDER_EXPORT_FAILED_PLEASE_TRY_AGAIN_LATTER');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=joomla_components', false), $message, 'error');
|
||||
return;
|
||||
}
|
||||
}
|
326
admin/controllers/language.php
Normal file
326
admin/controllers/language.php
Normal file
@ -0,0 +1,326 @@
|
||||
<?php
|
||||
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
|
||||
__ __ _ _____ _ _ __ __ _ _ _
|
||||
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
|
||||
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
|
||||
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
|
||||
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
|
||||
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
|
||||
| |
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 3 of this MVC
|
||||
@build 3rd April, 2017
|
||||
@created 3rd April, 2017
|
||||
@package Component Builder
|
||||
@subpackage language.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');
|
||||
|
||||
/**
|
||||
* Language Controller
|
||||
*/
|
||||
class ComponentbuilderControllerLanguage 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 = 'Languages'; // 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('language.access', 'com_componentbuilder');
|
||||
if (!$access)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
// In the absense of better information, revert to the component permissions.
|
||||
return JFactory::getUser()->authorise('language.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('language.access', 'com_componentbuilder.language.' . (int) $recordId) && $user->authorise('language.access', 'com_componentbuilder'));
|
||||
if (!$access)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($recordId)
|
||||
{
|
||||
// The record has been set. Check the record permissions.
|
||||
$permission = $user->authorise('language.edit', 'com_componentbuilder.language.' . (int) $recordId);
|
||||
if (!$permission)
|
||||
{
|
||||
if ($user->authorise('language.edit.own', 'com_componentbuilder.language.' . $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('language.edit.own', 'com_componentbuilder'))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// Since there is no permission, revert to the component permissions.
|
||||
return $user->authorise('language.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('Language', '', array());
|
||||
|
||||
// Preset the redirect
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=languages' . $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;
|
||||
}
|
||||
|
||||
}
|
326
admin/controllers/language_translation.php
Normal file
326
admin/controllers/language_translation.php
Normal file
@ -0,0 +1,326 @@
|
||||
<?php
|
||||
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
|
||||
__ __ _ _____ _ _ __ __ _ _ _
|
||||
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
|
||||
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
|
||||
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
|
||||
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
|
||||
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
|
||||
| |
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 39 of this MVC
|
||||
@build 7th April, 2017
|
||||
@created 3rd April, 2017
|
||||
@package Component Builder
|
||||
@subpackage language_translation.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');
|
||||
|
||||
/**
|
||||
* Language_translation Controller
|
||||
*/
|
||||
class ComponentbuilderControllerLanguage_translation 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 = 'Language_translations'; // 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('language_translation.access', 'com_componentbuilder');
|
||||
if (!$access)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
// In the absense of better information, revert to the component permissions.
|
||||
return JFactory::getUser()->authorise('language_translation.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('language_translation.access', 'com_componentbuilder.language_translation.' . (int) $recordId) && $user->authorise('language_translation.access', 'com_componentbuilder'));
|
||||
if (!$access)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($recordId)
|
||||
{
|
||||
// The record has been set. Check the record permissions.
|
||||
$permission = $user->authorise('language_translation.edit', 'com_componentbuilder.language_translation.' . (int) $recordId);
|
||||
if (!$permission)
|
||||
{
|
||||
if ($user->authorise('language_translation.edit.own', 'com_componentbuilder.language_translation.' . $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('language_translation.edit.own', 'com_componentbuilder'))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// Since there is no permission, revert to the component permissions.
|
||||
return $user->authorise('language_translation.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('Language_translation', '', array());
|
||||
|
||||
// Preset the redirect
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=language_translations' . $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/language_translations.php
Normal file
111
admin/controllers/language_translations.php
Normal file
@ -0,0 +1,111 @@
|
||||
<?php
|
||||
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
|
||||
__ __ _ _____ _ _ __ __ _ _ _
|
||||
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
|
||||
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
|
||||
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
|
||||
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
|
||||
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
|
||||
| |
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 39 of this MVC
|
||||
@build 7th April, 2017
|
||||
@created 3rd April, 2017
|
||||
@package Component Builder
|
||||
@subpackage language_translations.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');
|
||||
|
||||
/**
|
||||
* Language_translations Controller
|
||||
*/
|
||||
class ComponentbuilderControllerLanguage_translations extends JControllerAdmin
|
||||
{
|
||||
protected $text_prefix = 'COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS';
|
||||
/**
|
||||
* Proxy for getModel.
|
||||
* @since 2.5
|
||||
*/
|
||||
public function getModel($name = 'Language_translation', $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('language_translation.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('Language_translations');
|
||||
// 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,'Language_translations_'.$date->format('jS_F_Y'),'Language translations exported ('.$date->format('jS F, Y').')','language translations');
|
||||
}
|
||||
}
|
||||
// Redirect to the list screen with error.
|
||||
$message = JText::_('COM_COMPONENTBUILDER_EXPORT_FAILED');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=language_translations', 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('language_translation.import', 'com_componentbuilder') && $user->authorise('core.import', 'com_componentbuilder'))
|
||||
{
|
||||
// Get the import model
|
||||
$model = $this->getModel('Language_translations');
|
||||
// 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('language_translation_VDM_IMPORTHEADERS', $headers);
|
||||
$session->set('backto_VDM_IMPORT', 'language_translations');
|
||||
$session->set('dataType_VDM_IMPORTINTO', 'language_translation');
|
||||
// Redirect to import view.
|
||||
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_LANGUAGE_TRANSLATIONS');
|
||||
$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=language_translations', false), $message, 'error');
|
||||
return;
|
||||
}
|
||||
}
|
@ -10,11 +10,11 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 81 of this MVC
|
||||
@build 13th February, 2017
|
||||
@created 6th May, 2015
|
||||
@version @update number 3 of this MVC
|
||||
@build 3rd April, 2017
|
||||
@created 3rd April, 2017
|
||||
@package Component Builder
|
||||
@subpackage components.php
|
||||
@subpackage languages.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
|
||||
@ -30,16 +30,16 @@ defined('_JEXEC') or die('Restricted access');
|
||||
jimport('joomla.application.component.controlleradmin');
|
||||
|
||||
/**
|
||||
* Components Controller
|
||||
* Languages Controller
|
||||
*/
|
||||
class ComponentbuilderControllerComponents extends JControllerAdmin
|
||||
class ComponentbuilderControllerLanguages extends JControllerAdmin
|
||||
{
|
||||
protected $text_prefix = 'COM_COMPONENTBUILDER_COMPONENTS';
|
||||
protected $text_prefix = 'COM_COMPONENTBUILDER_LANGUAGES';
|
||||
/**
|
||||
* Proxy for getModel.
|
||||
* @since 2.5
|
||||
*/
|
||||
public function getModel($name = 'Component', $prefix = 'ComponentbuilderModel', $config = array())
|
||||
public function getModel($name = 'Language', $prefix = 'ComponentbuilderModel', $config = array())
|
||||
{
|
||||
$model = parent::getModel($name, $prefix, array('ignore_request' => true));
|
||||
|
||||
@ -52,7 +52,7 @@ class ComponentbuilderControllerComponents extends JControllerAdmin
|
||||
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
|
||||
// check if export is allowed for this user.
|
||||
$user = JFactory::getUser();
|
||||
if ($user->authorise('component.export', 'com_componentbuilder') && $user->authorise('core.export', 'com_componentbuilder'))
|
||||
if ($user->authorise('language.export', 'com_componentbuilder') && $user->authorise('core.export', 'com_componentbuilder'))
|
||||
{
|
||||
// Get the input
|
||||
$input = JFactory::getApplication()->input;
|
||||
@ -60,19 +60,19 @@ class ComponentbuilderControllerComponents extends JControllerAdmin
|
||||
// Sanitize the input
|
||||
JArrayHelper::toInteger($pks);
|
||||
// Get the model
|
||||
$model = $this->getModel('Components');
|
||||
$model = $this->getModel('Languages');
|
||||
// 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,'Components_'.$date->format('jS_F_Y'),'Components exported ('.$date->format('jS F, Y').')','components');
|
||||
ComponentbuilderHelper::xls($data,'Languages_'.$date->format('jS_F_Y'),'Languages exported ('.$date->format('jS F, Y').')','languages');
|
||||
}
|
||||
}
|
||||
// Redirect to the list screen with error.
|
||||
$message = JText::_('COM_COMPONENTBUILDER_EXPORT_FAILED');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=components', false), $message, 'error');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=languages', false), $message, 'error');
|
||||
return;
|
||||
}
|
||||
|
||||
@ -83,10 +83,10 @@ class ComponentbuilderControllerComponents extends JControllerAdmin
|
||||
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
|
||||
// check if import is allowed for this user.
|
||||
$user = JFactory::getUser();
|
||||
if ($user->authorise('component.import', 'com_componentbuilder') && $user->authorise('core.import', 'com_componentbuilder'))
|
||||
if ($user->authorise('language.import', 'com_componentbuilder') && $user->authorise('core.import', 'com_componentbuilder'))
|
||||
{
|
||||
// Get the import model
|
||||
$model = $this->getModel('Components');
|
||||
$model = $this->getModel('Languages');
|
||||
// get the headers to import
|
||||
$headers = $model->getExImPortHeaders();
|
||||
if (ComponentbuilderHelper::checkObject($headers))
|
||||
@ -94,18 +94,18 @@ class ComponentbuilderControllerComponents extends JControllerAdmin
|
||||
// Load headers to session.
|
||||
$session = JFactory::getSession();
|
||||
$headers = json_encode($headers);
|
||||
$session->set('component_VDM_IMPORTHEADERS', $headers);
|
||||
$session->set('backto_VDM_IMPORT', 'components');
|
||||
$session->set('dataType_VDM_IMPORTINTO', 'component');
|
||||
$session->set('language_VDM_IMPORTHEADERS', $headers);
|
||||
$session->set('backto_VDM_IMPORT', 'languages');
|
||||
$session->set('dataType_VDM_IMPORTINTO', 'language');
|
||||
// Redirect to import view.
|
||||
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_COMPONENTS');
|
||||
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_LANGUAGES');
|
||||
$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=components', false), $message, 'error');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=languages', false), $message, 'error');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
@ -11,7 +11,7 @@
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 67 of this MVC
|
||||
@build 11th February, 2017
|
||||
@build 1st April, 2017
|
||||
@created 18th May, 2015
|
||||
@package Component Builder
|
||||
@subpackage layout.php
|
||||
|
@ -11,7 +11,7 @@
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 67 of this MVC
|
||||
@build 11th February, 2017
|
||||
@build 1st April, 2017
|
||||
@created 18th May, 2015
|
||||
@package Component Builder
|
||||
@subpackage layouts.php
|
||||
@ -107,5 +107,5 @@ class ComponentbuilderControllerLayouts extends JControllerAdmin
|
||||
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_FAILED');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=layouts', false), $message, 'error');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 48 of this MVC
|
||||
@build 3rd February, 2017
|
||||
@version @update number 51 of this MVC
|
||||
@build 6th March, 2017
|
||||
@created 29th May, 2015
|
||||
@package Component Builder
|
||||
@subpackage site_view.php
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 48 of this MVC
|
||||
@build 3rd February, 2017
|
||||
@version @update number 51 of this MVC
|
||||
@build 6th March, 2017
|
||||
@created 29th May, 2015
|
||||
@package Component Builder
|
||||
@subpackage site_views.php
|
||||
@ -107,5 +107,5 @@ class ComponentbuilderControllerSite_views extends JControllerAdmin
|
||||
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_FAILED');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=site_views', false), $message, 'error');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -107,5 +107,5 @@ class ComponentbuilderControllerSnippets extends JControllerAdmin
|
||||
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_FAILED');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=snippets', false), $message, 'error');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,7 +11,7 @@
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 40 of this MVC
|
||||
@build 3rd February, 2017
|
||||
@build 1st April, 2017
|
||||
@created 26th May, 2015
|
||||
@package Component Builder
|
||||
@subpackage template.php
|
||||
|
@ -11,7 +11,7 @@
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version @update number 40 of this MVC
|
||||
@build 3rd February, 2017
|
||||
@build 1st April, 2017
|
||||
@created 26th May, 2015
|
||||
@package Component Builder
|
||||
@subpackage templates.php
|
||||
@ -107,5 +107,5 @@ class ComponentbuilderControllerTemplates extends JControllerAdmin
|
||||
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_FAILED');
|
||||
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=templates', false), $message, 'error');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -464,4 +464,3 @@ class Dropbox
|
||||
return function_exists('curl_version');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -87,7 +87,7 @@ class Compiler extends Infusion
|
||||
$this->removeFolder($this->componentPath . '/site');
|
||||
// clear form component xml
|
||||
$xmlPath = $this->componentPath . '/'. $this->fileContentStatic['###component###']. '.xml';
|
||||
$componentXML = JFile::read($xmlPath);
|
||||
$componentXML = file_get_contents($xmlPath);
|
||||
$textToSite = ComponentbuilderHelper::getBetween($componentXML,'<files folder="site">','</files>');
|
||||
$textToSiteLang = ComponentbuilderHelper::getBetween($componentXML,'<languages folder="site">','</languages>');
|
||||
$componentXML = str_replace(array('<files folder="site">'.$textToSite."</files>", '<languages folder="site">'.$textToSiteLang."</languages>"), array('',''), $componentXML);
|
||||
@ -107,6 +107,8 @@ class Compiler extends Infusion
|
||||
$this->setLangFileData();
|
||||
// move the update server into place
|
||||
$this->setUpdateServer();
|
||||
// set the global counters
|
||||
$this->setCountingStuff();
|
||||
// build read me
|
||||
$this->buildReadMe();
|
||||
// zip the component
|
||||
@ -134,7 +136,7 @@ class Compiler extends Infusion
|
||||
*/
|
||||
private function setLine($nr)
|
||||
{
|
||||
if ($this->loadLineNr)
|
||||
if ($this->debugLinenr)
|
||||
{
|
||||
return ' [Compiler '.$nr.']';
|
||||
}
|
||||
@ -150,29 +152,21 @@ class Compiler extends Infusion
|
||||
protected function updateFiles()
|
||||
{
|
||||
if (isset($this->newFiles['static']) && ComponentbuilderHelper::checkArray($this->newFiles['static']) && isset($this->newFiles['dynamic']) && ComponentbuilderHelper::checkArray($this->newFiles['dynamic']))
|
||||
{
|
||||
// we don't update lang now since we will still posible add custom code
|
||||
$langCheck = 'en-GB.com_'.$this->fileContentStatic['###component###'].'.';
|
||||
{
|
||||
// get the bom file
|
||||
$bom = JFile::read($this->bomPath);
|
||||
$bom = file_get_contents($this->bomPath);
|
||||
// first we do the static files
|
||||
foreach ($this->newFiles['static'] as $static)
|
||||
{
|
||||
if (JFile::exists($static['path']))
|
||||
{
|
||||
// skip lang files and store for later
|
||||
if (strpos($static['path'], $langCheck))
|
||||
{
|
||||
$this->langFiles[] = $static;
|
||||
continue;
|
||||
}
|
||||
$this->fileContentStatic['###FILENAME###'] = $static['name'];
|
||||
$php = '';
|
||||
if (ComponentbuilderHelper::checkFileType($static['name'],'php'))
|
||||
{
|
||||
$php = "<?php\n";
|
||||
}
|
||||
$string = JFile::read($static['path']);
|
||||
$string = file_get_contents($static['path']);
|
||||
if (strpos($string,'###BOM###') !== false)
|
||||
{
|
||||
list($wast,$code) = explode('###BOM###',$string);
|
||||
@ -209,7 +203,7 @@ class Compiler extends Infusion
|
||||
{
|
||||
$php = "<?php\n";
|
||||
}
|
||||
$string = JFile::read($file['path']);
|
||||
$string = file_get_contents($file['path']);
|
||||
if (strpos($string,'###BOM###') !== false)
|
||||
{
|
||||
list($bin,$code) = explode('###BOM###',$string);
|
||||
@ -302,6 +296,38 @@ class Compiler extends Infusion
|
||||
$this->fileContentStatic['###BUILDDATE###'] = $this->fileContentStatic['###BUILDDATE###GLOBAL'];
|
||||
$this->fileContentStatic['###VERSION###'] = $this->fileContentStatic['###VERSION###GLOBAL'];
|
||||
}
|
||||
|
||||
// set all global numbers
|
||||
protected function setCountingStuff()
|
||||
{
|
||||
// what is the size in terms of an A4 book
|
||||
$this->pageCount = round($this->lineCount / 56);
|
||||
// setup the unrealistic numbers
|
||||
$this->folderSeconds = $this->folderCount * 5;
|
||||
$this->fileSeconds = $this->fileCount * 5;
|
||||
$this->lineSeconds = $this->lineCount * 10;
|
||||
$this->seconds = $this->folderSeconds + $this->fileSeconds + $this->lineSeconds;
|
||||
$this->totalHours = round($this->seconds / 3600);
|
||||
$this->totalDays = round($this->totalHours / 8);
|
||||
// setup the more realistic numbers
|
||||
$this->secondsDebugging = $this->seconds / 4;
|
||||
$this->secondsPlanning = $this->seconds / 7;
|
||||
$this->secondsMapping = $this->seconds / 10;
|
||||
$this->secondsOffice = $this->seconds / 6;
|
||||
$this->actualSeconds = $this->folderSeconds + $this->fileSeconds + $this->lineSeconds + $this->secondsDebugging + $this->secondsPlanning + $this->secondsMapping + $this->secondsOffice;
|
||||
$this->actualTotalHours = round($this->actualSeconds / 3600);
|
||||
$this->actualTotalDays = round($this->actualTotalHours / 8);
|
||||
$this->debuggingHours = round($this->secondsDebugging / 3600);
|
||||
$this->planningHours = round($this->secondsPlanning / 3600);
|
||||
$this->mappingHours = round($this->secondsMapping / 3600);
|
||||
$this->officeHours = round($this->secondsOffice / 3600);
|
||||
// the actual time spent
|
||||
$this->actualHoursSpent = $this->actualTotalHours - $this->totalHours;
|
||||
$this->actualDaysSpent = $this->actualTotalDays - $this->totalDays;
|
||||
// calculate the projects actual time frame of completion
|
||||
$this->projectWeekTime = round($this->actualTotalDays / 5,1);
|
||||
$this->projectMonthTime = round($this->actualTotalDays / 24,1);
|
||||
}
|
||||
|
||||
private function buildReadMe()
|
||||
{
|
||||
@ -330,7 +356,7 @@ class Compiler extends Infusion
|
||||
$this->buildReadMeData();
|
||||
}
|
||||
// get the file
|
||||
$string = JFile::read($path);
|
||||
$string = file_get_contents($path);
|
||||
// update the file
|
||||
$answer = $this->setPlaceholders($string, $this->fileContentStatic);
|
||||
// add to zip array
|
||||
@ -339,55 +365,39 @@ class Compiler extends Infusion
|
||||
|
||||
private function buildReadMeData()
|
||||
{
|
||||
// setup the unrealistic numbers
|
||||
$folders = $this->folderCount * 5;
|
||||
$files = $this->fileCount * 5;
|
||||
$lines = $this->lineCount * 10;
|
||||
$seconds = $folders + $files + $lines;
|
||||
$totalHours = round($seconds / 3600);
|
||||
$totalDays = round($totalHours / 8);
|
||||
// setup the more realistic numbers
|
||||
$debugging = $seconds / 4;
|
||||
$planning = $seconds / 7;
|
||||
$mapping = $seconds / 10;
|
||||
$office = $seconds / 6;
|
||||
$seconds = $folders + $files + $lines + $debugging + $planning + $mapping + $office;
|
||||
$actualTotalHours = round($seconds / 3600);
|
||||
$actualTotalDays = round($actualTotalHours / 8);
|
||||
$debuggingHours = round($debugging / 3600);
|
||||
$planningHours = round($planning / 3600);
|
||||
$mappingHours = round($mapping / 3600);
|
||||
$officeHours = round($office / 3600);
|
||||
// the actual time spent
|
||||
$actualHoursSpent = $actualTotalHours - $totalHours;
|
||||
$actualDaysSpent = $actualTotalDays - $totalDays;
|
||||
// calculate the projects actual time frame of completion
|
||||
$projectWeekTime = round($actualTotalDays / 5,1);
|
||||
$projectMonthTime = round($actualTotalDays / 24,1);
|
||||
// set some defaults
|
||||
$this->fileContentStatic['###LINE_COUNT###'] = $this->lineCount;
|
||||
$this->fileContentStatic['###FILE_COUNT###'] = $this->fileCount;
|
||||
$this->fileContentStatic['###FOLDER_COUNT###'] = $this->folderCount;
|
||||
$this->fileContentStatic['###folders###'] = $folders;
|
||||
$this->fileContentStatic['###files###'] = $files;
|
||||
$this->fileContentStatic['###lines###'] = $lines;
|
||||
$this->fileContentStatic['###seconds###'] = $seconds;
|
||||
$this->fileContentStatic['###totalHours###'] = $totalHours;
|
||||
$this->fileContentStatic['###totalDays###'] = $totalDays;
|
||||
$this->fileContentStatic['###debugging###'] = $debugging;
|
||||
$this->fileContentStatic['###planning###'] = $planning;
|
||||
$this->fileContentStatic['###mapping###'] = $mapping;
|
||||
$this->fileContentStatic['###office###'] = $office;
|
||||
$this->fileContentStatic['###actualTotalHours###'] = $actualTotalHours;
|
||||
$this->fileContentStatic['###actualTotalDays###'] = $actualTotalDays;
|
||||
$this->fileContentStatic['###debuggingHours###'] = $debuggingHours;
|
||||
$this->fileContentStatic['###planningHours###'] = $planningHours;
|
||||
$this->fileContentStatic['###mappingHours###'] = $mappingHours;
|
||||
$this->fileContentStatic['###officeHours###'] = $officeHours;
|
||||
$this->fileContentStatic['###actualHoursSpent###'] = $actualHoursSpent;
|
||||
$this->fileContentStatic['###actualDaysSpent###'] = $actualDaysSpent;
|
||||
$this->fileContentStatic['###projectWeekTime###'] = $projectWeekTime;
|
||||
$this->fileContentStatic['###projectMonthTime###'] = $projectMonthTime;
|
||||
$this->fileContentStatic['###LINE_COUNT###'] = $this->lineCount;
|
||||
$this->fileContentStatic['###FILE_COUNT###'] = $this->fileCount;
|
||||
$this->fileContentStatic['###FOLDER_COUNT###'] = $this->folderCount;
|
||||
$this->fileContentStatic['###PAGE_COUNT###'] = $this->pageCount;
|
||||
$this->fileContentStatic['###folders###'] = $this->folderSeconds;
|
||||
$this->fileContentStatic['###foldersSeconds###'] = $this->folderSeconds;
|
||||
$this->fileContentStatic['###files###'] = $this->fileSeconds;
|
||||
$this->fileContentStatic['###filesSeconds###'] = $this->fileSeconds;
|
||||
$this->fileContentStatic['###lines###'] = $this->lineSeconds;
|
||||
$this->fileContentStatic['###linesSeconds###'] = $this->lineSeconds;
|
||||
$this->fileContentStatic['###seconds###'] = $this->actualSeconds;
|
||||
$this->fileContentStatic['###actualSeconds###'] = $this->actualSeconds;
|
||||
$this->fileContentStatic['###totalHours###'] = $this->totalHours;
|
||||
$this->fileContentStatic['###totalDays###'] = $this->totalDays;
|
||||
$this->fileContentStatic['###debugging###'] = $this->secondsDebugging;
|
||||
$this->fileContentStatic['###secondsDebugging###'] = $this->secondsDebugging;
|
||||
$this->fileContentStatic['###planning###'] = $this->secondsPlanning;
|
||||
$this->fileContentStatic['###secondsPlanning###'] = $this->secondsPlanning;
|
||||
$this->fileContentStatic['###mapping###'] = $this->secondsMapping;
|
||||
$this->fileContentStatic['###secondsMapping###'] = $this->secondsMapping;
|
||||
$this->fileContentStatic['###office###'] = $this->secondsOffice;
|
||||
$this->fileContentStatic['###secondsOffice###'] = $this->secondsOffice;
|
||||
$this->fileContentStatic['###actualTotalHours###'] = $this->actualTotalHours;
|
||||
$this->fileContentStatic['###actualTotalDays###'] = $this->actualTotalDays;
|
||||
$this->fileContentStatic['###debuggingHours###'] = $this->debuggingHours;
|
||||
$this->fileContentStatic['###planningHours###'] = $this->planningHours;
|
||||
$this->fileContentStatic['###mappingHours###'] = $this->mappingHours;
|
||||
$this->fileContentStatic['###officeHours###'] = $this->officeHours;
|
||||
$this->fileContentStatic['###actualHoursSpent###'] = $this->actualHoursSpent;
|
||||
$this->fileContentStatic['###actualDaysSpent###'] = $this->actualDaysSpent;
|
||||
$this->fileContentStatic['###projectWeekTime###'] = $this->projectWeekTime;
|
||||
$this->fileContentStatic['###projectMonthTime###'] = $this->projectMonthTime;
|
||||
}
|
||||
|
||||
private function zipComponent()
|
||||
@ -404,39 +414,9 @@ class Compiler extends Infusion
|
||||
}
|
||||
// the name of the zip file to create
|
||||
$this->filepath = $this->tempPath.'/'.$this->componentFolderName.'.zip';
|
||||
// store the current joomla working directory
|
||||
$joomla = getcwd();
|
||||
|
||||
// we are changing the working directory to the componet temp folder
|
||||
chdir($this->componentPath);
|
||||
|
||||
// the full file path of the zip file
|
||||
$this->filepath = JPath::clean($this->filepath);
|
||||
|
||||
// delete an existing zip file (or use an exclusion parameter in JFolder::files()
|
||||
JFile::delete($this->filepath);
|
||||
|
||||
// get a list of files in the current directory tree
|
||||
$files = JFolder::files('.', '', true, true);
|
||||
$zipArray = array();
|
||||
// setup the zip array
|
||||
foreach ($files as $file)
|
||||
{
|
||||
$tmp = array();
|
||||
$tmp['name'] = str_replace('./', '', $file);
|
||||
$tmp['data'] = JFile::read($file);
|
||||
$tmp['time'] = filemtime($file);
|
||||
$zipArray[] = $tmp;
|
||||
}
|
||||
|
||||
// change back to joomla working directory
|
||||
chdir($joomla);
|
||||
|
||||
// get the zip adapter
|
||||
$zip = JArchive::getAdapter('zip');
|
||||
|
||||
|
||||
//create the zip file
|
||||
if ($zip->create($this->filepath, $zipArray))
|
||||
if (ComponentbuilderHelper::zip($this->componentPath, $this->filepath))
|
||||
{
|
||||
// now move to backup if zip was made and backup is requered
|
||||
if ($this->backupPath && $this->dynamicIntegration)
|
||||
|
@ -52,6 +52,13 @@ class Get
|
||||
*/
|
||||
public $compilerPath;
|
||||
|
||||
/**
|
||||
* Switch to add custom code placeholders
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $addPlaceholders = false;
|
||||
|
||||
/**
|
||||
* The Component data
|
||||
*
|
||||
@ -153,14 +160,21 @@ class Get
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
public $loadLineNr = false;
|
||||
public $debugLinenr = false;
|
||||
|
||||
/*
|
||||
* The percentage when a language should be added
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
public $percentageLanguageAdd = 0;
|
||||
|
||||
/**
|
||||
* The Language prefix
|
||||
* The Placholder Language prefix
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $langPrefix = 'COM_';
|
||||
public $langPrefix;
|
||||
|
||||
/**
|
||||
* The Language content
|
||||
@ -169,6 +183,34 @@ class Get
|
||||
*/
|
||||
public $langContent = array();
|
||||
|
||||
/**
|
||||
* The Languages bucket
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $languages = array('en-GB' => array());
|
||||
|
||||
/**
|
||||
* The Multi Languages bucket
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $multiLangString = array();
|
||||
|
||||
/**
|
||||
* The new lang to add
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $newLangStrings = array();
|
||||
|
||||
/**
|
||||
* The existing lang to update
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $existingLangStrings = array();
|
||||
|
||||
/**
|
||||
* The Component Code Name
|
||||
*
|
||||
@ -450,18 +492,18 @@ class Get
|
||||
// set the component ID
|
||||
$this->componentID = (int) $config['componentId'];
|
||||
// set this components code name
|
||||
if ($name_code = ComponentbuilderHelper::getVar('component', $this->componentID, 'id', 'name_code'))
|
||||
if ($name_code = ComponentbuilderHelper::getVar('joomla_component', $this->componentID, 'id', 'name_code'))
|
||||
{
|
||||
// set lang prefix
|
||||
$this->langPrefix .= ComponentbuilderHelper::safeString($name_code,'U');
|
||||
$this->langPrefix = 'COM_'.ComponentbuilderHelper::safeString($name_code,'U');
|
||||
// set component code name
|
||||
$this->componentCodeName = ComponentbuilderHelper::safeString($name_code);
|
||||
// set if placeholders should be added to customcode
|
||||
$global = ((int) ComponentbuilderHelper::getVar('component', $this->componentID, 'id', 'add_placeholders') == 1) ? true:false;
|
||||
$global = ((int) ComponentbuilderHelper::getVar('joomla_component', $this->componentID, 'id', 'add_placeholders') == 1) ? true:false;
|
||||
$this->addPlaceholders = ((int) $config['addPlaceholders'] == 0) ? false : (((int) $config['addPlaceholders'] == 1) ? true : $global);
|
||||
// set if line numbers should be added to comments
|
||||
$global = ((int) ComponentbuilderHelper::getVar('component', $this->componentID, 'id', 'debug_linenr') == 1) ? true:false;
|
||||
$this->loadLineNr = ((int) $config['debugLinenr'] == 0) ? false : (((int) $config['debugLinenr'] == 1) ? true : $global);
|
||||
$global = ((int) ComponentbuilderHelper::getVar('joomla_component', $this->componentID, 'id', 'debug_linenr') == 1) ? true:false;
|
||||
$this->debugLinenr = ((int) $config['debugLinenr'] == 0) ? false : (((int) $config['debugLinenr'] == 1) ? true : $global);
|
||||
// set the current user
|
||||
$this->user = JFactory::getUser();
|
||||
// Get a db connection.
|
||||
@ -476,7 +518,9 @@ class Get
|
||||
}
|
||||
// get the component data
|
||||
$this->componentData = $this->getComponentData();
|
||||
|
||||
// set the percentage when a language can be added
|
||||
$this->percentageLanguageAdd = (int) $this->params->get('percentagelanguageadd', 50);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -493,7 +537,7 @@ class Get
|
||||
*/
|
||||
private function setLine($nr)
|
||||
{
|
||||
if ($this->loadLineNr)
|
||||
if ($this->debugLinenr)
|
||||
{
|
||||
return ' [Get '.$nr.']';
|
||||
}
|
||||
@ -514,7 +558,7 @@ class Get
|
||||
$query = $this->db->getQuery(true);
|
||||
|
||||
$query->select('a.*');
|
||||
$query->from('#__componentbuilder_component AS a');
|
||||
$query->from('#__componentbuilder_joomla_component AS a');
|
||||
$query->where($this->db->quoteName('a.id') . ' = '. (int) $this->componentID);
|
||||
|
||||
// Reset the query using our newly populated query object.
|
||||
@ -522,6 +566,14 @@ class Get
|
||||
|
||||
// Load the results as a list of stdClass objects
|
||||
$component = $this->db->loadObject();
|
||||
|
||||
// set component place holders
|
||||
$this->placeholders['###component###'] = ComponentbuilderHelper::safeString($component->name_code);
|
||||
$this->placeholders['###Component###'] = ComponentbuilderHelper::safeString($component->name_code, 'F');
|
||||
$this->placeholders['###COMPONENT###'] = ComponentbuilderHelper::safeString($component->name_code, 'U');
|
||||
$this->placeholders['[[[component]]]'] = $this->placeholders['###component###'];
|
||||
$this->placeholders['[[[Component]]]'] = $this->placeholders['###Component###'];
|
||||
$this->placeholders['[[[COMPONENT]]]'] = $this->placeholders['###COMPONENT###'];
|
||||
// set component sales name
|
||||
$component->sales_name = ComponentbuilderHelper::safeString($component->system_name);
|
||||
// ensure version naming is correct
|
||||
@ -662,7 +714,7 @@ class Get
|
||||
}
|
||||
|
||||
// set the site_view data
|
||||
$site_views = json_decode($component->addsite_views,true);
|
||||
$site_views = json_decode($component->addsite_views,true);
|
||||
if (ComponentbuilderHelper::checkArray($site_views))
|
||||
{
|
||||
foreach ($site_views as $option => $values)
|
||||
@ -683,11 +735,14 @@ class Get
|
||||
$this->lang = 'site';
|
||||
$this->target = 'site';
|
||||
// load the view and field data
|
||||
foreach ($component->site_views as $key => &$view)
|
||||
if (isset($component->site_views) && ComponentbuilderHelper::checkArray($component->site_views))
|
||||
{
|
||||
// TODO this is a temp fix until front view is added
|
||||
$view['view'] = $view['siteview'];
|
||||
$view['settings'] = $this->getCustomViewData($view['view']);
|
||||
foreach ($component->site_views as $key => &$view)
|
||||
{
|
||||
// has become a lacacy issue, can't remove this
|
||||
$view['view'] = $view['siteview'];
|
||||
$view['settings'] = $this->getCustomViewData($view['view']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -713,11 +768,14 @@ class Get
|
||||
$this->lang = 'admin';
|
||||
$this->target = 'custom_admin';
|
||||
// load the view and field data
|
||||
foreach ($component->custom_admin_views as $key => &$view)
|
||||
if (isset($component->custom_admin_views) && ComponentbuilderHelper::checkArray($component->custom_admin_views))
|
||||
{
|
||||
// TODO this is a temp fix until front view is added
|
||||
$view['view'] = $view['customadminview'];
|
||||
$view['settings'] = $this->getCustomViewData($view['view'], 'custom_admin_view');
|
||||
foreach ($component->custom_admin_views as $key => &$view)
|
||||
{
|
||||
// has become a lacacy issue, can't remove this
|
||||
$view['view'] = $view['customadminview'];
|
||||
$view['settings'] = $this->getCustomViewData($view['view'], 'custom_admin_view');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -793,7 +851,7 @@ class Get
|
||||
{
|
||||
foreach ($addScriptTypes as $scriptType)
|
||||
{
|
||||
if (isset($component->{'add_'.$scriptMethod.'_'.$scriptType}) && $component->{'add_'.$scriptMethod.'_'.$scriptType} == 1)
|
||||
if (isset($component->{'add_'.$scriptMethod.'_'.$scriptType}) && $component->{'add_'.$scriptMethod.'_'.$scriptType} == 1 && ComponentbuilderHelper::checkString($component->{$scriptMethod.'_'.$scriptType}))
|
||||
{
|
||||
$this->customScriptBuilder[$scriptMethod][$scriptType] = $this->setDynamicValues(base64_decode($component->{$scriptMethod.'_'.$scriptType}));
|
||||
}
|
||||
@ -805,7 +863,7 @@ class Get
|
||||
}
|
||||
}
|
||||
// add_php_helper
|
||||
if ($component->add_php_helper_admin == 1)
|
||||
if ($component->add_php_helper_admin == 1 && ComponentbuilderHelper::checkString($component->php_helper_admin))
|
||||
{
|
||||
$this->lang = 'admin';
|
||||
$this->customScriptBuilder['component_php_helper_admin'] = PHP_EOL.PHP_EOL.$this->setDynamicValues(base64_decode($component->php_helper_admin));
|
||||
@ -816,7 +874,7 @@ class Get
|
||||
}
|
||||
unset($component->php_helper);
|
||||
// add_admin_event
|
||||
if ($component->add_admin_event == 1)
|
||||
if ($component->add_admin_event == 1 && ComponentbuilderHelper::checkString($component->php_admin_event))
|
||||
{
|
||||
$this->lang = 'admin';
|
||||
$this->customScriptBuilder['component_php_admin_event'] = $this->setDynamicValues(base64_decode($component->php_admin_event));
|
||||
@ -827,7 +885,7 @@ class Get
|
||||
}
|
||||
unset($component->php_admin_event);
|
||||
// add_php_helper_both
|
||||
if ($component->add_php_helper_both == 1)
|
||||
if ($component->add_php_helper_both == 1 && ComponentbuilderHelper::checkString($component->php_helper_both))
|
||||
{
|
||||
$this->lang = 'both';
|
||||
$this->customScriptBuilder['component_php_helper_both'] = PHP_EOL.PHP_EOL.$this->setDynamicValues(base64_decode($component->php_helper_both));
|
||||
@ -837,7 +895,7 @@ class Get
|
||||
$this->customScriptBuilder['component_php_helper_both'] = '';
|
||||
}
|
||||
// add_php_helper_site
|
||||
if ($component->add_php_helper_site == 1)
|
||||
if ($component->add_php_helper_site == 1 && ComponentbuilderHelper::checkString($component->php_helper_site))
|
||||
{
|
||||
$this->lang = 'site';
|
||||
$this->customScriptBuilder['component_php_helper_site'] = PHP_EOL.PHP_EOL.$this->setDynamicValues(base64_decode($component->php_helper_site));
|
||||
@ -848,7 +906,7 @@ class Get
|
||||
}
|
||||
unset($component->php_helper);
|
||||
// add_site_event
|
||||
if ($component->add_site_event == 1)
|
||||
if ($component->add_site_event == 1 && ComponentbuilderHelper::checkString($component->php_site_event))
|
||||
{
|
||||
$this->lang = 'site';
|
||||
$this->customScriptBuilder['component_php_site_event'] = $this->setDynamicValues(base64_decode($component->php_site_event));
|
||||
@ -885,7 +943,7 @@ class Get
|
||||
}
|
||||
|
||||
// dashboard methods
|
||||
if ($component->add_php_dashboard_methods)
|
||||
if ($component->add_php_dashboard_methods && ComponentbuilderHelper::checkString($component->php_dashboard_methods))
|
||||
{
|
||||
$nowLang = $this->lang;
|
||||
$this->lang = 'admin';
|
||||
@ -1209,7 +1267,7 @@ class Get
|
||||
$addArrayJ = array('javascript_view_file','javascript_view_footer','javascript_views_file','javascript_views_footer');
|
||||
foreach ($addArrayJ as $scripter)
|
||||
{
|
||||
if (isset($view->{'add_'.$scripter}) && $view->{'add_'.$scripter} == 1)
|
||||
if (isset($view->{'add_'.$scripter}) && $view->{'add_'.$scripter} == 1 && ComponentbuilderHelper::checkString($view->$scripter))
|
||||
{
|
||||
$view->$scripter = $this->setDynamicValues(base64_decode($view->$scripter));
|
||||
$scripter_target = str_replace('javascript_', '', $scripter);
|
||||
@ -1222,8 +1280,7 @@ class Get
|
||||
$this->customScriptBuilder[$scripter_target][$name_single] = '';
|
||||
}
|
||||
$this->customScriptBuilder[$scripter_target][$name_single] .= $view->$scripter;
|
||||
if (strpos($view->$scripter,"token") !== false || strpos($view->$scripter,"task=ajax") !== false ||
|
||||
strpos($this->$scripter,"[CUSTOM"."CODE=") !== false) // <-- since it could have ajax in it, and we can know for sure at this point
|
||||
if (strpos($view->$scripter,"token") !== false || strpos($view->$scripter,"task=ajax") !== false)
|
||||
{
|
||||
if (!$this->customScriptBuilder['token'][$name_single])
|
||||
{
|
||||
@ -1260,14 +1317,24 @@ class Get
|
||||
// add the custom buttons
|
||||
if (isset($view->add_custom_button) && $view->add_custom_button == 1)
|
||||
{
|
||||
if (ComponentbuilderHelper::checkString($view->php_model) && $view->php_mode !== '//')
|
||||
// set for the edit views
|
||||
if (ComponentbuilderHelper::checkString($view->php_model))
|
||||
{
|
||||
$view->php_model = $this->setDynamicValues(base64_decode($view->php_model));
|
||||
}
|
||||
if (ComponentbuilderHelper::checkString($view->php_controller) && trim($view->php_controller) !== '//')
|
||||
if (ComponentbuilderHelper::checkString($view->php_controller))
|
||||
{
|
||||
$view->php_controller = $this->setDynamicValues(base64_decode($view->php_controller));
|
||||
}
|
||||
// set for the list views
|
||||
if (isset($view->php_model_list) && ComponentbuilderHelper::checkString($view->php_model_list))
|
||||
{
|
||||
$view->php_model_list = $this->setDynamicValues(base64_decode($view->php_model_list));
|
||||
}
|
||||
if (isset($view->php_controller_list) && ComponentbuilderHelper::checkString($view->php_controller_list))
|
||||
{
|
||||
$view->php_controller_list = $this->setDynamicValues(base64_decode($view->php_controller_list));
|
||||
}
|
||||
// set the button array
|
||||
$buttons = json_decode($view->custom_button,true);
|
||||
unset($view->custom_button);
|
||||
@ -1286,7 +1353,7 @@ class Get
|
||||
// set custom import scripts
|
||||
if (isset($view->add_custom_import) && $view->add_custom_import == 1)
|
||||
{
|
||||
$addImportArray = array('php_import_display','php_import','php_import_setdata','php_import_save','html_import_view');
|
||||
$addImportArray = array('php_import_ext','php_import_display','php_import','php_import_setdata','php_import_save','html_import_view');
|
||||
foreach ($addImportArray as $importScripter)
|
||||
{
|
||||
if (isset($view->$importScripter) && strlen($view->$importScripter) > 0)
|
||||
@ -1294,6 +1361,11 @@ class Get
|
||||
$this->customScriptBuilder[$importScripter]['import_'.$name_list] = $this->setDynamicValues(base64_decode($view->$importScripter));
|
||||
unset($view->$importScripter);
|
||||
}
|
||||
else
|
||||
{
|
||||
// load the default
|
||||
$this->customScriptBuilder[$importScripter]['import_'.$name_list] = ComponentbuilderHelper::getImportScripts($importScripter, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1442,7 +1514,7 @@ class Get
|
||||
$addArray = array('php_view','php_jview','php_jview_display','php_document','js_document','css_document','css');
|
||||
foreach ($addArray as $scripter)
|
||||
{
|
||||
if (isset($view->{'add_'.$scripter}) && $view->{'add_'.$scripter} == 1)
|
||||
if (isset($view->{'add_'.$scripter}) && $view->{'add_'.$scripter} == 1 && ComponentbuilderHelper::checkString($view->$scripter))
|
||||
{
|
||||
$view->$scripter = $this->setDynamicValues(base64_decode($view->$scripter));
|
||||
// set uikit to views
|
||||
@ -1485,6 +1557,18 @@ class Get
|
||||
$this->getModule[$this->target][$view->code] = true;
|
||||
}
|
||||
}
|
||||
// (TODO) we may want to automate this .... lets see if someone asks
|
||||
// if (strpos($view->$scripter,"token") !== false || strpos($view->$scripter,"task=ajax") !== false)
|
||||
// {
|
||||
// if(!isset($this->customScriptBuilder['token']))
|
||||
// {
|
||||
// $this->customScriptBuilder['token'] = array();
|
||||
// }
|
||||
// if (!isset($this->customScriptBuilder['token'][$this->target.$view->code]) || !$this->customScriptBuilder['token'][$this->target.$view->code])
|
||||
// {
|
||||
// $this->customScriptBuilder['token'][$this->target.$view->code] = true;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
// add_Ajax for this view
|
||||
@ -1578,7 +1662,7 @@ class Get
|
||||
$field->type = $field->fieldtype;
|
||||
|
||||
// load the values form params
|
||||
$field->xml = json_decode($field->xml);
|
||||
$field->xml = $this->setDynamicValues(json_decode($field->xml));
|
||||
|
||||
// load the type values form type params
|
||||
$properties = json_decode($field->type_properties,true);
|
||||
@ -1619,7 +1703,7 @@ class Get
|
||||
if (ComponentbuilderHelper::checkString($name_single) && !isset($this->customFieldScript[$name_single][$id]))
|
||||
{
|
||||
// add_javascript_view_footer
|
||||
if ($this->_fieldData[$id]->add_javascript_view_footer == 1)
|
||||
if ($this->_fieldData[$id]->add_javascript_view_footer == 1 && ComponentbuilderHelper::checkString($this->_fieldData[$id]->javascript_view_footer))
|
||||
{
|
||||
if(!isset($this->customScriptBuilder['view_footer']))
|
||||
{
|
||||
@ -1636,8 +1720,7 @@ class Get
|
||||
}
|
||||
$this->customScriptBuilder['view_footer'][$name_single] .= PHP_EOL.$this->_fieldData[$id]->javascript_view_footer;
|
||||
if ( strpos($this->_fieldData[$id]->javascript_view_footer,"token") !== false ||
|
||||
strpos($this->_fieldData[$id]->javascript_view_footer,"task=ajax") !== false ||
|
||||
strpos($this->_fieldData[$id]->javascript_view_footer,"[CUSTOM"."CODE=") !== false) // <-- since it could have ajax in it, and we can know for sure at this point
|
||||
strpos($this->_fieldData[$id]->javascript_view_footer,"task=ajax") !== false)
|
||||
{
|
||||
if(!isset($this->customScriptBuilder['token']))
|
||||
{
|
||||
@ -1678,7 +1761,7 @@ class Get
|
||||
if (ComponentbuilderHelper::checkString($name_list) && !isset($this->customFieldScript[$name_list][$id]))
|
||||
{
|
||||
// add_javascript_views_footer
|
||||
if ($this->_fieldData[$id]->add_javascript_views_footer == 1)
|
||||
if ($this->_fieldData[$id]->add_javascript_views_footer == 1 && ComponentbuilderHelper::checkString($this->_fieldData[$id]->javascript_views_footer))
|
||||
{
|
||||
if(!isset($this->customScriptBuilder['views_footer']))
|
||||
{
|
||||
@ -1695,8 +1778,7 @@ class Get
|
||||
}
|
||||
$this->customScriptBuilder['views_footer'][$name_list] .= $this->_fieldData[$id]->javascript_views_footer;
|
||||
if ( strpos($this->_fieldData[$id]->javascript_views_footer,"token") !== false ||
|
||||
strpos($this->_fieldData[$id]->javascript_views_footer,"task=ajax") !== false ||
|
||||
strpos($this->_fieldData[$id]->javascript_views_footer,"[CUSTOM"."CODE=") !== false) // <-- since it could have ajax in it, and we can know for sure at this point
|
||||
strpos($this->_fieldData[$id]->javascript_views_footer,"task=ajax") !== false)
|
||||
{
|
||||
if(!isset($this->customScriptBuilder['token']))
|
||||
{
|
||||
@ -1772,12 +1854,12 @@ class Get
|
||||
foreach ($results as $nr => &$result)
|
||||
{
|
||||
// add calculations if set
|
||||
if($result->addcalculation == 1)
|
||||
if($result->addcalculation == 1 && ComponentbuilderHelper::checkString($result->php_calculation))
|
||||
{
|
||||
$result->php_calculation = base64_decode($result->php_calculation);
|
||||
$result->php_calculation = $this->setDynamicValues(base64_decode($result->php_calculation));
|
||||
}
|
||||
// add php custom scripting (php_before_getitem)
|
||||
if($result->add_php_before_getitem == 1)
|
||||
if($result->add_php_before_getitem == 1 && ComponentbuilderHelper::checkString($result->php_before_getitem))
|
||||
{
|
||||
if (!isset($this->customScriptBuilder[$this->target.'_php_before_getitem'][$view_code]))
|
||||
{
|
||||
@ -1788,7 +1870,7 @@ class Get
|
||||
unset($result->php_before_getitem);
|
||||
}
|
||||
// add php custom scripting (php_after_getitem)
|
||||
if($result->add_php_after_getitem == 1)
|
||||
if($result->add_php_after_getitem == 1 && ComponentbuilderHelper::checkString($result->php_after_getitem))
|
||||
{
|
||||
if (!isset($this->customScriptBuilder[$this->target.'_php_after_getitem'][$view_code]))
|
||||
{
|
||||
@ -1799,7 +1881,7 @@ class Get
|
||||
unset($result->php_after_getitem);
|
||||
}
|
||||
// add php custom scripting (php_before_getitems)
|
||||
if($result->add_php_before_getitems == 1)
|
||||
if($result->add_php_before_getitems == 1 && ComponentbuilderHelper::checkString($result->php_before_getitems))
|
||||
{
|
||||
if (!isset($this->customScriptBuilder[$this->target.'_php_before_getitems'][$view_code]))
|
||||
{
|
||||
@ -1810,7 +1892,7 @@ class Get
|
||||
unset($result->php_before_getitems);
|
||||
}
|
||||
// add php custom scripting (php_after_getitems)
|
||||
if($result->add_php_after_getitems == 1)
|
||||
if($result->add_php_after_getitems == 1 && ComponentbuilderHelper::checkString($result->php_after_getitems))
|
||||
{
|
||||
if (!isset($this->customScriptBuilder[$this->target.'_php_after_getitems'][$view_code]))
|
||||
{
|
||||
@ -1821,7 +1903,7 @@ class Get
|
||||
unset($result->php_after_getitems);
|
||||
}
|
||||
// add php custom scripting (php_getlistquery)
|
||||
if($result->add_php_getlistquery == 1)
|
||||
if($result->add_php_getlistquery == 1 && ComponentbuilderHelper::checkString($result->php_getlistquery))
|
||||
{
|
||||
if (!isset($this->customScriptBuilder[$this->target.'_php_getlistquery'][$view_code]))
|
||||
{
|
||||
@ -2187,7 +2269,7 @@ class Get
|
||||
if ($k_ey == $n_ame || $key == $name)
|
||||
{
|
||||
$php_view = '';
|
||||
if ($row->add_php_view == 1)
|
||||
if ($row->add_php_view == 1 && ComponentbuilderHelper::checkString($row->php_view))
|
||||
{
|
||||
$php_view = $this->setDynamicValues(base64_decode($row->php_view));
|
||||
}
|
||||
@ -2278,7 +2360,11 @@ class Get
|
||||
$langHolders["JText::sprintf('".$string."',"] = "JText::sprintf('".$keyLang."',";
|
||||
$langHolders['JText::sprintf("'.$string.'",'] = 'JText::sprintf("'.$keyLang.'",';
|
||||
}
|
||||
$content = $this->setPlaceholders($content, $langHolders);
|
||||
// only continue if we have value to replace
|
||||
if (isset($langHolders) && ComponentbuilderHelper::checkArray($langHolders))
|
||||
{
|
||||
$content = $this->setPlaceholders($content, $langHolders);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $content;
|
||||
@ -2693,7 +2779,11 @@ class Get
|
||||
*/
|
||||
public function setDynamicValues($string)
|
||||
{
|
||||
return $this->setLangStrings($this->setCustomCodeData($string));
|
||||
if (ComponentbuilderHelper::checkString($string))
|
||||
{
|
||||
return $this->setLangStrings($this->setCustomCodeData($string));
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2857,7 +2947,7 @@ class Get
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!$keyPlaceholder = array_search($item['id'], $this->functionNameMemory))
|
||||
if (($keyPlaceholder = array_search($item['id'], $this->functionNameMemory)) === false)
|
||||
{
|
||||
$keyPlaceholder = $item['id'];
|
||||
}
|
||||
@ -2926,6 +3016,352 @@ class Get
|
||||
unset($this->$remove);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the other languages
|
||||
*
|
||||
* @param array $values The lang strings to get
|
||||
*
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
public function getMultiLangStrings($values)
|
||||
{
|
||||
// Create a new query object.
|
||||
$query = $this->db->getQuery(true);
|
||||
$query->from($this->db->quoteName('#__componentbuilder_language_translation','a'));
|
||||
if (ComponentbuilderHelper::checkArray($values))
|
||||
{
|
||||
$query->select($this->db->quoteName(array('a.id','a.translation','a.entranslation','a.components','a.published')));
|
||||
$query->where($this->db->quoteName('a.entranslation') . ' IN (' . implode(',',array_map(function($a){ return $this->db->quote($a); }, $values)) . ')');
|
||||
$this->db->setQuery($query);
|
||||
$this->db->execute();
|
||||
if ($this->db->getNumRows())
|
||||
{
|
||||
return $this->db->loadAssocList('entranslation');
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Current language values to DB
|
||||
*
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
public function setLangPlaceholders($strings)
|
||||
{
|
||||
$counterInsert = 0;
|
||||
$counterUpdate = 0;
|
||||
$today = JFactory::getDate()->toSql();
|
||||
foreach ($this->languages['en-GB'] as $area => $placeholders)
|
||||
{
|
||||
foreach ($placeholders as $placeholder => $string)
|
||||
{
|
||||
// to keep or remove
|
||||
$remove = false;
|
||||
// build the tranlations
|
||||
if (ComponentbuilderHelper::checkString($string) && isset($this->multiLangString[$string]))
|
||||
{
|
||||
// make sure we have converted the string to array
|
||||
if (isset($this->multiLangString[$string]['translation']) && ComponentbuilderHelper::checkJson($this->multiLangString[$string]['translation']))
|
||||
{
|
||||
$this->multiLangString[$string]['translation'] = json_decode($this->multiLangString[$string]['translation'], true);
|
||||
}
|
||||
// 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']))
|
||||
{
|
||||
// great lets build the multi languages strings
|
||||
foreach ($this->multiLangString[$string]['translation']['translation'] as $at => $lang)
|
||||
{
|
||||
$_tag = $this->multiLangString[$string]['translation']['language'][$at];
|
||||
// build arrays
|
||||
if (!isset($this->languages[$_tag]))
|
||||
{
|
||||
$this->languages[$_tag] = array();
|
||||
}
|
||||
if (!isset($this->languages[$_tag][$area]))
|
||||
{
|
||||
$this->languages[$_tag][$area] = array();
|
||||
}
|
||||
$this->languages[$_tag][$area][$placeholder] = $lang;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// remove this string not to be checked again
|
||||
$remove = true;
|
||||
}
|
||||
}
|
||||
// do the database managment
|
||||
if(ComponentbuilderHelper::checkString($string) && ($key = array_search($string, $strings)) !== false)
|
||||
{
|
||||
if (isset($this->multiLangString[$string]))
|
||||
{
|
||||
// update the existing placeholder in db
|
||||
$id = $this->multiLangString[$string]['id'];
|
||||
if (ComponentbuilderHelper::checkJson($this->multiLangString[$string]['components']))
|
||||
{
|
||||
$components = (array) json_decode($this->multiLangString[$string]['components'], true);
|
||||
// check if we should add the component ID
|
||||
if (in_array($this->componentID, $components))
|
||||
{
|
||||
// only skip the update if the string is published and has the component ID
|
||||
if ($this->multiLangString[$string]['published'] == 1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$components[] = $this->componentID;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$components = array($this->componentID);
|
||||
}
|
||||
// start the bucket for this lang
|
||||
$this->setUpdateExistingLangStrings($id, $components, 1, $today, $counterUpdate);
|
||||
|
||||
$counterUpdate++;
|
||||
|
||||
// load to db
|
||||
$this->setExistingLangStrings(50);
|
||||
// remove string if needed
|
||||
if ($remove)
|
||||
{
|
||||
unset($this->multiLangString[$string]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// add the new lang placeholder to the db
|
||||
$this->newLangStrings[$counterInsert] = array();
|
||||
$this->newLangStrings[$counterInsert][] = $this->db->quote(json_encode(array($this->componentID))); // 'components'
|
||||
$this->newLangStrings[$counterInsert][] = $this->db->quote($string); // 'entranslation'
|
||||
$this->newLangStrings[$counterInsert][] = $this->db->quote(1); // 'published'
|
||||
$this->newLangStrings[$counterInsert][] = $this->db->quote($today); // 'created'
|
||||
$this->newLangStrings[$counterInsert][] = $this->db->quote((int) $this->user->id); // 'created_by'
|
||||
$this->newLangStrings[$counterInsert][] = $this->db->quote(1); // 'version'
|
||||
$this->newLangStrings[$counterInsert][] = $this->db->quote(1); // 'access'
|
||||
|
||||
$counterInsert++;
|
||||
|
||||
// load to db
|
||||
$this->setNewLangStrings(100);
|
||||
}
|
||||
// only set the string once
|
||||
unset($strings[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
// just to make sure all is done
|
||||
$this->setExistingLangStrings();
|
||||
$this->setNewLangStrings();
|
||||
}
|
||||
|
||||
/**
|
||||
* store the language placeholders
|
||||
*
|
||||
* @param int $when To set when to update
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
protected function setNewLangStrings($when = 1)
|
||||
{
|
||||
if (count($this->newLangStrings) >= $when)
|
||||
{
|
||||
// Create a new query object.
|
||||
$query = $this->db->getQuery(true);
|
||||
$continue = false;
|
||||
// Insert columns.
|
||||
$columns = array('components','entranslation','published','created','created_by','version','access');
|
||||
// Prepare the insert query.
|
||||
$query->insert($this->db->quoteName('#__componentbuilder_language_translation'));
|
||||
$query->columns($this->db->quoteName($columns));
|
||||
foreach($this->newLangStrings as $values)
|
||||
{
|
||||
if (count($values) == 7)
|
||||
{
|
||||
$query->values(implode(',', $values));
|
||||
$continue = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO line mismatch... should not happen
|
||||
}
|
||||
}
|
||||
// clear the values array
|
||||
$this->newLangStrings = array();
|
||||
if (!$continue)
|
||||
{
|
||||
return false; // insure we dont continue if no values were loaded
|
||||
}
|
||||
// Set the query using our newly populated query object and execute it.
|
||||
$this->db->setQuery($query);
|
||||
$this->db->execute();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* update the language placeholders
|
||||
*
|
||||
* @param int $when To set when to update
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
protected function setExistingLangStrings($when = 1)
|
||||
{
|
||||
if (count($this->existingLangStrings) >= $when)
|
||||
{
|
||||
foreach($this->existingLangStrings as $values)
|
||||
{
|
||||
// Create a new query object.
|
||||
$query = $this->db->getQuery(true);
|
||||
// Prepare the update query.
|
||||
$query->update($this->db->quoteName('#__componentbuilder_language_translation'))->set($values['fields'])->where($values['conditions']);
|
||||
// Set the query using our newly populated query object and execute it.
|
||||
$this->db->setQuery($query);
|
||||
$this->db->execute();
|
||||
}
|
||||
// clear the values array
|
||||
$this->existingLangStrings = array();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove exiting language translation stings
|
||||
*
|
||||
* @param int $id To string ID to remove
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
protected function removeExitingLangString($id)
|
||||
{
|
||||
// Create a new query object.
|
||||
$query = $this->db->getQuery(true);
|
||||
|
||||
// delete all custom keys for user 1001.
|
||||
$conditions = array(
|
||||
$this->db->quoteName('id') . ' = ' . (int) $id
|
||||
);
|
||||
|
||||
$query->delete($this->db->quoteName('#__componentbuilder_language_translation'));
|
||||
$query->where($conditions);
|
||||
|
||||
$this->db->setQuery($query);
|
||||
$this->db->execute();
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to purge the unused languge strings
|
||||
*
|
||||
* @param string $values the active strings
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
public function purgeLanuageStrings($values)
|
||||
{
|
||||
// Create a new query object.
|
||||
$query = $this->db->getQuery(true);
|
||||
$query->from($this->db->quoteName('#__componentbuilder_language_translation','a'));
|
||||
$query->select($this->db->quoteName(array('a.id','a.translation','a.components')));
|
||||
// get all string that are not linked to this component
|
||||
$query->where($this->db->quoteName('a.entranslation') . ' NOT IN (' . implode(',',array_map(function($a){ return $this->db->quote($a); }, $values)) . ')');
|
||||
$query->where($this->db->quoteName('a.published') . ' = 1');
|
||||
$this->db->setQuery($query);
|
||||
$this->db->execute();
|
||||
if ($this->db->getNumRows())
|
||||
{
|
||||
$counterUpdate = 0;
|
||||
$otherStrings = $this->db->loadAssocList();
|
||||
$today = JFactory::getDate()->toSql();
|
||||
foreach ($otherStrings as $item)
|
||||
{
|
||||
if (ComponentbuilderHelper::checkJson($item['components']))
|
||||
{
|
||||
$components = (array) json_decode($item['components'], true);
|
||||
// if component is not found ignore this string, and do nothing
|
||||
if (($key = array_search($this->componentID, $components)) !== false)
|
||||
{
|
||||
// first remove the component from the string
|
||||
unset($components[$key]);
|
||||
// check if there are more components
|
||||
if (ComponentbuilderHelper::checkArray($components))
|
||||
{
|
||||
// just update the string to unlink the current component
|
||||
$this->setUpdateExistingLangStrings($item['id'], $components, 1, $today, $counterUpdate);
|
||||
|
||||
$counterUpdate++;
|
||||
|
||||
// load to db
|
||||
$this->setExistingLangStrings(50);
|
||||
}
|
||||
// check if this string has been worked on
|
||||
elseif (ComponentbuilderHelper::checkJson($item['translation']))
|
||||
{
|
||||
$translation = json_decode($item['translation'], true);
|
||||
if (ComponentbuilderHelper::checkArray($translation) && ComponentbuilderHelper::checkArray($translation['translation']))
|
||||
{
|
||||
// only archive the item and update the string to unlink the current component
|
||||
$this->setUpdateExistingLangStrings($item['id'], $components, 2, $today, $counterUpdate);
|
||||
|
||||
$counterUpdate++;
|
||||
|
||||
// load to db
|
||||
$this->setExistingLangStrings(50);
|
||||
}
|
||||
else
|
||||
{
|
||||
// remove the string since no translation found and not linked to any other component
|
||||
$this->removeExitingLangString($item['id']);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// remove the string since no translation found and not linked to any other component
|
||||
$this->removeExitingLangString($item['id']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// load to db
|
||||
$this->setExistingLangStrings();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* just to add lang string to the existing Lang Strings array
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
protected function setUpdateExistingLangStrings($id, $components, $published, $today, $counterUpdate)
|
||||
{
|
||||
// start the bucket for this lang
|
||||
$this->existingLangStrings[$counterUpdate] = array();
|
||||
$this->existingLangStrings[$counterUpdate]['id'] = (int) $id;
|
||||
$this->existingLangStrings[$counterUpdate]['conditions'] = array();
|
||||
$this->existingLangStrings[$counterUpdate]['conditions'][] = $this->db->quoteName('id') . ' = ' . $this->db->quote($id);
|
||||
$this->existingLangStrings[$counterUpdate]['fields'] = array();
|
||||
$this->existingLangStrings[$counterUpdate]['fields'][] = $this->db->quoteName('components') . ' = ' . $this->db->quote(json_encode($components));
|
||||
$this->existingLangStrings[$counterUpdate]['fields'][] = $this->db->quoteName('published') . ' = ' . $this->db->quote($published);
|
||||
$this->existingLangStrings[$counterUpdate]['fields'][] = $this->db->quoteName('modified') . ' = ' . $this->db->quote($today);
|
||||
$this->existingLangStrings[$counterUpdate]['fields'][] = $this->db->quoteName('modified_by') . ' = ' . $this->db->quote((int) $this->user->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* get the custom code from the system
|
||||
*
|
||||
@ -3107,7 +3543,9 @@ class Get
|
||||
{
|
||||
// we must first store the current woking directory
|
||||
$joomla = getcwd();
|
||||
$counter = array(1 => 0, 2 => 0);
|
||||
$counter = array(1 => 0, 2 => 0);
|
||||
// file types to get
|
||||
$fileTypes = array('\.php', '\.js');
|
||||
// set some local placeholders
|
||||
$placeholders = array();
|
||||
$placeholders[ComponentbuilderHelper::safeString($this->componentCodeName, 'F').'Helper::'] = '[[[Component]]]Helper::';
|
||||
@ -3117,20 +3555,23 @@ class Get
|
||||
{
|
||||
// we are changing the working directory to the componet path
|
||||
chdir($path);
|
||||
// get a list of files in the current directory tree (only PHP for now)
|
||||
$files = JFolder::files('.', '\.php', true, true);
|
||||
foreach ($files as $file)
|
||||
foreach ($fileTypes as $type)
|
||||
{
|
||||
$this->searchFileContent($counter, $file, $target, $this->customCodePlaceholders, $placeholders, $today);
|
||||
// insert new code
|
||||
if (ComponentbuilderHelper::checkArray($this->newCustomCode))
|
||||
// get a list of files in the current directory tree (only PHP and JS for now)
|
||||
$files = JFolder::files('.', $type, true, true);
|
||||
foreach ($files as $file)
|
||||
{
|
||||
$this->setNewCustomCode(100);
|
||||
}
|
||||
// update existing custom code
|
||||
if (ComponentbuilderHelper::checkArray($this->existingCustomCode))
|
||||
{
|
||||
$this->setExistingCustomCode(30);
|
||||
$this->searchFileContent($counter, $file, $target, $this->customCodePlaceholders, $placeholders, $today);
|
||||
// insert new code
|
||||
if (ComponentbuilderHelper::checkArray($this->newCustomCode))
|
||||
{
|
||||
$this->setNewCustomCode(100);
|
||||
}
|
||||
// update existing custom code
|
||||
if (ComponentbuilderHelper::checkArray($this->existingCustomCode))
|
||||
{
|
||||
$this->setExistingCustomCode(30);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3241,7 +3682,7 @@ class Get
|
||||
$this->newCustomCode[$pointer[$targetKey]][] = $this->db->quote(0); // 'hashendtarget'
|
||||
}
|
||||
}
|
||||
// the record already exist so we must use module to update
|
||||
// the record already exist so we must update instead
|
||||
elseif ($i === 2)
|
||||
{
|
||||
// end the bucket info for this code block
|
||||
@ -3299,9 +3740,11 @@ class Get
|
||||
// check if the starting place holder was found
|
||||
if($commentType > 0)
|
||||
{
|
||||
// if we have all on one line we have a problem
|
||||
// if we have all on one line we have a problem (don't load it TODO)
|
||||
if (strpos($lineContent, $endReplace) !== false)
|
||||
{
|
||||
// reset found comment type
|
||||
$commentType = 0;
|
||||
continue;
|
||||
}
|
||||
// do a quick check to insure we have an id
|
||||
@ -3315,6 +3758,8 @@ class Get
|
||||
// make sure we update it only once even if found again.
|
||||
if (isset($this->codeAreadyDone[$id]))
|
||||
{
|
||||
// reset found comment type
|
||||
$commentType = 0;
|
||||
continue;
|
||||
}
|
||||
// store the id to avoid duplication
|
||||
|
@ -45,6 +45,13 @@ class Structure extends Get
|
||||
*/
|
||||
public $fileCount = 0;
|
||||
|
||||
/**
|
||||
* The page counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $pageCount = 0;
|
||||
|
||||
/**
|
||||
* The line counter
|
||||
*
|
||||
@ -52,6 +59,153 @@ class Structure extends Get
|
||||
*/
|
||||
public $lineCount = 0;
|
||||
|
||||
/**
|
||||
* The seconds counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $seconds = 0;
|
||||
|
||||
/**
|
||||
* The actual seconds counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $actualSeconds = 0;
|
||||
|
||||
/**
|
||||
* The folder seconds counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $folderSeconds = 0;
|
||||
|
||||
/**
|
||||
* The file seconds counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $fileSeconds = 0;
|
||||
|
||||
/**
|
||||
* The line seconds counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $lineSeconds = 0;
|
||||
|
||||
/**
|
||||
* The seconds debugging counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $secondsDebugging = 0;
|
||||
|
||||
/**
|
||||
* The seconds planning counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $secondsPlanning = 0;
|
||||
|
||||
/**
|
||||
* The seconds mapping counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $secondsMapping = 0;
|
||||
|
||||
/**
|
||||
* The seconds office counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $secondsOffice = 0;
|
||||
|
||||
/**
|
||||
* The total hours counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $totalHours = 0;
|
||||
|
||||
/**
|
||||
* The debugging hours counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $debuggingHours = 0;
|
||||
|
||||
/**
|
||||
* The planning hours counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $planningHours = 0;
|
||||
|
||||
/**
|
||||
* The mapping hours counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $mappingHours = 0;
|
||||
|
||||
/**
|
||||
* The office hours counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $officeHours = 0;
|
||||
|
||||
/**
|
||||
* The actual Total Hours counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $actualTotalHours = 0;
|
||||
|
||||
/**
|
||||
* The actual hours spent counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $actualHoursSpent = 0;
|
||||
|
||||
/**
|
||||
* The actual days spent counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $actualDaysSpent = 0;
|
||||
|
||||
/**
|
||||
* The total days counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $totalDays = 0;
|
||||
|
||||
/**
|
||||
* The actual Total Days counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $actualTotalDays = 0;
|
||||
|
||||
/**
|
||||
* The project week time counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $projectWeekTime = 0;
|
||||
|
||||
/**
|
||||
* The project month time counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $projectMonthTime = 0;
|
||||
|
||||
/**
|
||||
* The Joomla Version
|
||||
*
|
||||
@ -205,7 +359,7 @@ class Structure extends Get
|
||||
*/
|
||||
private function setLine($nr)
|
||||
{
|
||||
if ($this->loadLineNr)
|
||||
if ($this->debugLinenr)
|
||||
{
|
||||
return ' [Structure '.$nr.']';
|
||||
}
|
||||
@ -567,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';
|
||||
@ -587,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)
|
||||
@ -605,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)
|
||||
@ -621,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)
|
||||
@ -939,34 +1102,11 @@ class Structure extends Get
|
||||
* @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
|
||||
* @return boolean True if all is removed
|
||||
*
|
||||
*/
|
||||
protected 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;
|
||||
return ComponentbuilderHelper::removeFolder($dir, $git);
|
||||
}
|
||||
}
|
||||
|
@ -311,7 +311,14 @@ class Fields extends Structure
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $fieldsNames = array();
|
||||
public $fieldsNames = array();
|
||||
|
||||
/**
|
||||
* Set unique Names
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $uniqueNames = array();
|
||||
|
||||
/**
|
||||
* Default Fields
|
||||
@ -344,7 +351,7 @@ class Fields extends Structure
|
||||
*/
|
||||
private function setLine($nr)
|
||||
{
|
||||
if ($this->loadLineNr)
|
||||
if ($this->debugLinenr)
|
||||
{
|
||||
return ' [Fields '.$nr.']';
|
||||
}
|
||||
@ -368,6 +375,19 @@ class Fields extends Structure
|
||||
// setup the list view and single view name
|
||||
$listViewName = ComponentbuilderHelper::safeString($view['settings']->name_list);
|
||||
$viewName = ComponentbuilderHelper::safeString($view['settings']->name_single);
|
||||
// set some place holder for this view
|
||||
$this->placeholders['###view###'] = $viewName;
|
||||
$this->placeholders['###VIEW###'] = strtoupper($viewName);
|
||||
$this->placeholders['###View###'] = ucfirst($viewName);
|
||||
$this->placeholders['[[[view]]]'] = $this->placeholders['###view###'];
|
||||
$this->placeholders['[[[VIEW]]]'] = $this->placeholders['###VIEW###'];
|
||||
$this->placeholders['[[[View]]]'] = $this->placeholders['###View###'];
|
||||
$this->placeholders['###views###'] = $listViewName;
|
||||
$this->placeholders['###VIEWS###'] = strtoupper($listViewName);
|
||||
$this->placeholders['###Views###'] = ucfirst($listViewName);
|
||||
$this->placeholders['[[[views]]]'] = $this->placeholders['###views###'];
|
||||
$this->placeholders['[[[VIEWS]]]'] = $this->placeholders['###VIEWS###'];
|
||||
$this->placeholders['[[[Views]]]'] = $this->placeholders['###Views###'];
|
||||
// add metadata to the view
|
||||
if ($view['metadata'])
|
||||
{
|
||||
@ -385,12 +405,12 @@ class Fields extends Structure
|
||||
$readOnly = "\t\t\t" . 'readonly="true"' . PHP_EOL."\t\t\t" . 'disabled="true"';
|
||||
}
|
||||
// main lang prefix
|
||||
$langView = $this->langPrefix . '_' . ComponentbuilderHelper::safeString($view['settings']->name_single, 'U');
|
||||
$langViews = $this->langPrefix . '_' . ComponentbuilderHelper::safeString($view['settings']->name_list, 'U');
|
||||
$langView = $this->langPrefix . '_' . $this->placeholders['###VIEW###'];
|
||||
$langViews = $this->langPrefix . '_' . $this->placeholders['###VIEWS###'];
|
||||
// set default lang
|
||||
$this->langContent[$this->lang][$langView] = $view['settings']->name_single;
|
||||
$this->langContent[$this->lang][$langViews] = $view['settings']->name_list;
|
||||
// set the singel name
|
||||
// set the single name
|
||||
$viewSingleName = ComponentbuilderHelper::safeString($view['settings']->name_single, 'W');
|
||||
// set global item strings
|
||||
$this->langContent[$this->lang][$langViews . '_N_ITEMS_ARCHIVED'] = "%s " . $view['settings']->name_list . " archived.";
|
||||
@ -427,20 +447,21 @@ class Fields extends Structure
|
||||
$this->langContent[$this->lang][$langView . '_VERSION_DESC'] = "A count of the number of times this " . $view['settings']->name_single . " has been revised.";
|
||||
$this->langContent[$this->lang][$langView . '_SAVE_WARNING'] = "Alias already existed so a number was added at the end. You can re-edit the " . $view['settings']->name_single . " to customise the alias.";
|
||||
|
||||
// check if the same field is added multiple times
|
||||
foreach ($view['settings']->fields as $field)
|
||||
{
|
||||
$name = ComponentbuilderHelper::safeString($field['settings']->name);
|
||||
$this->setUniqueNameKeeper($field, $view['settings']->type, $name, $viewName);
|
||||
}
|
||||
// start adding dynamc fields
|
||||
$dynamcfields = '';
|
||||
// place holders
|
||||
$placeholders = array(
|
||||
'###component###' => $component,
|
||||
'###view###' => $viewName,
|
||||
'###views###' => $listViewName);
|
||||
$spacerCounter = 'a';
|
||||
// set the custom table key
|
||||
$dbkey = 'g';
|
||||
// TODO we should add the global and local view switch if field for front end
|
||||
foreach ($view['settings']->fields as $field)
|
||||
{
|
||||
$dynamcfields .= $this->setDynamicField($field, $view, $view['settings']->type, $langView, $viewName, $listViewName, $spacerCounter, $placeholders, $dbkey, true);
|
||||
$dynamcfields .= $this->setDynamicField($field, $view, $view['settings']->type, $langView, $viewName, $listViewName, $spacerCounter, $this->placeholders, $dbkey, true);
|
||||
}
|
||||
|
||||
// set the defautl fields
|
||||
@ -633,6 +654,8 @@ class Fields extends Structure
|
||||
$fieldSet[] = "\t\t</fieldset>";
|
||||
$fieldSet[] = "\t</fields>";
|
||||
}
|
||||
// just to be safe, lets clear the view placeholders
|
||||
$this->clearFromPlaceHolders('view');
|
||||
// retunr the set
|
||||
return implode(PHP_EOL, $fieldSet);
|
||||
}
|
||||
@ -934,12 +957,12 @@ class Fields extends Structure
|
||||
if (strpos($fieldAttributes['fields'], ',') !== false)
|
||||
{
|
||||
// mulitpal fields
|
||||
$fieldsSets = explode(',', $fieldAttributes['fields']);
|
||||
$fieldsSets = (array) explode(',', $fieldAttributes['fields']);
|
||||
}
|
||||
else
|
||||
elseif (is_numeric($fieldAttributes['fields']))
|
||||
{
|
||||
// single field
|
||||
$fieldsSets[] = $fieldAttributes['fields'];
|
||||
$fieldsSets[] = (int) $fieldAttributes['fields'];
|
||||
}
|
||||
// only continue if we have a field set
|
||||
if (ComponentbuilderHelper::checkArray($fieldsSets))
|
||||
@ -1135,18 +1158,18 @@ class Fields extends Structure
|
||||
/**
|
||||
* set field attributes
|
||||
*
|
||||
* @param array $field The field data
|
||||
* @param int $viewType The view type
|
||||
* @param string $name The field name
|
||||
* @param string $typeName The field type
|
||||
* @param boolean $multiple The switch to set multiple selection option
|
||||
* @param string $langLabel The language string for field label
|
||||
* @param string $langView The language string of the view
|
||||
* @param array $field The field data
|
||||
* @param int $viewType The view type
|
||||
* @param string $name The field name
|
||||
* @param string $typeName The field type
|
||||
* @param boolean $multiple The switch to set multiple selection option
|
||||
* @param string $langLabel The language string for field label
|
||||
* @param string $langView The language string of the view
|
||||
* @param string $spacerCounter The space counter value
|
||||
* @param string $listViewName The list view name
|
||||
* @param string $viewName The singel view name
|
||||
* @param array $placeholders The place holder and replace values
|
||||
* @param boolean $repeatable The repeatable field switch
|
||||
* @param string $listViewName The list view name
|
||||
* @param string $viewName The singel view name
|
||||
* @param array $placeholders The place holder and replace values
|
||||
* @param boolean $repeatable The repeatable field switch
|
||||
*
|
||||
* @return array The field attributes
|
||||
*
|
||||
@ -1219,7 +1242,7 @@ class Fields extends Structure
|
||||
{
|
||||
// quick check if this is a category linked to view page
|
||||
$requeSt_id = ComponentbuilderHelper::getBetween($field['settings']->xml, 'name="', '"');
|
||||
if (strpos($requeSt_id, '_request_id') !== false)
|
||||
if (strpos($requeSt_id, '_request_id') !== false || strpos($requeSt_id, '_request_catid') !== false)
|
||||
{
|
||||
// keep it then, don't change
|
||||
$xmlValue = $requeSt_id;
|
||||
@ -1264,12 +1287,16 @@ class Fields extends Structure
|
||||
// use field core name only if not found in xml
|
||||
if (!ComponentbuilderHelper::checkString($xmlValue))
|
||||
{
|
||||
// make sure the XML name is uniqe, so we can add one field multiple times
|
||||
$name = $this->uniqueName($name, $viewName);
|
||||
$xmlValue = $name;
|
||||
}
|
||||
// set the name if found
|
||||
else
|
||||
{
|
||||
$name = $xmlValue;
|
||||
// make sure the XML name is uniqe, so we can add one field multiple times
|
||||
$xmlValue = $this->uniqueName($xmlValue, $viewName);
|
||||
$name = $this->setPlaceholders($xmlValue, $placeholders);
|
||||
}
|
||||
}
|
||||
elseif ($property['name'] === 'extension' || $property['name'] === 'directory')
|
||||
@ -1381,6 +1408,14 @@ class Fields extends Structure
|
||||
// check if translatable
|
||||
if (ComponentbuilderHelper::checkString($xmlValue) && $property['translatable'] == 1)
|
||||
{
|
||||
// update lable if field use multiple times
|
||||
if ($property['name'] === 'label')
|
||||
{
|
||||
if (isset($fieldAttributes['name']) && isset($this->uniqueNames[$viewName]['names'][$fieldAttributes['name']]))
|
||||
{
|
||||
$xmlValue .= ' (' . ComponentbuilderHelper::safeString($this->uniqueNames[$viewName]['names'][$fieldAttributes['name']]) . ')';
|
||||
}
|
||||
}
|
||||
// replace placeholders
|
||||
$xmlValue = $this->setPlaceholders($xmlValue, $placeholders);
|
||||
// insure custom lables dont get messed up
|
||||
@ -1432,18 +1467,17 @@ class Fields extends Structure
|
||||
$xmlValue = $property['example'];
|
||||
}
|
||||
}
|
||||
|
||||
$fieldAttributes[$property['name']] = $xmlValue;
|
||||
|
||||
// load to langBuilder down the line
|
||||
if ($property['name'] === 'label')
|
||||
{
|
||||
$langLabel = $xmlValue;
|
||||
if ($setCustom)
|
||||
{
|
||||
$fieldAttributes['custom']['label'] = $customLabel;
|
||||
}
|
||||
$langLabel = $xmlValue;
|
||||
}
|
||||
// now set the value
|
||||
$fieldAttributes[$property['name']] = $xmlValue;
|
||||
}
|
||||
}
|
||||
// do some nice twigs beyond the default
|
||||
@ -1460,6 +1494,123 @@ class Fields extends Structure
|
||||
return $fieldAttributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Keep track of the field names, to see if it used multiple times
|
||||
*
|
||||
* @param array $field The field data
|
||||
* @param string $typeName The field type
|
||||
* @param string $name The field name
|
||||
* @param string $viewName The singel view name
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
protected function setUniqueNameKeeper(&$field, &$typeName, &$name, $viewName)
|
||||
{
|
||||
// setup a default field
|
||||
if (ComponentbuilderHelper::checkArray($field['settings']->properties))
|
||||
{
|
||||
foreach ($field['settings']->properties as $property)
|
||||
{
|
||||
// reset
|
||||
$xmlValue = '';
|
||||
if ($property['name'] === 'name')
|
||||
{
|
||||
// if category then name must be catid (only one per view)
|
||||
if ($typeName === 'category')
|
||||
{
|
||||
// only one allowed
|
||||
return;
|
||||
}
|
||||
// if tag is set then enable all tag options for this view (only one per view)
|
||||
elseif ($typeName === 'tag')
|
||||
{
|
||||
// only one allowed
|
||||
return;
|
||||
}
|
||||
// if the field is set as alias it must be called alias
|
||||
elseif (isset($field['alias']) && $field['alias'])
|
||||
{
|
||||
// only one allowed
|
||||
return;
|
||||
}
|
||||
elseif ($typeName === 'spacer')
|
||||
{
|
||||
// not needed here
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
$xmlValue = ComponentbuilderHelper::safeString(ComponentbuilderHelper::getBetween($field['settings']->xml, 'name="', '"'));
|
||||
}
|
||||
|
||||
// use field core name only if not found in xml
|
||||
if (!ComponentbuilderHelper::checkString($xmlValue))
|
||||
{
|
||||
$xmlValue = $name;
|
||||
}
|
||||
// make sure the XML name is uniqe, so we can add one field multiple times
|
||||
return $this->setUniqueNameCounter($xmlValue, $viewName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Count how many times the same field is used per view
|
||||
*
|
||||
* @param string $name The name of the field
|
||||
* @param string $view The name of the view
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
protected function setUniqueNameCounter($name, $view)
|
||||
{
|
||||
if (!isset($this->uniqueNames[$view]))
|
||||
{
|
||||
$this->uniqueNames[$view] = array();
|
||||
$this->uniqueNames[$view]['counter'] = array();
|
||||
$this->uniqueNames[$view]['names'] = array();
|
||||
}
|
||||
if (!isset($this->uniqueNames[$view]['counter'][$name]))
|
||||
{
|
||||
$this->uniqueNames[$view]['counter'][$name] = 1;
|
||||
return;
|
||||
}
|
||||
// count how many times the field is used
|
||||
$this->uniqueNames[$view]['counter'][$name]++;
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Naming each field with an unique name
|
||||
*
|
||||
* @param string $name The name of the field
|
||||
* @param string $view The name of the view
|
||||
*
|
||||
* @return string the name
|
||||
*
|
||||
*/
|
||||
protected function uniqueName($name, $view)
|
||||
{
|
||||
// only increment if the field name is used multiple times
|
||||
if (isset($this->uniqueNames[$view]['counter'][$name]) && $this->uniqueNames[$view]['counter'][$name] > 1)
|
||||
{
|
||||
$counter = $this->uniqueNames[$view]['counter'][$name];
|
||||
$uniqueName = ComponentbuilderHelper::safeString($name . '_' . $counter);
|
||||
while (isset($this->uniqueNames[$view]['names'][$uniqueName]))
|
||||
{
|
||||
$counter--;
|
||||
$uniqueName = ComponentbuilderHelper::safeString($name . '_' . $counter);
|
||||
}
|
||||
// set the new name
|
||||
$this->uniqueNames[$view]['names'][$uniqueName] = $counter;
|
||||
return $uniqueName;
|
||||
}
|
||||
return $name;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* set Builders
|
||||
@ -1639,7 +1790,7 @@ class Fields extends Structure
|
||||
// set the custom builder
|
||||
if (ComponentbuilderHelper::checkArray($custom) && $typeName != 'category' && $typeName != 'repeatable')
|
||||
{
|
||||
$this->customBuilder[$listViewName][] = array('type' => $typeName, 'code' => $name, 'lang' => $listLangName, 'custom' => $custom);
|
||||
$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
|
||||
if (!isset($this->customFieldLinksBuilder[$viewName]))
|
||||
{
|
||||
|
@ -48,6 +48,9 @@ class Interpretation extends Fields
|
||||
public $otherWhere = array();
|
||||
public $DashboardGetCustomData = array();
|
||||
public $customAdminAdded = array();
|
||||
|
||||
protected $hasCatIdRequest = array();
|
||||
protected $hasIdRequest = array();
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
@ -72,7 +75,7 @@ class Interpretation extends Fields
|
||||
*/
|
||||
private function setLine($nr)
|
||||
{
|
||||
if ($this->loadLineNr)
|
||||
if ($this->debugLinenr)
|
||||
{
|
||||
return ' [Interpretation '.$nr.']';
|
||||
}
|
||||
@ -1073,15 +1076,27 @@ class Interpretation extends Fields
|
||||
$xml .= PHP_EOL."\t\t\t".'<![CDATA['.$lang.'_DESC]]>';
|
||||
$xml .= PHP_EOL."\t\t".'</message>';
|
||||
$xml .= PHP_EOL."\t".'</layout>';
|
||||
if (isset($this->hasIdRequest[$view['settings']->code]))
|
||||
if (isset($this->hasIdRequest[$view['settings']->code]) || isset($this->hasCatIdRequest[$view['settings']->code]))
|
||||
{
|
||||
$requestField = str_replace($view['settings']->code.'_request_id', 'id', $this->hasIdRequest[$view['settings']->code]);
|
||||
|
||||
$xml .= PHP_EOL."\t".'<!--'.$this->setLine(__LINE__).' Add fields to the request variables for the layout. -->';
|
||||
$xml .= PHP_EOL."\t".'<fields name="request">';
|
||||
$xml .= PHP_EOL."\t\t".'<fieldset name="request"';
|
||||
$xml .= PHP_EOL."\t\t\t".'addfieldpath="/administrator/components/com_'.$this->fileContentStatic['###component###'].'/models/fields">';
|
||||
$xml .= PHP_EOL."\t\t\t".$requestField;
|
||||
if (isset($this->hasIdRequest[$view['settings']->code]) && ComponentbuilderHelper::checkArray($this->hasIdRequest[$view['settings']->code]))
|
||||
{
|
||||
foreach($this->hasIdRequest[$view['settings']->code] as $requestFieldXML)
|
||||
{
|
||||
$xml .= PHP_EOL."\t\t\t".$requestFieldXML;
|
||||
}
|
||||
}
|
||||
if (isset($this->hasCatIdRequest[$view['settings']->code]) && ComponentbuilderHelper::checkArray($this->hasCatIdRequest[$view['settings']->code]))
|
||||
{
|
||||
foreach($this->hasCatIdRequest[$view['settings']->code] as $requestFieldXML)
|
||||
{
|
||||
$xml .= PHP_EOL."\t\t\t".$requestFieldXML;
|
||||
}
|
||||
}
|
||||
$xml .= PHP_EOL."\t\t".'</fieldset>';
|
||||
$xml .= PHP_EOL."\t".'</fields>';
|
||||
}
|
||||
@ -1469,15 +1484,15 @@ class Interpretation extends Fields
|
||||
break;
|
||||
case 5:
|
||||
// COM_COMPONENTBUILDER_DYNAMIC_GET_CATEGORIES
|
||||
$string = "";
|
||||
$string = PHP_EOL."\t\t".$tab."//".$this->setLine(__LINE__)." (TODO) The dynamic category filter is not ready.";
|
||||
break;
|
||||
case 6:
|
||||
// COM_COMPONENTBUILDER_DYNAMIC_GET_TAGS
|
||||
$string = "";
|
||||
$string = PHP_EOL."\t\t".$tab."//".$this->setLine(__LINE__)." (TODO) The dynamic tags filter is not ready.";
|
||||
break;
|
||||
case 7:
|
||||
// COM_COMPONENTBUILDER_DYNAMIC_GET_DATE
|
||||
$string = "";
|
||||
$string = PHP_EOL."\t\t".$tab."//".$this->setLine(__LINE__)." (TODO) The dynamic date filter is not ready.";
|
||||
break;
|
||||
case 8:
|
||||
// COM_COMPONENTBUILDER_DYNAMIC_GET_FUNCTIONVAR
|
||||
@ -1594,7 +1609,7 @@ class Interpretation extends Fields
|
||||
$value = " ".$whe['value_key']."');";
|
||||
|
||||
}
|
||||
elseif (strpos($whe['value_key'],'$this->') !== false)
|
||||
elseif (strpos($whe['value_key'],'$') !== false)
|
||||
{
|
||||
if ($whe['operator'] === 'IN' || $whe['operator'] === 'NOT IN')
|
||||
{
|
||||
@ -1607,21 +1622,29 @@ class Interpretation extends Fields
|
||||
}
|
||||
elseif (strpos($whe['value_key'],'.') !== false)
|
||||
{
|
||||
$value = " ".$whe['value_key']."');";
|
||||
if (strpos($whe['value_key'],"'") !== false)
|
||||
{
|
||||
$value = " ' . \$db->quote(".$whe['value_key']."));";
|
||||
}
|
||||
else
|
||||
{
|
||||
$value = " ".$whe['value_key']."');";
|
||||
}
|
||||
}
|
||||
// only load if there is a value
|
||||
if (ComponentbuilderHelper::checkString($value))
|
||||
{
|
||||
$tabe = '';
|
||||
if ($as === 'a')
|
||||
{
|
||||
$tabe = $tab;
|
||||
}
|
||||
// set the string
|
||||
if ($whe['operator'] === 'IN' || $whe['operator'] === 'NOT IN')
|
||||
{
|
||||
$tabe = '';
|
||||
if ($as === 'a')
|
||||
{
|
||||
$tabe = $tab;
|
||||
}
|
||||
$string = "if (isset(" . $whe['value_key']. ") && ".$this->fileContentStatic['###Component###']."Helper::checkArray(" . $whe['value_key']. "))";
|
||||
$string .= PHP_EOL."\t".$tabe."\t{";
|
||||
$string .= PHP_EOL."\t".$tabe."\t\t\//".$this->setLine(__LINE__)." Get where ".$whe['table_key']." is " . $whe['value_key'];
|
||||
$string .= PHP_EOL."\t".$tabe."\t\t\$query->where('".$whe['table_key']." ".$whe['operator'].$value;
|
||||
$string .= PHP_EOL."\t".$tabe."\t}";
|
||||
$string .= PHP_EOL."\t".$tabe."\telse";
|
||||
@ -1632,7 +1655,8 @@ class Interpretation extends Fields
|
||||
}
|
||||
else
|
||||
{
|
||||
$string = "\$query->where('".$whe['table_key']." ".$whe['operator'].$value;
|
||||
$string = "//".$this->setLine(__LINE__)." Get where ".$whe['table_key']." is " . $whe['value_key'];
|
||||
$string .= PHP_EOL."\t".$tabe."\t\$query->where('".$whe['table_key']." ".$whe['operator'].$value;
|
||||
}
|
||||
// sort where
|
||||
if ($as === 'a' || (isset($this->siteMainGet[$this->target][$code][$as]) && ComponentbuilderHelper::checkString($this->siteMainGet[$this->target][$code][$as])))
|
||||
@ -2728,20 +2752,33 @@ class Interpretation extends Fields
|
||||
|
||||
public function setCustomButtons(&$view, $type = 1, $tab = '')
|
||||
{
|
||||
if (1 == $type)
|
||||
{
|
||||
$viewName = $view['settings']->code;
|
||||
}
|
||||
if (2 == $type)
|
||||
{
|
||||
$viewName = ComponentbuilderHelper::safeString($view['settings']->name_single);
|
||||
}
|
||||
// ensure correct target is set
|
||||
$TARGET = ComponentbuilderHelper::safeString($this->target,'U');
|
||||
// set the custom buttons ###CUSTOM_BUTTONS_CONTROLLER###
|
||||
$this->fileContentDynamic[$viewName]['###'.$TARGET.'_CUSTOM_BUTTONS_CONTROLLER###'] = '';
|
||||
// set the custom buttons ###CUSTOM_BUTTONS_METHOD###
|
||||
$this->fileContentDynamic[$viewName]['###'.$TARGET.'_CUSTOM_BUTTONS_METHOD###'] = '';
|
||||
if (1 == $type || 2 == $type)
|
||||
{
|
||||
if (1 == $type)
|
||||
{
|
||||
$viewName = $view['settings']->code;
|
||||
}
|
||||
if (2 == $type)
|
||||
{
|
||||
$viewName = ComponentbuilderHelper::safeString($view['settings']->name_single);
|
||||
}
|
||||
// set the custom buttons ###CUSTOM_BUTTONS_CONTROLLER###
|
||||
$this->fileContentDynamic[$viewName]['###'.$TARGET.'_CUSTOM_BUTTONS_CONTROLLER###'] = '';
|
||||
// set the custom buttons ###CUSTOM_BUTTONS_METHOD###
|
||||
$this->fileContentDynamic[$viewName]['###'.$TARGET.'_CUSTOM_BUTTONS_METHOD###'] = '';
|
||||
}
|
||||
elseif (3 == $type)
|
||||
{
|
||||
// set the names
|
||||
$viewName = ComponentbuilderHelper::safeString($view['settings']->name_single);
|
||||
$viewsName = ComponentbuilderHelper::safeString($view['settings']->name_list);
|
||||
// set the custom buttons ###CUSTOM_BUTTONS_CONTROLLER_LIST###
|
||||
$this->fileContentDynamic[$viewsName]['###'.$TARGET.'_CUSTOM_BUTTONS_CONTROLLER_LIST###'] = '';
|
||||
// set the custom buttons ###CUSTOM_BUTTONS_METHOD_LIST###
|
||||
$this->fileContentDynamic[$viewsName]['###'.$TARGET.'_CUSTOM_BUTTONS_METHOD_LIST###'] = '';
|
||||
}
|
||||
// if site add buttons to view
|
||||
if ($this->target === 'site')
|
||||
{
|
||||
@ -2778,30 +2815,10 @@ class Interpretation extends Fields
|
||||
// check if custom button should be added
|
||||
if (isset($view['settings']->add_custom_button) && $view['settings']->add_custom_button == 1)
|
||||
{
|
||||
// insure the controller and model strings are added
|
||||
if (ComponentbuilderHelper::checkString($view['settings']->php_controller) && $view['settings']->php_controller != '//')
|
||||
{
|
||||
// set the custom buttons ###CUSTOM_BUTTONS_CONTROLLER###
|
||||
$this->fileContentDynamic[$viewName]['###'.$TARGET.'_CUSTOM_BUTTONS_CONTROLLER###'] =
|
||||
PHP_EOL.PHP_EOL.$this->setPlaceholders($view['settings']->php_controller, $this->placeholders);
|
||||
if ('site' === $this->target)
|
||||
{
|
||||
// add the controller for this view
|
||||
// build the file
|
||||
$target = array($this->target => $viewName);
|
||||
$this->buildDynamique($target,'custom_form');
|
||||
###GET_FORM_CUSTOM###
|
||||
}
|
||||
}
|
||||
if (ComponentbuilderHelper::checkString($view['settings']->php_model) && $view['settings']->php_model != '//')
|
||||
{
|
||||
// set the custom buttons ###CUSTOM_BUTTONS_METHOD###
|
||||
$this->fileContentDynamic[$viewName]['###'.$TARGET.'_CUSTOM_BUTTONS_METHOD###'] =
|
||||
PHP_EOL.PHP_EOL.$this->setPlaceholders($view['settings']->php_model, $this->placeholders);
|
||||
}
|
||||
$buttons = array();
|
||||
$functionNames = array();
|
||||
if (isset($view['settings']->custom_buttons) && ComponentbuilderHelper::checkArray($view['settings']->custom_buttons))
|
||||
{
|
||||
$buttons = array();
|
||||
foreach ($view['settings']->custom_buttons as $custom_button)
|
||||
{
|
||||
if ($custom_button['target'] != 2 || $this->target === 'site')
|
||||
@ -2811,17 +2828,82 @@ class Interpretation extends Fields
|
||||
$keyCode = ComponentbuilderHelper::safeString($custom_button['name']);
|
||||
$this->langContent[$this->lang][$keyLang] = trim($custom_button['name']);
|
||||
// add cpanel button TODO does not work well on site with permissions
|
||||
$buttons[] = "\t".$tab."\tif (\$this->canDo->get('".$viewName.".".$keyCode."'))";
|
||||
if ($custom_button['target'] == 2)
|
||||
{
|
||||
$buttons[] = "\t".$tab."\tif (\$this->user->authorise('".$viewName.".".$keyCode."'))";
|
||||
}
|
||||
else
|
||||
{
|
||||
$buttons[] = "\t".$tab."\tif (\$this->canDo->get('".$viewName.".".$keyCode."'))";
|
||||
}
|
||||
$buttons[] = "\t".$tab."\t{";
|
||||
$buttons[] = "\t".$tab."\t\t//".$this->setLine(__LINE__)." add ".$custom_button['name']." button.";
|
||||
$buttons[] = "\t".$tab."\t\tJToolBarHelper::custom('".$viewName.".".$custom_button['method']."', '".$custom_button['icomoon']."', '', '".$keyLang."', false);";
|
||||
$buttons[] = "\t".$tab."\t}";
|
||||
}
|
||||
// load the list button
|
||||
elseif (3 == $type && ($custom_button['target'] == 2 || $custom_button['target'] == 3))
|
||||
{
|
||||
// Load to lang
|
||||
$keyLang = $this->langPrefix.'_'.ComponentbuilderHelper::safeString($custom_button['name'],'U');
|
||||
$keyCode = ComponentbuilderHelper::safeString($custom_button['name']);
|
||||
$this->langContent[$this->lang][$keyLang] = trim($custom_button['name']);
|
||||
// add cpanel button TODO does not work well on site with permissions
|
||||
$buttons[] = "\t".$tab."\tif (\$this->user->authorise('".$viewName.".".$keyCode."'))";
|
||||
$buttons[] = "\t".$tab."\t{";
|
||||
$buttons[] = "\t".$tab."\t\t//".$this->setLine(__LINE__)." add ".$custom_button['name']." button.";
|
||||
$buttons[] = "\t".$tab."\t\tJToolBarHelper::custom('".$viewsName.".".$custom_button['method']."', '".$custom_button['icomoon']."', '', '".$keyLang."', false);";
|
||||
$buttons[] = "\t".$tab."\t}";
|
||||
}
|
||||
}
|
||||
if (ComponentbuilderHelper::checkArray($buttons))
|
||||
}
|
||||
// load the model and controller
|
||||
if (3 == $type)
|
||||
{
|
||||
// insure the controller and model strings are added
|
||||
if (isset($view['settings']->php_controller_list) && ComponentbuilderHelper::checkString($view['settings']->php_controller_list) && $view['settings']->php_controller_list != '//')
|
||||
{
|
||||
return PHP_EOL.implode(PHP_EOL,$buttons);
|
||||
// set the custom buttons ###CUSTOM_BUTTONS_CONTROLLER###
|
||||
$this->fileContentDynamic[$viewsName]['###'.$TARGET.'_CUSTOM_BUTTONS_CONTROLLER_LIST###'] =
|
||||
PHP_EOL.PHP_EOL.$this->setPlaceholders($view['settings']->php_controller_list, $this->placeholders);
|
||||
}
|
||||
// load the model
|
||||
if (isset($view['settings']->php_model_list) && ComponentbuilderHelper::checkString($view['settings']->php_model_list) && $view['settings']->php_model_list != '//')
|
||||
{
|
||||
// set the custom buttons ###CUSTOM_BUTTONS_METHOD###
|
||||
$this->fileContentDynamic[$viewsName]['###'.$TARGET.'_CUSTOM_BUTTONS_METHOD_LIST###'] =
|
||||
PHP_EOL.PHP_EOL.$this->setPlaceholders($view['settings']->php_model_list, $this->placeholders);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// insure the controller and model strings are added
|
||||
if (ComponentbuilderHelper::checkString($view['settings']->php_controller) && $view['settings']->php_controller != '//')
|
||||
{
|
||||
// set the custom buttons ###CUSTOM_BUTTONS_CONTROLLER###
|
||||
$this->fileContentDynamic[$viewName]['###'.$TARGET.'_CUSTOM_BUTTONS_CONTROLLER###'] =
|
||||
PHP_EOL.PHP_EOL.$this->setPlaceholders($view['settings']->php_controller, $this->placeholders);
|
||||
if ('site' === $this->target)
|
||||
{
|
||||
// add the controller for this view
|
||||
// build the file
|
||||
$target = array($this->target => $viewName);
|
||||
$this->buildDynamique($target,'custom_form');
|
||||
###GET_FORM_CUSTOM###
|
||||
}
|
||||
}
|
||||
// load the model
|
||||
if (ComponentbuilderHelper::checkString($view['settings']->php_model) && $view['settings']->php_model != '//')
|
||||
{
|
||||
// set the custom buttons ###CUSTOM_BUTTONS_METHOD###
|
||||
$this->fileContentDynamic[$viewName]['###'.$TARGET.'_CUSTOM_BUTTONS_METHOD###'] =
|
||||
PHP_EOL.PHP_EOL.$this->setPlaceholders($view['settings']->php_model, $this->placeholders);
|
||||
}
|
||||
}
|
||||
// return buttons if they were build
|
||||
if (ComponentbuilderHelper::checkArray($buttons))
|
||||
{
|
||||
return PHP_EOL.implode(PHP_EOL,$buttons);
|
||||
}
|
||||
}
|
||||
return '';
|
||||
@ -3355,22 +3437,9 @@ class Interpretation extends Fields
|
||||
}
|
||||
}
|
||||
|
||||
public function writeFile($path,$data)
|
||||
public function writeFile($path, $data)
|
||||
{
|
||||
$fh = fopen($path, "w");
|
||||
if (!is_resource($fh))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (fwrite($fh, $data))
|
||||
{
|
||||
// close file.
|
||||
fclose($fh);
|
||||
return true;
|
||||
}
|
||||
// close file.
|
||||
fclose($fh);
|
||||
return false;
|
||||
return ComponentbuilderHelper::writeFile($path, $data);
|
||||
}
|
||||
|
||||
public function setMethodGetItem(&$view)
|
||||
@ -3618,7 +3687,7 @@ class Interpretation extends Fields
|
||||
$checkViews = (isset($this->catCodeBuilder[$view]['views']) && ComponentbuilderHelper::checkString($this->catCodeBuilder[$view]['views'])) ? $this->catCodeBuilder[$view]['views'] : $views;
|
||||
if (ComponentbuilderHelper::checkArray($dbStuff[$view]) && array_key_exists($view, $this->catCodeBuilder) && ($checkViews == $views))
|
||||
{
|
||||
$dbStuff[$view.' catagory'] = $this->getCategoryContentType($view, $views, $component);
|
||||
$dbStuff[$view.' category'] = $this->getCategoryContentType($view, $views, $component);
|
||||
}
|
||||
elseif(!isset($dbStuff[$view]) || !ComponentbuilderHelper::checkArray($dbStuff[$view]))
|
||||
{
|
||||
@ -4057,6 +4126,7 @@ class Interpretation extends Fields
|
||||
public function routerParseSwitch(&$view, $viewArray = null, $aliasView = true, $idView = true)
|
||||
{
|
||||
$isCategory = '';
|
||||
$viewTable = false;
|
||||
if ($viewArray && ComponentbuilderHelper::checkArray($viewArray))
|
||||
{
|
||||
if (isset($viewArray['settings']->main_get->db_table_main) && $viewArray['settings']->main_get->db_table_main === 'categories')
|
||||
@ -4068,29 +4138,25 @@ class Interpretation extends Fields
|
||||
// $idView = false; // TODO we will keep an eye on this....
|
||||
// $aliasView = false;
|
||||
// }
|
||||
// elseif (isset($viewArray['settings']->main_get->main_get) && ComponentbuilderHelper::checkArray($viewArray['settings']->main_get->main_get))
|
||||
// {
|
||||
// $aliasView = false;
|
||||
// foreach ($viewArray['settings']->main_get->main_get as $get)
|
||||
// {
|
||||
// if ($get['as'] === 'a')
|
||||
// {
|
||||
// if (isset($get['selection']) && ComponentbuilderHelper::checkArray($get['selection'])
|
||||
// && isset($get['selection']['select_gets'])
|
||||
// && ComponentbuilderHelper::checkArray($get['selection']['select_gets']))
|
||||
// {
|
||||
// foreach ($get['selection']['select_gets'] as $checkAlias)
|
||||
// {
|
||||
// if ($checkAlias === "'a.alias'")
|
||||
// {
|
||||
// $aliasView = true;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
elseif (isset($viewArray['settings']->main_get->main_get) && ComponentbuilderHelper::checkArray($viewArray['settings']->main_get->main_get))
|
||||
{
|
||||
foreach ($viewArray['settings']->main_get->main_get as $get)
|
||||
{
|
||||
if ($get['as'] === 'a')
|
||||
{
|
||||
if (isset($get['selection']) && ComponentbuilderHelper::checkArray($get['selection'])
|
||||
&& isset($get['selection']['select_gets'])
|
||||
&& ComponentbuilderHelper::checkArray($get['selection']['select_gets']))
|
||||
{
|
||||
if (isset($get['selection']['table']))
|
||||
{
|
||||
$viewTable = str_replace('#__'.$this->fileContentStatic['###component###'].'_', '', $get['selection']['table']);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// add if tags is added, also for all front item views
|
||||
if ($aliasView)
|
||||
@ -4106,7 +4172,15 @@ class Interpretation extends Fields
|
||||
$routerSwitch[] = "\t\t\t\t}";
|
||||
$routerSwitch[] = "\t\t\t\telseif (\$segments[\$count-1])";
|
||||
$routerSwitch[] = "\t\t\t\t{";
|
||||
$routerSwitch[] = "\t\t\t\t\t\$id = \$this->getVar('".$view."', \$segments[\$count-1], 'alias', 'id'".$isCategory.");";
|
||||
// we need to get from the table of this views main get the alias so we need the table name
|
||||
if ($viewTable)
|
||||
{
|
||||
$routerSwitch[] = "\t\t\t\t\t\$id = \$this->getVar('".$viewTable."', \$segments[\$count-1], 'alias', 'id'".$isCategory.");";
|
||||
}
|
||||
else
|
||||
{
|
||||
$routerSwitch[] = "\t\t\t\t\t\$id = \$this->getVar('".$view."', \$segments[\$count-1], 'alias', 'id'".$isCategory.");";
|
||||
}
|
||||
$routerSwitch[] = "\t\t\t\t\tif(\$id)";
|
||||
$routerSwitch[] = "\t\t\t\t\t{";
|
||||
$routerSwitch[] = "\t\t\t\t\t\t\$vars['id'] = \$id;";
|
||||
@ -5032,20 +5106,14 @@ class Interpretation extends Fields
|
||||
if (isset($this->langContent['admin']) && ComponentbuilderHelper::checkArray($this->langContent['admin']))
|
||||
{
|
||||
ksort($this->langContent['admin']);
|
||||
foreach ($this->langContent['admin'] as $key => $value)
|
||||
{
|
||||
if (strlen($key) > 0)
|
||||
{
|
||||
if (!isset($lang))
|
||||
{
|
||||
$lang = '';
|
||||
}
|
||||
$lang .= $key.'="'.$value.'"'.PHP_EOL;
|
||||
}
|
||||
}
|
||||
return $lang;
|
||||
// load to global languages
|
||||
$this->languages['en-GB']['admin'] = $this->langContent['admin'];
|
||||
// remove tmp array
|
||||
unset($this->langContent['admin']);
|
||||
|
||||
return true;
|
||||
}
|
||||
return '';
|
||||
return false;
|
||||
}
|
||||
|
||||
public function setLangSite()
|
||||
@ -5073,7 +5141,7 @@ class Interpretation extends Fields
|
||||
// check if the both array is set
|
||||
if (isset($this->langContent['both']) && ComponentbuilderHelper::checkArray($this->langContent['both']))
|
||||
{
|
||||
foreach ($this->langContent[$this->lang] as $keylang => $langval)
|
||||
foreach ($this->langContent['both'] as $keylang => $langval)
|
||||
{
|
||||
$this->langContent['site'][$keylang] = $langval;
|
||||
}
|
||||
@ -5081,20 +5149,14 @@ class Interpretation extends Fields
|
||||
if (isset($this->langContent['site']) && ComponentbuilderHelper::checkArray($this->langContent['site']))
|
||||
{
|
||||
ksort($this->langContent['site']);
|
||||
foreach ($this->langContent['site'] as $key => $value)
|
||||
{
|
||||
if (strlen($key) > 0)
|
||||
{
|
||||
if (!isset($lang))
|
||||
{
|
||||
$lang = '';
|
||||
}
|
||||
$lang .= $key.'="'.$value.'"'.PHP_EOL;
|
||||
}
|
||||
}
|
||||
return $lang;
|
||||
// load to global languages
|
||||
$this->languages['en-GB']['site'] = $this->langContent['site'];
|
||||
// remove tmp array
|
||||
unset($this->langContent['site']);
|
||||
|
||||
return true;
|
||||
}
|
||||
return '';
|
||||
return false;
|
||||
}
|
||||
|
||||
public function setLangSiteSys()
|
||||
@ -5105,20 +5167,14 @@ class Interpretation extends Fields
|
||||
if (isset($this->langContent['sitesys']) && ComponentbuilderHelper::checkArray($this->langContent['sitesys']))
|
||||
{
|
||||
ksort($this->langContent['sitesys']);
|
||||
foreach ($this->langContent['sitesys'] as $key => $value)
|
||||
{
|
||||
if (strlen($key) > 0)
|
||||
{
|
||||
if (!isset($lang))
|
||||
{
|
||||
$lang = '';
|
||||
}
|
||||
$lang .= $key.'="'.$value.'"'.PHP_EOL;
|
||||
}
|
||||
}
|
||||
return $lang;
|
||||
// load to global languages
|
||||
$this->languages['en-GB']['sitesys'] = $this->langContent['sitesys'];
|
||||
// remove tmp array
|
||||
unset($this->langContent['sitesys']);
|
||||
|
||||
return true;
|
||||
}
|
||||
return '';
|
||||
return false;
|
||||
}
|
||||
|
||||
public function setLangAdminSys()
|
||||
@ -5126,20 +5182,14 @@ class Interpretation extends Fields
|
||||
if (isset($this->langContent['adminsys']) && ComponentbuilderHelper::checkArray($this->langContent['adminsys']))
|
||||
{
|
||||
ksort($this->langContent['adminsys']);
|
||||
foreach ($this->langContent['adminsys'] as $key => $value)
|
||||
{
|
||||
if (strlen($key) > 0)
|
||||
{
|
||||
if (!isset($lang))
|
||||
{
|
||||
$lang = '';
|
||||
}
|
||||
$lang .= $key.'="'.$value.'"'.PHP_EOL;
|
||||
}
|
||||
}
|
||||
return $lang;
|
||||
// load to global languages
|
||||
$this->languages['en-GB']['adminsys'] = $this->langContent['adminsys'];
|
||||
// remove tmp array
|
||||
unset($this->langContent['adminsys']);
|
||||
|
||||
return true;
|
||||
}
|
||||
return '';
|
||||
return false;
|
||||
}
|
||||
|
||||
public function setCustomAdminViewListLink($view,$viewName_list)
|
||||
@ -5693,8 +5743,7 @@ class Interpretation extends Fields
|
||||
$linkedViewId = '';
|
||||
if (ComponentbuilderHelper::checkArray($linkedTab))
|
||||
{
|
||||
$linkedViewId = array_search($tabNr,$linkedTab);
|
||||
if ($linkedViewId)
|
||||
if (($linkedViewId = array_search($tabNr, $linkedTab)) !== false)
|
||||
{
|
||||
// don't build
|
||||
$buildLayout = false;
|
||||
@ -5830,10 +5879,14 @@ class Interpretation extends Fields
|
||||
$span = '';
|
||||
if ($mainwidth != 12)
|
||||
{
|
||||
$span = ' span'.$mainwidth;
|
||||
$span = 'span'.$mainwidth;
|
||||
}
|
||||
// start building body
|
||||
$body = '<div class="form-horizontal'.$span.'">';
|
||||
$body = PHP_EOL.'<div class="form-horizontal">';
|
||||
if (ComponentbuilderHelper::checkString($span))
|
||||
{
|
||||
$body .= PHP_EOL."\t".'<div class="'.$span.'">';
|
||||
}
|
||||
// now build the template
|
||||
foreach ($bucket as $tabCodeName => $posions)
|
||||
{
|
||||
@ -5889,7 +5942,7 @@ class Interpretation extends Fields
|
||||
if(isset($linkedViewIdentifier) && ComponentbuilderHelper::checkArray($linkedViewIdentifier) && in_array($tabCodeName,$linkedViewIdentifier))
|
||||
{
|
||||
// get view name
|
||||
$linkedViewId = array_search($tabCodeName,$linkedViewIdentifier);
|
||||
$linkedViewId = array_search($tabCodeName, $linkedViewIdentifier);
|
||||
$linkedViewData = $this->getAdminViewData($linkedViewId);
|
||||
$linkedCodeName = ComponentbuilderHelper::safeString($linkedViewData->name_single);
|
||||
// setup correct core target
|
||||
@ -6121,6 +6174,7 @@ class Interpretation extends Fields
|
||||
$body .= PHP_EOL."\t\t".'<input type="hidden" name="task" value="'.$viewName_single.'.edit" />';
|
||||
$body .= PHP_EOL."\t\t<?php echo JHtml::_('form.token'); ?>";
|
||||
$body .= PHP_EOL."\t</div>";
|
||||
$body .= PHP_EOL."\t</div>";
|
||||
$body .= PHP_EOL."</div>";
|
||||
// check if left has been set
|
||||
if (strlen($leftside) > 0 )
|
||||
@ -7146,7 +7200,7 @@ class Interpretation extends Fields
|
||||
$query .= PHP_EOL."\t\t\tif (\$db->getNumRows())";
|
||||
$query .= PHP_EOL."\t\t\t{";
|
||||
$query .= PHP_EOL."\t\t\t\t\$items = \$db->loadObjectList();";
|
||||
$query .= $this->setGetItemsMethodStringFix($viewName_single,$this->fileContentStatic['###Component###'],"\t\t",true);
|
||||
$query .= $this->setGetItemsMethodStringFix($viewName_single, $this->fileContentStatic['###Component###'], "\t\t", true);
|
||||
// add custom php to getitems method after all
|
||||
$query .= $this->getCustomScriptBuilder('php_getitems_after_all', $viewName_single, PHP_EOL.PHP_EOL."\t\t");
|
||||
$query .= PHP_EOL."\t\t\t\treturn \$items;";
|
||||
@ -7322,8 +7376,10 @@ class Interpretation extends Fields
|
||||
{
|
||||
// setup Ajax files
|
||||
$target = array('admin' => 'import_'.$viewName_list);
|
||||
$this->buildDynamique($target,'customimport');
|
||||
$this->buildDynamique($target, 'customimport');
|
||||
// load the custom script to the files
|
||||
// ###IMPORT_EXT_METHOD_CUSTOM### <<<DYNAMIC>>>
|
||||
$this->fileContentDynamic['import_'.$viewName_list]['###IMPORT_EXT_METHOD_CUSTOM###'] = $this->getCustomScriptBuilder('php_import_ext', 'import_'.$viewName_list, PHP_EOL, null, true);
|
||||
// ###IMPORT_DISPLAY_METHOD_CUSTOM### <<<DYNAMIC>>>
|
||||
$this->fileContentDynamic['import_'.$viewName_list]['###IMPORT_DISPLAY_METHOD_CUSTOM###'] = $this->getCustomScriptBuilder('php_import_display', 'import_'.$viewName_list, PHP_EOL, null, true);
|
||||
// ###IMPORT_SETDATE_METHOD_CUSTOM### <<<DYNAMIC>>>
|
||||
@ -7510,7 +7566,8 @@ class Interpretation extends Fields
|
||||
&& ComponentbuilderHelper::checkArray($this->customBuilderList[$viewName_list])
|
||||
&& in_array($filter['code'],$this->customBuilderList[$viewName_list])
|
||||
&& isset($filter['custom']['table'])
|
||||
&& ComponentbuilderHelper::checkString($filter['custom']['table']))
|
||||
&& ComponentbuilderHelper::checkString($filter['custom']['table'])
|
||||
&& $filter['method'] == 0)
|
||||
{
|
||||
$query .= PHP_EOL.PHP_EOL."\t\t//".$this->setLine(__LINE__)." From the ".ComponentbuilderHelper::safeString(ComponentbuilderHelper::safeString($filter['custom']['table'],'w'))." table.";
|
||||
$query .= PHP_EOL."\t\t\$query->select(\$db->quoteName('".$filter['custom']['db'].".".$filter['custom']['text']."','".$filter['code']."_".$filter['custom']['text']."'));";
|
||||
@ -9157,6 +9214,31 @@ class Interpretation extends Fields
|
||||
$otherViews = $viewName_list;
|
||||
$otherView = $viewName_single;
|
||||
}
|
||||
// load the category helper details in not already loaded
|
||||
if (!isset($this->fileContentDynamic['category'.$otherViews]['###view###']))
|
||||
{
|
||||
// lets also set the category helper for this view
|
||||
$target = array('site' => 'category'.$viewName_list);
|
||||
$this->buildDynamique($target, 'category');
|
||||
// insure the file gets updated
|
||||
$this->fileContentDynamic['category'.$otherViews]['###view###'] = $otherView;
|
||||
$this->fileContentDynamic['category'.$otherViews]['###View###'] = ucfirst($otherView);
|
||||
$this->fileContentDynamic['category'.$otherViews]['###views###'] = $otherViews;
|
||||
$this->fileContentDynamic['category'.$otherViews]['###Views###'] = ucfirst($otherViews);
|
||||
// set script to global helper file
|
||||
$includeHelper = array();
|
||||
$includeHelper[] = "\n//".$this->setLine(__LINE__)."Insure this view category file is loaded.";
|
||||
$includeHelper[] = "\$classname = '".$this->fileContentStatic['###component###'] . ucfirst($viewName_list) . "Categories';";
|
||||
$includeHelper[] = "if (!class_exists(\$classname))";
|
||||
$includeHelper[] = "{";
|
||||
$includeHelper[] = "\t\$path = JPATH_SITE . '/components/com_".$this->fileContentStatic['###component###']."/helpers/category" . $viewName_list . ".php';";
|
||||
$includeHelper[] = "\tif (is_file(\$path))";
|
||||
$includeHelper[] = "\t{";
|
||||
$includeHelper[] = "\t\tinclude_once \$path;";
|
||||
$includeHelper[] = "\t}";
|
||||
$includeHelper[] = "}";
|
||||
$this->fileContentStatic['###CATEGORY_CLASS_TREES###'] .= implode("\n",$includeHelper);
|
||||
}
|
||||
// return category view string
|
||||
if (isset($this->fileContentStatic['###ROUTER_CATEGORY_VIEWS###']) && ComponentbuilderHelper::checkString($this->fileContentStatic['###ROUTER_CATEGORY_VIEWS###']))
|
||||
{
|
||||
@ -9533,7 +9615,7 @@ class Interpretation extends Fields
|
||||
$allow[] = PHP_EOL."\t\t\t\$catid = 0;";
|
||||
$allow[] = "\t\t\tif (isset(\$this->getItem(\$id)->catid))";
|
||||
$allow[] = "\t\t\t{";
|
||||
$allow[] = "\t\t\t\t//".$this->setLine(__LINE__)." set catagory id";
|
||||
$allow[] = "\t\t\t\t//".$this->setLine(__LINE__)." set category id";
|
||||
$allow[] = "\t\t\t\t\$catid = \$this->getItem(\$id)->catid;";
|
||||
$allow[] = PHP_EOL."\t\t\t\t//".$this->setLine(__LINE__)." Existing record. Can only edit in selected categories.";
|
||||
$allow[] = "\t\t\t\t\$form->setFieldAttribute('catid', 'action', 'core.edit');";
|
||||
@ -10556,7 +10638,7 @@ class Interpretation extends Fields
|
||||
return $checkin;
|
||||
}
|
||||
|
||||
public function setGetItemsMethodStringFix($view,$Component,$tab = '',$export = false)
|
||||
public function setGetItemsMethodStringFix($view, $Component, $tab = '', $export = false)
|
||||
{
|
||||
// add the fix if this view has the need for it
|
||||
$fix = '';
|
||||
@ -10762,7 +10844,15 @@ class Interpretation extends Fields
|
||||
{
|
||||
// TODO we check if this works well.
|
||||
$fix .= PHP_EOL."\t".$tab."\t\t\t//".$this->setLine(__LINE__)." convert ".$item['name'];
|
||||
$fix .= PHP_EOL."\t".$tab."\t\t\t\$item->".$item['name']." = ".$Component."Helper::jsonToString(\$item->".$item['name'].", ', ', '".$item['name']."');";
|
||||
if (isset($item['custom']['table']))
|
||||
{
|
||||
$keyTableNAme = str_replace('#__'.$this->fileContentStatic['###component###'] .'_', '', $item['custom']['table']);
|
||||
$fix .= PHP_EOL."\t".$tab."\t\t\t\$item->".$item['name']." = ".$Component."Helper::jsonToString(\$item->".$item['name'].", ', ', '".$keyTableNAme."');";
|
||||
}
|
||||
else
|
||||
{
|
||||
$fix .= PHP_EOL."\t".$tab."\t\t\t\$item->".$item['name']." = ".$Component."Helper::jsonToString(\$item->".$item['name'].", ', ', '".$item['name']."');";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -11050,7 +11140,7 @@ class Interpretation extends Fields
|
||||
{
|
||||
$otherViews = $name_list;
|
||||
// build lang
|
||||
$langName = 'Catagory For<br />'.ComponentbuilderHelper::safeString($otherViews, 'W');
|
||||
$langName = 'Category For<br />'.ComponentbuilderHelper::safeString($otherViews, 'W');
|
||||
}
|
||||
if(!in_array($otherViews,$catArray))
|
||||
{
|
||||
@ -11173,7 +11263,7 @@ class Interpretation extends Fields
|
||||
$builder[$data['name']][$data['header']] = $this->setPlaceholders($data['html'], $this->placeholders);
|
||||
}
|
||||
// since we have custom tabs we must load the tab structure around the cpanel
|
||||
$display[] = '<div id="j-main-container" class="span12">';
|
||||
$display[] = '<div id="j-main-container">';
|
||||
$display[] = "\t".'<div class="form-horizontal">';
|
||||
$display[] = "\t<?php echo JHtml::_('bootstrap.startTabSet', 'cpanel_tab', array('active' => 'cpanel')); ?>";
|
||||
$display[] = PHP_EOL."\t\t<?php echo JHtml::_('bootstrap.addTab', 'cpanel_tab', 'cpanel', JText::_('cPanel', true)); ?>";
|
||||
@ -11751,7 +11841,7 @@ class Interpretation extends Fields
|
||||
$this->configFieldSetsCustomField[$field['tabname']][] = $xmlField;
|
||||
// set global params to db on install
|
||||
$fieldName = ComponentbuilderHelper::safeString(ComponentbuilderHelper::getBetween($xmlField,'name="','"'));
|
||||
$fieldDefault = ComponentbuilderHelper::safeString(ComponentbuilderHelper::getBetween($xmlField,'default="','"'));
|
||||
$fieldDefault = ComponentbuilderHelper::getBetween($xmlField,'default="','"');
|
||||
if (isset($field['custom_value']) && ComponentbuilderHelper::checkString($field['custom_value']))
|
||||
{
|
||||
// load the Global checkin defautls
|
||||
@ -11807,25 +11897,43 @@ class Interpretation extends Fields
|
||||
$tabCode = ComponentbuilderHelper::safeString($tab).'_custom_config';
|
||||
$tabUpper = ComponentbuilderHelper::safeString($tab,'U');
|
||||
$tabLower = ComponentbuilderHelper::safeString($tab);
|
||||
// load the regust id setters for menu views
|
||||
$viewRequest = 'name="'.$tabLower.'_request_id"';
|
||||
// load the request id setters for menu views
|
||||
$viewRequest = 'name="'.$tabLower.'_request_id';
|
||||
foreach($tabFields as $et => $id_field)
|
||||
{
|
||||
if(strpos($id_field,$viewRequest) !== false)
|
||||
{
|
||||
// set the values needed to insure route is done correclty
|
||||
$this->hasIdRequest[$tabLower] = $id_field;
|
||||
$this->setRequestValues($tabLower, $id_field, $viewRequest, 'id', 'hasIdRequest');
|
||||
unset($tabFields[$et]);
|
||||
}
|
||||
elseif (strpos($id_field,'_request_id"') !== false)
|
||||
elseif (strpos($id_field,'_request_id') !== false)
|
||||
{
|
||||
// not loaded to a tab "view" name
|
||||
$_viewRequest = ComponentbuilderHelper::getBetween($id_field,'name="','_request_id"');
|
||||
// set the values needed to insure route is done correclty
|
||||
$this->hasIdRequest[$_viewRequest] = $id_field;
|
||||
$_viewRequest = ComponentbuilderHelper::getBetween($id_field,'name="','_request_id');
|
||||
$searchIdKe = 'name="'.$_viewRequest.'_request_id';
|
||||
$this->setRequestValues($_viewRequest, $id_field, $searchIdKe, 'id', 'hasIdRequest');
|
||||
unset($tabFields[$et]);
|
||||
}
|
||||
}
|
||||
// load the request catid setters for menu views
|
||||
$viewRequestC = 'name="'.$tabLower.'_request_catid';
|
||||
foreach($tabFields as $ci => $catid_field)
|
||||
{
|
||||
if(strpos($catid_field,$viewRequestC) !== false)
|
||||
{
|
||||
|
||||
$this->setRequestValues($tabLower, $catid_field, $viewRequestC, 'catid', 'hasCatIdRequest');
|
||||
unset($tabFields[$ci]);
|
||||
}
|
||||
elseif (strpos($catid_field,'_request_catid') !== false)
|
||||
{
|
||||
// not loaded to a tab "view" name
|
||||
$_viewRequestC = ComponentbuilderHelper::getBetween($catid_field,'name="','_request_catid');
|
||||
$searchCatidKe = 'name="'.$_viewRequestC.'_request_catid';
|
||||
$this->setRequestValues($_viewRequestC, $catid_field, $searchCatidKe, 'catid', 'hasCatIdRequest');
|
||||
unset($tabFields[$ci]);
|
||||
}
|
||||
}
|
||||
// load the global menu setters for single fields
|
||||
$menuSetter = $tabLower.'_menu';
|
||||
$pageSettings = array();
|
||||
@ -11856,6 +11964,29 @@ class Interpretation extends Fields
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function setRequestValues($view, $field, $search, $target, $store)
|
||||
{
|
||||
$key = ComponentbuilderHelper::getBetween($field, $search, '"');
|
||||
if (!ComponentbuilderHelper::checkString($key))
|
||||
{
|
||||
// is not having special var
|
||||
$key = $target;
|
||||
// update field
|
||||
$field = str_replace($search . '"', 'name="'. $key . '"', $field);
|
||||
}
|
||||
else
|
||||
{
|
||||
// update field
|
||||
$field = str_replace($search . $key . '"', 'name="'. $key . '"', $field);
|
||||
}
|
||||
if (!isset($this->{$store}[$view]))
|
||||
{
|
||||
$this->{$store}[$view] = array();
|
||||
}
|
||||
// set the values needed for view requests to be made
|
||||
$this->{$store}[$view][$key] = $field;
|
||||
}
|
||||
|
||||
public function setCustomControlConfigFieldsets($lang)
|
||||
{
|
||||
@ -13315,30 +13446,8 @@ function vdm_dkim() {
|
||||
$this->langContent['admin'][$siteDesc] = ' Allows the users in this group to access site '.ComponentbuilderHelper::safeString($siteName,'w').'.';
|
||||
$this->componentGlobal[$sortKey] = "\t\t".'<action name="site.'.$siteCode.'.access" title="'.$siteTitle.'" description="'.$siteDesc.'" />';
|
||||
}
|
||||
// add the custom permissions to use the buttons of this view
|
||||
/* if (ComponentbuilderHelper::checkArray($site_view['settings']->custom_buttons))
|
||||
{
|
||||
foreach ($site_view['settings']->custom_buttons as $custom_buttons)
|
||||
{
|
||||
$siteButtonName = $custom_buttons['name'];
|
||||
$siteButtonCode = ComponentbuilderHelper::safeString($siteButtonName);
|
||||
$siteButtonTitle = $this->langPrefix.'_'.ComponentbuilderHelper::safeString($siteName.' '.$siteButtonName.' Button Access','U');
|
||||
$siteButtonDesc = $this->langPrefix.'_'.ComponentbuilderHelper::safeString($siteName.' '.$siteButtonName.' Button Access','U').'_DESC';
|
||||
$sortButtonKey = ComponentbuilderHelper::safeString($siteButtonTitle);
|
||||
$this->langContent['admin'][$siteButtonTitle] = $siteName.' '.$siteButtonName.' Button Access';
|
||||
$this->langContent['admin'][$siteButtonDesc] = ' Allows the users in this group to access the '.ComponentbuilderHelper::safeString($siteButtonName,'w').' button.';
|
||||
$this->componentGlobal[$sortButtonKey] = "\t\t".'<action name="'.$siteCode.'.'.$siteButtonCode.'" title="'.$siteButtonTitle.'" description="'.$siteButtonDesc.'" />';
|
||||
}
|
||||
}
|
||||
// add menu controll view that has menus options
|
||||
foreach ($menuControllers as $menuController)
|
||||
{
|
||||
// add menu controll view that has menus options
|
||||
if ($site_view[$menuController])
|
||||
{
|
||||
// TODO for CUSTOM MENUS!!!
|
||||
}
|
||||
} */
|
||||
// add the custom permissions to use the buttons of this view
|
||||
$this->addCustomButtonPermissions($site_view['settings'], $siteName, $siteCode);
|
||||
}
|
||||
}
|
||||
if (isset($this->componentData->admin_views) && ComponentbuilderHelper::checkArray($this->componentData->admin_views))
|
||||
|
@ -61,7 +61,7 @@ class Infusion extends Interpretation
|
||||
*/
|
||||
private function setLine($nr)
|
||||
{
|
||||
if ($this->loadLineNr)
|
||||
if ($this->debugLinenr)
|
||||
{
|
||||
return ' [Infusion '.$nr.']';
|
||||
}
|
||||
@ -80,13 +80,13 @@ class Infusion extends Interpretation
|
||||
if (isset($this->componentData->admin_views) && ComponentbuilderHelper::checkArray($this->componentData->admin_views))
|
||||
{
|
||||
// ###COMPONENT###
|
||||
$this->fileContentStatic['###COMPONENT###'] = ComponentbuilderHelper::safeString($this->componentData->name_code, 'U');
|
||||
$this->fileContentStatic['###COMPONENT###'] = $this->placeholders['###COMPONENT###'];
|
||||
|
||||
// ###Component###
|
||||
$this->fileContentStatic['###Component###'] = ComponentbuilderHelper::safeString($this->componentData->name_code, 'F');
|
||||
$this->fileContentStatic['###Component###'] = $this->placeholders['###Component###'];
|
||||
|
||||
// ###component###
|
||||
$this->fileContentStatic['###component###'] = ComponentbuilderHelper::safeString($this->componentData->name_code);
|
||||
$this->fileContentStatic['###component###'] = $this->placeholders['###component###'];
|
||||
|
||||
// ###COMPANYNAME###
|
||||
$this->fileContentStatic['###COMPANYNAME###'] = trim(JFilterOutput::cleanText($this->componentData->companyname));
|
||||
@ -132,20 +132,13 @@ class Infusion extends Interpretation
|
||||
|
||||
// ###ACCESS_SECTIONS###
|
||||
$this->fileContentStatic['###ACCESS_SECTIONS###'] = $this->setAccessSections();
|
||||
|
||||
// set component place holders
|
||||
$this->placeholders = array(
|
||||
'###Component###' => $this->fileContentStatic['###Component###'],
|
||||
'###component###' => $this->fileContentStatic['###component###'],
|
||||
'###COMPONENT###' => $this->fileContentStatic['###COMPONENT###'],
|
||||
'[[[Component]]]' => $this->fileContentStatic['###Component###'],
|
||||
'[[[component]]]' => $this->fileContentStatic['###component###'],
|
||||
'[[[COMPONENT]]]' => $this->fileContentStatic['###COMPONENT###']
|
||||
);
|
||||
|
||||
// ###CONFIG_FIELDSETS###
|
||||
$keepLang = $this->lang;
|
||||
$this->lang = 'admin';
|
||||
|
||||
// start loading the category tree scripts
|
||||
$this->fileContentStatic['###CATEGORY_CLASS_TREES###'] = '';
|
||||
// run the field sets for first time
|
||||
$this->setConfigFieldsets(1);
|
||||
$this->lang = $keepLang;
|
||||
@ -216,6 +209,9 @@ class Infusion extends Interpretation
|
||||
// start dynamic build
|
||||
foreach ($this->componentData->admin_views as $view)
|
||||
{
|
||||
// just to be safe, lets clear the view placeholders
|
||||
$this->clearFromPlaceHolders('view');
|
||||
// set the target
|
||||
$this->target = 'admin';
|
||||
$this->lang = 'admin';
|
||||
// set main keys
|
||||
@ -253,11 +249,11 @@ class Infusion extends Interpretation
|
||||
|
||||
// set some place holder for the views
|
||||
$this->placeholders['###view###'] = $viewName_single;
|
||||
$this->placeholders['###VIEW###'] = $viewName_u;
|
||||
$this->placeholders['###View###'] = $viewName_f;
|
||||
$this->placeholders['###VIEW###'] = $viewName_u;
|
||||
$this->placeholders['[[[view]]]'] = $viewName_single;
|
||||
$this->placeholders['[[[VIEW]]]'] = $viewName_u;
|
||||
$this->placeholders['[[[View]]]'] = $viewName_f;
|
||||
$this->placeholders['[[[VIEW]]]'] = $viewName_u;
|
||||
|
||||
// set license per view if needed
|
||||
$this->setLockLicensePer($viewName_single, $this->target);
|
||||
@ -389,11 +385,11 @@ class Infusion extends Interpretation
|
||||
|
||||
// set some place holder for the views
|
||||
$this->placeholders['###views###'] = $viewName_list;
|
||||
$this->placeholders['###VIEWS###'] = $viewsName_u;
|
||||
$this->placeholders['###Views###'] = $viewsName_f;
|
||||
$this->placeholders['###VIEWS###'] = $viewsName_u;
|
||||
$this->placeholders['[[[views]]]'] = $viewName_list;
|
||||
$this->placeholders['[[[VIEWS]]]'] = $viewsName_u;
|
||||
$this->placeholders['[[[Views]]]'] = $viewsName_f;
|
||||
$this->placeholders['[[[VIEWS]]]'] = $viewsName_u;
|
||||
|
||||
// set the export/import option
|
||||
if ($view['port'])
|
||||
@ -426,6 +422,8 @@ class Infusion extends Interpretation
|
||||
// ###CHECKINCALL### <<<DYNAMIC>>>
|
||||
$this->fileContentDynamic[$viewName_list]['###CHECKINCALL###'] = '';
|
||||
}
|
||||
// ###ADMIN_CUSTOM_BUTTONS_LIST###
|
||||
$this->fileContentDynamic[$viewName_list]['###ADMIN_CUSTOM_BUTTONS_LIST###'] = $this->setCustomButtons($view, 3, "\t");
|
||||
|
||||
// ###GET_ITEMS_METHOD_STRING_FIX### <<<DYNAMIC>>>
|
||||
$this->fileContentDynamic[$viewName_list]['###GET_ITEMS_METHOD_STRING_FIX###'] = $this->setGetItemsMethodStringFix($viewName_single,$this->fileContentStatic['###Component###']);
|
||||
@ -1069,33 +1067,130 @@ class Infusion extends Interpretation
|
||||
* @return boolean on success
|
||||
*
|
||||
*/
|
||||
|
||||
public function setLangFileData()
|
||||
{
|
||||
// First we build the strings
|
||||
$lang = array();
|
||||
// ###LANG_ADMIN###
|
||||
$lang['###LANG_ADMIN###'] = $this->setLangAdmin();
|
||||
// ###LANG_ADMIN_SYS###
|
||||
$lang['###LANG_ADMIN_SYS###'] = $this->setLangAdminSys();
|
||||
// ###LANG_SITE###
|
||||
$lang['###LANG_SITE###'] = $this->setLangSite();
|
||||
// ###LANG_SITE_SYS###
|
||||
$lang['###LANG_SITE_SYS###'] = $this->setLangSiteSys();
|
||||
// now we insert the values into the files
|
||||
if (ComponentbuilderHelper::checkArray($this->langFiles))
|
||||
$values = array();
|
||||
$mainLangLoader = array();
|
||||
// check the admin lang is set
|
||||
if ($this->setLangAdmin())
|
||||
{
|
||||
foreach ($this->langFiles as $file)
|
||||
$values[] = array_values($this->languages['en-GB']['admin']);
|
||||
$mainLangLoader['admin'] = count($this->languages['en-GB']['admin']);
|
||||
}
|
||||
// check the admin system lang is set
|
||||
if ($this->setLangAdminSys())
|
||||
{
|
||||
$values[] = array_values($this->languages['en-GB']['adminsys']);
|
||||
$mainLangLoader['adminsys'] = count($this->languages['en-GB']['adminsys']);
|
||||
}
|
||||
// check the site lang is set
|
||||
if (!$this->removeSiteFolder && $this->setLangSite())
|
||||
{
|
||||
$values[] = array_values($this->languages['en-GB']['site']);
|
||||
$mainLangLoader['site'] = count($this->languages['en-GB']['site']);
|
||||
}
|
||||
// check the site system lang is set
|
||||
if (!$this->removeSiteFolder && $this->setLangSiteSys())
|
||||
{
|
||||
$values[] = array_values($this->languages['en-GB']['sitesys']);
|
||||
$mainLangLoader['sitesys'] = count($this->languages['en-GB']['sitesys']);
|
||||
}
|
||||
$values = array_unique(ComponentbuilderHelper::mergeArrays($values));
|
||||
// get the other lang strings if there is any
|
||||
$this->multiLangString = $this->getMultiLangStrings($values);
|
||||
// update insert the current lang in to DB
|
||||
$this->setLangPlaceholders($values);
|
||||
// remove old unused language strings
|
||||
$this->purgeLanuageStrings($values);
|
||||
// path to INI file
|
||||
$getPAth = $this->templatePath . '/en-GB.com_admin.ini';
|
||||
// now we insert the values into the files
|
||||
if (ComponentbuilderHelper::checkArray($this->languages))
|
||||
{
|
||||
$langXML = array();
|
||||
foreach ($this->languages as $tag => $areas)
|
||||
{
|
||||
$string = JFile::read($file['path']);
|
||||
// load the data
|
||||
$answer = $this->setPlaceholders($string, $lang, 3);
|
||||
// add to zip array
|
||||
$this->writeFile($file['path'],$answer);
|
||||
// set the line counter
|
||||
$this->lineCount = $this->lineCount + substr_count($answer, PHP_EOL);
|
||||
foreach ($areas as $area => $languageStrings)
|
||||
{
|
||||
// force load if debug lines are added
|
||||
if (!$this->debugLinenr)
|
||||
{
|
||||
// check if we sould install this translation
|
||||
$dif = bcdiv(count($languageStrings), $mainLangLoader[$area]);
|
||||
$percentage = bcmul($dif, 100);
|
||||
if ($percentage < $this->percentageLanguageAdd)
|
||||
{
|
||||
// dont add
|
||||
continue;
|
||||
}
|
||||
}
|
||||
$p = 'admin';
|
||||
$t = '';
|
||||
if (strpos($area, 'site') !== false)
|
||||
{
|
||||
if ($this->removeSiteFolder)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
$p = 'site';
|
||||
}
|
||||
if (strpos($area, 'sys') !== false)
|
||||
{
|
||||
$t = '.sys';
|
||||
}
|
||||
// build the path to to place the lang file
|
||||
$path = $this->componentPath.'/'.$p.'/language/'.$tag;
|
||||
if (!JFolder::exists($path))
|
||||
{
|
||||
JFolder::create($path);
|
||||
// count the folder created
|
||||
$this->folderCount++;
|
||||
}
|
||||
// build the file name
|
||||
$fileName = $tag . '.com_' . $this->componentCodeName . $t . '.ini';
|
||||
// move the file to its place
|
||||
JFile::copy($getPAth, $path.'/'.$fileName);
|
||||
// count the file created
|
||||
$this->fileCount++;
|
||||
// add content to it
|
||||
$lang = '';
|
||||
foreach ($languageStrings as $place => $string)
|
||||
{
|
||||
$lang .= $place.'="'.$string.'"'.PHP_EOL;
|
||||
}
|
||||
// add to language file
|
||||
$this->writeFile($path.'/'.$fileName, $lang);
|
||||
// set the line counter
|
||||
$this->lineCount = $this->lineCount + substr_count($lang, PHP_EOL);
|
||||
// build xml strings
|
||||
if (!isset($langXML[$p]))
|
||||
{
|
||||
$langXML[$p] = array();
|
||||
}
|
||||
$langXML[$p][] = '<language tag="'.$tag.'">language/'.$tag.'/'.$fileName.'</language>';
|
||||
}
|
||||
}
|
||||
// load the lang xml
|
||||
if (ComponentbuilderHelper::checkArray($langXML))
|
||||
{
|
||||
$replace = array();
|
||||
if (isset($langXML['admin']) && ComponentbuilderHelper::checkArray($langXML['admin']))
|
||||
{
|
||||
$replace['###ADMIN_LANGUAGES###'] = implode(PHP_EOL."\t\t\t", $langXML['admin']);
|
||||
}
|
||||
if (!$this->removeSiteFolder && isset($langXML['site']) && ComponentbuilderHelper::checkArray($langXML['site']))
|
||||
{
|
||||
$replace['###SITE_LANGUAGES###'] = implode(PHP_EOL."\t\t", $langXML['site']);
|
||||
}
|
||||
// build xml path
|
||||
$xmlPath = $this->componentPath . '/'. $this->fileContentStatic['###component###']. '.xml';
|
||||
// get the content in xml
|
||||
$componentXML = file_get_contents($xmlPath);
|
||||
// update the xml content
|
||||
$componentXML = $this->setPlaceholders($componentXML, $replace);
|
||||
// store the values back to xml
|
||||
$this->writeFile($xmlPath,$componentXML);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage componentbuilder.php
|
||||
@ -30,20 +30,32 @@ defined('_JEXEC') or die('Restricted access');
|
||||
* Componentbuilder component helper.
|
||||
*/
|
||||
abstract class ComponentbuilderHelper
|
||||
{
|
||||
{
|
||||
|
||||
/**
|
||||
* The Global Admin Event Method.
|
||||
**/
|
||||
public static function globalEvent($document)
|
||||
{
|
||||
// the Session keeps track of all data related to the current session of this user
|
||||
self::loadSession();
|
||||
}
|
||||
|
||||
/*
|
||||
* Autoloader
|
||||
*/
|
||||
public static function autoLoader($type = 'compiler')
|
||||
{
|
||||
// load the compiler classes
|
||||
foreach (glob(JPATH_ADMINISTRATOR."/components/com_componentbuilder/helpers/".$type."/*.php") as $autoFile)
|
||||
// load the type classes
|
||||
if ('smart' !== $type)
|
||||
{
|
||||
require_once $autoFile;
|
||||
foreach (glob(JPATH_ADMINISTRATOR."/components/com_componentbuilder/helpers/".$type."/*.php") as $autoFile)
|
||||
{
|
||||
require_once $autoFile;
|
||||
}
|
||||
}
|
||||
// load only if compiler
|
||||
if ('compiler' == $type)
|
||||
if ('compiler' === $type)
|
||||
{
|
||||
// import the Joomla librarys
|
||||
jimport('joomla.filesystem.file');
|
||||
@ -53,6 +65,15 @@ abstract class ComponentbuilderHelper
|
||||
// include class to minify js
|
||||
require_once JPATH_ADMINISTRATOR.'/components/com_componentbuilder/helpers/js.php';
|
||||
}
|
||||
// load only if smart
|
||||
if ('smart' === $type)
|
||||
{
|
||||
// import the Joomla libraries
|
||||
jimport('joomla.filesystem.file');
|
||||
jimport('joomla.filesystem.folder');
|
||||
jimport('joomla.filesystem.archive');
|
||||
jimport('joomla.application.component.modellist');
|
||||
}
|
||||
// load this for all
|
||||
jimport('joomla.application');
|
||||
}
|
||||
@ -66,6 +87,108 @@ abstract class ComponentbuilderHelper
|
||||
$extruder = new Extrusion($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* The zipper method
|
||||
**/
|
||||
public static function zip($workingDIR, &$filepath)
|
||||
{
|
||||
// store the current joomla working directory
|
||||
$joomla = getcwd();
|
||||
|
||||
// we are changing the working directory to the component temp folder
|
||||
chdir($workingDIR);
|
||||
|
||||
// the full file path of the zip file
|
||||
$filepath = JPath::clean($filepath);
|
||||
|
||||
// delete an existing zip file (or use an exclusion parameter in JFolder::files()
|
||||
JFile::delete($filepath);
|
||||
|
||||
// get a list of files in the current directory tree
|
||||
$files = JFolder::files('.', '', true, true);
|
||||
$zipArray = array();
|
||||
// setup the zip array
|
||||
foreach ($files as $file)
|
||||
{
|
||||
$tmp = array();
|
||||
$tmp['name'] = str_replace('./', '', $file);
|
||||
$tmp['data'] = JFile::read($file);
|
||||
$tmp['time'] = filemtime($file);
|
||||
$zipArray[] = $tmp;
|
||||
}
|
||||
|
||||
// change back to joomla working directory
|
||||
chdir($joomla);
|
||||
|
||||
// get the zip adapter
|
||||
$zip = JArchive::getAdapter('zip');
|
||||
|
||||
//create the zip file
|
||||
if ($zip->create($filepath, $zipArray))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
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)
|
||||
{
|
||||
$fh = fopen($path, "w");
|
||||
if (!is_resource($fh))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (fwrite($fh, $data))
|
||||
{
|
||||
// close file.
|
||||
fclose($fh);
|
||||
return true;
|
||||
}
|
||||
// close file.
|
||||
fclose($fh);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* The user notice info File Name
|
||||
**/
|
||||
@ -278,7 +401,737 @@ abstract class ComponentbuilderHelper
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static function getImportScripts($type, $fieldName = false)
|
||||
{
|
||||
// if field name is pased the convert to type
|
||||
if ($fieldName)
|
||||
{
|
||||
$fieldNames = array(
|
||||
'php_import_display' => 'display',
|
||||
'php_import_setdata' => 'setdata',
|
||||
'php_import_save' => 'save',
|
||||
'html_import_view' => 'view',
|
||||
'php_import' => 'import',
|
||||
'php_import_ext' => 'ext'
|
||||
);
|
||||
// first check if the field name is found
|
||||
if (isset($fieldNames[$type]))
|
||||
{
|
||||
$type = $fieldNames[$type];
|
||||
}
|
||||
else
|
||||
{
|
||||
return '';
|
||||
}
|
||||
}
|
||||
$script = array();
|
||||
if ('display' === $type)
|
||||
{
|
||||
// set the display script
|
||||
$script['display'][] = "\tprotected \$headerList;";
|
||||
$script['display'][] = "\tprotected \$hasPackage = false;";
|
||||
$script['display'][] = "\tprotected \$headers;";
|
||||
$script['display'][] = "\tprotected \$hasHeader = 0;";
|
||||
$script['display'][] = "\tprotected \$dataType;";
|
||||
$script['display'][] = "\n\tpublic function display(\$tpl = null)";
|
||||
$script['display'][] = "\t{";
|
||||
$script['display'][] = "\t\tif (\$this->getLayout() !== 'modal')";
|
||||
$script['display'][] = "\t\t{";
|
||||
$script['display'][] = "\t\t\t// Include helper submenu";
|
||||
$script['display'][] = "\t\t\t###-#-#-Component###Helper::addSubmenu('import');";
|
||||
$script['display'][] = "\t\t}";
|
||||
$script['display'][] = "\n\t\t// Check for errors.";
|
||||
$script['display'][] = "\t\tif (count(\$errors = \$this->get('Errors'))){";
|
||||
$script['display'][] = "\t\t\tJError::raiseError(500, implode('<br />', \$errors));";
|
||||
$script['display'][] = "\t\t\treturn false;";
|
||||
$script['display'][] = "\t\t}";
|
||||
$script['display'][] = "\n\t\t\$paths = new stdClass;";
|
||||
$script['display'][] = "\t\t\$paths->first = '';";
|
||||
$script['display'][] = "\t\t\$state = \$this->get('state');";
|
||||
$script['display'][] = "\n\t\t\$this->paths = &\$paths;";
|
||||
$script['display'][] = "\t\t\$this->state = &\$state;";
|
||||
$script['display'][] = "\t\t// get global action permissions";
|
||||
$script['display'][] = "\t\t\$this->canDo = ###-#-#-Component###Helper::getActions('import');";
|
||||
$script['display'][] = "\n\t\t// We don't need toolbar in the modal window.";
|
||||
$script['display'][] = "\t\tif (\$this->getLayout() !== 'modal')";
|
||||
$script['display'][] = "\t\t{";
|
||||
$script['display'][] = "\t\t\t\$this->addToolbar();";
|
||||
$script['display'][] = "\t\t\t\$this->sidebar = JHtmlSidebar::render();";
|
||||
$script['display'][] = "\t\t}";
|
||||
$script['display'][] = "\n\t\t// get the session object";
|
||||
$script['display'][] = "\t\t\$session = JFactory::getSession();";
|
||||
$script['display'][] = "\t\t// check if it has package";
|
||||
$script['display'][] = "\t\t\$this->hasPackage \t= \$session->get('hasPackage', false);";
|
||||
$script['display'][] = "\t\t\$this->dataType \t= \$session->get('dataType', false);";
|
||||
$script['display'][] = "\t\tif(\$this->hasPackage && \$this->dataType)";
|
||||
$script['display'][] = "\t\t{";
|
||||
$script['display'][] = "\t\t\t\$this->headerList \t= json_decode(\$session->get(\$this->dataType.'_VDM_IMPORTHEADERS', false),true);";
|
||||
$script['display'][] = "\t\t\t\$this->headers \t\t= ###-#-#-Component###Helper::getFileHeaders(\$this->dataType);";
|
||||
$script['display'][] = "\t\t\t// clear the data type";
|
||||
$script['display'][] = "\t\t\t\$session->clear('dataType');";
|
||||
$script['display'][] = "\t\t}";
|
||||
$script['display'][] = "\n\t\t// Display the template";
|
||||
$script['display'][] = "\t\tparent::display(\$tpl);";
|
||||
$script['display'][] = "\t}";
|
||||
}
|
||||
elseif ('setdata' === $type)
|
||||
{
|
||||
// set the setdata script
|
||||
$script['setdata'] = array();
|
||||
$script['setdata'][] = "\t/**";
|
||||
$script['setdata'][] = "\t* Set the data from the spreadsheet to the database";
|
||||
$script['setdata'][] = "\t*";
|
||||
$script['setdata'][] = "\t* @param string \$package Paths to the uploaded package file";
|
||||
$script['setdata'][] = "\t*";
|
||||
$script['setdata'][] = "\t* @return boolean false on failure";
|
||||
$script['setdata'][] = "\t*";
|
||||
$script['setdata'][] = "\t**/";
|
||||
$script['setdata'][] = "\tprotected function setData(\$package,\$table,\$target_headers)";
|
||||
$script['setdata'][] = "\t{";
|
||||
$script['setdata'][] = "\t\tif (###-#-#-Component###Helper::checkArray(\$target_headers))";
|
||||
$script['setdata'][] = "\t\t{";
|
||||
$script['setdata'][] = "\t\t\t// make sure the file is loaded\t\t";
|
||||
$script['setdata'][] = "\t\t\tJLoader::import('PHPExcel', JPATH_COMPONENT_ADMINISTRATOR . '/helpers');";
|
||||
$script['setdata'][] = "\t\t\t\$jinput = JFactory::getApplication()->input;";
|
||||
$script['setdata'][] = "\t\t\tforeach(\$target_headers as \$header)";
|
||||
$script['setdata'][] = "\t\t\t{";
|
||||
$script['setdata'][] = "\t\t\t\t\$data['target_headers'][\$header] = \$jinput->getString(\$header, null);";
|
||||
$script['setdata'][] = "\t\t\t}";
|
||||
$script['setdata'][] = "\t\t\t// set the data";
|
||||
$script['setdata'][] = "\t\t\tif(isset(\$package['dir']))";
|
||||
$script['setdata'][] = "\t\t\t{";
|
||||
$script['setdata'][] = "\t\t\t\t\$inputFileType = PHPExcel_IOFactory::identify(\$package['dir']);";
|
||||
$script['setdata'][] = "\t\t\t\t\$excelReader = PHPExcel_IOFactory::createReader(\$inputFileType);";
|
||||
$script['setdata'][] = "\t\t\t\t\$excelReader->setReadDataOnly(true);";
|
||||
$script['setdata'][] = "\t\t\t\t\$excelObj = \$excelReader->load(\$package['dir']);";
|
||||
$script['setdata'][] = "\t\t\t\t\$data['array'] = \$excelObj->getActiveSheet()->toArray(null, true,true,true);";
|
||||
$script['setdata'][] = "\t\t\t\t\$excelObj->disconnectWorksheets();";
|
||||
$script['setdata'][] = "\t\t\t\tunset(\$excelObj);";
|
||||
$script['setdata'][] = "\t\t\t\treturn \$this->save(\$data,\$table);";
|
||||
$script['setdata'][] = "\t\t\t}";
|
||||
$script['setdata'][] = "\t\t}";
|
||||
$script['setdata'][] = "\t\treturn false;";
|
||||
$script['setdata'][] = "\t}";
|
||||
}
|
||||
elseif ('save' === $type)
|
||||
{
|
||||
$script['save'] = array();
|
||||
$script['save'][] = "\t/**";
|
||||
$script['save'][] = "\t* Save the data from the file to the database";
|
||||
$script['save'][] = "\t*";
|
||||
$script['save'][] = "\t* @param string \$package Paths to the uploaded package file";
|
||||
$script['save'][] = "\t*";
|
||||
$script['save'][] = "\t* @return boolean false on failure";
|
||||
$script['save'][] = "\t*";
|
||||
$script['save'][] = "\t**/";
|
||||
$script['save'][] = "\tprotected function save(\$data,\$table)";
|
||||
$script['save'][] = "\t{";
|
||||
$script['save'][] = "\t\t// import the data if there is any";
|
||||
$script['save'][] = "\t\tif(###-#-#-Component###Helper::checkArray(\$data['array']))";
|
||||
$script['save'][] = "\t\t{";
|
||||
$script['save'][] = "\t\t\t// get user object";
|
||||
$script['save'][] = "\t\t\t\$user \t\t= JFactory::getUser();";
|
||||
$script['save'][] = "\t\t\t// remove header if it has headers";
|
||||
$script['save'][] = "\t\t\t\$id_key \t= \$data['target_headers']['id'];";
|
||||
$script['save'][] = "\t\t\t\$published_key \t= \$data['target_headers']['published'];";
|
||||
$script['save'][] = "\t\t\t\$ordering_key \t= \$data['target_headers']['ordering'];";
|
||||
$script['save'][] = "\t\t\t// get the first array set";
|
||||
$script['save'][] = "\t\t\t\$firstSet = reset(\$data['array']);";
|
||||
$script['save'][] = "";
|
||||
$script['save'][] = "\t\t\t// check if first array is a header array and remove if true";
|
||||
$script['save'][] = "\t\t\tif(\$firstSet[\$id_key] == 'id' || \$firstSet[\$published_key] == 'published' || \$firstSet[\$ordering_key] == 'ordering')";
|
||||
$script['save'][] = "\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\tarray_shift(\$data['array']);";
|
||||
$script['save'][] = "\t\t\t}";
|
||||
$script['save'][] = "\t\t\t";
|
||||
$script['save'][] = "\t\t\t// make sure there is still values in array and that it was not only headers";
|
||||
$script['save'][] = "\t\t\tif(###-#-#-Component###Helper::checkArray(\$data['array']) && \$user->authorise(\$table.'.import', 'com_###-#-#-component###') && \$user->authorise('core.import', 'com_###-#-#-component###'))";
|
||||
$script['save'][] = "\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t// set target.";
|
||||
$script['save'][] = "\t\t\t\t\$target\t= array_flip(\$data['target_headers']);";
|
||||
$script['save'][] = "\t\t\t\t// Get a db connection.";
|
||||
$script['save'][] = "\t\t\t\t\$db = JFactory::getDbo();";
|
||||
$script['save'][] = "\t\t\t\t// set some defaults";
|
||||
$script['save'][] = "\t\t\t\t\$todayDate\t\t= JFactory::getDate()->toSql();";
|
||||
$script['save'][] = "\t\t\t\t// get global action permissions";
|
||||
$script['save'][] = "\t\t\t\t\$canDo\t\t\t= ###-#-#-Component###Helper::getActions(\$table);";
|
||||
$script['save'][] = "\t\t\t\t\$canEdit\t\t= \$canDo->get('core.edit');";
|
||||
$script['save'][] = "\t\t\t\t\$canState\t\t= \$canDo->get('core.edit.state');";
|
||||
$script['save'][] = "\t\t\t\t\$canCreate\t\t= \$canDo->get('core.create');";
|
||||
$script['save'][] = "\t\t\t\t\$hasAlias\t\t= \$this->getAliasesUsed(\$table);";
|
||||
$script['save'][] = "\t\t\t\t// prosses the data";
|
||||
$script['save'][] = "\t\t\t\tforeach(\$data['array'] as \$row)";
|
||||
$script['save'][] = "\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\$found = false;";
|
||||
$script['save'][] = "\t\t\t\t\tif (isset(\$row[\$id_key]) && is_numeric(\$row[\$id_key]) && \$row[\$id_key] > 0)";
|
||||
$script['save'][] = "\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t// raw items import & update!";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$query = \$db->getQuery(true);";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$query";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t->select('version')";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t->from(\$db->quoteName('#__###-#-#-component###_'.\$table))";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t->where(\$db->quoteName('id') . ' = '. \$db->quote(\$row[\$id_key]));";
|
||||
$script['save'][] = "\t\t\t\t\t\t// Reset the query using our newly populated query object.";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$db->setQuery(\$query);";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$db->execute();";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$found = \$db->getNumRows();";
|
||||
$script['save'][] = "\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t";
|
||||
$script['save'][] = "\t\t\t\t\tif(\$found && \$canEdit)";
|
||||
$script['save'][] = "\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t// update item";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$id \t\t= \$row[\$id_key];";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$version\t= \$db->loadResult();";
|
||||
$script['save'][] = "\t\t\t\t\t\t// reset all buckets";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$query \t\t= \$db->getQuery(true);";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$fields \t= array();";
|
||||
$script['save'][] = "\t\t\t\t\t\t// Fields to update.";
|
||||
$script['save'][] = "\t\t\t\t\t\tforeach(\$row as \$key => \$cell)";
|
||||
$script['save'][] = "\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t// ignore column";
|
||||
$script['save'][] = "\t\t\t\t\t\t\tif ('IGNORE' == \$target[\$key])";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\tcontinue;";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t// update modified";
|
||||
$script['save'][] = "\t\t\t\t\t\t\tif ('modified_by' == \$target[\$key])";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\tcontinue;";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t// update modified";
|
||||
$script['save'][] = "\t\t\t\t\t\t\tif ('modified' == \$target[\$key])";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\tcontinue;";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t// update version";
|
||||
$script['save'][] = "\t\t\t\t\t\t\tif ('version' == \$target[\$key])";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\t\$cell = (int) \$version + 1;";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t// verify publish authority";
|
||||
$script['save'][] = "\t\t\t\t\t\t\tif ('published' == \$target[\$key] && !\$canState)";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\tcontinue;";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t// set to update array";
|
||||
$script['save'][] = "\t\t\t\t\t\t\tif(in_array(\$key, \$data['target_headers']) && is_numeric(\$cell))";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\t\$fields[] = \$db->quoteName(\$target[\$key]) . ' = ' . \$cell;";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t\telseif(in_array(\$key, \$data['target_headers']) && is_string(\$cell))";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\t\$fields[] = \$db->quoteName(\$target[\$key]) . ' = ' . \$db->quote(\$cell);";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t\telseif(in_array(\$key, \$data['target_headers']) && is_null(\$cell))";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\t// if import data is null then set empty";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\t\$fields[] = \$db->quoteName(\$target[\$key]) . \" = ''\";";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t// load the defaults";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$fields[]\t= \$db->quoteName('modified_by') . ' = ' . \$db->quote(\$user->id);";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$fields[]\t= \$db->quoteName('modified') . ' = ' . \$db->quote(\$todayDate);";
|
||||
$script['save'][] = "\t\t\t\t\t\t// Conditions for which records should be updated.";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$conditions = array(";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\$db->quoteName('id') . ' = ' . \$id";
|
||||
$script['save'][] = "\t\t\t\t\t\t);";
|
||||
$script['save'][] = "\t\t\t\t\t\t";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$query->update(\$db->quoteName('#__###-#-#-component###_'.\$table))->set(\$fields)->where(\$conditions);";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$db->setQuery(\$query);";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$db->execute();";
|
||||
$script['save'][] = "\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\telseif (\$canCreate)";
|
||||
$script['save'][] = "\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t// insert item";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$query = \$db->getQuery(true);";
|
||||
$script['save'][] = "\t\t\t\t\t\t// reset all buckets";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$columns \t= array();";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$values \t= array();";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$version\t= false;";
|
||||
$script['save'][] = "\t\t\t\t\t\t// Insert columns. Insert values.";
|
||||
$script['save'][] = "\t\t\t\t\t\tforeach(\$row as \$key => \$cell)";
|
||||
$script['save'][] = "\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t// ignore column";
|
||||
$script['save'][] = "\t\t\t\t\t\t\tif ('IGNORE' == \$target[\$key])";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\tcontinue;";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t// remove id";
|
||||
$script['save'][] = "\t\t\t\t\t\t\tif ('id' == \$target[\$key])";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\tcontinue;";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t// update created";
|
||||
$script['save'][] = "\t\t\t\t\t\t\tif ('created_by' == \$target[\$key])";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\tcontinue;";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t// update created";
|
||||
$script['save'][] = "\t\t\t\t\t\t\tif ('created' == \$target[\$key])";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\tcontinue;";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t// Make sure the alias is incremented";
|
||||
$script['save'][] = "\t\t\t\t\t\t\tif ('alias' == \$target[\$key])";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\t\$cell = \$this->getAlias(\$cell,\$table);";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t// update version";
|
||||
$script['save'][] = "\t\t\t\t\t\t\tif ('version' == \$target[\$key])";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\t\$cell = 1;";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\t\$version = true;";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t// set to insert array";
|
||||
$script['save'][] = "\t\t\t\t\t\t\tif(in_array(\$key, \$data['target_headers']) && is_numeric(\$cell))";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\t\$columns[] \t= \$target[\$key];";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\t\$values[] \t= \$cell;";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t\telseif(in_array(\$key, \$data['target_headers']) && is_string(\$cell))";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\t\$columns[] \t= \$target[\$key];";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\t\$values[] \t= \$db->quote(\$cell);";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t\telseif(in_array(\$key, \$data['target_headers']) && is_null(\$cell))";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\t// if import data is null then set empty";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\t\$columns[] \t= \$target[\$key];";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\t\$values[] \t= \"''\";";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t// load the defaults";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$columns[] \t= 'created_by';";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$values[] \t= \$db->quote(\$user->id);";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$columns[] \t= 'created';";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$values[] \t= \$db->quote(\$todayDate);";
|
||||
$script['save'][] = "\t\t\t\t\t\tif (!\$version)";
|
||||
$script['save'][] = "\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\$columns[] \t= 'version';";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\$values[] \t= 1;";
|
||||
$script['save'][] = "\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t\t// Prepare the insert query.";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$query";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t->insert(\$db->quoteName('#__###-#-#-component###_'.\$table))";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t->columns(\$db->quoteName(\$columns))";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t->values(implode(',', \$values));";
|
||||
$script['save'][] = "\t\t\t\t\t\t// Set the query using our newly populated query object and execute it.";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$db->setQuery(\$query);";
|
||||
$script['save'][] = "\t\t\t\t\t\t\$done = \$db->execute();";
|
||||
$script['save'][] = "\t\t\t\t\t\tif (\$done)";
|
||||
$script['save'][] = "\t\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t\$aId = \$db->insertid();";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t// make sure the access of asset is set";
|
||||
$script['save'][] = "\t\t\t\t\t\t\t###-#-#-Component###Helper::setAsset(\$aId,\$table);";
|
||||
$script['save'][] = "\t\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t\telse";
|
||||
$script['save'][] = "\t\t\t\t\t{";
|
||||
$script['save'][] = "\t\t\t\t\t\treturn false;";
|
||||
$script['save'][] = "\t\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\t}";
|
||||
$script['save'][] = "\t\t\t\treturn true;";
|
||||
$script['save'][] = "\t\t\t}";
|
||||
$script['save'][] = "\t\t}";
|
||||
$script['save'][] = "\t\treturn false;";
|
||||
$script['save'][] = "\t}";
|
||||
}
|
||||
elseif ('view' === $type)
|
||||
{
|
||||
$script['view'] = array();
|
||||
$script['view'][] = "<script type=\"text/javascript\">";
|
||||
$script['view'][] = "<?php if (\$this->hasPackage && ###-#-#-Component###Helper::checkArray(\$this->headerList)) : ?>";
|
||||
$script['view'][] = "\tJoomla.continueImport = function()";
|
||||
$script['view'][] = "\t{";
|
||||
$script['view'][] = "\t\tvar form = document.getElementById('adminForm');";
|
||||
$script['view'][] = "\t\tvar error = false;";
|
||||
$script['view'][] = "\t\tvar therequired = [<?php \$i = 0; foreach(\$this->headerList as \$name => \$title) { echo (\$i != 0)? ', \"vdm_'.\$name.'\"':'\"vdm_'.\$name.'\"'; \$i++; } ?>];";
|
||||
$script['view'][] = "\t\tfor(i = 0; i < therequired.length; i++)";
|
||||
$script['view'][] = "\t\t{";
|
||||
$script['view'][] = "\t\t\tif(jQuery('#'+therequired[i]).val() == \"\" )";
|
||||
$script['view'][] = "\t\t\t{";
|
||||
$script['view'][] = "\t\t\t\terror = true;";
|
||||
$script['view'][] = "\t\t\t\tbreak;";
|
||||
$script['view'][] = "\t\t\t}";
|
||||
$script['view'][] = "\t\t}";
|
||||
$script['view'][] = "\t\t// do field validation";
|
||||
$script['view'][] = "\t\tif (error)";
|
||||
$script['view'][] = "\t\t{";
|
||||
$script['view'][] = "\t\t\talert(\"<?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_MSG_PLEASE_SELECT_ALL_COLUMNS', true); ?>\");";
|
||||
$script['view'][] = "\t\t}";
|
||||
$script['view'][] = "\t\telse";
|
||||
$script['view'][] = "\t\t{";
|
||||
$script['view'][] = "\t\t\tjQuery('#loading').css('display', 'block');";
|
||||
$script['view'][] = "";
|
||||
$script['view'][] = "\n\t\t\tform.gettype.value = 'continue';";
|
||||
$script['view'][] = "\t\t\tform.submit();";
|
||||
$script['view'][] = "\t\t}";
|
||||
$script['view'][] = "\t};";
|
||||
$script['view'][] = "<?php else: ?>";
|
||||
$script['view'][] = "\tJoomla.submitbutton = function()";
|
||||
$script['view'][] = "\t{";
|
||||
$script['view'][] = "\t\tvar form = document.getElementById('adminForm');";
|
||||
$script['view'][] = "";
|
||||
$script['view'][] = "\n\t\t// do field validation";
|
||||
$script['view'][] = "\t\tif (form.import_package.value == \"\")";
|
||||
$script['view'][] = "\t\t{";
|
||||
$script['view'][] = "\t\t\talert(\"<?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_MSG_PLEASE_SELECT_A_FILE', true); ?>\");";
|
||||
$script['view'][] = "\t\t}";
|
||||
$script['view'][] = "\t\telse";
|
||||
$script['view'][] = "\t\t{";
|
||||
$script['view'][] = "\t\t\tjQuery('#loading').css('display', 'block');";
|
||||
$script['view'][] = "";
|
||||
$script['view'][] = "\n\t\t\tform.gettype.value = 'upload';";
|
||||
$script['view'][] = "\t\t\tform.submit();";
|
||||
$script['view'][] = "\t\t}";
|
||||
$script['view'][] = "\t};";
|
||||
$script['view'][] = "";
|
||||
$script['view'][] = "\n\tJoomla.submitbutton3 = function()";
|
||||
$script['view'][] = "\t{";
|
||||
$script['view'][] = "\t\tvar form = document.getElementById('adminForm');";
|
||||
$script['view'][] = "";
|
||||
$script['view'][] = "\n\t\t// do field validation";
|
||||
$script['view'][] = "\t\tif (form.import_directory.value == \"\"){";
|
||||
$script['view'][] = "\t\t\talert(\"<?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_MSG_PLEASE_SELECT_A_DIRECTORY', true); ?>\");";
|
||||
$script['view'][] = "\t\t}";
|
||||
$script['view'][] = "\t\telse";
|
||||
$script['view'][] = "\t\t{";
|
||||
$script['view'][] = "\t\t\tjQuery('#loading').css('display', 'block');";
|
||||
$script['view'][] = "";
|
||||
$script['view'][] = "\n\t\t\tform.gettype.value = 'folder';";
|
||||
$script['view'][] = "\t\t\tform.submit();";
|
||||
$script['view'][] = "\t\t}";
|
||||
$script['view'][] = "\t};";
|
||||
$script['view'][] = "";
|
||||
$script['view'][] = "\n\tJoomla.submitbutton4 = function()";
|
||||
$script['view'][] = "\t{";
|
||||
$script['view'][] = "\t\tvar form = document.getElementById('adminForm');";
|
||||
$script['view'][] = "";
|
||||
$script['view'][] = "\n\t\t// do field validation";
|
||||
$script['view'][] = "\t\tif (form.import_url.value == \"\" || form.import_url.value == \"http://\")";
|
||||
$script['view'][] = "\t\t{";
|
||||
$script['view'][] = "\t\t\talert(\"<?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_MSG_ENTER_A_URL', true); ?>\");";
|
||||
$script['view'][] = "\t\t}";
|
||||
$script['view'][] = "\t\telse";
|
||||
$script['view'][] = "\t\t{";
|
||||
$script['view'][] = "\t\t\tjQuery('#loading').css('display', 'block');";
|
||||
$script['view'][] = "";
|
||||
$script['view'][] = "\n\t\t\tform.gettype.value = 'url';";
|
||||
$script['view'][] = "\t\t\tform.submit();";
|
||||
$script['view'][] = "\t\t}";
|
||||
$script['view'][] = "\t};";
|
||||
$script['view'][] = "<?php endif; ?>";
|
||||
$script['view'][] = "";
|
||||
$script['view'][] = "\n// Add spindle-wheel for importations:";
|
||||
$script['view'][] = "jQuery(document).ready(function(\$) {";
|
||||
$script['view'][] = "\tvar outerDiv = \$('body');";
|
||||
$script['view'][] = "";
|
||||
$script['view'][] = "\n\t\$('<div id=\"loading\"></div>')";
|
||||
$script['view'][] = "\t\t.css(\"background\", \"rgba(255, 255, 255, .8) url('components/com_###-#-#-component###/assets/images/import.gif') 50% 15% no-repeat\")";
|
||||
$script['view'][] = "\t\t.css(\"top\", outerDiv.position().top - \$(window).scrollTop())";
|
||||
$script['view'][] = "\t\t.css(\"left\", outerDiv.position().left - \$(window).scrollLeft())";
|
||||
$script['view'][] = "\t\t.css(\"width\", outerDiv.width())";
|
||||
$script['view'][] = "\t\t.css(\"height\", outerDiv.height())";
|
||||
$script['view'][] = "\t\t.css(\"position\", \"fixed\")";
|
||||
$script['view'][] = "\t\t.css(\"opacity\", \"0.80\")";
|
||||
$script['view'][] = "\t\t.css(\"-ms-filter\", \"progid:DXImageTransform.Microsoft.Alpha(Opacity = 80)\")";
|
||||
$script['view'][] = "\t\t.css(\"filter\", \"alpha(opacity = 80)\")";
|
||||
$script['view'][] = "\t\t.css(\"display\", \"none\")";
|
||||
$script['view'][] = "\t\t.appendTo(outerDiv);";
|
||||
$script['view'][] = "});";
|
||||
$script['view'][] = "";
|
||||
$script['view'][] = "\n</script>";
|
||||
$script['view'][] = "";
|
||||
$script['view'][] = "\n<div id=\"installer-import\" class=\"clearfix\">";
|
||||
$script['view'][] = "<form enctype=\"multipart/form-data\" action=\"<?php echo JRoute::_('index.php?option=com_###-#-#-component###&view=import_###-#-#-views###');?>\" method=\"post\" name=\"adminForm\" id=\"adminForm\" class=\"form-horizontal form-validate\">";
|
||||
$script['view'][] = "";
|
||||
$script['view'][] = "\n\t<?php if (!empty( \$this->sidebar)) : ?>";
|
||||
$script['view'][] = "\t\t<div id=\"j-sidebar-container\" class=\"span2\">";
|
||||
$script['view'][] = "\t\t\t<?php echo \$this->sidebar; ?>";
|
||||
$script['view'][] = "\t\t</div>";
|
||||
$script['view'][] = "\t\t<div id=\"j-main-container\" class=\"span10\">";
|
||||
$script['view'][] = "\t<?php else : ?>";
|
||||
$script['view'][] = "\t\t<div id=\"j-main-container\">";
|
||||
$script['view'][] = "\t<?php endif;?>";
|
||||
$script['view'][] = "";
|
||||
$script['view'][] = "\n\t<?php if (\$this->hasPackage && ###-#-#-Component###Helper::checkArray(\$this->headerList) && ###-#-#-Component###Helper::checkArray(\$this->headers)) : ?>";
|
||||
$script['view'][] = "\t\t<fieldset class=\"uploadform\">";
|
||||
$script['view'][] = "\t\t\t<legend><?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_LINK_FILE_TO_TABLE_COLUMNS'); ?></legend>";
|
||||
$script['view'][] = "\t\t\t<div class=\"control-group\">";
|
||||
$script['view'][] = "\t\t\t\t<label class=\"control-label\" ><h4><?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_TABLE_COLUMNS'); ?></h4></label>";
|
||||
$script['view'][] = "\t\t\t\t<div class=\"controls\">";
|
||||
$script['view'][] = "\t\t\t\t\t<label class=\"control-label\" ><h4><?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_FILE_COLUMNS'); ?></h4></label>";
|
||||
$script['view'][] = "\t\t\t\t</div>";
|
||||
$script['view'][] = "\t\t\t</div>";
|
||||
$script['view'][] = "\t\t\t<?php foreach(\$this->headerList as \$name => \$title): ?>";
|
||||
$script['view'][] = "\t\t\t\t<div class=\"control-group\">";
|
||||
$script['view'][] = "\t\t\t\t\t<label for=\"<?php echo \$name; ?>\" class=\"control-label\" ><?php echo \$title; ?></label>";
|
||||
$script['view'][] = "\t\t\t\t\t<div class=\"controls\">";
|
||||
$script['view'][] = "\t\t\t\t\t\t<select name=\"<?php echo \$name; ?>\" id=\"vdm_<?php echo \$name; ?>\" required class=\"required input_box\" >";
|
||||
$script['view'][] = "\t\t\t\t\t\t\t<option value=\"\"><?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_PLEASE_SELECT_COLUMN'); ?></option>";
|
||||
$script['view'][] = "\t\t\t\t\t\t\t<option value=\"IGNORE\"><?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_IGNORE_COLUMN'); ?></option>";
|
||||
$script['view'][] = "\t\t\t\t\t\t\t<?php foreach(\$this->headers as \$value => \$option): ?>";
|
||||
$script['view'][] = "\t\t\t\t\t\t\t\t<?php \$selected = (strtolower(\$option) == strtolower (\$title) || strtolower(\$option) == strtolower(\$name))? 'selected=\"selected\"':''; ?>";
|
||||
$script['view'][] = "\t\t\t\t\t\t\t\t<option value=\"<?php echo ###-#-#-Component###Helper::htmlEscape(\$value); ?>\" class=\"required\" <?php echo \$selected ?>><?php echo ###-#-#-Component###Helper::htmlEscape(\$option); ?></option>";
|
||||
$script['view'][] = "\t\t\t\t\t\t\t<?php endforeach; ?>";
|
||||
$script['view'][] = "\t\t\t\t\t\t</select>";
|
||||
$script['view'][] = "\t\t\t\t\t</div>";
|
||||
$script['view'][] = "\t\t\t\t</div>";
|
||||
$script['view'][] = "\t\t\t<?php endforeach; ?>";
|
||||
$script['view'][] = "\t\t\t<div class=\"form-actions\">";
|
||||
$script['view'][] = "\t\t\t\t<input class=\"btn btn-primary\" type=\"button\" value=\"<?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_CONTINUE'); ?>\" onclick=\"Joomla.continueImport()\" />";
|
||||
$script['view'][] = "\t\t\t</div>";
|
||||
$script['view'][] = "\t\t</fieldset>";
|
||||
$script['view'][] = "\t\t<input type=\"hidden\" name=\"gettype\" value=\"continue\" />";
|
||||
$script['view'][] = "\t<?php else: ?>";
|
||||
$script['view'][] = "\t\t<?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'upload')); ?>";
|
||||
$script['view'][] = "\t\t";
|
||||
$script['view'][] = "\t\t<?php echo JHtml::_('bootstrap.addTab', 'myTab', 'upload', JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_FROM_UPLOAD', true)); ?>";
|
||||
$script['view'][] = "\t\t\t<fieldset class=\"uploadform\">";
|
||||
$script['view'][] = "\t\t\t\t<legend><?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_UPDATE_DATA'); ?></legend>";
|
||||
$script['view'][] = "\t\t\t\t<div class=\"control-group\">";
|
||||
$script['view'][] = "\t\t\t\t\t<label for=\"import_package\" class=\"control-label\"><?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_SELECT_FILE'); ?></label>";
|
||||
$script['view'][] = "\t\t\t\t\t<div class=\"controls\">";
|
||||
$script['view'][] = "\t\t\t\t\t\t<input class=\"input_box\" id=\"import_package\" name=\"import_package\" type=\"file\" size=\"57\" />";
|
||||
$script['view'][] = "\t\t\t\t\t</div>";
|
||||
$script['view'][] = "\t\t\t\t</div>";
|
||||
$script['view'][] = "\t\t\t\t<div class=\"form-actions\">";
|
||||
$script['view'][] = "\t\t\t\t\t<input class=\"btn btn-primary\" type=\"button\" value=\"<?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_UPLOAD_BOTTON'); ?>\" onclick=\"Joomla.submitbutton()\" /> <small><?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_FORMATS_ACCEPTED'); ?> (.csv .xls .ods)</small>";
|
||||
$script['view'][] = "\t\t\t\t</div>";
|
||||
$script['view'][] = "\t\t\t</fieldset>";
|
||||
$script['view'][] = "\t\t<?php echo JHtml::_('bootstrap.endTab'); ?>";
|
||||
$script['view'][] = "\t\t";
|
||||
$script['view'][] = "\t\t<?php echo JHtml::_('bootstrap.addTab', 'myTab', 'directory', JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_FROM_DIRECTORY', true)); ?>";
|
||||
$script['view'][] = "\t\t\t<fieldset class=\"uploadform\">";
|
||||
$script['view'][] = "\t\t\t\t<legend><?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_UPDATE_DATA'); ?></legend>";
|
||||
$script['view'][] = "\t\t\t\t<div class=\"control-group\">";
|
||||
$script['view'][] = "\t\t\t\t\t<label for=\"import_directory\" class=\"control-label\"><?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_SELECT_FILE_DIRECTORY'); ?></label>";
|
||||
$script['view'][] = "\t\t\t\t\t<div class=\"controls\">";
|
||||
$script['view'][] = "\t\t\t\t\t\t<input type=\"text\" id=\"import_directory\" name=\"import_directory\" class=\"span5 input_box\" size=\"70\" value=\"<?php echo \$this->state->get('import.directory'); ?>\" />";
|
||||
$script['view'][] = "\t\t\t\t\t</div>";
|
||||
$script['view'][] = "\t\t\t\t</div>";
|
||||
$script['view'][] = "\t\t\t\t<div class=\"form-actions\">";
|
||||
$script['view'][] = "\t\t\t\t\t<input type=\"button\" class=\"btn btn-primary\" value=\"<?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_GET_BOTTON'); ?>\" onclick=\"Joomla.submitbutton3()\" /> <small><?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_FORMATS_ACCEPTED'); ?> (.csv .xls .ods)</small>";
|
||||
$script['view'][] = "\t\t\t\t</div>";
|
||||
$script['view'][] = "\t\t\t\t</fieldset>";
|
||||
$script['view'][] = "\t\t<?php echo JHtml::_('bootstrap.endTab'); ?>";
|
||||
$script['view'][] = "";
|
||||
$script['view'][] = "\n\t\t<?php echo JHtml::_('bootstrap.addTab', 'myTab', 'url', JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_FROM_URL', true)); ?>";
|
||||
$script['view'][] = "\t\t\t<fieldset class=\"uploadform\">";
|
||||
$script['view'][] = "\t\t\t\t<legend><?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_UPDATE_DATA'); ?></legend>";
|
||||
$script['view'][] = "\t\t\t\t<div class=\"control-group\">";
|
||||
$script['view'][] = "\t\t\t\t\t<label for=\"import_url\" class=\"control-label\"><?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_SELECT_FILE_URL'); ?></label>";
|
||||
$script['view'][] = "\t\t\t\t\t<div class=\"controls\">";
|
||||
$script['view'][] = "\t\t\t\t\t\t<input type=\"text\" id=\"import_url\" name=\"import_url\" class=\"span5 input_box\" size=\"70\" value=\"http://\" />";
|
||||
$script['view'][] = "\t\t\t\t\t</div>";
|
||||
$script['view'][] = "\t\t\t\t</div>";
|
||||
$script['view'][] = "\t\t\t\t<div class=\"form-actions\">";
|
||||
$script['view'][] = "\t\t\t\t\t<input type=\"button\" class=\"btn btn-primary\" value=\"<?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_GET_BOTTON'); ?>\" onclick=\"Joomla.submitbutton4()\" /> <small><?php echo JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_FORMATS_ACCEPTED'); ?> (.csv .xls .ods)</small>";
|
||||
$script['view'][] = "\t\t\t\t</div>";
|
||||
$script['view'][] = "\t\t\t</fieldset>";
|
||||
$script['view'][] = "\t\t<?php echo JHtml::_('bootstrap.endTab'); ?>";
|
||||
$script['view'][] = "\t\t<?php echo JHtml::_('bootstrap.endTabSet'); ?>";
|
||||
$script['view'][] = "\t\t<input type=\"hidden\" name=\"gettype\" value=\"upload\" />";
|
||||
$script['view'][] = "\t<?php endif; ?>";
|
||||
$script['view'][] = "\t<input type=\"hidden\" name=\"task\" value=\"import_###-#-#-views###.import\" />";
|
||||
$script['view'][] = "\t<?php echo JHtml::_('form.token'); ?>";
|
||||
$script['view'][] = "</form>";
|
||||
$script['view'][] = "</div>";
|
||||
}
|
||||
elseif ('import' === $type)
|
||||
{
|
||||
$script['import'] = array();
|
||||
$script['import'][] = "\t/**";
|
||||
$script['import'][] = "\t * Import an spreadsheet from either folder, url or upload.";
|
||||
$script['import'][] = "\t *";
|
||||
$script['import'][] = "\t * @return boolean result of import";
|
||||
$script['import'][] = "\t *";
|
||||
$script['import'][] = "\t */";
|
||||
$script['import'][] = "\tpublic function import()";
|
||||
$script['import'][] = "\t{";
|
||||
$script['import'][] = "\t\t\$this->setState('action', 'import');";
|
||||
$script['import'][] = "\t\t\$app \t\t= JFactory::getApplication();";
|
||||
$script['import'][] = "\t\t\$session \t= JFactory::getSession();";
|
||||
$script['import'][] = "\t\t\$package \t= null;";
|
||||
$script['import'][] = "\t\t\$continue\t= false;";
|
||||
$script['import'][] = "\t\t// get import type";
|
||||
$script['import'][] = "\t\t\$this->getType = \$app->input->getString('gettype', NULL);";
|
||||
$script['import'][] = "\t\t// get import type";
|
||||
$script['import'][] = "\t\t\$this->dataType\t= \$session->get('dataType_VDM_IMPORTINTO', NULL);";
|
||||
$script['import'][] = "\n\t\tif (\$package === null)";
|
||||
$script['import'][] = "\t\t{";
|
||||
$script['import'][] = "\t\t\tswitch (\$this->getType)";
|
||||
$script['import'][] = "\t\t\t{";
|
||||
$script['import'][] = "\t\t\t\tcase 'folder':";
|
||||
$script['import'][] = "\t\t\t\t\t// Remember the 'Import from Directory' path.";
|
||||
$script['import'][] = "\t\t\t\t\t\$app->getUserStateFromRequest(\$this->_context . '.import_directory', 'import_directory');";
|
||||
$script['import'][] = "\t\t\t\t\t\$package = \$this->_getPackageFromFolder();";
|
||||
$script['import'][] = "\t\t\t\t\tbreak;";
|
||||
$script['import'][] = "\n\t\t\t\tcase 'upload':";
|
||||
$script['import'][] = "\t\t\t\t\t\$package = \$this->_getPackageFromUpload();";
|
||||
$script['import'][] = "\t\t\t\t\tbreak;";
|
||||
$script['import'][] = "\n\t\t\t\tcase 'url':";
|
||||
$script['import'][] = "\t\t\t\t\t\$package = \$this->_getPackageFromUrl();";
|
||||
$script['import'][] = "\t\t\t\t\tbreak;";
|
||||
$script['import'][] = "\n\t\t\t\tcase 'continue':";
|
||||
$script['import'][] = "\t\t\t\t\t\$continue \t= true;";
|
||||
$script['import'][] = "\t\t\t\t\t\$package\t= \$session->get('package', null);";
|
||||
$script['import'][] = "\t\t\t\t\t\$package\t= json_decode(\$package, true);";
|
||||
$script['import'][] = "\t\t\t\t\t// clear session";
|
||||
$script['import'][] = "\t\t\t\t\t\$session->clear('package');";
|
||||
$script['import'][] = "\t\t\t\t\t\$session->clear('dataType');";
|
||||
$script['import'][] = "\t\t\t\t\t\$session->clear('hasPackage');";
|
||||
$script['import'][] = "\t\t\t\t\tbreak;";
|
||||
$script['import'][] = "\n\t\t\t\tdefault:";
|
||||
$script['import'][] = "\t\t\t\t\t\$app->setUserState('com_###-#-#-component###.message', JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_NO_IMPORT_TYPE_FOUND'));";
|
||||
$script['import'][] = "\n\t\t\t\t\treturn false;";
|
||||
$script['import'][] = "\t\t\t\t\tbreak;";
|
||||
$script['import'][] = "\t\t\t}";
|
||||
$script['import'][] = "\t\t}";
|
||||
$script['import'][] = "\t\t// Was the package valid?";
|
||||
$script['import'][] = "\t\tif (!\$package || !\$package['type'])";
|
||||
$script['import'][] = "\t\t{";
|
||||
$script['import'][] = "\t\t\tif (in_array(\$this->getType, array('upload', 'url')))";
|
||||
$script['import'][] = "\t\t\t{";
|
||||
$script['import'][] = "\t\t\t\t\$this->remove(\$package['packagename']);";
|
||||
$script['import'][] = "\t\t\t}";
|
||||
$script['import'][] = "\n\t\t\t\$app->setUserState('com_###-#-#-component###.message', JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_UNABLE_TO_FIND_IMPORT_PACKAGE'));";
|
||||
$script['import'][] = "\t\t\treturn false;";
|
||||
$script['import'][] = "\t\t}";
|
||||
$script['import'][] = "\t\t";
|
||||
$script['import'][] = "\t\t// first link data to table headers";
|
||||
$script['import'][] = "\t\tif(!\$continue){";
|
||||
$script['import'][] = "\t\t\t\$package\t= json_encode(\$package);";
|
||||
$script['import'][] = "\t\t\t\$session->set('package', \$package);";
|
||||
$script['import'][] = "\t\t\t\$session->set('dataType', \$this->dataType);";
|
||||
$script['import'][] = "\t\t\t\$session->set('hasPackage', true);";
|
||||
$script['import'][] = "\t\t\treturn true;";
|
||||
$script['import'][] = "\t\t}";
|
||||
$script['import'][] = "\t\t// set the data";
|
||||
$script['import'][] = "\t\t\$headerList = json_decode(\$session->get(\$this->dataType.'_VDM_IMPORTHEADERS', false), true);";
|
||||
$script['import'][] = "\t\tif (!\$this->setData(\$package,\$this->dataType,\$headerList))";
|
||||
$script['import'][] = "\t\t{";
|
||||
$script['import'][] = "\t\t\t// There was an error importing the package";
|
||||
$script['import'][] = "\t\t\t\$msg = JTe-#-#-xt::_('COM_###-#-#-COMPONENT###_IMPORT_ERROR');";
|
||||
$script['import'][] = "\t\t\t\$back = \$session->get('backto_VDM_IMPORT', NULL);";
|
||||
$script['import'][] = "\t\t\tif (\$back)";
|
||||
$script['import'][] = "\t\t\t{";
|
||||
$script['import'][] = "\t\t\t\t\$app->setUserState('com_###-#-#-component###.redirect_url', 'index.php?option=com_###-#-#-component###&view='.\$back);";
|
||||
$script['import'][] = "\t\t\t\t\$session->clear('backto_VDM_IMPORT');";
|
||||
$script['import'][] = "\t\t\t}";
|
||||
$script['import'][] = "\t\t\t\$result = false;";
|
||||
$script['import'][] = "\t\t}";
|
||||
$script['import'][] = "\t\telse";
|
||||
$script['import'][] = "\t\t{";
|
||||
$script['import'][] = "\t\t\t// Package imported sucessfully";
|
||||
$script['import'][] = "\t\t\t\$msg = JTe-#-#-xt::sprintf('COM_###-#-#-COMPONENT###_IMPORT_SUCCESS', \$package['packagename']);";
|
||||
$script['import'][] = "\t\t\t\$back = \$session->get('backto_VDM_IMPORT', NULL);";
|
||||
$script['import'][] = "\t\t\tif (\$back)";
|
||||
$script['import'][] = "\t\t\t{";
|
||||
$script['import'][] = "\t\t\t \$app->setUserState('com_###-#-#-component###.redirect_url', 'index.php?option=com_###-#-#-component###&view='.\$back);";
|
||||
$script['import'][] = "\t\t\t \$session->clear('backto_VDM_IMPORT');";
|
||||
$script['import'][] = "\t\t\t}";
|
||||
$script['import'][] = "\t\t\t\$result = true;";
|
||||
$script['import'][] = "\t\t}";
|
||||
$script['import'][] = "\n\t\t// Set some model state values";
|
||||
$script['import'][] = "\t\t\$app->enqueueMessage(\$msg);";
|
||||
$script['import'][] = "\n\t\t// remove file after import";
|
||||
$script['import'][] = "\t\t\$this->remove(\$package['packagename']);";
|
||||
$script['import'][] = "\t\t\$session->clear(\$this->getType.'_VDM_IMPORTHEADERS');";
|
||||
$script['import'][] = "\t\treturn \$result;";
|
||||
$script['import'][] = "\t}";
|
||||
}
|
||||
elseif ('ext' === $type)
|
||||
{
|
||||
$script['ext'][] = "\t/**";
|
||||
$script['ext'][] = "\t * Check the extension";
|
||||
$script['ext'][] = "\t *";
|
||||
$script['ext'][] = "\t * @param string \$file Name of the uploaded file";
|
||||
$script['ext'][] = "\t *";
|
||||
$script['ext'][] = "\t * @return boolean True on success";
|
||||
$script['ext'][] = "\t *";
|
||||
$script['ext'][] = "\t */";
|
||||
$script['ext'][] = "\tprotected function checkExtention(\$file)";
|
||||
$script['ext'][] = "\t{";
|
||||
$script['ext'][] = "\t\t// check the extention";
|
||||
$script['ext'][] = "\t\tswitch(strtolower(pathinfo(\$file, PATHINFO_EXTENSION)))";
|
||||
$script['ext'][] = "\t\t{";
|
||||
$script['ext'][] = "\t\t\tcase 'xls':";
|
||||
$script['ext'][] = "\t\t\tcase 'ods':";
|
||||
$script['ext'][] = "\t\t\tcase 'csv':";
|
||||
$script['ext'][] = "\t\t\treturn true;";
|
||||
$script['ext'][] = "\t\t\tbreak;";
|
||||
$script['ext'][] = "\t\t}";
|
||||
$script['ext'][] = "\t\treturn false;";
|
||||
$script['ext'][] = "\t}";
|
||||
}
|
||||
// return the needed script
|
||||
if (isset($script[$type]))
|
||||
{
|
||||
return str_replace('-#-#-', '', implode("\n",$script[$type]));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* set the session defaults if not set
|
||||
**/
|
||||
protected static function setSessionDefaults()
|
||||
{
|
||||
// noting for now
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* the Butler
|
||||
**/
|
||||
public static $session = array();
|
||||
|
||||
/**
|
||||
* the Butler Assistant
|
||||
**/
|
||||
protected static $localSession = array();
|
||||
|
||||
/**
|
||||
* start a session if not already set, and load with data
|
||||
**/
|
||||
public static function loadSession()
|
||||
{
|
||||
if (!isset(self::$session) || !self::checkObject(self::$session))
|
||||
{
|
||||
self::$session = JFactory::getSession();
|
||||
}
|
||||
// set the defaults
|
||||
self::setSessionDefaults();
|
||||
}
|
||||
|
||||
/**
|
||||
* give Session more to keep
|
||||
**/
|
||||
public static function set($key, $value)
|
||||
{
|
||||
// set to local memory to speed up program
|
||||
self::$localSession[$key] = $value;
|
||||
// load to session for later use
|
||||
return self::$session->set($key, self::$localSession[$key]);
|
||||
}
|
||||
|
||||
/**
|
||||
* get info from Session
|
||||
**/
|
||||
public static function get($key, $default = null)
|
||||
{
|
||||
// check if in local memory
|
||||
if (!isset(self::$localSession[$key]))
|
||||
{
|
||||
// set to local memory to speed up program
|
||||
self::$localSession[$key] = self::$session->get($key, $default);
|
||||
}
|
||||
return self::$localSession[$key];
|
||||
}
|
||||
|
||||
/**
|
||||
* Load the Component xml manifest.
|
||||
**/
|
||||
@ -412,7 +1265,10 @@ abstract class ComponentbuilderHelper
|
||||
{
|
||||
JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_SUBMENU_COMPILER'), 'index.php?option=com_componentbuilder&view=compiler', $submenu === 'compiler');
|
||||
}
|
||||
JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_SUBMENU_COMPONENTS'), 'index.php?option=com_componentbuilder&view=components', $submenu === 'components');
|
||||
if ($user->authorise('joomla_component.access', 'com_componentbuilder') && $user->authorise('joomla_component.submenu', 'com_componentbuilder'))
|
||||
{
|
||||
JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_SUBMENU_JOOMLA_COMPONENTS'), 'index.php?option=com_componentbuilder&view=joomla_components', $submenu === 'joomla_components');
|
||||
}
|
||||
if ($user->authorise('admin_view.access', 'com_componentbuilder') && $user->authorise('admin_view.submenu', 'com_componentbuilder'))
|
||||
{
|
||||
JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_SUBMENU_ADMIN_VIEWS'), 'index.php?option=com_componentbuilder&view=admin_views', $submenu === 'admin_views');
|
||||
@ -455,6 +1311,14 @@ abstract class ComponentbuilderHelper
|
||||
JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_SUBMENU_FIELDTYPES'), 'index.php?option=com_componentbuilder&view=fieldtypes', $submenu === 'fieldtypes');
|
||||
JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_FIELDTYPE_FIELDTYPE_CATEGORY'), 'index.php?option=com_categories&view=categories&extension=com_componentbuilder.fieldtypes', $submenu === 'categories.fieldtypes');
|
||||
}
|
||||
if ($user->authorise('language_translation.access', 'com_componentbuilder') && $user->authorise('language_translation.submenu', 'com_componentbuilder'))
|
||||
{
|
||||
JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_SUBMENU_LANGUAGE_TRANSLATIONS'), 'index.php?option=com_componentbuilder&view=language_translations', $submenu === 'language_translations');
|
||||
}
|
||||
if ($user->authorise('language.access', 'com_componentbuilder') && $user->authorise('language.submenu', 'com_componentbuilder'))
|
||||
{
|
||||
JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_SUBMENU_LANGUAGES'), 'index.php?option=com_componentbuilder&view=languages', $submenu === 'languages');
|
||||
}
|
||||
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');
|
||||
@ -795,13 +1659,18 @@ abstract class ComponentbuilderHelper
|
||||
|
||||
if (self::checkArray($where))
|
||||
{
|
||||
// prep main <-- why? well if $main='' is empty then $table can be categories or users
|
||||
if (self::checkString($main))
|
||||
{
|
||||
$main = '_'.ltrim($main, '_');
|
||||
}
|
||||
// Get a db connection.
|
||||
$db = JFactory::getDbo();
|
||||
// Create a new query object.
|
||||
$query = $db->getQuery(true);
|
||||
|
||||
$query->select($db->quoteName(array($what)));
|
||||
$query->from($db->quoteName('#__'.$main.'_'.$table));
|
||||
$query->from($db->quoteName('#_'.$main.'_'.$table));
|
||||
$query->where($db->quoteName($whereString) . ' '.$operator.' (' . implode(',',$where) . ')');
|
||||
$db->setQuery($query);
|
||||
$db->execute();
|
||||
@ -1330,13 +2199,30 @@ abstract class ComponentbuilderHelper
|
||||
return $string;
|
||||
}
|
||||
|
||||
public static function safeString($string, $type = 'L', $spacer = '_')
|
||||
public static function safeString($string, $type = 'L', $spacer = '_', $replaceNumbers = true)
|
||||
{
|
||||
// remove all numbers and replace with english text version (works well only up to millions)
|
||||
$string = self::replaceNumbers($string);
|
||||
if ($replaceNumbers === true)
|
||||
{
|
||||
// remove all numbers and replace with english text version (works well only up to millions)
|
||||
$string = self::replaceNumbers($string);
|
||||
}
|
||||
// 0nly continue if we have a string
|
||||
if (self::checkString($string))
|
||||
{
|
||||
// create file name without the extention that is safe
|
||||
if ($type === 'filename')
|
||||
{
|
||||
// make sure VDM is not in the string
|
||||
$string = str_replace('VDM', 'vDm', $string);
|
||||
// Remove anything which isn't a word, whitespace, number
|
||||
// or any of the following caracters -_()
|
||||
// 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);
|
||||
// http://stackoverflow.com/a/2021729/1429677
|
||||
return preg_replace('/\s+/', ' ', $string);
|
||||
}
|
||||
// remove all other characters
|
||||
$string = trim($string);
|
||||
$string = preg_replace('/'.$spacer.'+/', ' ', $string);
|
||||
|
@ -69,12 +69,12 @@ class Mapping
|
||||
* The datatypes and it linked field types (basic)
|
||||
* (TODO) We may need to set this dynamicly
|
||||
*/
|
||||
protected $dataTypes = array( 'CHAR' => 'Text', 'VARCHAR' => 'Text',
|
||||
'TEXT' => 'Textarea', 'MEDIUMTEXT' => 'Textarea',
|
||||
'LONGTEXT' => 'Textarea', 'DATE' => 'Text', 'TIME' => 'Text',
|
||||
'DATETIME' => 'Calendar', 'INT' => 'Text', 'TINYINT' => 'Text',
|
||||
'BIGINT' => 'Text', 'FLOAT' => 'Text', 'DECIMAL' => 'Text',
|
||||
'DOUBLE' => 'Text');
|
||||
protected $dataTypes = array( 'VARCHAR' => 'Text', 'CHAR' => 'Text',
|
||||
'MEDIUMTEXT' => 'Textarea', 'LONGTEXT' => 'Textarea',
|
||||
'TEXT' => 'Textarea', 'DATETIME' => 'Calendar',
|
||||
'DATE' => 'Text', 'TIME' => 'Text', 'TINYINT' => 'Text',
|
||||
'BIGINT' => 'Text', 'INT' => 'Text', 'FLOAT' => 'Text',
|
||||
'DECIMAL' => 'Text', 'DOUBLE' => 'Text');
|
||||
|
||||
/**
|
||||
* The datasize identifiers
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage headercheck.php
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage batch_.php
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage indenter.php
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage js.php
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage minify.php
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -3,13 +3,14 @@ COM_COMPONENTBUILDER_CONFIGURATION="Component Builder Configuration"
|
||||
COM_COMPONENTBUILDER_MENU="» Component Builder"
|
||||
COM_COMPONENTBUILDER_MENU_ADMIN_VIEWS="Admin Views"
|
||||
COM_COMPONENTBUILDER_MENU_COMPILER="Compiler"
|
||||
COM_COMPONENTBUILDER_MENU_COMPONENTS="Components"
|
||||
COM_COMPONENTBUILDER_MENU_CUSTOM_ADMIN_VIEWS="Custom Admin Views"
|
||||
COM_COMPONENTBUILDER_MENU_CUSTOM_CODES="Custom Codes"
|
||||
COM_COMPONENTBUILDER_MENU_DYNAMIC_GETS="Dynamic Gets"
|
||||
COM_COMPONENTBUILDER_MENU_FIELDS="Fields"
|
||||
COM_COMPONENTBUILDER_MENU_FIELDTYPES="Fieldtypes"
|
||||
COM_COMPONENTBUILDER_MENU_HELP_DOCUMENTS="Help Documents"
|
||||
COM_COMPONENTBUILDER_MENU_JOOMLA_COMPONENTS="Joomla Components"
|
||||
COM_COMPONENTBUILDER_MENU_LANGUAGE_TRANSLATIONS="Language Translations"
|
||||
COM_COMPONENTBUILDER_MENU_LAYOUTS="Layouts"
|
||||
COM_COMPONENTBUILDER_MENU_SITE_VIEWS="Site Views"
|
||||
COM_COMPONENTBUILDER_MENU_SNIPPETS="Snippets"
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage css_fullwidth.php
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage custom_buttons_fullwidth.php
|
||||
@ -31,7 +31,9 @@ $form = $displayData->getForm();
|
||||
|
||||
$fields = $displayData->get('fields') ?: array(
|
||||
'php_controller',
|
||||
'php_model'
|
||||
'php_model',
|
||||
'php_controller_list',
|
||||
'php_model_list'
|
||||
);
|
||||
|
||||
?>
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage custom_buttons_left.php
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage custom_import_fullwidth.php
|
||||
@ -37,7 +37,8 @@ $fields = $displayData->get('fields') ?: array(
|
||||
'html_import_view',
|
||||
'php_import',
|
||||
'php_import_setdata',
|
||||
'php_import_save'
|
||||
'php_import_save',
|
||||
'php_import_ext'
|
||||
);
|
||||
|
||||
?>
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage fields_fullwidth.php
|
||||
@ -28,7 +28,7 @@
|
||||
defined('_JEXEC') or die('Restricted access');
|
||||
|
||||
// set the defaults
|
||||
$items = $displayData->vxtfields;
|
||||
$items = $displayData->vxxfields;
|
||||
$user = JFactory::getUser();
|
||||
$id = $displayData->item->id;
|
||||
$edit = "index.php?option=com_componentbuilder&view=fields&task=field.edit";
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage javascript_fullwidth.php
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage linked_components_fullwidth.php
|
||||
@ -28,40 +28,40 @@
|
||||
defined('_JEXEC') or die('Restricted access');
|
||||
|
||||
// set the defaults
|
||||
$items = $displayData->vxulinked_components;
|
||||
$items = $displayData->vxylinked_components;
|
||||
$user = JFactory::getUser();
|
||||
$id = $displayData->item->id;
|
||||
$edit = "index.php?option=com_componentbuilder&view=components&task=component.edit";
|
||||
$edit = "index.php?option=com_componentbuilder&view=joomla_components&task=joomla_component.edit";
|
||||
|
||||
?>
|
||||
<div class="form-vertical">
|
||||
<?php if (ComponentbuilderHelper::checkArray($items)): ?>
|
||||
<table class="footable table data components" data-show-toggle="true" data-toggle-column="first" data-sorting="true" data-paging="true" data-paging-size="20" data-filtering="true">
|
||||
<table class="footable table data joomla_components" data-show-toggle="true" data-toggle-column="first" data-sorting="true" data-paging="true" data-paging-size="20" data-filtering="true">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-type="html" data-sort-use="text">
|
||||
<?php echo JText::_('COM_COMPONENTBUILDER_COMPONENT_SYSTEM_NAME_LABEL'); ?>
|
||||
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SYSTEM_NAME_LABEL'); ?>
|
||||
</th>
|
||||
<th data-breakpoints="xs sm" data-type="html" data-sort-use="text">
|
||||
<?php echo JText::_('COM_COMPONENTBUILDER_COMPONENT_NAME_CODE_LABEL'); ?>
|
||||
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_NAME_CODE_LABEL'); ?>
|
||||
</th>
|
||||
<th data-breakpoints="xs sm" data-type="html" data-sort-use="text">
|
||||
<?php echo JText::_('COM_COMPONENTBUILDER_COMPONENT_COMPONENT_VERSION_LABEL'); ?>
|
||||
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_COMPONENT_VERSION_LABEL'); ?>
|
||||
</th>
|
||||
<th data-breakpoints="xs sm md" data-type="html" data-sort-use="text">
|
||||
<?php echo JText::_('COM_COMPONENTBUILDER_COMPONENT_SHORT_DESCRIPTION_LABEL'); ?>
|
||||
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SHORT_DESCRIPTION_LABEL'); ?>
|
||||
</th>
|
||||
<th data-breakpoints="xs sm md" data-type="html" data-sort-use="text">
|
||||
<?php echo JText::_('COM_COMPONENTBUILDER_COMPONENT_COMPANYNAME_LABEL'); ?>
|
||||
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_COMPANYNAME_LABEL'); ?>
|
||||
</th>
|
||||
<th data-breakpoints="xs sm md" data-type="html" data-sort-use="text">
|
||||
<?php echo JText::_('COM_COMPONENTBUILDER_COMPONENT_AUTHOR_LABEL'); ?>
|
||||
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_AUTHOR_LABEL'); ?>
|
||||
</th>
|
||||
<th width="10" data-breakpoints="xs sm md">
|
||||
<?php echo JText::_('COM_COMPONENTBUILDER_COMPONENT_STATUS'); ?>
|
||||
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_STATUS'); ?>
|
||||
</th>
|
||||
<th width="5" data-type="number" data-breakpoints="xs sm md">
|
||||
<?php echo JText::_('COM_COMPONENTBUILDER_COMPONENT_ID'); ?>
|
||||
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ID'); ?>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@ -70,14 +70,14 @@ $edit = "index.php?option=com_componentbuilder&view=components&task=component.ed
|
||||
<?php
|
||||
$canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->id || $item->checked_out == 0;
|
||||
$userChkOut = JFactory::getUser($item->checked_out);
|
||||
$canDo = ComponentbuilderHelper::getActions('component',$item,'components');
|
||||
$canDo = ComponentbuilderHelper::getActions('joomla_component',$item,'joomla_components');
|
||||
?>
|
||||
<tr>
|
||||
<td class="nowrap">
|
||||
<?php if ($canDo->get('core.edit')): ?>
|
||||
<a href="<?php echo $edit; ?>&id=<?php echo $item->id; ?>&ref=admin_view&refid=<?php echo $id; ?>"><?php echo $displayData->escape($item->system_name); ?></a>
|
||||
<?php if ($item->checked_out): ?>
|
||||
<?php echo JHtml::_('jgrid.checkedout', $i, $userChkOut->name, $item->checked_out_time, 'components.', $canCheckin); ?>
|
||||
<?php echo JHtml::_('jgrid.checkedout', $i, $userChkOut->name, $item->checked_out_time, 'joomla_components.', $canCheckin); ?>
|
||||
<?php endif; ?>
|
||||
<?php else: ?>
|
||||
<div class="name"><?php echo $displayData->escape($item->system_name); ?></div>
|
||||
|
@ -10,8 +10,8 @@
|
||||
|_|
|
||||
/-------------------------------------------------------------------------------------------------------------------------------/
|
||||
|
||||
@version 2.3.4
|
||||
@build 13th February, 2017
|
||||
@version 2.4.6
|
||||
@build 20th May, 2017
|
||||
@created 30th April, 2015
|
||||
@package Component Builder
|
||||
@subpackage mysql_fullwidth.php
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user