From f3f91f492f0cd58b66a530d6e2b7a5a8863cbff9 Mon Sep 17 00:00:00 2001 From: dev Date: Mon, 3 Apr 2017 11:58:41 +0100 Subject: [PATCH 1/8] added the UI for the new Language Manager gh-60 --- README.md | 14 +- admin/README.txt | 14 +- admin/access.xml | 43 + admin/assets/css/admin.css | 4 +- admin/assets/css/dashboard.css | 4 +- admin/assets/css/help_document.css | 2 +- admin/assets/css/help_documents.css | 2 +- admin/assets/css/language.css | 27 + admin/assets/css/language_placeholder.css | 27 + admin/assets/css/language_placeholders.css | 27 + admin/assets/css/languages.css | 27 + .../images/icons/language_placeholder_add.png | Bin 0 -> 43823 bytes .../images/icons/language_placeholders.png | Bin 0 -> 35804 bytes admin/componentbuilder.php | 4 +- admin/controller.php | 6 +- admin/controllers/ajax.json.php | 4 +- admin/controllers/componentbuilder.php | 4 +- admin/controllers/help.php | 4 +- admin/controllers/help_document.php | 2 +- admin/controllers/help_documents.php | 2 +- admin/controllers/import.php | 4 +- .../controllers/import_joomla_components.php | 4 +- admin/controllers/language.php | 326 +++++++ admin/controllers/language_placeholder.php | 326 +++++++ admin/controllers/language_placeholders.php | 120 +++ admin/controllers/languages.php | 111 +++ admin/helpers/componentbuilder.php | 12 +- admin/helpers/headercheck.php | 4 +- admin/helpers/html/batch_.php | 4 +- admin/helpers/indenter.php | 4 +- admin/helpers/js.php | 4 +- admin/helpers/minify.php | 4 +- .../en-GB/en-GB.com_componentbuilder.ini | 159 ++++ .../en-GB/en-GB.com_componentbuilder.sys.ini | 1 + admin/layouts/admin_view/css_fullwidth.php | 4 +- .../admin_view/custom_buttons_fullwidth.php | 4 +- .../admin_view/custom_buttons_left.php | 4 +- .../admin_view/custom_import_fullwidth.php | 4 +- admin/layouts/admin_view/fields_fullwidth.php | 4 +- .../admin_view/javascript_fullwidth.php | 4 +- .../linked_components_fullwidth.php | 4 +- admin/layouts/admin_view/mysql_fullwidth.php | 4 +- admin/layouts/admin_view/mysql_left.php | 4 +- admin/layouts/admin_view/php_fullwidth.php | 4 +- admin/layouts/admin_view/publishing.php | 4 +- admin/layouts/admin_view/publlshing.php | 4 +- admin/layouts/admin_view/settings_above.php | 4 +- admin/layouts/admin_view/settings_left.php | 4 +- admin/layouts/admin_view/settings_right.php | 4 +- admin/layouts/admin_view/settings_under.php | 4 +- admin/layouts/batchselection.php | 4 +- .../custom_buttons_fullwidth.php | 4 +- .../custom_admin_view/custom_buttons_left.php | 4 +- .../custom_script_fullwidth.php | 4 +- .../custom_admin_view/details_above.php | 4 +- .../custom_admin_view/details_fullwidth.php | 4 +- .../custom_admin_view/details_left.php | 4 +- .../custom_admin_view/details_right.php | 4 +- .../custom_admin_view/details_rightside.php | 4 +- .../custom_admin_view/details_under.php | 4 +- .../linked_components_fullwidth.php | 4 +- .../layouts/custom_admin_view/publishing.php | 4 +- .../layouts/custom_admin_view/publlshing.php | 4 +- admin/layouts/custom_code/details_above.php | 4 +- .../layouts/custom_code/details_fullwidth.php | 4 +- admin/layouts/custom_code/details_left.php | 4 +- admin/layouts/custom_code/details_right.php | 4 +- admin/layouts/custom_code/details_under.php | 4 +- admin/layouts/custom_code/publishing.php | 4 +- admin/layouts/custom_code/publlshing.php | 4 +- .../layouts/dynamic_get/abacus_fullwidth.php | 4 +- admin/layouts/dynamic_get/abacus_left.php | 4 +- .../dynamic_get/custom_script_fullwidth.php | 4 +- admin/layouts/dynamic_get/gettable_above.php | 4 +- .../dynamic_get/gettable_fullwidth.php | 4 +- admin/layouts/dynamic_get/gettable_left.php | 4 +- admin/layouts/dynamic_get/gettable_right.php | 4 +- admin/layouts/dynamic_get/gettable_under.php | 4 +- admin/layouts/dynamic_get/publishing.php | 4 +- admin/layouts/dynamic_get/publlshing.php | 4 +- admin/layouts/field/details_fullwidth.php | 4 +- admin/layouts/field/details_left.php | 4 +- admin/layouts/field/details_right.php | 4 +- admin/layouts/field/details_under.php | 4 +- .../field/linked_admin_views_fullwidth.php | 4 +- admin/layouts/field/publishing.php | 4 +- admin/layouts/field/publlshing.php | 4 +- admin/layouts/field/scripts_left.php | 4 +- admin/layouts/field/scripts_right.php | 4 +- admin/layouts/fieldtype/details_left.php | 4 +- admin/layouts/fieldtype/details_right.php | 4 +- admin/layouts/fieldtype/fields_fullwidth.php | 4 +- admin/layouts/fieldtype/publishing.php | 4 +- admin/layouts/fieldtype/publlshing.php | 4 +- admin/layouts/help_document/details_above.php | 4 +- .../help_document/details_fullwidth.php | 4 +- admin/layouts/help_document/details_left.php | 4 +- admin/layouts/help_document/details_right.php | 4 +- admin/layouts/help_document/details_under.php | 4 +- admin/layouts/help_document/publishing.php | 4 +- admin/layouts/help_document/publlshing.php | 4 +- .../admin_views_fullwidth.php | 4 +- .../custom_admin_views_fullwidth.php | 4 +- .../joomla_component/details_above.php | 4 +- .../layouts/joomla_component/details_left.php | 4 +- .../joomla_component/details_right.php | 4 +- .../joomla_component/details_under.php | 4 +- .../dynamic_build_beta_fullwidth.php | 4 +- .../dynamic_integration_fullwidth.php | 4 +- .../libs_helpers_fullwidth.php | 4 +- .../joomla_component/mysql_fullwidth.php | 4 +- .../joomla_component/php_fullwidth.php | 4 +- admin/layouts/joomla_component/publishing.php | 4 +- admin/layouts/joomla_component/publlshing.php | 4 +- .../layouts/joomla_component/readme_left.php | 4 +- .../layouts/joomla_component/readme_right.php | 4 +- .../joomla_component/settings_left.php | 4 +- .../joomla_component/settings_right.php | 4 +- .../joomla_component/site_views_fullwidth.php | 4 +- admin/layouts/language/details_left.php | 54 ++ admin/layouts/language/details_right.php | 54 ++ admin/layouts/language/index.html | 1 + admin/layouts/language/publishing.php | 58 ++ admin/layouts/language/publlshing.php | 60 ++ .../language_placeholder/details_above.php | 41 + .../details_fullwidth.php | 49 + admin/layouts/language_placeholder/index.html | 1 + .../language_placeholder/publishing.php | 58 ++ .../language_placeholder/publlshing.php | 60 ++ .../layout/custom_script_fullwidth.php | 4 +- admin/layouts/layout/details_fullwidth.php | 4 +- admin/layouts/layout/details_left.php | 4 +- admin/layouts/layout/details_right.php | 4 +- admin/layouts/layout/details_rightside.php | 4 +- admin/layouts/layout/details_under.php | 4 +- admin/layouts/layout/publishing.php | 4 +- admin/layouts/layout/publlshing.php | 4 +- .../site_view/custom_buttons_fullwidth.php | 4 +- .../layouts/site_view/custom_buttons_left.php | 4 +- .../site_view/custom_buttons_right.php | 4 +- admin/layouts/site_view/details_above.php | 4 +- admin/layouts/site_view/details_fullwidth.php | 4 +- admin/layouts/site_view/details_left.php | 4 +- admin/layouts/site_view/details_right.php | 4 +- admin/layouts/site_view/details_rightside.php | 4 +- admin/layouts/site_view/details_under.php | 4 +- .../site_view/javascript_css_fullwidth.php | 4 +- .../site_view/linked_components_fullwidth.php | 4 +- admin/layouts/site_view/php_fullwidth.php | 4 +- admin/layouts/site_view/publishing.php | 4 +- admin/layouts/site_view/publlshing.php | 4 +- admin/layouts/snippet/details_above.php | 4 +- admin/layouts/snippet/details_left.php | 4 +- admin/layouts/snippet/details_right.php | 4 +- admin/layouts/snippet/publishing.php | 4 +- admin/layouts/snippet/publlshing.php | 4 +- .../template/custom_script_fullwidth.php | 4 +- admin/layouts/template/details_fullwidth.php | 4 +- admin/layouts/template/details_left.php | 4 +- admin/layouts/template/details_right.php | 4 +- admin/layouts/template/details_rightside.php | 4 +- admin/layouts/template/details_under.php | 4 +- admin/layouts/template/publishing.php | 4 +- admin/layouts/template/publlshing.php | 4 +- admin/models/ajax.php | 4 +- admin/models/componentbuilder.php | 16 +- admin/models/fields/adminviewfolderlist.php | 4 +- admin/models/fields/adminviews.php | 4 +- admin/models/fields/articles.php | 4 +- admin/models/fields/component.php | 4 +- admin/models/fields/components.php | 170 ++++ admin/models/fields/customadminviews.php | 4 +- admin/models/fields/customfilelist.php | 4 +- admin/models/fields/customfolderlist.php | 4 +- admin/models/fields/customgets.php | 4 +- admin/models/fields/dbtables.php | 4 +- admin/models/fields/dynamicget.php | 4 +- admin/models/fields/dynamicgets.php | 4 +- admin/models/fields/fields.php | 4 +- admin/models/fields/fieldsmulti.php | 4 +- admin/models/fields/fieldtypes.php | 4 +- admin/models/fields/maingets.php | 4 +- admin/models/fields/siteviewfolderlist.php | 4 +- admin/models/fields/siteviews.php | 4 +- admin/models/fields/snippets.php | 4 +- admin/models/forms/help_document.js | 2 +- admin/models/forms/language.js | 25 + admin/models/forms/language.xml | 145 +++ admin/models/forms/language_placeholder.js | 25 + admin/models/forms/language_placeholder.xml | 183 ++++ admin/models/help_document.php | 2 +- admin/models/help_documents.php | 2 +- admin/models/import.php | 4 +- admin/models/import_joomla_components.php | 4 +- admin/models/language.php | 859 +++++++++++++++++ admin/models/language_placeholder.php | 871 ++++++++++++++++++ admin/models/language_placeholders.php | 376 ++++++++ admin/models/languages.php | 375 ++++++++ admin/sql/install.mysql.utf8.sql | 52 ++ admin/sql/uninstall.mysql.utf8.sql | 2 + admin/sql/updates/mysql/2.4.1.sql | 51 + admin/tables/help_document.php | 2 +- admin/tables/language.php | 351 +++++++ admin/tables/language_placeholder.php | 351 +++++++ admin/views/componentbuilder/tmpl/default.php | 4 +- ...sed_issues_the_closed_issues_on_github.php | 4 +- .../componentbuilder/tmpl/default_main.php | 4 +- ..._open_issues_the_open_issues_on_github.php | 4 +- .../tmpl/default_readme_information.php | 4 +- ...t_vast_development_method_notice_board.php | 4 +- .../componentbuilder/tmpl/default_vdm.php | 4 +- admin/views/componentbuilder/view.html.php | 4 +- admin/views/help_document/submitbutton.js | 2 +- admin/views/help_document/tmpl/edit.php | 2 +- admin/views/help_document/view.html.php | 2 +- admin/views/help_documents/tmpl/default.php | 2 +- .../tmpl/default_batch_body.php | 2 +- .../tmpl/default_batch_footer.php | 2 +- .../help_documents/tmpl/default_body.php | 2 +- .../help_documents/tmpl/default_foot.php | 2 +- .../help_documents/tmpl/default_head.php | 2 +- .../help_documents/tmpl/default_toolbar.php | 2 +- admin/views/help_documents/view.html.php | 2 +- admin/views/import/tmpl/default.php | 4 +- admin/views/import/view.html.php | 4 +- .../import_joomla_components/tmpl/default.php | 4 +- .../import_joomla_components/view.html.php | 4 +- admin/views/language/submitbutton.js | 49 + admin/views/language/tmpl/edit.php | 115 +++ admin/views/language/tmpl/index.html | 1 + admin/views/language/view.html.php | 200 ++++ .../language_placeholder/submitbutton.js | 49 + .../views/language_placeholder/tmpl/edit.php | 115 +++ .../language_placeholder/tmpl/index.html | 1 + .../views/language_placeholder/view.html.php | 200 ++++ admin/views/language_placeholders/index.html | 1 + .../language_placeholders/tmpl/default.php | 99 ++ .../tmpl/default_batch_body.php | 32 + .../tmpl/default_batch_footer.php | 37 + .../tmpl/default_body.php | 111 +++ .../tmpl/default_foot.php | 32 + .../tmpl/default_head.php | 64 ++ .../tmpl/default_toolbar.php | 59 ++ .../language_placeholders/tmpl/index.html | 1 + .../views/language_placeholders/view.html.php | 255 +++++ admin/views/languages/index.html | 1 + admin/views/languages/tmpl/default.php | 99 ++ .../languages/tmpl/default_batch_body.php | 32 + .../languages/tmpl/default_batch_footer.php | 37 + admin/views/languages/tmpl/default_body.php | 111 +++ admin/views/languages/tmpl/default_foot.php | 32 + admin/views/languages/tmpl/default_head.php | 64 ++ .../views/languages/tmpl/default_toolbar.php | 59 ++ admin/views/languages/tmpl/index.html | 1 + admin/views/languages/view.html.php | 251 +++++ componentbuilder.xml | 7 +- componentbuilder_update_server.xml | 17 + script.php | 260 +++++- 258 files changed, 8244 insertions(+), 378 deletions(-) create mode 100644 admin/assets/css/language.css create mode 100644 admin/assets/css/language_placeholder.css create mode 100644 admin/assets/css/language_placeholders.css create mode 100644 admin/assets/css/languages.css create mode 100644 admin/assets/images/icons/language_placeholder_add.png create mode 100644 admin/assets/images/icons/language_placeholders.png create mode 100644 admin/controllers/language.php create mode 100644 admin/controllers/language_placeholder.php create mode 100644 admin/controllers/language_placeholders.php create mode 100644 admin/controllers/languages.php create mode 100644 admin/layouts/language/details_left.php create mode 100644 admin/layouts/language/details_right.php create mode 100644 admin/layouts/language/index.html create mode 100644 admin/layouts/language/publishing.php create mode 100644 admin/layouts/language/publlshing.php create mode 100644 admin/layouts/language_placeholder/details_above.php create mode 100644 admin/layouts/language_placeholder/details_fullwidth.php create mode 100644 admin/layouts/language_placeholder/index.html create mode 100644 admin/layouts/language_placeholder/publishing.php create mode 100644 admin/layouts/language_placeholder/publlshing.php create mode 100644 admin/models/fields/components.php create mode 100644 admin/models/forms/language.js create mode 100644 admin/models/forms/language.xml create mode 100644 admin/models/forms/language_placeholder.js create mode 100644 admin/models/forms/language_placeholder.xml create mode 100644 admin/models/language.php create mode 100644 admin/models/language_placeholder.php create mode 100644 admin/models/language_placeholders.php create mode 100644 admin/models/languages.php create mode 100644 admin/sql/updates/mysql/2.4.1.sql create mode 100644 admin/tables/language.php create mode 100644 admin/tables/language_placeholder.php create mode 100644 admin/views/language/submitbutton.js create mode 100644 admin/views/language/tmpl/edit.php create mode 100644 admin/views/language/tmpl/index.html create mode 100644 admin/views/language/view.html.php create mode 100644 admin/views/language_placeholder/submitbutton.js create mode 100644 admin/views/language_placeholder/tmpl/edit.php create mode 100644 admin/views/language_placeholder/tmpl/index.html create mode 100644 admin/views/language_placeholder/view.html.php create mode 100644 admin/views/language_placeholders/index.html create mode 100644 admin/views/language_placeholders/tmpl/default.php create mode 100644 admin/views/language_placeholders/tmpl/default_batch_body.php create mode 100644 admin/views/language_placeholders/tmpl/default_batch_footer.php create mode 100644 admin/views/language_placeholders/tmpl/default_body.php create mode 100644 admin/views/language_placeholders/tmpl/default_foot.php create mode 100644 admin/views/language_placeholders/tmpl/default_head.php create mode 100644 admin/views/language_placeholders/tmpl/default_toolbar.php create mode 100644 admin/views/language_placeholders/tmpl/index.html create mode 100644 admin/views/language_placeholders/view.html.php create mode 100644 admin/views/languages/index.html create mode 100644 admin/views/languages/tmpl/default.php create mode 100644 admin/views/languages/tmpl/default_batch_body.php create mode 100644 admin/views/languages/tmpl/default_batch_footer.php create mode 100644 admin/views/languages/tmpl/default_body.php create mode 100644 admin/views/languages/tmpl/default_foot.php create mode 100644 admin/views/languages/tmpl/default_head.php create mode 100644 admin/views/languages/tmpl/default_toolbar.php create mode 100644 admin/views/languages/tmpl/index.html create mode 100644 admin/views/languages/view.html.php diff --git a/README.md b/README.md index dcaac0216..883b3b30f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Component Builder (2.4.1) +# Component Builder (2.4.2) 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.4.1) 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.2) 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. @@ -105,13 +105,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*: 1st April, 2017 -+ *Version*: 2.4.1 ++ *Last Build*: 3rd April, 2017 ++ *Version*: 2.4.2 + *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*: **96852** -+ *File count*: **581** -+ *Folder count*: **107** ++ *Line count*: **104692** ++ *File count*: **639** ++ *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) diff --git a/admin/README.txt b/admin/README.txt index dcaac0216..883b3b30f 100644 --- a/admin/README.txt +++ b/admin/README.txt @@ -1,4 +1,4 @@ -# Component Builder (2.4.1) +# Component Builder (2.4.2) 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.4.1) 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.2) 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. @@ -105,13 +105,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*: 1st April, 2017 -+ *Version*: 2.4.1 ++ *Last Build*: 3rd April, 2017 ++ *Version*: 2.4.2 + *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*: **96852** -+ *File count*: **581** -+ *Folder count*: **107** ++ *Line count*: **104692** ++ *File count*: **639** ++ *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) diff --git a/admin/access.xml b/admin/access.xml index 4bf60b30b..6be89abce 100644 --- a/admin/access.xml +++ b/admin/access.xml @@ -113,6 +113,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -243,6 +268,24 @@ +
+ + + + + + + +
+
+ + + + + + + +
diff --git a/admin/assets/css/admin.css b/admin/assets/css/admin.css index 03bbb02d6..3232356c4 100644 --- a/admin/assets/css/admin.css +++ b/admin/assets/css/admin.css @@ -9,8 +9,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage admin.css diff --git a/admin/assets/css/dashboard.css b/admin/assets/css/dashboard.css index 9b05bc3aa..9431eb91f 100644 --- a/admin/assets/css/dashboard.css +++ b/admin/assets/css/dashboard.css @@ -9,8 +9,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage dashboard.css diff --git a/admin/assets/css/help_document.css b/admin/assets/css/help_document.css index 982d7a0cd..a1d7c013c 100644 --- a/admin/assets/css/help_document.css +++ b/admin/assets/css/help_document.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage help_document.css diff --git a/admin/assets/css/help_documents.css b/admin/assets/css/help_documents.css index 03e4a4295..300e648f9 100644 --- a/admin/assets/css/help_documents.css +++ b/admin/assets/css/help_documents.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage help_documents.css diff --git a/admin/assets/css/language.css b/admin/assets/css/language.css new file mode 100644 index 000000000..95309ab6b --- /dev/null +++ b/admin/assets/css/language.css @@ -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 + @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 */ + + diff --git a/admin/assets/css/language_placeholder.css b/admin/assets/css/language_placeholder.css new file mode 100644 index 000000000..4380e5ceb --- /dev/null +++ b/admin/assets/css/language_placeholder.css @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/ + __ __ _ _____ _ _ __ __ _ _ _ + \ \ / / | | | __ \ | | | | | \/ | | | | | | | + \ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| | + \ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` | + \ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| | + \/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_| + | | + |_| +/-------------------------------------------------------------------------------------------------------------------------------/ + + @version @update number 8 of this MVC + @build 3rd April, 2017 + @created 3rd April, 2017 + @package Component Builder + @subpackage language_placeholder.css + @author Llewellyn van der Merwe + @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 */ + + diff --git a/admin/assets/css/language_placeholders.css b/admin/assets/css/language_placeholders.css new file mode 100644 index 000000000..13d0b9fed --- /dev/null +++ b/admin/assets/css/language_placeholders.css @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/ + __ __ _ _____ _ _ __ __ _ _ _ + \ \ / / | | | __ \ | | | | | \/ | | | | | | | + \ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| | + \ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` | + \ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| | + \/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_| + | | + |_| +/-------------------------------------------------------------------------------------------------------------------------------/ + + @version @update number 8 of this MVC + @build 3rd April, 2017 + @created 3rd April, 2017 + @package Component Builder + @subpackage language_placeholders.css + @author Llewellyn van der Merwe + @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 */ + + diff --git a/admin/assets/css/languages.css b/admin/assets/css/languages.css new file mode 100644 index 000000000..581d6aa11 --- /dev/null +++ b/admin/assets/css/languages.css @@ -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 + @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 */ + + diff --git a/admin/assets/images/icons/language_placeholder_add.png b/admin/assets/images/icons/language_placeholder_add.png new file mode 100644 index 0000000000000000000000000000000000000000..e27635ba423e263411c077e7cdfbfef1495dbe38 GIT binary patch literal 43823 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 Hu0mjf=`_vv literal 0 HcmV?d00001 diff --git a/admin/assets/images/icons/language_placeholders.png b/admin/assets/images/icons/language_placeholders.png new file mode 100644 index 0000000000000000000000000000000000000000..94873206ecea9cad638977b7e41286023f2ea746 GIT binary patch literal 35804 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 'snippets', 'field' => 'fields', 'fieldtype' => 'fieldtypes', + 'language_placeholder' => 'language_placeholders', + 'language' => 'languages', 'help_document' => 'help_documents' ); // check if this is a list view diff --git a/admin/controllers/ajax.json.php b/admin/controllers/ajax.json.php index 01a3db4d2..8bffcdea9 100644 --- a/admin/controllers/ajax.json.php +++ b/admin/controllers/ajax.json.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage ajax.json.php diff --git a/admin/controllers/componentbuilder.php b/admin/controllers/componentbuilder.php index 88a662e27..aa4cd6745 100644 --- a/admin/controllers/componentbuilder.php +++ b/admin/controllers/componentbuilder.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage componentbuilder.php diff --git a/admin/controllers/help.php b/admin/controllers/help.php index eec752953..9fcca801b 100644 --- a/admin/controllers/help.php +++ b/admin/controllers/help.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage help.php diff --git a/admin/controllers/help_document.php b/admin/controllers/help_document.php index e7a5d3383..1389b5741 100644 --- a/admin/controllers/help_document.php +++ b/admin/controllers/help_document.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage help_document.php diff --git a/admin/controllers/help_documents.php b/admin/controllers/help_documents.php index 892240596..7f4065f2c 100644 --- a/admin/controllers/help_documents.php +++ b/admin/controllers/help_documents.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage help_documents.php diff --git a/admin/controllers/import.php b/admin/controllers/import.php index 7be5cf42b..3c0fb02ca 100644 --- a/admin/controllers/import.php +++ b/admin/controllers/import.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage import.php diff --git a/admin/controllers/import_joomla_components.php b/admin/controllers/import_joomla_components.php index 978adcfc0..f0ee219ae 100644 --- a/admin/controllers/import_joomla_components.php +++ b/admin/controllers/import_joomla_components.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage import_joomla_components.php diff --git a/admin/controllers/language.php b/admin/controllers/language.php new file mode 100644 index 000000000..aef23b27d --- /dev/null +++ b/admin/controllers/language.php @@ -0,0 +1,326 @@ + + @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; + } + +} diff --git a/admin/controllers/language_placeholder.php b/admin/controllers/language_placeholder.php new file mode 100644 index 000000000..ebdf36177 --- /dev/null +++ b/admin/controllers/language_placeholder.php @@ -0,0 +1,326 @@ + + @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_placeholder Controller + */ +class ComponentbuilderControllerLanguage_placeholder 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_placeholders'; // 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_placeholder.access', 'com_componentbuilder'); + if (!$access) + { + return false; + } + // In the absense of better information, revert to the component permissions. + return JFactory::getUser()->authorise('language_placeholder.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_placeholder.access', 'com_componentbuilder.language_placeholder.' . (int) $recordId) && $user->authorise('language_placeholder.access', 'com_componentbuilder')); + if (!$access) + { + return false; + } + + if ($recordId) + { + // The record has been set. Check the record permissions. + $permission = $user->authorise('language_placeholder.edit', 'com_componentbuilder.language_placeholder.' . (int) $recordId); + if (!$permission) + { + if ($user->authorise('language_placeholder.edit.own', 'com_componentbuilder.language_placeholder.' . $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_placeholder.edit.own', 'com_componentbuilder')) + { + return true; + } + } + } + return false; + } + } + // Since there is no permission, revert to the component permissions. + return $user->authorise('language_placeholder.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_placeholder', '', array()); + + // Preset the redirect + $this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=language_placeholders' . $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; + } + +} diff --git a/admin/controllers/language_placeholders.php b/admin/controllers/language_placeholders.php new file mode 100644 index 000000000..8d631ea6a --- /dev/null +++ b/admin/controllers/language_placeholders.php @@ -0,0 +1,120 @@ + + @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_placeholders Controller + */ +class ComponentbuilderControllerLanguage_placeholders extends JControllerAdmin +{ + protected $text_prefix = 'COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS'; + /** + * Proxy for getModel. + * @since 2.5 + */ + public function getModel($name = 'Language_placeholder', $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_placeholder.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_placeholders'); + // 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_placeholders_'.$date->format('jS_F_Y'),'Language placeholders exported ('.$date->format('jS F, Y').')','language placeholders'); + } + } + // Redirect to the list screen with error. + $message = JText::_('COM_COMPONENTBUILDER_EXPORT_FAILED'); + $this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=language_placeholders', 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_placeholder.import', 'com_componentbuilder') && $user->authorise('core.import', 'com_componentbuilder')) + { + // Get the import model + $model = $this->getModel('Language_placeholders'); + // 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_placeholder_VDM_IMPORTHEADERS', $headers); + $session->set('backto_VDM_IMPORT', 'language_placeholders'); + $session->set('dataType_VDM_IMPORTINTO', 'language_placeholder'); + // Redirect to import view. + $message = JText::_('COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_LANGUAGE_PLACEHOLDERS'); + $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_placeholders', false), $message, 'error'); + return; + } + + public function updatePlaceholders() + { + // Check for request forgeries + JSession::checkToken() or die(JText::_('JINVALID_TOKEN')); + // check if import is allowed for this user. + $user = JFactory::getUser(); + return true; + } +} diff --git a/admin/controllers/languages.php b/admin/controllers/languages.php new file mode 100644 index 000000000..62ec59cd5 --- /dev/null +++ b/admin/controllers/languages.php @@ -0,0 +1,111 @@ + + @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'); + +/** + * Languages Controller + */ +class ComponentbuilderControllerLanguages extends JControllerAdmin +{ + protected $text_prefix = 'COM_COMPONENTBUILDER_LANGUAGES'; + /** + * Proxy for getModel. + * @since 2.5 + */ + public function getModel($name = 'Language', $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.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('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,'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=languages', 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.import', 'com_componentbuilder') && $user->authorise('core.import', 'com_componentbuilder')) + { + // Get the import model + $model = $this->getModel('Languages'); + // 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_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_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=languages', false), $message, 'error'); + return; + } +} diff --git a/admin/helpers/componentbuilder.php b/admin/helpers/componentbuilder.php index 078102755..8b3a69a5d 100644 --- a/admin/helpers/componentbuilder.php +++ b/admin/helpers/componentbuilder.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage componentbuilder.php @@ -1245,6 +1245,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_placeholder.access', 'com_componentbuilder') && $user->authorise('language_placeholder.submenu', 'com_componentbuilder')) + { + JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_SUBMENU_LANGUAGE_PLACEHOLDERS'), 'index.php?option=com_componentbuilder&view=language_placeholders', $submenu === 'language_placeholders'); + } + 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'); diff --git a/admin/helpers/headercheck.php b/admin/helpers/headercheck.php index fc172fef1..fc9cf2e68 100644 --- a/admin/helpers/headercheck.php +++ b/admin/helpers/headercheck.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage headercheck.php diff --git a/admin/helpers/html/batch_.php b/admin/helpers/html/batch_.php index a2d2596d6..f223e253c 100644 --- a/admin/helpers/html/batch_.php +++ b/admin/helpers/html/batch_.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage batch_.php diff --git a/admin/helpers/indenter.php b/admin/helpers/indenter.php index d4c894712..2393af18d 100644 --- a/admin/helpers/indenter.php +++ b/admin/helpers/indenter.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage indenter.php diff --git a/admin/helpers/js.php b/admin/helpers/js.php index 055494c81..dc6dcef98 100644 --- a/admin/helpers/js.php +++ b/admin/helpers/js.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage js.php diff --git a/admin/helpers/minify.php b/admin/helpers/minify.php index 146b4253a..56167fae6 100644 --- a/admin/helpers/minify.php +++ b/admin/helpers/minify.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage minify.php diff --git a/admin/language/en-GB/en-GB.com_componentbuilder.ini b/admin/language/en-GB/en-GB.com_componentbuilder.ini index e5bdc54d2..22797d706 100644 --- a/admin/language/en-GB/en-GB.com_componentbuilder.ini +++ b/admin/language/en-GB/en-GB.com_componentbuilder.ini @@ -1489,6 +1489,8 @@ COM_COMPONENTBUILDER_DASHBOARD_HELP_DOCUMENTS="Help Documents

" COM_COMPONENTBUILDER_DASHBOARD_HELP_DOCUMENT_ADD="Add Help Document

" COM_COMPONENTBUILDER_DASHBOARD_JOOMLA_COMPONENTS="Joomla Components

" COM_COMPONENTBUILDER_DASHBOARD_JOOMLA_COMPONENT_ADD="Add Joomla Component

" +COM_COMPONENTBUILDER_DASHBOARD_LANGUAGE_PLACEHOLDERS="Language Placeholders

" +COM_COMPONENTBUILDER_DASHBOARD_LANGUAGE_PLACEHOLDER_ADD="Add Language Placeholder

" COM_COMPONENTBUILDER_DASHBOARD_LAYOUTS="Layouts

" COM_COMPONENTBUILDER_DASHBOARD_LAYOUT_ADD="Add Layout

" COM_COMPONENTBUILDER_DASHBOARD_SITE_VIEWS="Site Views

" @@ -2266,6 +2268,8 @@ COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_FIELDS="Select the file to import da COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_FIELDTYPES="Select the file to import data to fieldtypes." COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_HELP_DOCUMENTS="Select the file to import data to help_documents." COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_JOOMLA_COMPONENTS="Select the file to import data to joomla_components." +COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_LANGUAGES="Select the file to import data to languages." +COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_LANGUAGE_PLACEHOLDERS="Select the file to import data to language_placeholders." COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_LAYOUTS="Select the file to import data to layouts." COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_SITE_VIEWS="Select the file to import data to site_views." COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_SNIPPETS="Select the file to import data to snippets." @@ -3000,6 +3004,158 @@ COM_COMPONENTBUILDER_KEEP_ORIGINAL_ACCESS="- Keep Original Access -" COM_COMPONENTBUILDER_KEEP_ORIGINAL_CATEGORY="- Keep Original Category -" COM_COMPONENTBUILDER_KEEP_ORIGINAL_STATE="- Keep Original State -" COM_COMPONENTBUILDER_KEY="Key" +COM_COMPONENTBUILDER_LANGUAGE="Language" +COM_COMPONENTBUILDER_LANGUAGES="Languages" +COM_COMPONENTBUILDER_LANGUAGES_ACCESS="Languages Access" +COM_COMPONENTBUILDER_LANGUAGES_ACCESS_DESC="Allows the users in this group to access access languages" +COM_COMPONENTBUILDER_LANGUAGES_BATCH_OPTIONS="Batch process the selected Languages" +COM_COMPONENTBUILDER_LANGUAGES_BATCH_TIP="All changes will be applied to all selected Languages" +COM_COMPONENTBUILDER_LANGUAGES_BATCH_USE="Languages Batch Use" +COM_COMPONENTBUILDER_LANGUAGES_BATCH_USE_DESC="Allows users in this group to use batch copy/update method of batch languages" +COM_COMPONENTBUILDER_LANGUAGES_CREATE="Languages Create" +COM_COMPONENTBUILDER_LANGUAGES_CREATE_DESC="Allows the users in this group to create create languages" +COM_COMPONENTBUILDER_LANGUAGES_DELETE="Languages Delete" +COM_COMPONENTBUILDER_LANGUAGES_DELETE_DESC="Allows the users in this group to delete delete languages" +COM_COMPONENTBUILDER_LANGUAGES_EDIT="Languages Edit" +COM_COMPONENTBUILDER_LANGUAGES_EDIT_DESC="Allows the users in this group to edit the language" +COM_COMPONENTBUILDER_LANGUAGES_EDIT_OWN="Languages Edit Own" +COM_COMPONENTBUILDER_LANGUAGES_EDIT_OWN_DESC="Allows the users in this group to edit edit own languages created by them" +COM_COMPONENTBUILDER_LANGUAGES_EDIT_STATE="Languages Edit State" +COM_COMPONENTBUILDER_LANGUAGES_EDIT_STATE_DESC="Allows the users in this group to update the state of the language" +COM_COMPONENTBUILDER_LANGUAGES_EDIT_VERSION="Languages Edit Version" +COM_COMPONENTBUILDER_LANGUAGES_EDIT_VERSION_DESC="Allows users in this group to edit versions of version languages" +COM_COMPONENTBUILDER_LANGUAGES_EXPORT="Languages Export" +COM_COMPONENTBUILDER_LANGUAGES_EXPORT_DESC="Allows the users in this group to export export languages" +COM_COMPONENTBUILDER_LANGUAGES_IMPORT="Languages Import" +COM_COMPONENTBUILDER_LANGUAGES_IMPORT_DESC="Allows the users in this group to import import languages" +COM_COMPONENTBUILDER_LANGUAGES_N_ITEMS_ARCHIVED="%s Languages archived." +COM_COMPONENTBUILDER_LANGUAGES_N_ITEMS_ARCHIVED_1="%s Language archived." +COM_COMPONENTBUILDER_LANGUAGES_N_ITEMS_CHECKED_IN_0="No Language successfully checked in." +COM_COMPONENTBUILDER_LANGUAGES_N_ITEMS_CHECKED_IN_1="%d Language successfully checked in." +COM_COMPONENTBUILDER_LANGUAGES_N_ITEMS_CHECKED_IN_MORE="%d Languages successfully checked in." +COM_COMPONENTBUILDER_LANGUAGES_N_ITEMS_DELETED="%s Languages deleted." +COM_COMPONENTBUILDER_LANGUAGES_N_ITEMS_DELETED_1="%s Language deleted." +COM_COMPONENTBUILDER_LANGUAGES_N_ITEMS_FEATURED="%s Languages featured." +COM_COMPONENTBUILDER_LANGUAGES_N_ITEMS_FEATURED_1="%s Language featured." +COM_COMPONENTBUILDER_LANGUAGES_N_ITEMS_PUBLISHED="%s Languages published." +COM_COMPONENTBUILDER_LANGUAGES_N_ITEMS_PUBLISHED_1="%s Language published." +COM_COMPONENTBUILDER_LANGUAGES_N_ITEMS_TRASHED="%s Languages trashed." +COM_COMPONENTBUILDER_LANGUAGES_N_ITEMS_TRASHED_1="%s Language trashed." +COM_COMPONENTBUILDER_LANGUAGES_N_ITEMS_UNFEATURED="%s Languages unfeatured." +COM_COMPONENTBUILDER_LANGUAGES_N_ITEMS_UNFEATURED_1="%s Language unfeatured." +COM_COMPONENTBUILDER_LANGUAGES_N_ITEMS_UNPUBLISHED="%s Languages unpublished." +COM_COMPONENTBUILDER_LANGUAGES_N_ITEMS_UNPUBLISHED_1="%s Language unpublished." +COM_COMPONENTBUILDER_LANGUAGES_SUBMENU="Languages Submenu" +COM_COMPONENTBUILDER_LANGUAGES_SUBMENU_DESC="Allows the users in this group to update the submenu of the language" +COM_COMPONENTBUILDER_LANGUAGE_CREATED_BY_DESC="The user that created this Language." +COM_COMPONENTBUILDER_LANGUAGE_CREATED_BY_LABEL="Created By" +COM_COMPONENTBUILDER_LANGUAGE_CREATED_DATE_DESC="The date this Language was created." +COM_COMPONENTBUILDER_LANGUAGE_CREATED_DATE_LABEL="Created Date" +COM_COMPONENTBUILDER_LANGUAGE_DETAILS="Details" +COM_COMPONENTBUILDER_LANGUAGE_EDIT="Editing the Language" +COM_COMPONENTBUILDER_LANGUAGE_ERROR_UNIQUE_ALIAS="Another Language has the same alias." +COM_COMPONENTBUILDER_LANGUAGE_ID="Id" +COM_COMPONENTBUILDER_LANGUAGE_LANGTAG="Langtag" +COM_COMPONENTBUILDER_LANGUAGE_LANGTAG_DESCRIPTION="Enter the language tag – example: en-GB for English (UK). This should be the exact prefix used for the language installed or to be installed." +COM_COMPONENTBUILDER_LANGUAGE_LANGTAG_HINT="en-GB" +COM_COMPONENTBUILDER_LANGUAGE_LANGTAG_LABEL="Language Tag" +COM_COMPONENTBUILDER_LANGUAGE_MODIFIED_BY_DESC="The last user that modified this Language." +COM_COMPONENTBUILDER_LANGUAGE_MODIFIED_BY_LABEL="Modified By" +COM_COMPONENTBUILDER_LANGUAGE_MODIFIED_DATE_DESC="The date this Language was modified." +COM_COMPONENTBUILDER_LANGUAGE_MODIFIED_DATE_LABEL="Modified Date" +COM_COMPONENTBUILDER_LANGUAGE_NAME="Name" +COM_COMPONENTBUILDER_LANGUAGE_NAME_DESCRIPTION="Enter Name Here" +COM_COMPONENTBUILDER_LANGUAGE_NAME_HINT="Name Here" +COM_COMPONENTBUILDER_LANGUAGE_NAME_LABEL="Name" +COM_COMPONENTBUILDER_LANGUAGE_NEW="A New Language" +COM_COMPONENTBUILDER_LANGUAGE_ORDERING_LABEL="Ordering" +COM_COMPONENTBUILDER_LANGUAGE_PERMISSION="Permissions" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER="Language Placeholder" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS="Language Placeholders" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_ACCESS="Language Placeholders Access" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_ACCESS_DESC="Allows the users in this group to access access language placeholders" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_BATCH_OPTIONS="Batch process the selected Language Placeholders" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_BATCH_TIP="All changes will be applied to all selected Language Placeholders" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_BATCH_USE="Language Placeholders Batch Use" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_BATCH_USE_DESC="Allows users in this group to use batch copy/update method of batch language placeholders" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_CREATE="Language Placeholders Create" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_CREATE_DESC="Allows the users in this group to create create language placeholders" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_DASHBOARD_ADD="Language Placeholders Dashboard Add" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_DASHBOARD_ADD_DESC="Allows the users in this group to update the dashboard add of the language placeholder" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_DASHBOARD_LIST="Language Placeholders Dashboard List" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_DASHBOARD_LIST_DESC="Allows the users in this group to update the dashboard list of the language placeholder" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_DELETE="Language Placeholders Delete" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_DELETE_DESC="Allows the users in this group to delete delete language placeholders" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EDIT="Language Placeholders Edit" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EDIT_DESC="Allows the users in this group to edit the language placeholder" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EDIT_OWN="Language Placeholders Edit Own" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EDIT_OWN_DESC="Allows the users in this group to edit edit own language placeholders created by them" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EDIT_STATE="Language Placeholders Edit State" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EDIT_STATE_DESC="Allows the users in this group to update the state of the language placeholder" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EDIT_VERSION="Language Placeholders Edit Version" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EDIT_VERSION_DESC="Allows users in this group to edit versions of version language placeholders" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EXPORT="Language Placeholders Export" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EXPORT_DESC="Allows the users in this group to export export language placeholders" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_IMPORT="Language Placeholders Import" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_IMPORT_DESC="Allows the users in this group to import import language placeholders" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_ARCHIVED="%s Language Placeholders archived." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_ARCHIVED_1="%s Language Placeholder archived." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_CHECKED_IN_0="No Language Placeholder successfully checked in." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_CHECKED_IN_1="%d Language Placeholder successfully checked in." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_CHECKED_IN_MORE="%d Language Placeholders successfully checked in." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_DELETED="%s Language Placeholders deleted." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_DELETED_1="%s Language Placeholder deleted." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_FEATURED="%s Language Placeholders featured." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_FEATURED_1="%s Language Placeholder featured." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_PUBLISHED="%s Language Placeholders published." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_PUBLISHED_1="%s Language Placeholder published." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_TRASHED="%s Language Placeholders trashed." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_TRASHED_1="%s Language Placeholder trashed." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_UNFEATURED="%s Language Placeholders unfeatured." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_UNFEATURED_1="%s Language Placeholder unfeatured." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_UNPUBLISHED="%s Language Placeholders unpublished." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_UNPUBLISHED_1="%s Language Placeholder unpublished." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_SUBMENU="Language Placeholders Submenu" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_SUBMENU_DESC="Allows the users in this group to update the submenu of the language placeholder" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_COMPONENTS="Components" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_COMPONENTS_LABEL="Components" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_CREATED_BY_DESC="The user that created this Language Placeholder." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_CREATED_BY_LABEL="Created By" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_CREATED_DATE_DESC="The date this Language Placeholder was created." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_CREATED_DATE_LABEL="Created Date" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_DETAILS="Details" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_EDIT="Editing the Language Placeholder" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_ERROR_UNIQUE_ALIAS="Another Language Placeholder has the same alias." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_ID="Id" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_LANGUAGE_LABEL="Language" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_MODIFIED_BY_DESC="The last user that modified this Language Placeholder." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_MODIFIED_BY_LABEL="Modified By" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_MODIFIED_DATE_DESC="The date this Language Placeholder was modified." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_MODIFIED_DATE_LABEL="Modified Date" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_NEW="A New Language Placeholder" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_ORDERING_LABEL="Ordering" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_PERMISSION="Permissions" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_PLACEHOLDER="Placeholder" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_PLACEHOLDER_DESCRIPTION="The language placeholder in the code" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_PLACEHOLDER_HINT="Automatically generated!" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_PLACEHOLDER_LABEL="Placeholder" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_PUBLISHING="Publishing" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_SAVE_WARNING="Alias already existed so a number was added at the end. You can re-edit the Language Placeholder to customise the alias." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_STATUS="Status" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_TRANSLATION="Translation" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_TRANSLATION_DESCRIPTION="The translation strings." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_TRANSLATION_HINT="Translated String Here" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_TRANSLATION_LABEL="Translated String" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_TRANSLATION_SELECT="Click here" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_UPDATE_PLACEHOLDERS_BUTTON_ACCESS="Language Placeholder Update Placeholders Button Access" +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_UPDATE_PLACEHOLDERS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the update placeholders button." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_VERSION_DESC="A count of the number of times this Language Placeholder has been revised." +COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_VERSION_LABEL="Revision" +COM_COMPONENTBUILDER_LANGUAGE_PUBLISHING="Publishing" +COM_COMPONENTBUILDER_LANGUAGE_SAVE_WARNING="Alias already existed so a number was added at the end. You can re-edit the Language to customise the alias." +COM_COMPONENTBUILDER_LANGUAGE_STATUS="Status" +COM_COMPONENTBUILDER_LANGUAGE_VERSION_DESC="A count of the number of times this Language has been revised." +COM_COMPONENTBUILDER_LANGUAGE_VERSION_LABEL="Revision" COM_COMPONENTBUILDER_LAYOUT="Layout" COM_COMPONENTBUILDER_LAYOUTS="Layouts" COM_COMPONENTBUILDER_LAYOUTS_ACCESS="Layouts Access" @@ -3676,6 +3832,8 @@ COM_COMPONENTBUILDER_SUBMENU_FIELDS="Fields" COM_COMPONENTBUILDER_SUBMENU_FIELDTYPES="Fieldtypes" COM_COMPONENTBUILDER_SUBMENU_HELP_DOCUMENTS="Help Documents" COM_COMPONENTBUILDER_SUBMENU_JOOMLA_COMPONENTS="Joomla Components" +COM_COMPONENTBUILDER_SUBMENU_LANGUAGES="Languages" +COM_COMPONENTBUILDER_SUBMENU_LANGUAGE_PLACEHOLDERS="Language Placeholders" COM_COMPONENTBUILDER_SUBMENU_LAYOUTS="Layouts" COM_COMPONENTBUILDER_SUBMENU_SITE_VIEWS="Site Views" COM_COMPONENTBUILDER_SUBMENU_SNIPPETS="Snippets" @@ -3793,6 +3951,7 @@ COM_COMPONENTBUILDER_THE_README_IS_LOADING="The readme is loading" COM_COMPONENTBUILDER_THE_WIKI_IS_LOADING="The wiki is loading" COM_COMPONENTBUILDER_THIS_PACKAGE_HAS_NO_KEY="This package has no key." 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="To change the package owner defaults. Open the JCB Global Options, go to the Company tab and add the correct company details there." +COM_COMPONENTBUILDER_UPDATE_PLACEHOLDERS="Update Placeholders" COM_COMPONENTBUILDER_USE_BATCH="Use Batch" COM_COMPONENTBUILDER_USE_BATCH_DESC=" Allows users in this group to use batch copy/update method." COM_COMPONENTBUILDER_USE_KEY="Use Key" diff --git a/admin/language/en-GB/en-GB.com_componentbuilder.sys.ini b/admin/language/en-GB/en-GB.com_componentbuilder.sys.ini index d24b1ef28..f6bb5169e 100644 --- a/admin/language/en-GB/en-GB.com_componentbuilder.sys.ini +++ b/admin/language/en-GB/en-GB.com_componentbuilder.sys.ini @@ -10,6 +10,7 @@ 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_PLACEHOLDERS="Language Placeholders" COM_COMPONENTBUILDER_MENU_LAYOUTS="Layouts" COM_COMPONENTBUILDER_MENU_SITE_VIEWS="Site Views" COM_COMPONENTBUILDER_MENU_SNIPPETS="Snippets" diff --git a/admin/layouts/admin_view/css_fullwidth.php b/admin/layouts/admin_view/css_fullwidth.php index 11d5b5391..550c0dae9 100644 --- a/admin/layouts/admin_view/css_fullwidth.php +++ b/admin/layouts/admin_view/css_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage css_fullwidth.php diff --git a/admin/layouts/admin_view/custom_buttons_fullwidth.php b/admin/layouts/admin_view/custom_buttons_fullwidth.php index ff43fc867..102e6a03a 100644 --- a/admin/layouts/admin_view/custom_buttons_fullwidth.php +++ b/admin/layouts/admin_view/custom_buttons_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_buttons_fullwidth.php diff --git a/admin/layouts/admin_view/custom_buttons_left.php b/admin/layouts/admin_view/custom_buttons_left.php index dc5d0d26f..61c408bfb 100644 --- a/admin/layouts/admin_view/custom_buttons_left.php +++ b/admin/layouts/admin_view/custom_buttons_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_buttons_left.php diff --git a/admin/layouts/admin_view/custom_import_fullwidth.php b/admin/layouts/admin_view/custom_import_fullwidth.php index eae11be2d..6944ad102 100644 --- a/admin/layouts/admin_view/custom_import_fullwidth.php +++ b/admin/layouts/admin_view/custom_import_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_import_fullwidth.php diff --git a/admin/layouts/admin_view/fields_fullwidth.php b/admin/layouts/admin_view/fields_fullwidth.php index f44d4a62c..6c1af6d8b 100644 --- a/admin/layouts/admin_view/fields_fullwidth.php +++ b/admin/layouts/admin_view/fields_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage fields_fullwidth.php diff --git a/admin/layouts/admin_view/javascript_fullwidth.php b/admin/layouts/admin_view/javascript_fullwidth.php index a96e80fb6..b67fdf81e 100644 --- a/admin/layouts/admin_view/javascript_fullwidth.php +++ b/admin/layouts/admin_view/javascript_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage javascript_fullwidth.php diff --git a/admin/layouts/admin_view/linked_components_fullwidth.php b/admin/layouts/admin_view/linked_components_fullwidth.php index b4f33fd35..3039789b5 100644 --- a/admin/layouts/admin_view/linked_components_fullwidth.php +++ b/admin/layouts/admin_view/linked_components_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage linked_components_fullwidth.php diff --git a/admin/layouts/admin_view/mysql_fullwidth.php b/admin/layouts/admin_view/mysql_fullwidth.php index 7b130cd8e..f9f7d484a 100644 --- a/admin/layouts/admin_view/mysql_fullwidth.php +++ b/admin/layouts/admin_view/mysql_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage mysql_fullwidth.php diff --git a/admin/layouts/admin_view/mysql_left.php b/admin/layouts/admin_view/mysql_left.php index d83fe5089..bbf4680d6 100644 --- a/admin/layouts/admin_view/mysql_left.php +++ b/admin/layouts/admin_view/mysql_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage mysql_left.php diff --git a/admin/layouts/admin_view/php_fullwidth.php b/admin/layouts/admin_view/php_fullwidth.php index d0670dc13..cecc00e79 100644 --- a/admin/layouts/admin_view/php_fullwidth.php +++ b/admin/layouts/admin_view/php_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage php_fullwidth.php diff --git a/admin/layouts/admin_view/publishing.php b/admin/layouts/admin_view/publishing.php index ac7bd7ed5..fd7f0e9c1 100644 --- a/admin/layouts/admin_view/publishing.php +++ b/admin/layouts/admin_view/publishing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/admin_view/publlshing.php b/admin/layouts/admin_view/publlshing.php index 645c15dea..102b733fa 100644 --- a/admin/layouts/admin_view/publlshing.php +++ b/admin/layouts/admin_view/publlshing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/admin_view/settings_above.php b/admin/layouts/admin_view/settings_above.php index 08b04d555..0ca0ff6d5 100644 --- a/admin/layouts/admin_view/settings_above.php +++ b/admin/layouts/admin_view/settings_above.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage settings_above.php diff --git a/admin/layouts/admin_view/settings_left.php b/admin/layouts/admin_view/settings_left.php index 34c517325..6fdeeef5c 100644 --- a/admin/layouts/admin_view/settings_left.php +++ b/admin/layouts/admin_view/settings_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage settings_left.php diff --git a/admin/layouts/admin_view/settings_right.php b/admin/layouts/admin_view/settings_right.php index c594449b2..1ffb265b4 100644 --- a/admin/layouts/admin_view/settings_right.php +++ b/admin/layouts/admin_view/settings_right.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage settings_right.php diff --git a/admin/layouts/admin_view/settings_under.php b/admin/layouts/admin_view/settings_under.php index 7e4dab1cc..b09035ef6 100644 --- a/admin/layouts/admin_view/settings_under.php +++ b/admin/layouts/admin_view/settings_under.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage settings_under.php diff --git a/admin/layouts/batchselection.php b/admin/layouts/batchselection.php index 03a2ec9b2..bee289666 100644 --- a/admin/layouts/batchselection.php +++ b/admin/layouts/batchselection.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage batchselection.php diff --git a/admin/layouts/custom_admin_view/custom_buttons_fullwidth.php b/admin/layouts/custom_admin_view/custom_buttons_fullwidth.php index f7f756db8..7673dde26 100644 --- a/admin/layouts/custom_admin_view/custom_buttons_fullwidth.php +++ b/admin/layouts/custom_admin_view/custom_buttons_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_buttons_fullwidth.php diff --git a/admin/layouts/custom_admin_view/custom_buttons_left.php b/admin/layouts/custom_admin_view/custom_buttons_left.php index dc5d0d26f..61c408bfb 100644 --- a/admin/layouts/custom_admin_view/custom_buttons_left.php +++ b/admin/layouts/custom_admin_view/custom_buttons_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_buttons_left.php diff --git a/admin/layouts/custom_admin_view/custom_script_fullwidth.php b/admin/layouts/custom_admin_view/custom_script_fullwidth.php index e3f999510..3a97729c4 100644 --- a/admin/layouts/custom_admin_view/custom_script_fullwidth.php +++ b/admin/layouts/custom_admin_view/custom_script_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_script_fullwidth.php diff --git a/admin/layouts/custom_admin_view/details_above.php b/admin/layouts/custom_admin_view/details_above.php index 264848d0a..504996d9f 100644 --- a/admin/layouts/custom_admin_view/details_above.php +++ b/admin/layouts/custom_admin_view/details_above.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_above.php diff --git a/admin/layouts/custom_admin_view/details_fullwidth.php b/admin/layouts/custom_admin_view/details_fullwidth.php index c91590b8f..cce076d1b 100644 --- a/admin/layouts/custom_admin_view/details_fullwidth.php +++ b/admin/layouts/custom_admin_view/details_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_fullwidth.php diff --git a/admin/layouts/custom_admin_view/details_left.php b/admin/layouts/custom_admin_view/details_left.php index a4f5f96a4..4f0775c74 100644 --- a/admin/layouts/custom_admin_view/details_left.php +++ b/admin/layouts/custom_admin_view/details_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/custom_admin_view/details_right.php b/admin/layouts/custom_admin_view/details_right.php index 0fa65a8dc..4eb6d2668 100644 --- a/admin/layouts/custom_admin_view/details_right.php +++ b/admin/layouts/custom_admin_view/details_right.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/custom_admin_view/details_rightside.php b/admin/layouts/custom_admin_view/details_rightside.php index b30841fc7..88e5cd21a 100644 --- a/admin/layouts/custom_admin_view/details_rightside.php +++ b/admin/layouts/custom_admin_view/details_rightside.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_rightside.php diff --git a/admin/layouts/custom_admin_view/details_under.php b/admin/layouts/custom_admin_view/details_under.php index 077cf1fbd..6b7267268 100644 --- a/admin/layouts/custom_admin_view/details_under.php +++ b/admin/layouts/custom_admin_view/details_under.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_under.php diff --git a/admin/layouts/custom_admin_view/linked_components_fullwidth.php b/admin/layouts/custom_admin_view/linked_components_fullwidth.php index 212c58bb6..63103555e 100644 --- a/admin/layouts/custom_admin_view/linked_components_fullwidth.php +++ b/admin/layouts/custom_admin_view/linked_components_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage linked_components_fullwidth.php diff --git a/admin/layouts/custom_admin_view/publishing.php b/admin/layouts/custom_admin_view/publishing.php index ac7bd7ed5..fd7f0e9c1 100644 --- a/admin/layouts/custom_admin_view/publishing.php +++ b/admin/layouts/custom_admin_view/publishing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/custom_admin_view/publlshing.php b/admin/layouts/custom_admin_view/publlshing.php index 645c15dea..102b733fa 100644 --- a/admin/layouts/custom_admin_view/publlshing.php +++ b/admin/layouts/custom_admin_view/publlshing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/custom_code/details_above.php b/admin/layouts/custom_code/details_above.php index 9a164298b..86f1de6af 100644 --- a/admin/layouts/custom_code/details_above.php +++ b/admin/layouts/custom_code/details_above.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_above.php diff --git a/admin/layouts/custom_code/details_fullwidth.php b/admin/layouts/custom_code/details_fullwidth.php index 3524ff8b0..504b775b8 100644 --- a/admin/layouts/custom_code/details_fullwidth.php +++ b/admin/layouts/custom_code/details_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_fullwidth.php diff --git a/admin/layouts/custom_code/details_left.php b/admin/layouts/custom_code/details_left.php index c6597c1d4..341593b48 100644 --- a/admin/layouts/custom_code/details_left.php +++ b/admin/layouts/custom_code/details_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/custom_code/details_right.php b/admin/layouts/custom_code/details_right.php index 96bb80458..2a9885434 100644 --- a/admin/layouts/custom_code/details_right.php +++ b/admin/layouts/custom_code/details_right.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/custom_code/details_under.php b/admin/layouts/custom_code/details_under.php index 077cf1fbd..6b7267268 100644 --- a/admin/layouts/custom_code/details_under.php +++ b/admin/layouts/custom_code/details_under.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_under.php diff --git a/admin/layouts/custom_code/publishing.php b/admin/layouts/custom_code/publishing.php index ac7bd7ed5..fd7f0e9c1 100644 --- a/admin/layouts/custom_code/publishing.php +++ b/admin/layouts/custom_code/publishing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/custom_code/publlshing.php b/admin/layouts/custom_code/publlshing.php index 645c15dea..102b733fa 100644 --- a/admin/layouts/custom_code/publlshing.php +++ b/admin/layouts/custom_code/publlshing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/dynamic_get/abacus_fullwidth.php b/admin/layouts/dynamic_get/abacus_fullwidth.php index 3baf78849..e79581b91 100644 --- a/admin/layouts/dynamic_get/abacus_fullwidth.php +++ b/admin/layouts/dynamic_get/abacus_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage abacus_fullwidth.php diff --git a/admin/layouts/dynamic_get/abacus_left.php b/admin/layouts/dynamic_get/abacus_left.php index ca6c66f7b..cd978c29e 100644 --- a/admin/layouts/dynamic_get/abacus_left.php +++ b/admin/layouts/dynamic_get/abacus_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage abacus_left.php diff --git a/admin/layouts/dynamic_get/custom_script_fullwidth.php b/admin/layouts/dynamic_get/custom_script_fullwidth.php index a0c6e2281..286f1a279 100644 --- a/admin/layouts/dynamic_get/custom_script_fullwidth.php +++ b/admin/layouts/dynamic_get/custom_script_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_script_fullwidth.php diff --git a/admin/layouts/dynamic_get/gettable_above.php b/admin/layouts/dynamic_get/gettable_above.php index 6505e9b25..fe8cab238 100644 --- a/admin/layouts/dynamic_get/gettable_above.php +++ b/admin/layouts/dynamic_get/gettable_above.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage gettable_above.php diff --git a/admin/layouts/dynamic_get/gettable_fullwidth.php b/admin/layouts/dynamic_get/gettable_fullwidth.php index dcb2420b8..49cfba9c5 100644 --- a/admin/layouts/dynamic_get/gettable_fullwidth.php +++ b/admin/layouts/dynamic_get/gettable_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage gettable_fullwidth.php diff --git a/admin/layouts/dynamic_get/gettable_left.php b/admin/layouts/dynamic_get/gettable_left.php index ebf11f644..573df0c6b 100644 --- a/admin/layouts/dynamic_get/gettable_left.php +++ b/admin/layouts/dynamic_get/gettable_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage gettable_left.php diff --git a/admin/layouts/dynamic_get/gettable_right.php b/admin/layouts/dynamic_get/gettable_right.php index 527062936..ab92d21ed 100644 --- a/admin/layouts/dynamic_get/gettable_right.php +++ b/admin/layouts/dynamic_get/gettable_right.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage gettable_right.php diff --git a/admin/layouts/dynamic_get/gettable_under.php b/admin/layouts/dynamic_get/gettable_under.php index c8de0faff..89dcb1824 100644 --- a/admin/layouts/dynamic_get/gettable_under.php +++ b/admin/layouts/dynamic_get/gettable_under.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage gettable_under.php diff --git a/admin/layouts/dynamic_get/publishing.php b/admin/layouts/dynamic_get/publishing.php index ac7bd7ed5..fd7f0e9c1 100644 --- a/admin/layouts/dynamic_get/publishing.php +++ b/admin/layouts/dynamic_get/publishing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/dynamic_get/publlshing.php b/admin/layouts/dynamic_get/publlshing.php index 645c15dea..102b733fa 100644 --- a/admin/layouts/dynamic_get/publlshing.php +++ b/admin/layouts/dynamic_get/publlshing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/field/details_fullwidth.php b/admin/layouts/field/details_fullwidth.php index f55b9c050..4e29edd30 100644 --- a/admin/layouts/field/details_fullwidth.php +++ b/admin/layouts/field/details_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_fullwidth.php diff --git a/admin/layouts/field/details_left.php b/admin/layouts/field/details_left.php index 38f7a80e2..3995154e7 100644 --- a/admin/layouts/field/details_left.php +++ b/admin/layouts/field/details_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/field/details_right.php b/admin/layouts/field/details_right.php index 6a16301c4..b59a4ce91 100644 --- a/admin/layouts/field/details_right.php +++ b/admin/layouts/field/details_right.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/field/details_under.php b/admin/layouts/field/details_under.php index 077cf1fbd..6b7267268 100644 --- a/admin/layouts/field/details_under.php +++ b/admin/layouts/field/details_under.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_under.php diff --git a/admin/layouts/field/linked_admin_views_fullwidth.php b/admin/layouts/field/linked_admin_views_fullwidth.php index 3903e6af5..d57f044f1 100644 --- a/admin/layouts/field/linked_admin_views_fullwidth.php +++ b/admin/layouts/field/linked_admin_views_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage linked_admin_views_fullwidth.php diff --git a/admin/layouts/field/publishing.php b/admin/layouts/field/publishing.php index ac7bd7ed5..fd7f0e9c1 100644 --- a/admin/layouts/field/publishing.php +++ b/admin/layouts/field/publishing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/field/publlshing.php b/admin/layouts/field/publlshing.php index 645c15dea..102b733fa 100644 --- a/admin/layouts/field/publlshing.php +++ b/admin/layouts/field/publlshing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/field/scripts_left.php b/admin/layouts/field/scripts_left.php index 2dd987515..ad05034b4 100644 --- a/admin/layouts/field/scripts_left.php +++ b/admin/layouts/field/scripts_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage scripts_left.php diff --git a/admin/layouts/field/scripts_right.php b/admin/layouts/field/scripts_right.php index ea30e9451..83967e257 100644 --- a/admin/layouts/field/scripts_right.php +++ b/admin/layouts/field/scripts_right.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage scripts_right.php diff --git a/admin/layouts/fieldtype/details_left.php b/admin/layouts/fieldtype/details_left.php index 8c1bcd1b7..4c6d7851d 100644 --- a/admin/layouts/fieldtype/details_left.php +++ b/admin/layouts/fieldtype/details_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/fieldtype/details_right.php b/admin/layouts/fieldtype/details_right.php index f1007ccf5..5a5c2c7eb 100644 --- a/admin/layouts/fieldtype/details_right.php +++ b/admin/layouts/fieldtype/details_right.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/fieldtype/fields_fullwidth.php b/admin/layouts/fieldtype/fields_fullwidth.php index eb5751c68..b1026dc58 100644 --- a/admin/layouts/fieldtype/fields_fullwidth.php +++ b/admin/layouts/fieldtype/fields_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage fields_fullwidth.php diff --git a/admin/layouts/fieldtype/publishing.php b/admin/layouts/fieldtype/publishing.php index ac7bd7ed5..fd7f0e9c1 100644 --- a/admin/layouts/fieldtype/publishing.php +++ b/admin/layouts/fieldtype/publishing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/fieldtype/publlshing.php b/admin/layouts/fieldtype/publlshing.php index 645c15dea..102b733fa 100644 --- a/admin/layouts/fieldtype/publlshing.php +++ b/admin/layouts/fieldtype/publlshing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/help_document/details_above.php b/admin/layouts/help_document/details_above.php index 3bcda896b..be3f279c1 100644 --- a/admin/layouts/help_document/details_above.php +++ b/admin/layouts/help_document/details_above.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_above.php diff --git a/admin/layouts/help_document/details_fullwidth.php b/admin/layouts/help_document/details_fullwidth.php index cda72317c..3860f070c 100644 --- a/admin/layouts/help_document/details_fullwidth.php +++ b/admin/layouts/help_document/details_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_fullwidth.php diff --git a/admin/layouts/help_document/details_left.php b/admin/layouts/help_document/details_left.php index ffb3770b3..620d9a485 100644 --- a/admin/layouts/help_document/details_left.php +++ b/admin/layouts/help_document/details_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/help_document/details_right.php b/admin/layouts/help_document/details_right.php index 82cd9bd74..86b4974f9 100644 --- a/admin/layouts/help_document/details_right.php +++ b/admin/layouts/help_document/details_right.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/help_document/details_under.php b/admin/layouts/help_document/details_under.php index 077cf1fbd..6b7267268 100644 --- a/admin/layouts/help_document/details_under.php +++ b/admin/layouts/help_document/details_under.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_under.php diff --git a/admin/layouts/help_document/publishing.php b/admin/layouts/help_document/publishing.php index ac7bd7ed5..fd7f0e9c1 100644 --- a/admin/layouts/help_document/publishing.php +++ b/admin/layouts/help_document/publishing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/help_document/publlshing.php b/admin/layouts/help_document/publlshing.php index c12466cef..bfe84d83b 100644 --- a/admin/layouts/help_document/publlshing.php +++ b/admin/layouts/help_document/publlshing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/joomla_component/admin_views_fullwidth.php b/admin/layouts/joomla_component/admin_views_fullwidth.php index f9b760903..821ca1c1e 100644 --- a/admin/layouts/joomla_component/admin_views_fullwidth.php +++ b/admin/layouts/joomla_component/admin_views_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage admin_views_fullwidth.php diff --git a/admin/layouts/joomla_component/custom_admin_views_fullwidth.php b/admin/layouts/joomla_component/custom_admin_views_fullwidth.php index ced6a27dc..66d714542 100644 --- a/admin/layouts/joomla_component/custom_admin_views_fullwidth.php +++ b/admin/layouts/joomla_component/custom_admin_views_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_admin_views_fullwidth.php diff --git a/admin/layouts/joomla_component/details_above.php b/admin/layouts/joomla_component/details_above.php index 264848d0a..504996d9f 100644 --- a/admin/layouts/joomla_component/details_above.php +++ b/admin/layouts/joomla_component/details_above.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_above.php diff --git a/admin/layouts/joomla_component/details_left.php b/admin/layouts/joomla_component/details_left.php index 71b659b05..05344d065 100644 --- a/admin/layouts/joomla_component/details_left.php +++ b/admin/layouts/joomla_component/details_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/joomla_component/details_right.php b/admin/layouts/joomla_component/details_right.php index 3397127c8..c584cc88c 100644 --- a/admin/layouts/joomla_component/details_right.php +++ b/admin/layouts/joomla_component/details_right.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/joomla_component/details_under.php b/admin/layouts/joomla_component/details_under.php index 077cf1fbd..6b7267268 100644 --- a/admin/layouts/joomla_component/details_under.php +++ b/admin/layouts/joomla_component/details_under.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_under.php diff --git a/admin/layouts/joomla_component/dynamic_build_beta_fullwidth.php b/admin/layouts/joomla_component/dynamic_build_beta_fullwidth.php index 9414da387..ba1c42727 100644 --- a/admin/layouts/joomla_component/dynamic_build_beta_fullwidth.php +++ b/admin/layouts/joomla_component/dynamic_build_beta_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage dynamic_build_beta_fullwidth.php diff --git a/admin/layouts/joomla_component/dynamic_integration_fullwidth.php b/admin/layouts/joomla_component/dynamic_integration_fullwidth.php index 15d17127d..647c9ffa5 100644 --- a/admin/layouts/joomla_component/dynamic_integration_fullwidth.php +++ b/admin/layouts/joomla_component/dynamic_integration_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage dynamic_integration_fullwidth.php diff --git a/admin/layouts/joomla_component/libs_helpers_fullwidth.php b/admin/layouts/joomla_component/libs_helpers_fullwidth.php index 9c7737faa..76695645d 100644 --- a/admin/layouts/joomla_component/libs_helpers_fullwidth.php +++ b/admin/layouts/joomla_component/libs_helpers_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage libs_helpers_fullwidth.php diff --git a/admin/layouts/joomla_component/mysql_fullwidth.php b/admin/layouts/joomla_component/mysql_fullwidth.php index e662ade84..d44e2d48f 100644 --- a/admin/layouts/joomla_component/mysql_fullwidth.php +++ b/admin/layouts/joomla_component/mysql_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage mysql_fullwidth.php diff --git a/admin/layouts/joomla_component/php_fullwidth.php b/admin/layouts/joomla_component/php_fullwidth.php index 23e666f77..50ca04d72 100644 --- a/admin/layouts/joomla_component/php_fullwidth.php +++ b/admin/layouts/joomla_component/php_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage php_fullwidth.php diff --git a/admin/layouts/joomla_component/publishing.php b/admin/layouts/joomla_component/publishing.php index ac7bd7ed5..fd7f0e9c1 100644 --- a/admin/layouts/joomla_component/publishing.php +++ b/admin/layouts/joomla_component/publishing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/joomla_component/publlshing.php b/admin/layouts/joomla_component/publlshing.php index 645c15dea..102b733fa 100644 --- a/admin/layouts/joomla_component/publlshing.php +++ b/admin/layouts/joomla_component/publlshing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/joomla_component/readme_left.php b/admin/layouts/joomla_component/readme_left.php index c2a9e2b0b..9856adfcd 100644 --- a/admin/layouts/joomla_component/readme_left.php +++ b/admin/layouts/joomla_component/readme_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage readme_left.php diff --git a/admin/layouts/joomla_component/readme_right.php b/admin/layouts/joomla_component/readme_right.php index e2e0938fa..93168fe04 100644 --- a/admin/layouts/joomla_component/readme_right.php +++ b/admin/layouts/joomla_component/readme_right.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage readme_right.php diff --git a/admin/layouts/joomla_component/settings_left.php b/admin/layouts/joomla_component/settings_left.php index f148fe2a2..a9448bca5 100644 --- a/admin/layouts/joomla_component/settings_left.php +++ b/admin/layouts/joomla_component/settings_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage settings_left.php diff --git a/admin/layouts/joomla_component/settings_right.php b/admin/layouts/joomla_component/settings_right.php index 7892af1f9..17b1f2fd7 100644 --- a/admin/layouts/joomla_component/settings_right.php +++ b/admin/layouts/joomla_component/settings_right.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage settings_right.php diff --git a/admin/layouts/joomla_component/site_views_fullwidth.php b/admin/layouts/joomla_component/site_views_fullwidth.php index b51ca4aa8..882082134 100644 --- a/admin/layouts/joomla_component/site_views_fullwidth.php +++ b/admin/layouts/joomla_component/site_views_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage site_views_fullwidth.php diff --git a/admin/layouts/language/details_left.php b/admin/layouts/language/details_left.php new file mode 100644 index 000000000..bbd6dcc61 --- /dev/null +++ b/admin/layouts/language/details_left.php @@ -0,0 +1,54 @@ + + @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'); + +$form = $displayData->getForm(); + +$fields = $displayData->get('fields') ?: array( + 'name' +); + +$hiddenFields = $displayData->get('hidden_fields') ?: array(); + +foreach ($fields as $field) +{ + $field = is_array($field) ? $field : array($field); + foreach ($field as $f) + { + if ($form->getField($f)) + { + if (in_array($f, $hiddenFields)) + { + $form->setFieldAttribute($f, 'type', 'hidden'); + } + + echo $form->renderField($f); + break; + } + } +} diff --git a/admin/layouts/language/details_right.php b/admin/layouts/language/details_right.php new file mode 100644 index 000000000..5668a76fa --- /dev/null +++ b/admin/layouts/language/details_right.php @@ -0,0 +1,54 @@ + + @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'); + +$form = $displayData->getForm(); + +$fields = $displayData->get('fields') ?: array( + 'langtag' +); + +$hiddenFields = $displayData->get('hidden_fields') ?: array(); + +foreach ($fields as $field) +{ + $field = is_array($field) ? $field : array($field); + foreach ($field as $f) + { + if ($form->getField($f)) + { + if (in_array($f, $hiddenFields)) + { + $form->setFieldAttribute($f, 'type', 'hidden'); + } + + echo $form->renderField($f); + break; + } + } +} diff --git a/admin/layouts/language/index.html b/admin/layouts/language/index.html new file mode 100644 index 000000000..fa6d84e80 --- /dev/null +++ b/admin/layouts/language/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/admin/layouts/language/publishing.php b/admin/layouts/language/publishing.php new file mode 100644 index 000000000..fd7f0e9c1 --- /dev/null +++ b/admin/layouts/language/publishing.php @@ -0,0 +1,58 @@ + + @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'); + +$app = JFactory::getApplication(); +$form = $displayData->getForm(); + +$fields = $displayData->get('fields') ?: array( + 'created', + 'created_by', + 'modified', + 'modified_by' +); + +$hiddenFields = $displayData->get('hidden_fields') ?: array(); + +foreach ($fields as $field) +{ + $field = is_array($field) ? $field : array($field); + foreach ($field as $f) + { + if ($form->getField($f)) + { + if (in_array($f, $hiddenFields)) + { + $form->setFieldAttribute($f, 'type', 'hidden'); + } + + echo $form->renderField($f); + break; + } + } +} diff --git a/admin/layouts/language/publlshing.php b/admin/layouts/language/publlshing.php new file mode 100644 index 000000000..102b733fa --- /dev/null +++ b/admin/layouts/language/publlshing.php @@ -0,0 +1,60 @@ + + @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'); + +$app = JFactory::getApplication(); +$form = $displayData->getForm(); + +$fields = $displayData->get('fields') ?: array( + 'published', + 'ordering', + 'access', + 'version', + 'hits', + 'id' +); + +$hiddenFields = $displayData->get('hidden_fields') ?: array(); + +foreach ($fields as $field) +{ + $field = is_array($field) ? $field : array($field); + foreach ($field as $f) + { + if ($form->getField($f)) + { + if (in_array($f, $hiddenFields)) + { + $form->setFieldAttribute($f, 'type', 'hidden'); + } + + echo $form->renderField($f); + break; + } + } +} diff --git a/admin/layouts/language_placeholder/details_above.php b/admin/layouts/language_placeholder/details_above.php new file mode 100644 index 000000000..cd900471d --- /dev/null +++ b/admin/layouts/language_placeholder/details_above.php @@ -0,0 +1,41 @@ + + @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'); + +$form = $displayData->getForm(); + +$fields = array( + 'components' +); + +?> +
+ renderField($field); + } ?> +
diff --git a/admin/layouts/language_placeholder/details_fullwidth.php b/admin/layouts/language_placeholder/details_fullwidth.php new file mode 100644 index 000000000..7931472c5 --- /dev/null +++ b/admin/layouts/language_placeholder/details_fullwidth.php @@ -0,0 +1,49 @@ + + @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'); + +$form = $displayData->getForm(); + +$fields = $displayData->get('fields') ?: array( + 'placeholder', + 'translation' +); + +?> +
+ +
+
+ getLabel($field); ?> +
+
+ getInput($field); ?> +
+
+ +
diff --git a/admin/layouts/language_placeholder/index.html b/admin/layouts/language_placeholder/index.html new file mode 100644 index 000000000..fa6d84e80 --- /dev/null +++ b/admin/layouts/language_placeholder/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/admin/layouts/language_placeholder/publishing.php b/admin/layouts/language_placeholder/publishing.php new file mode 100644 index 000000000..fd7f0e9c1 --- /dev/null +++ b/admin/layouts/language_placeholder/publishing.php @@ -0,0 +1,58 @@ + + @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'); + +$app = JFactory::getApplication(); +$form = $displayData->getForm(); + +$fields = $displayData->get('fields') ?: array( + 'created', + 'created_by', + 'modified', + 'modified_by' +); + +$hiddenFields = $displayData->get('hidden_fields') ?: array(); + +foreach ($fields as $field) +{ + $field = is_array($field) ? $field : array($field); + foreach ($field as $f) + { + if ($form->getField($f)) + { + if (in_array($f, $hiddenFields)) + { + $form->setFieldAttribute($f, 'type', 'hidden'); + } + + echo $form->renderField($f); + break; + } + } +} diff --git a/admin/layouts/language_placeholder/publlshing.php b/admin/layouts/language_placeholder/publlshing.php new file mode 100644 index 000000000..102b733fa --- /dev/null +++ b/admin/layouts/language_placeholder/publlshing.php @@ -0,0 +1,60 @@ + + @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'); + +$app = JFactory::getApplication(); +$form = $displayData->getForm(); + +$fields = $displayData->get('fields') ?: array( + 'published', + 'ordering', + 'access', + 'version', + 'hits', + 'id' +); + +$hiddenFields = $displayData->get('hidden_fields') ?: array(); + +foreach ($fields as $field) +{ + $field = is_array($field) ? $field : array($field); + foreach ($field as $f) + { + if ($form->getField($f)) + { + if (in_array($f, $hiddenFields)) + { + $form->setFieldAttribute($f, 'type', 'hidden'); + } + + echo $form->renderField($f); + break; + } + } +} diff --git a/admin/layouts/layout/custom_script_fullwidth.php b/admin/layouts/layout/custom_script_fullwidth.php index 7e6e62e4e..03dbc25a1 100644 --- a/admin/layouts/layout/custom_script_fullwidth.php +++ b/admin/layouts/layout/custom_script_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_script_fullwidth.php diff --git a/admin/layouts/layout/details_fullwidth.php b/admin/layouts/layout/details_fullwidth.php index 2c704d7ff..58b1d4d47 100644 --- a/admin/layouts/layout/details_fullwidth.php +++ b/admin/layouts/layout/details_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_fullwidth.php diff --git a/admin/layouts/layout/details_left.php b/admin/layouts/layout/details_left.php index 1e291edb9..1b871120b 100644 --- a/admin/layouts/layout/details_left.php +++ b/admin/layouts/layout/details_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/layout/details_right.php b/admin/layouts/layout/details_right.php index 980877794..b7c3154a7 100644 --- a/admin/layouts/layout/details_right.php +++ b/admin/layouts/layout/details_right.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/layout/details_rightside.php b/admin/layouts/layout/details_rightside.php index 0bd6b3b0b..15e0158f2 100644 --- a/admin/layouts/layout/details_rightside.php +++ b/admin/layouts/layout/details_rightside.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_rightside.php diff --git a/admin/layouts/layout/details_under.php b/admin/layouts/layout/details_under.php index 077cf1fbd..6b7267268 100644 --- a/admin/layouts/layout/details_under.php +++ b/admin/layouts/layout/details_under.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_under.php diff --git a/admin/layouts/layout/publishing.php b/admin/layouts/layout/publishing.php index ac7bd7ed5..fd7f0e9c1 100644 --- a/admin/layouts/layout/publishing.php +++ b/admin/layouts/layout/publishing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/layout/publlshing.php b/admin/layouts/layout/publlshing.php index 645c15dea..102b733fa 100644 --- a/admin/layouts/layout/publlshing.php +++ b/admin/layouts/layout/publlshing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/site_view/custom_buttons_fullwidth.php b/admin/layouts/site_view/custom_buttons_fullwidth.php index f7f756db8..7673dde26 100644 --- a/admin/layouts/site_view/custom_buttons_fullwidth.php +++ b/admin/layouts/site_view/custom_buttons_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_buttons_fullwidth.php diff --git a/admin/layouts/site_view/custom_buttons_left.php b/admin/layouts/site_view/custom_buttons_left.php index b43163fd1..4c313eafb 100644 --- a/admin/layouts/site_view/custom_buttons_left.php +++ b/admin/layouts/site_view/custom_buttons_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_buttons_left.php diff --git a/admin/layouts/site_view/custom_buttons_right.php b/admin/layouts/site_view/custom_buttons_right.php index f535522c5..58bf7c7ee 100644 --- a/admin/layouts/site_view/custom_buttons_right.php +++ b/admin/layouts/site_view/custom_buttons_right.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_buttons_right.php diff --git a/admin/layouts/site_view/details_above.php b/admin/layouts/site_view/details_above.php index 264848d0a..504996d9f 100644 --- a/admin/layouts/site_view/details_above.php +++ b/admin/layouts/site_view/details_above.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_above.php diff --git a/admin/layouts/site_view/details_fullwidth.php b/admin/layouts/site_view/details_fullwidth.php index c91590b8f..cce076d1b 100644 --- a/admin/layouts/site_view/details_fullwidth.php +++ b/admin/layouts/site_view/details_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_fullwidth.php diff --git a/admin/layouts/site_view/details_left.php b/admin/layouts/site_view/details_left.php index a4f5f96a4..4f0775c74 100644 --- a/admin/layouts/site_view/details_left.php +++ b/admin/layouts/site_view/details_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/site_view/details_right.php b/admin/layouts/site_view/details_right.php index 980877794..b7c3154a7 100644 --- a/admin/layouts/site_view/details_right.php +++ b/admin/layouts/site_view/details_right.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/site_view/details_rightside.php b/admin/layouts/site_view/details_rightside.php index b30841fc7..88e5cd21a 100644 --- a/admin/layouts/site_view/details_rightside.php +++ b/admin/layouts/site_view/details_rightside.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_rightside.php diff --git a/admin/layouts/site_view/details_under.php b/admin/layouts/site_view/details_under.php index 077cf1fbd..6b7267268 100644 --- a/admin/layouts/site_view/details_under.php +++ b/admin/layouts/site_view/details_under.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_under.php diff --git a/admin/layouts/site_view/javascript_css_fullwidth.php b/admin/layouts/site_view/javascript_css_fullwidth.php index 478a46354..ae709dcf6 100644 --- a/admin/layouts/site_view/javascript_css_fullwidth.php +++ b/admin/layouts/site_view/javascript_css_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage javascript_css_fullwidth.php diff --git a/admin/layouts/site_view/linked_components_fullwidth.php b/admin/layouts/site_view/linked_components_fullwidth.php index b1d2606e3..ea33c894b 100644 --- a/admin/layouts/site_view/linked_components_fullwidth.php +++ b/admin/layouts/site_view/linked_components_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage linked_components_fullwidth.php diff --git a/admin/layouts/site_view/php_fullwidth.php b/admin/layouts/site_view/php_fullwidth.php index f4afec699..e3b21813e 100644 --- a/admin/layouts/site_view/php_fullwidth.php +++ b/admin/layouts/site_view/php_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage php_fullwidth.php diff --git a/admin/layouts/site_view/publishing.php b/admin/layouts/site_view/publishing.php index ac7bd7ed5..fd7f0e9c1 100644 --- a/admin/layouts/site_view/publishing.php +++ b/admin/layouts/site_view/publishing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/site_view/publlshing.php b/admin/layouts/site_view/publlshing.php index 645c15dea..102b733fa 100644 --- a/admin/layouts/site_view/publlshing.php +++ b/admin/layouts/site_view/publlshing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/snippet/details_above.php b/admin/layouts/snippet/details_above.php index 3482493fc..ae3f9befe 100644 --- a/admin/layouts/snippet/details_above.php +++ b/admin/layouts/snippet/details_above.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_above.php diff --git a/admin/layouts/snippet/details_left.php b/admin/layouts/snippet/details_left.php index 3535aa04b..91c917bb4 100644 --- a/admin/layouts/snippet/details_left.php +++ b/admin/layouts/snippet/details_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/snippet/details_right.php b/admin/layouts/snippet/details_right.php index daf8c8e20..4ab0fdb12 100644 --- a/admin/layouts/snippet/details_right.php +++ b/admin/layouts/snippet/details_right.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/snippet/publishing.php b/admin/layouts/snippet/publishing.php index ac7bd7ed5..fd7f0e9c1 100644 --- a/admin/layouts/snippet/publishing.php +++ b/admin/layouts/snippet/publishing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/snippet/publlshing.php b/admin/layouts/snippet/publlshing.php index 645c15dea..102b733fa 100644 --- a/admin/layouts/snippet/publlshing.php +++ b/admin/layouts/snippet/publlshing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/template/custom_script_fullwidth.php b/admin/layouts/template/custom_script_fullwidth.php index 7e6e62e4e..03dbc25a1 100644 --- a/admin/layouts/template/custom_script_fullwidth.php +++ b/admin/layouts/template/custom_script_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_script_fullwidth.php diff --git a/admin/layouts/template/details_fullwidth.php b/admin/layouts/template/details_fullwidth.php index 9669d0142..f71dfae2d 100644 --- a/admin/layouts/template/details_fullwidth.php +++ b/admin/layouts/template/details_fullwidth.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_fullwidth.php diff --git a/admin/layouts/template/details_left.php b/admin/layouts/template/details_left.php index 1e291edb9..1b871120b 100644 --- a/admin/layouts/template/details_left.php +++ b/admin/layouts/template/details_left.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/template/details_right.php b/admin/layouts/template/details_right.php index 980877794..b7c3154a7 100644 --- a/admin/layouts/template/details_right.php +++ b/admin/layouts/template/details_right.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/template/details_rightside.php b/admin/layouts/template/details_rightside.php index 0bd6b3b0b..15e0158f2 100644 --- a/admin/layouts/template/details_rightside.php +++ b/admin/layouts/template/details_rightside.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_rightside.php diff --git a/admin/layouts/template/details_under.php b/admin/layouts/template/details_under.php index 077cf1fbd..6b7267268 100644 --- a/admin/layouts/template/details_under.php +++ b/admin/layouts/template/details_under.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_under.php diff --git a/admin/layouts/template/publishing.php b/admin/layouts/template/publishing.php index ac7bd7ed5..fd7f0e9c1 100644 --- a/admin/layouts/template/publishing.php +++ b/admin/layouts/template/publishing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/template/publlshing.php b/admin/layouts/template/publlshing.php index 645c15dea..102b733fa 100644 --- a/admin/layouts/template/publlshing.php +++ b/admin/layouts/template/publlshing.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/models/ajax.php b/admin/models/ajax.php index 8e4a70aa8..b940f5ce9 100644 --- a/admin/models/ajax.php +++ b/admin/models/ajax.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage ajax.php diff --git a/admin/models/componentbuilder.php b/admin/models/componentbuilder.php index ce7dff7de..31ea9ed7b 100644 --- a/admin/models/componentbuilder.php +++ b/admin/models/componentbuilder.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage componentbuilder.php @@ -43,7 +43,7 @@ class ComponentbuilderModelComponentbuilder extends JModelList $icons = array(); // view groups array $viewGroups = array( - 'main' => array('png.compiler', 'png.joomla_component.add', 'png.joomla_components', 'png.admin_view.add', 'png.admin_views', 'png.custom_admin_view.add', 'png.custom_admin_views', 'png.site_view.add', 'png.site_views', 'png.template.add', 'png.templates', 'png.layout.add', 'png.layouts', 'png.dynamic_get.add', 'png.dynamic_gets', 'png.custom_codes', 'png.snippet.add', 'png.snippets', 'png.field.add', 'png.fields', 'png.fields.catid', 'png.fieldtype.add', 'png.fieldtypes', 'png.fieldtypes.catid', 'png.help_document.add', 'png.help_documents') + 'main' => array('png.compiler', 'png.joomla_component.add', 'png.joomla_components', 'png.admin_view.add', 'png.admin_views', 'png.custom_admin_view.add', 'png.custom_admin_views', 'png.site_view.add', 'png.site_views', 'png.template.add', 'png.templates', 'png.layout.add', 'png.layouts', 'png.dynamic_get.add', 'png.dynamic_gets', 'png.custom_codes', 'png.snippet.add', 'png.snippets', 'png.field.add', 'png.fields', 'png.fields.catid', 'png.fieldtype.add', 'png.fieldtypes', 'png.fieldtypes.catid', 'png.language_placeholder.add', 'png.language_placeholders', 'png.help_document.add', 'png.help_documents') ); // view access array $viewAccess = array( @@ -107,6 +107,16 @@ class ComponentbuilderModelComponentbuilder extends JModelList 'fieldtypes.submenu' => 'fieldtype.submenu', 'fieldtypes.dashboard_list' => 'fieldtype.dashboard_list', 'fieldtype.dashboard_add' => 'fieldtype.dashboard_add', + 'language_placeholder.create' => 'language_placeholder.create', + 'language_placeholders.access' => 'language_placeholder.access', + 'language_placeholder.access' => 'language_placeholder.access', + 'language_placeholders.submenu' => 'language_placeholder.submenu', + 'language_placeholders.dashboard_list' => 'language_placeholder.dashboard_list', + 'language_placeholder.dashboard_add' => 'language_placeholder.dashboard_add', + 'language.create' => 'language.create', + 'languages.access' => 'language.access', + 'language.access' => 'language.access', + 'languages.submenu' => 'language.submenu', 'help_document.create' => 'help_document.create', 'help_documents.access' => 'help_document.access', 'help_document.access' => 'help_document.access', diff --git a/admin/models/fields/adminviewfolderlist.php b/admin/models/fields/adminviewfolderlist.php index 8e7db4e54..6bd862dcc 100644 --- a/admin/models/fields/adminviewfolderlist.php +++ b/admin/models/fields/adminviewfolderlist.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage adminviewfolderlist.php diff --git a/admin/models/fields/adminviews.php b/admin/models/fields/adminviews.php index 4ff076ddc..21cd45aae 100644 --- a/admin/models/fields/adminviews.php +++ b/admin/models/fields/adminviews.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage adminviews.php diff --git a/admin/models/fields/articles.php b/admin/models/fields/articles.php index bffcd2741..da5c24105 100644 --- a/admin/models/fields/articles.php +++ b/admin/models/fields/articles.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage articles.php diff --git a/admin/models/fields/component.php b/admin/models/fields/component.php index e76e4058e..62bb7a857 100644 --- a/admin/models/fields/component.php +++ b/admin/models/fields/component.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage component.php diff --git a/admin/models/fields/components.php b/admin/models/fields/components.php new file mode 100644 index 000000000..932631b2c --- /dev/null +++ b/admin/models/fields/components.php @@ -0,0 +1,170 @@ + + @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 the list field type +jimport('joomla.form.helper'); +JFormHelper::loadFieldClass('list'); + +/** + * Components Form Field class for the Componentbuilder component + */ +class JFormFieldComponents extends JFormFieldList +{ + /** + * The components field type. + * + * @var string + */ + public $type = 'components'; + /** + * Override to add new button + * + * @return string The field input markup. + * + * @since 3.2 + */ + protected function getInput() + { + // see if we should add buttons + $setButton = $this->getAttribute('button'); + // get html + $html = parent::getInput(); + // if true set button + if ($setButton === 'true') + { + $button = array(); + $script = array(); + $buttonName = $this->getAttribute('name'); + // get the input from url + $app = JFactory::getApplication(); + $jinput = $app->input; + // get the view name & id + $values = $jinput->getArray(array( + 'id' => 'int', + 'view' => 'word' + )); + // check if new item + $ref = ''; + $refJ = ''; + if (!is_null($values['id']) && strlen($values['view'])) + { + // only load referal if not new item. + $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; + $refJ = '&ref=' . $values['view'] . '&refid=' . $values['id']; + } + $user = JFactory::getUser(); + // only add if user allowed to create joomla_component + if ($user->authorise('core.create', 'com_componentbuilder') && $app->isAdmin()) // TODO for now only in admin area. + { + // build Create button + $buttonNamee = trim($buttonName); + $buttonNamee = preg_replace('/_+/', ' ', $buttonNamee); + $buttonNamee = preg_replace('/\s+/', ' ', $buttonNamee); + $buttonNamee = preg_replace("/[^A-Za-z ]/", '', $buttonNamee); + $buttonNamee = ucfirst(strtolower($buttonNamee)); + $button[] = '
+ '; + } + // only add if user allowed to edit joomla_component + if (($buttonName === 'joomla_component' || $buttonName === 'joomla_components') && $user->authorise('core.edit', 'com_componentbuilder') && $app->isAdmin()) // TODO for now only in admin area. + { + // build edit button + $buttonNamee = trim($buttonName); + $buttonNamee = preg_replace('/_+/', ' ', $buttonNamee); + $buttonNamee = preg_replace('/\s+/', ' ', $buttonNamee); + $buttonNamee = preg_replace("/[^A-Za-z ]/", '', $buttonNamee); + $buttonNamee = ucfirst(strtolower($buttonNamee)); + $button[] = ''; + // build script + $script[] = " + jQuery(document).ready(function() { + jQuery('#adminForm').on('change', '#jform_".$buttonName."',function (e) { + e.preventDefault(); + var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val(); + ".$buttonName."Button(".$buttonName."Value); + }); + var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val(); + ".$buttonName."Button(".$buttonName."Value); + }); + function ".$buttonName."Button(value) { + if (value > 0) { + // hide the create button + jQuery('#".$buttonName."Create').hide(); + // show edit button + jQuery('#".$buttonName."Edit').show(); + var url = 'index.php?option=com_componentbuilder&view=joomla_components&task=joomla_component.edit&id='+value+'".$refJ."'; + jQuery('#".$buttonName."Edit').attr('href', url); + } else { + // show the create button + jQuery('#".$buttonName."Create').show(); + // hide edit button + jQuery('#".$buttonName."Edit').hide(); + } + }"; + } + // check if button was created for joomla_component field. + if (is_array($button) && count($button) > 0) + { + // Load the needed script. + $document = JFactory::getDocument(); + $document->addScriptDeclaration(implode(' ',$script)); + // return the button attached to input field. + return '
' .$html . implode('',$button).'
'; + } + } + return $html; + } + + /** + * Method to get a list of options for a list input. + * + * @return array An array of JHtml options. + */ + public function getOptions() + { + $db = JFactory::getDBO(); + $query = $db->getQuery(true); + $query->select($db->quoteName(array('a.id','a.system_name'),array('id','components_system_name'))); + $query->from($db->quoteName('#__componentbuilder_joomla_component', 'a')); + $query->where($db->quoteName('a.published') . ' >= 1'); + $query->order('a.system_name ASC'); + $db->setQuery((string)$query); + $items = $db->loadObjectList(); + $options = array(); + if ($items) + { + foreach($items as $item) + { + $options[] = JHtml::_('select.option', $item->id, $item->components_system_name); + } + } + return $options; + } +} diff --git a/admin/models/fields/customadminviews.php b/admin/models/fields/customadminviews.php index 1cf4313e6..82c2254ef 100644 --- a/admin/models/fields/customadminviews.php +++ b/admin/models/fields/customadminviews.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage customadminviews.php diff --git a/admin/models/fields/customfilelist.php b/admin/models/fields/customfilelist.php index 55df68651..ef0423759 100644 --- a/admin/models/fields/customfilelist.php +++ b/admin/models/fields/customfilelist.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage customfilelist.php diff --git a/admin/models/fields/customfolderlist.php b/admin/models/fields/customfolderlist.php index b7a303a57..61349411d 100644 --- a/admin/models/fields/customfolderlist.php +++ b/admin/models/fields/customfolderlist.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage customfolderlist.php diff --git a/admin/models/fields/customgets.php b/admin/models/fields/customgets.php index 7e1c1d954..9901bab42 100644 --- a/admin/models/fields/customgets.php +++ b/admin/models/fields/customgets.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage customgets.php diff --git a/admin/models/fields/dbtables.php b/admin/models/fields/dbtables.php index 64c1ad7b2..92e299f13 100644 --- a/admin/models/fields/dbtables.php +++ b/admin/models/fields/dbtables.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage dbtables.php diff --git a/admin/models/fields/dynamicget.php b/admin/models/fields/dynamicget.php index b2f0fa58c..c909976ae 100644 --- a/admin/models/fields/dynamicget.php +++ b/admin/models/fields/dynamicget.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage dynamicget.php diff --git a/admin/models/fields/dynamicgets.php b/admin/models/fields/dynamicgets.php index 20405d887..104a58dc7 100644 --- a/admin/models/fields/dynamicgets.php +++ b/admin/models/fields/dynamicgets.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage dynamicgets.php diff --git a/admin/models/fields/fields.php b/admin/models/fields/fields.php index e720dc00f..1a227063f 100644 --- a/admin/models/fields/fields.php +++ b/admin/models/fields/fields.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage fields.php diff --git a/admin/models/fields/fieldsmulti.php b/admin/models/fields/fieldsmulti.php index d484d9cd4..133027a89 100644 --- a/admin/models/fields/fieldsmulti.php +++ b/admin/models/fields/fieldsmulti.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage fieldsmulti.php diff --git a/admin/models/fields/fieldtypes.php b/admin/models/fields/fieldtypes.php index b0ea7f761..5a6c23401 100644 --- a/admin/models/fields/fieldtypes.php +++ b/admin/models/fields/fieldtypes.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage fieldtypes.php diff --git a/admin/models/fields/maingets.php b/admin/models/fields/maingets.php index 15125c414..8952a7086 100644 --- a/admin/models/fields/maingets.php +++ b/admin/models/fields/maingets.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage maingets.php diff --git a/admin/models/fields/siteviewfolderlist.php b/admin/models/fields/siteviewfolderlist.php index 420974882..1f0b409d9 100644 --- a/admin/models/fields/siteviewfolderlist.php +++ b/admin/models/fields/siteviewfolderlist.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage siteviewfolderlist.php diff --git a/admin/models/fields/siteviews.php b/admin/models/fields/siteviews.php index d2e39b65c..0018c3303 100644 --- a/admin/models/fields/siteviews.php +++ b/admin/models/fields/siteviews.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage siteviews.php diff --git a/admin/models/fields/snippets.php b/admin/models/fields/snippets.php index d7537ce78..4908d2b00 100644 --- a/admin/models/fields/snippets.php +++ b/admin/models/fields/snippets.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage snippets.php diff --git a/admin/models/forms/help_document.js b/admin/models/forms/help_document.js index 5d413bae9..a8a107729 100644 --- a/admin/models/forms/help_document.js +++ b/admin/models/forms/help_document.js @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage help_document.js diff --git a/admin/models/forms/language.js b/admin/models/forms/language.js new file mode 100644 index 000000000..30a7bd0ec --- /dev/null +++ b/admin/models/forms/language.js @@ -0,0 +1,25 @@ +/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/ + __ __ _ _____ _ _ __ __ _ _ _ + \ \ / / | | | __ \ | | | | | \/ | | | | | | | + \ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| | + \ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` | + \ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| | + \/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_| + | | + |_| +/-------------------------------------------------------------------------------------------------------------------------------/ + + @version @update number 3 of this MVC + @build 3rd April, 2017 + @created 3rd April, 2017 + @package Component Builder + @subpackage language.js + @author Llewellyn van der Merwe + @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 + +/-----------------------------------------------------------------------------------------------------------------------------*/ + + diff --git a/admin/models/forms/language.xml b/admin/models/forms/language.xml new file mode 100644 index 000000000..883c0f2b3 --- /dev/null +++ b/admin/models/forms/language.xml @@ -0,0 +1,145 @@ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + + + +
+
\ No newline at end of file diff --git a/admin/models/forms/language_placeholder.js b/admin/models/forms/language_placeholder.js new file mode 100644 index 000000000..b1815115b --- /dev/null +++ b/admin/models/forms/language_placeholder.js @@ -0,0 +1,25 @@ +/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/ + __ __ _ _____ _ _ __ __ _ _ _ + \ \ / / | | | __ \ | | | | | \/ | | | | | | | + \ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| | + \ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` | + \ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| | + \/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_| + | | + |_| +/-------------------------------------------------------------------------------------------------------------------------------/ + + @version @update number 8 of this MVC + @build 3rd April, 2017 + @created 3rd April, 2017 + @package Component Builder + @subpackage language_placeholder.js + @author Llewellyn van der Merwe + @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 + +/-----------------------------------------------------------------------------------------------------------------------------*/ + + diff --git a/admin/models/forms/language_placeholder.xml b/admin/models/forms/language_placeholder.xml new file mode 100644 index 000000000..cfc1ca8d6 --- /dev/null +++ b/admin/models/forms/language_placeholder.xml @@ -0,0 +1,183 @@ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + + + +
+
\ No newline at end of file diff --git a/admin/models/help_document.php b/admin/models/help_document.php index dae6e4e85..9d8d15a94 100644 --- a/admin/models/help_document.php +++ b/admin/models/help_document.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage help_document.php diff --git a/admin/models/help_documents.php b/admin/models/help_documents.php index 76cc18fdd..535c913a4 100644 --- a/admin/models/help_documents.php +++ b/admin/models/help_documents.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage help_documents.php diff --git a/admin/models/import.php b/admin/models/import.php index 573dd8fad..60c63a4f5 100644 --- a/admin/models/import.php +++ b/admin/models/import.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage import.php diff --git a/admin/models/import_joomla_components.php b/admin/models/import_joomla_components.php index 74e2f9f88..146c3319b 100644 --- a/admin/models/import_joomla_components.php +++ b/admin/models/import_joomla_components.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage import_joomla_components.php diff --git a/admin/models/language.php b/admin/models/language.php new file mode 100644 index 000000000..0351bb6f3 --- /dev/null +++ b/admin/models/language.php @@ -0,0 +1,859 @@ + + @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'); + +use Joomla\Registry\Registry; + +// import Joomla modelform library +jimport('joomla.application.component.modeladmin'); + +/** + * Componentbuilder Language Model + */ +class ComponentbuilderModelLanguage extends JModelAdmin +{ + /** + * @var string The prefix to use with controller messages. + * @since 1.6 + */ + protected $text_prefix = 'COM_COMPONENTBUILDER'; + + /** + * The type alias for this content type. + * + * @var string + * @since 3.2 + */ + public $typeAlias = 'com_componentbuilder.language'; + + /** + * Returns a Table object, always creating it + * + * @param type $type The table type to instantiate + * @param string $prefix A prefix for the table class name. Optional. + * @param array $config Configuration array for model. Optional. + * + * @return JTable A database object + * + * @since 1.6 + */ + public function getTable($type = 'language', $prefix = 'ComponentbuilderTable', $config = array()) + { + return JTable::getInstance($type, $prefix, $config); + } + + /** + * Method to get a single record. + * + * @param integer $pk The id of the primary key. + * + * @return mixed Object on success, false on failure. + * + * @since 1.6 + */ + public function getItem($pk = null) + { + if ($item = parent::getItem($pk)) + { + if (!empty($item->params)) + { + // Convert the params field to an array. + $registry = new Registry; + $registry->loadString($item->params); + $item->params = $registry->toArray(); + } + + if (!empty($item->metadata)) + { + // Convert the metadata field to an array. + $registry = new Registry; + $registry->loadString($item->metadata); + $item->metadata = $registry->toArray(); + } + + if (!empty($item->id)) + { + $item->tags = new JHelperTags; + $item->tags->getTagIds($item->id, 'com_componentbuilder.language'); + } + } + + return $item; + } + + /** + * Method to get the record form. + * + * @param array $data Data for the form. + * @param boolean $loadData True if the form is to load its own data (default case), false if not. + * + * @return mixed A JForm object on success, false on failure + * + * @since 1.6 + */ + public function getForm($data = array(), $loadData = true) + { + // Get the form. + $form = $this->loadForm('com_componentbuilder.language', 'language', array('control' => 'jform', 'load_data' => $loadData)); + + if (empty($form)) + { + return false; + } + + $jinput = JFactory::getApplication()->input; + + // The front end calls this model and uses a_id to avoid id clashes so we need to check for that first. + if ($jinput->get('a_id')) + { + $id = $jinput->get('a_id', 0, 'INT'); + } + // The back end uses id so we use that the rest of the time and set it to 0 by default. + else + { + $id = $jinput->get('id', 0, 'INT'); + } + + $user = JFactory::getUser(); + + // Check for existing item. + // Modify the form based on Edit State access controls. + if ($id != 0 && (!$user->authorise('language.edit.state', 'com_componentbuilder.language.' . (int) $id)) + || ($id == 0 && !$user->authorise('language.edit.state', 'com_componentbuilder'))) + { + // Disable fields for display. + $form->setFieldAttribute('ordering', 'disabled', 'true'); + $form->setFieldAttribute('published', 'disabled', 'true'); + // Disable fields while saving. + $form->setFieldAttribute('ordering', 'filter', 'unset'); + $form->setFieldAttribute('published', 'filter', 'unset'); + } + // If this is a new item insure the greated by is set. + if (0 == $id) + { + // Set the created_by to this user + $form->setValue('created_by', null, $user->id); + } + // Modify the form based on Edit Creaded By access controls. + if (!$user->authorise('core.edit.created_by', 'com_componentbuilder')) + { + // Disable fields for display. + $form->setFieldAttribute('created_by', 'disabled', 'true'); + // Disable fields for display. + $form->setFieldAttribute('created_by', 'readonly', 'true'); + // Disable fields while saving. + $form->setFieldAttribute('created_by', 'filter', 'unset'); + } + // Modify the form based on Edit Creaded Date access controls. + if (!$user->authorise('core.edit.created', 'com_componentbuilder')) + { + // Disable fields for display. + $form->setFieldAttribute('created', 'disabled', 'true'); + // Disable fields while saving. + $form->setFieldAttribute('created', 'filter', 'unset'); + } + // Only load these values if no id is found + if (0 == $id) + { + // Set redirected field name + $redirectedField = $jinput->get('ref', null, 'STRING'); + // Set redirected field value + $redirectedValue = $jinput->get('refid', 0, 'INT'); + if (0 != $redirectedValue && $redirectedField) + { + // Now set the local-redirected field default value + $form->setValue($redirectedField, null, $redirectedValue); + } + } + + return $form; + } + + /** + * Method to get the script that have to be included on the form + * + * @return string script files + */ + public function getScript() + { + return 'administrator/components/com_componentbuilder/models/forms/language.js'; + } + + /** + * Method to test whether a record can be deleted. + * + * @param object $record A record object. + * + * @return boolean True if allowed to delete the record. Defaults to the permission set in the component. + * + * @since 1.6 + */ + protected function canDelete($record) + { + if (!empty($record->id)) + { + if ($record->published != -2) + { + return; + } + + $user = JFactory::getUser(); + // The record has been set. Check the record permissions. + return $user->authorise('language.delete', 'com_componentbuilder.language.' . (int) $record->id); + } + return false; + } + + /** + * Method to test whether a record can have its state edited. + * + * @param object $record A record object. + * + * @return boolean True if allowed to change the state of the record. Defaults to the permission set in the component. + * + * @since 1.6 + */ + protected function canEditState($record) + { + $user = JFactory::getUser(); + $recordId = (!empty($record->id)) ? $record->id : 0; + + if ($recordId) + { + // The record has been set. Check the record permissions. + $permission = $user->authorise('language.edit.state', 'com_componentbuilder.language.' . (int) $recordId); + if (!$permission && !is_null($permission)) + { + return false; + } + } + // In the absense of better information, revert to the component permissions. + return $user->authorise('language.edit.state', 'com_componentbuilder'); + } + + /** + * 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 2.5 + */ + protected function allowEdit($data = array(), $key = 'id') + { + // Check specific edit permission then general edit permission. + $user = JFactory::getUser(); + + return $user->authorise('language.edit', 'com_componentbuilder.language.'. ((int) isset($data[$key]) ? $data[$key] : 0)) or $user->authorise('language.edit', 'com_componentbuilder'); + } + + /** + * Prepare and sanitise the table data prior to saving. + * + * @param JTable $table A JTable object. + * + * @return void + * + * @since 1.6 + */ + protected function prepareTable($table) + { + $date = JFactory::getDate(); + $user = JFactory::getUser(); + + if (isset($table->name)) + { + $table->name = htmlspecialchars_decode($table->name, ENT_QUOTES); + } + + if (isset($table->alias) && empty($table->alias)) + { + $table->generateAlias(); + } + + if (empty($table->id)) + { + $table->created = $date->toSql(); + // set the user + if ($table->created_by == 0 || empty($table->created_by)) + { + $table->created_by = $user->id; + } + // Set ordering to the last item if not set + if (empty($table->ordering)) + { + $db = JFactory::getDbo(); + $query = $db->getQuery(true) + ->select('MAX(ordering)') + ->from($db->quoteName('#__componentbuilder_language')); + $db->setQuery($query); + $max = $db->loadResult(); + + $table->ordering = $max + 1; + } + } + else + { + $table->modified = $date->toSql(); + $table->modified_by = $user->id; + } + + if (!empty($table->id)) + { + // Increment the items version number. + $table->version++; + } + } + + /** + * Method to get the data that should be injected in the form. + * + * @return mixed The data for the form. + * + * @since 1.6 + */ + protected function loadFormData() + { + // Check the session for previously entered form data. + $data = JFactory::getApplication()->getUserState('com_componentbuilder.edit.language.data', array()); + + if (empty($data)) + { + $data = $this->getItem(); + } + + return $data; + } + + /** + * Method to get the unique fields of this table. + * + * @return mixed An array of field names, boolean false if none is set. + * + * @since 3.0 + */ + protected function getUniqeFields() + { + return false; + } + + /** + * Method to delete one or more records. + * + * @param array &$pks An array of record primary keys. + * + * @return boolean True if successful, false if an error occurs. + * + * @since 12.2 + */ + public function delete(&$pks) + { + if (!parent::delete($pks)) + { + return false; + } + + return true; + } + + /** + * Method to change the published state of one or more records. + * + * @param array &$pks A list of the primary keys to change. + * @param integer $value The value of the published state. + * + * @return boolean True on success. + * + * @since 12.2 + */ + public function publish(&$pks, $value = 1) + { + if (!parent::publish($pks, $value)) + { + return false; + } + + return true; + } + + /** + * Method to perform batch operations on an item or a set of items. + * + * @param array $commands An array of commands to perform. + * @param array $pks An array of item ids. + * @param array $contexts An array of item contexts. + * + * @return boolean Returns true on success, false on failure. + * + * @since 12.2 + */ + public function batch($commands, $pks, $contexts) + { + // Sanitize ids. + $pks = array_unique($pks); + JArrayHelper::toInteger($pks); + + // Remove any values of zero. + if (array_search(0, $pks, true)) + { + unset($pks[array_search(0, $pks, true)]); + } + + if (empty($pks)) + { + $this->setError(JText::_('JGLOBAL_NO_ITEM_SELECTED')); + return false; + } + + $done = false; + + // Set some needed variables. + $this->user = JFactory::getUser(); + $this->table = $this->getTable(); + $this->tableClassName = get_class($this->table); + $this->contentType = new JUcmType; + $this->type = $this->contentType->getTypeByTable($this->tableClassName); + $this->canDo = ComponentbuilderHelper::getActions('language'); + $this->batchSet = true; + + if (!$this->canDo->get('core.batch')) + { + $this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION')); + return false; + } + + if ($this->type == false) + { + $type = new JUcmType; + $this->type = $type->getTypeByAlias($this->typeAlias); + } + + $this->tagsObserver = $this->table->getObserverOfClass('JTableObserverTags'); + + if (!empty($commands['move_copy'])) + { + $cmd = JArrayHelper::getValue($commands, 'move_copy', 'c'); + + if ($cmd == 'c') + { + $result = $this->batchCopy($commands, $pks, $contexts); + + if (is_array($result)) + { + foreach ($result as $old => $new) + { + $contexts[$new] = $contexts[$old]; + } + $pks = array_values($result); + } + else + { + return false; + } + } + elseif ($cmd == 'm' && !$this->batchMove($commands, $pks, $contexts)) + { + return false; + } + + $done = true; + } + + if (!$done) + { + $this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION')); + + return false; + } + + // Clear the cache + $this->cleanCache(); + + return true; + } + + /** + * Batch copy items to a new category or current. + * + * @param integer $values The new values. + * @param array $pks An array of row IDs. + * @param array $contexts An array of item contexts. + * + * @return mixed An array of new IDs on success, boolean false on failure. + * + * @since 12.2 + */ + protected function batchCopy($values, $pks, $contexts) + { + if (empty($this->batchSet)) + { + // Set some needed variables. + $this->user = JFactory::getUser(); + $this->table = $this->getTable(); + $this->tableClassName = get_class($this->table); + $this->contentType = new JUcmType; + $this->type = $this->contentType->getTypeByTable($this->tableClassName); + $this->canDo = ComponentbuilderHelper::getActions('language'); + } + + if (!$this->canDo->get('language.create') && !$this->canDo->get('language.batch')) + { + return false; + } + + // get list of uniqe fields + $uniqeFields = $this->getUniqeFields(); + // remove move_copy from array + unset($values['move_copy']); + + // make sure published is set + if (!isset($values['published'])) + { + $values['published'] = 0; + } + elseif (isset($values['published']) && !$this->canDo->get('language.edit.state')) + { + $values['published'] = 0; + } + + $newIds = array(); + + // Parent exists so let's proceed + while (!empty($pks)) + { + // Pop the first ID off the stack + $pk = array_shift($pks); + + $this->table->reset(); + + // only allow copy if user may edit this item. + + if (!$this->user->authorise('language.edit', $contexts[$pk])) + + { + + // Not fatal error + + $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); + + continue; + + } + + // Check that the row actually exists + if (!$this->table->load($pk)) + { + if ($error = $this->table->getError()) + { + // Fatal error + $this->setError($error); + + return false; + } + else + { + // Not fatal error + $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); + continue; + } + } + + $this->table->name = $this->generateUniqe('name',$this->table->name); + + // insert all set values + if (ComponentbuilderHelper::checkArray($values)) + { + foreach ($values as $key => $value) + { + if (strlen($value) > 0 && isset($this->table->$key)) + { + $this->table->$key = $value; + } + } + } + + // update all uniqe fields + if (ComponentbuilderHelper::checkArray($uniqeFields)) + { + foreach ($uniqeFields as $uniqeField) + { + $this->table->$uniqeField = $this->generateUniqe($uniqeField,$this->table->$uniqeField); + } + } + + // Reset the ID because we are making a copy + $this->table->id = 0; + + // TODO: Deal with ordering? + // $this->table->ordering = 1; + + // Check the row. + if (!$this->table->check()) + { + $this->setError($this->table->getError()); + + return false; + } + + if (!empty($this->type)) + { + $this->createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); + } + + // Store the row. + if (!$this->table->store()) + { + $this->setError($this->table->getError()); + + return false; + } + + // Get the new item ID + $newId = $this->table->get('id'); + + // Add the new ID to the array + $newIds[$pk] = $newId; + } + + // Clean the cache + $this->cleanCache(); + + return $newIds; + } + + /** + * Batch move items to a new category + * + * @param integer $value The new category ID. + * @param array $pks An array of row IDs. + * @param array $contexts An array of item contexts. + * + * @return boolean True if successful, false otherwise and internal error is set. + * + * @since 12.2 + */ + protected function batchMove($values, $pks, $contexts) + { + if (empty($this->batchSet)) + { + // Set some needed variables. + $this->user = JFactory::getUser(); + $this->table = $this->getTable(); + $this->tableClassName = get_class($this->table); + $this->contentType = new JUcmType; + $this->type = $this->contentType->getTypeByTable($this->tableClassName); + $this->canDo = ComponentbuilderHelper::getActions('language'); + } + + if (!$this->canDo->get('language.edit') && !$this->canDo->get('language.batch')) + { + $this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT')); + return false; + } + + // make sure published only updates if user has the permission. + if (isset($values['published']) && !$this->canDo->get('language.edit.state')) + { + unset($values['published']); + } + // remove move_copy from array + unset($values['move_copy']); + + // Parent exists so we proceed + foreach ($pks as $pk) + { + if (!$this->user->authorise('language.edit', $contexts[$pk])) + { + $this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT')); + + return false; + } + + // Check that the row actually exists + if (!$this->table->load($pk)) + { + if ($error = $this->table->getError()) + { + // Fatal error + $this->setError($error); + + return false; + } + else + { + // Not fatal error + $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); + continue; + } + } + + // insert all set values. + if (ComponentbuilderHelper::checkArray($values)) + { + foreach ($values as $key => $value) + { + // Do special action for access. + if ('access' === $key && strlen($value) > 0) + { + $this->table->$key = $value; + } + elseif (strlen($value) > 0 && isset($this->table->$key)) + { + $this->table->$key = $value; + } + } + } + + + // Check the row. + if (!$this->table->check()) + { + $this->setError($this->table->getError()); + + return false; + } + + if (!empty($this->type)) + { + $this->createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); + } + + // Store the row. + if (!$this->table->store()) + { + $this->setError($this->table->getError()); + + return false; + } + } + + // Clean the cache + $this->cleanCache(); + + return true; + } + + /** + * Method to save the form data. + * + * @param array $data The form data. + * + * @return boolean True on success. + * + * @since 1.6 + */ + public function save($data) + { + $input = JFactory::getApplication()->input; + $filter = JFilterInput::getInstance(); + + // set the metadata to the Item Data + if (isset($data['metadata']) && isset($data['metadata']['author'])) + { + $data['metadata']['author'] = $filter->clean($data['metadata']['author'], 'TRIM'); + + $metadata = new JRegistry; + $metadata->loadArray($data['metadata']); + $data['metadata'] = (string) $metadata; + } + + // Set the Params Items to data + if (isset($data['params']) && is_array($data['params'])) + { + $params = new JRegistry; + $params->loadArray($data['params']); + $data['params'] = (string) $params; + } + + // Alter the uniqe field for save as copy + if ($input->get('task') === 'save2copy') + { + // Automatic handling of other uniqe fields + $uniqeFields = $this->getUniqeFields(); + if (ComponentbuilderHelper::checkArray($uniqeFields)) + { + foreach ($uniqeFields as $uniqeField) + { + $data[$uniqeField] = $this->generateUniqe($uniqeField,$data[$uniqeField]); + } + } + } + + if (parent::save($data)) + { + return true; + } + return false; + } + + /** + * Method to generate a uniqe value. + * + * @param string $field name. + * @param string $value data. + * + * @return string New value. + * + * @since 3.0 + */ + protected function generateUniqe($field,$value) + { + + // set field value uniqe + $table = $this->getTable(); + + while ($table->load(array($field => $value))) + { + $value = JString::increment($value); + } + + return $value; + } + + /** + * Method to change the title & alias. + * + * @param string $title The title. + * + * @return array Contains the modified title and alias. + * + */ + protected function _generateNewTitle($title) + { + + // Alter the title + $table = $this->getTable(); + + while ($table->load(array('title' => $title))) + { + $title = JString::increment($title); + } + + return $title; + } +} diff --git a/admin/models/language_placeholder.php b/admin/models/language_placeholder.php new file mode 100644 index 000000000..d32829de5 --- /dev/null +++ b/admin/models/language_placeholder.php @@ -0,0 +1,871 @@ + + @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'); + +use Joomla\Registry\Registry; + +// import Joomla modelform library +jimport('joomla.application.component.modeladmin'); + +/** + * Componentbuilder Language_placeholder Model + */ +class ComponentbuilderModelLanguage_placeholder extends JModelAdmin +{ + /** + * @var string The prefix to use with controller messages. + * @since 1.6 + */ + protected $text_prefix = 'COM_COMPONENTBUILDER'; + + /** + * The type alias for this content type. + * + * @var string + * @since 3.2 + */ + public $typeAlias = 'com_componentbuilder.language_placeholder'; + + /** + * Returns a Table object, always creating it + * + * @param type $type The table type to instantiate + * @param string $prefix A prefix for the table class name. Optional. + * @param array $config Configuration array for model. Optional. + * + * @return JTable A database object + * + * @since 1.6 + */ + public function getTable($type = 'language_placeholder', $prefix = 'ComponentbuilderTable', $config = array()) + { + return JTable::getInstance($type, $prefix, $config); + } + + /** + * Method to get a single record. + * + * @param integer $pk The id of the primary key. + * + * @return mixed Object on success, false on failure. + * + * @since 1.6 + */ + public function getItem($pk = null) + { + if ($item = parent::getItem($pk)) + { + if (!empty($item->params)) + { + // Convert the params field to an array. + $registry = new Registry; + $registry->loadString($item->params); + $item->params = $registry->toArray(); + } + + if (!empty($item->metadata)) + { + // Convert the metadata field to an array. + $registry = new Registry; + $registry->loadString($item->metadata); + $item->metadata = $registry->toArray(); + } + + if (!empty($item->components)) + { + // JSON Decode components. + $item->components = json_decode($item->components); + } + + if (!empty($item->id)) + { + $item->tags = new JHelperTags; + $item->tags->getTagIds($item->id, 'com_componentbuilder.language_placeholder'); + } + } + + return $item; + } + + /** + * Method to get the record form. + * + * @param array $data Data for the form. + * @param boolean $loadData True if the form is to load its own data (default case), false if not. + * + * @return mixed A JForm object on success, false on failure + * + * @since 1.6 + */ + public function getForm($data = array(), $loadData = true) + { + // Get the form. + $form = $this->loadForm('com_componentbuilder.language_placeholder', 'language_placeholder', array('control' => 'jform', 'load_data' => $loadData)); + + if (empty($form)) + { + return false; + } + + $jinput = JFactory::getApplication()->input; + + // The front end calls this model and uses a_id to avoid id clashes so we need to check for that first. + if ($jinput->get('a_id')) + { + $id = $jinput->get('a_id', 0, 'INT'); + } + // The back end uses id so we use that the rest of the time and set it to 0 by default. + else + { + $id = $jinput->get('id', 0, 'INT'); + } + + $user = JFactory::getUser(); + + // Check for existing item. + // Modify the form based on Edit State access controls. + if ($id != 0 && (!$user->authorise('language_placeholder.edit.state', 'com_componentbuilder.language_placeholder.' . (int) $id)) + || ($id == 0 && !$user->authorise('language_placeholder.edit.state', 'com_componentbuilder'))) + { + // Disable fields for display. + $form->setFieldAttribute('ordering', 'disabled', 'true'); + $form->setFieldAttribute('published', 'disabled', 'true'); + // Disable fields while saving. + $form->setFieldAttribute('ordering', 'filter', 'unset'); + $form->setFieldAttribute('published', 'filter', 'unset'); + } + // If this is a new item insure the greated by is set. + if (0 == $id) + { + // Set the created_by to this user + $form->setValue('created_by', null, $user->id); + } + // Modify the form based on Edit Creaded By access controls. + if (!$user->authorise('core.edit.created_by', 'com_componentbuilder')) + { + // Disable fields for display. + $form->setFieldAttribute('created_by', 'disabled', 'true'); + // Disable fields for display. + $form->setFieldAttribute('created_by', 'readonly', 'true'); + // Disable fields while saving. + $form->setFieldAttribute('created_by', 'filter', 'unset'); + } + // Modify the form based on Edit Creaded Date access controls. + if (!$user->authorise('core.edit.created', 'com_componentbuilder')) + { + // Disable fields for display. + $form->setFieldAttribute('created', 'disabled', 'true'); + // Disable fields while saving. + $form->setFieldAttribute('created', 'filter', 'unset'); + } + // Only load these values if no id is found + if (0 == $id) + { + // Set redirected field name + $redirectedField = $jinput->get('ref', null, 'STRING'); + // Set redirected field value + $redirectedValue = $jinput->get('refid', 0, 'INT'); + if (0 != $redirectedValue && $redirectedField) + { + // Now set the local-redirected field default value + $form->setValue($redirectedField, null, $redirectedValue); + } + } + + return $form; + } + + /** + * Method to get the script that have to be included on the form + * + * @return string script files + */ + public function getScript() + { + return 'administrator/components/com_componentbuilder/models/forms/language_placeholder.js'; + } + + /** + * Method to test whether a record can be deleted. + * + * @param object $record A record object. + * + * @return boolean True if allowed to delete the record. Defaults to the permission set in the component. + * + * @since 1.6 + */ + protected function canDelete($record) + { + if (!empty($record->id)) + { + if ($record->published != -2) + { + return; + } + + $user = JFactory::getUser(); + // The record has been set. Check the record permissions. + return $user->authorise('language_placeholder.delete', 'com_componentbuilder.language_placeholder.' . (int) $record->id); + } + return false; + } + + /** + * Method to test whether a record can have its state edited. + * + * @param object $record A record object. + * + * @return boolean True if allowed to change the state of the record. Defaults to the permission set in the component. + * + * @since 1.6 + */ + protected function canEditState($record) + { + $user = JFactory::getUser(); + $recordId = (!empty($record->id)) ? $record->id : 0; + + if ($recordId) + { + // The record has been set. Check the record permissions. + $permission = $user->authorise('language_placeholder.edit.state', 'com_componentbuilder.language_placeholder.' . (int) $recordId); + if (!$permission && !is_null($permission)) + { + return false; + } + } + // In the absense of better information, revert to the component permissions. + return $user->authorise('language_placeholder.edit.state', 'com_componentbuilder'); + } + + /** + * 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 2.5 + */ + protected function allowEdit($data = array(), $key = 'id') + { + // Check specific edit permission then general edit permission. + $user = JFactory::getUser(); + + return $user->authorise('language_placeholder.edit', 'com_componentbuilder.language_placeholder.'. ((int) isset($data[$key]) ? $data[$key] : 0)) or $user->authorise('language_placeholder.edit', 'com_componentbuilder'); + } + + /** + * Prepare and sanitise the table data prior to saving. + * + * @param JTable $table A JTable object. + * + * @return void + * + * @since 1.6 + */ + protected function prepareTable($table) + { + $date = JFactory::getDate(); + $user = JFactory::getUser(); + + if (isset($table->name)) + { + $table->name = htmlspecialchars_decode($table->name, ENT_QUOTES); + } + + if (isset($table->alias) && empty($table->alias)) + { + $table->generateAlias(); + } + + if (empty($table->id)) + { + $table->created = $date->toSql(); + // set the user + if ($table->created_by == 0 || empty($table->created_by)) + { + $table->created_by = $user->id; + } + // Set ordering to the last item if not set + if (empty($table->ordering)) + { + $db = JFactory::getDbo(); + $query = $db->getQuery(true) + ->select('MAX(ordering)') + ->from($db->quoteName('#__componentbuilder_language_placeholder')); + $db->setQuery($query); + $max = $db->loadResult(); + + $table->ordering = $max + 1; + } + } + else + { + $table->modified = $date->toSql(); + $table->modified_by = $user->id; + } + + if (!empty($table->id)) + { + // Increment the items version number. + $table->version++; + } + } + + /** + * Method to get the data that should be injected in the form. + * + * @return mixed The data for the form. + * + * @since 1.6 + */ + protected function loadFormData() + { + // Check the session for previously entered form data. + $data = JFactory::getApplication()->getUserState('com_componentbuilder.edit.language_placeholder.data', array()); + + if (empty($data)) + { + $data = $this->getItem(); + } + + return $data; + } + + /** + * Method to get the unique fields of this table. + * + * @return mixed An array of field names, boolean false if none is set. + * + * @since 3.0 + */ + protected function getUniqeFields() + { + return false; + } + + /** + * Method to delete one or more records. + * + * @param array &$pks An array of record primary keys. + * + * @return boolean True if successful, false if an error occurs. + * + * @since 12.2 + */ + public function delete(&$pks) + { + if (!parent::delete($pks)) + { + return false; + } + + return true; + } + + /** + * Method to change the published state of one or more records. + * + * @param array &$pks A list of the primary keys to change. + * @param integer $value The value of the published state. + * + * @return boolean True on success. + * + * @since 12.2 + */ + public function publish(&$pks, $value = 1) + { + if (!parent::publish($pks, $value)) + { + return false; + } + + return true; + } + + /** + * Method to perform batch operations on an item or a set of items. + * + * @param array $commands An array of commands to perform. + * @param array $pks An array of item ids. + * @param array $contexts An array of item contexts. + * + * @return boolean Returns true on success, false on failure. + * + * @since 12.2 + */ + public function batch($commands, $pks, $contexts) + { + // Sanitize ids. + $pks = array_unique($pks); + JArrayHelper::toInteger($pks); + + // Remove any values of zero. + if (array_search(0, $pks, true)) + { + unset($pks[array_search(0, $pks, true)]); + } + + if (empty($pks)) + { + $this->setError(JText::_('JGLOBAL_NO_ITEM_SELECTED')); + return false; + } + + $done = false; + + // Set some needed variables. + $this->user = JFactory::getUser(); + $this->table = $this->getTable(); + $this->tableClassName = get_class($this->table); + $this->contentType = new JUcmType; + $this->type = $this->contentType->getTypeByTable($this->tableClassName); + $this->canDo = ComponentbuilderHelper::getActions('language_placeholder'); + $this->batchSet = true; + + if (!$this->canDo->get('core.batch')) + { + $this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION')); + return false; + } + + if ($this->type == false) + { + $type = new JUcmType; + $this->type = $type->getTypeByAlias($this->typeAlias); + } + + $this->tagsObserver = $this->table->getObserverOfClass('JTableObserverTags'); + + if (!empty($commands['move_copy'])) + { + $cmd = JArrayHelper::getValue($commands, 'move_copy', 'c'); + + if ($cmd == 'c') + { + $result = $this->batchCopy($commands, $pks, $contexts); + + if (is_array($result)) + { + foreach ($result as $old => $new) + { + $contexts[$new] = $contexts[$old]; + } + $pks = array_values($result); + } + else + { + return false; + } + } + elseif ($cmd == 'm' && !$this->batchMove($commands, $pks, $contexts)) + { + return false; + } + + $done = true; + } + + if (!$done) + { + $this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION')); + + return false; + } + + // Clear the cache + $this->cleanCache(); + + return true; + } + + /** + * Batch copy items to a new category or current. + * + * @param integer $values The new values. + * @param array $pks An array of row IDs. + * @param array $contexts An array of item contexts. + * + * @return mixed An array of new IDs on success, boolean false on failure. + * + * @since 12.2 + */ + protected function batchCopy($values, $pks, $contexts) + { + if (empty($this->batchSet)) + { + // Set some needed variables. + $this->user = JFactory::getUser(); + $this->table = $this->getTable(); + $this->tableClassName = get_class($this->table); + $this->contentType = new JUcmType; + $this->type = $this->contentType->getTypeByTable($this->tableClassName); + $this->canDo = ComponentbuilderHelper::getActions('language_placeholder'); + } + + if (!$this->canDo->get('language_placeholder.create') && !$this->canDo->get('language_placeholder.batch')) + { + return false; + } + + // get list of uniqe fields + $uniqeFields = $this->getUniqeFields(); + // remove move_copy from array + unset($values['move_copy']); + + // make sure published is set + if (!isset($values['published'])) + { + $values['published'] = 0; + } + elseif (isset($values['published']) && !$this->canDo->get('language_placeholder.edit.state')) + { + $values['published'] = 0; + } + + $newIds = array(); + + // Parent exists so let's proceed + while (!empty($pks)) + { + // Pop the first ID off the stack + $pk = array_shift($pks); + + $this->table->reset(); + + // only allow copy if user may edit this item. + + if (!$this->user->authorise('language_placeholder.edit', $contexts[$pk])) + + { + + // Not fatal error + + $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); + + continue; + + } + + // Check that the row actually exists + if (!$this->table->load($pk)) + { + if ($error = $this->table->getError()) + { + // Fatal error + $this->setError($error); + + return false; + } + else + { + // Not fatal error + $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); + continue; + } + } + + $this->table->placeholder = $this->generateUniqe('placeholder',$this->table->placeholder); + + // insert all set values + if (ComponentbuilderHelper::checkArray($values)) + { + foreach ($values as $key => $value) + { + if (strlen($value) > 0 && isset($this->table->$key)) + { + $this->table->$key = $value; + } + } + } + + // update all uniqe fields + if (ComponentbuilderHelper::checkArray($uniqeFields)) + { + foreach ($uniqeFields as $uniqeField) + { + $this->table->$uniqeField = $this->generateUniqe($uniqeField,$this->table->$uniqeField); + } + } + + // Reset the ID because we are making a copy + $this->table->id = 0; + + // TODO: Deal with ordering? + // $this->table->ordering = 1; + + // Check the row. + if (!$this->table->check()) + { + $this->setError($this->table->getError()); + + return false; + } + + if (!empty($this->type)) + { + $this->createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); + } + + // Store the row. + if (!$this->table->store()) + { + $this->setError($this->table->getError()); + + return false; + } + + // Get the new item ID + $newId = $this->table->get('id'); + + // Add the new ID to the array + $newIds[$pk] = $newId; + } + + // Clean the cache + $this->cleanCache(); + + return $newIds; + } + + /** + * Batch move items to a new category + * + * @param integer $value The new category ID. + * @param array $pks An array of row IDs. + * @param array $contexts An array of item contexts. + * + * @return boolean True if successful, false otherwise and internal error is set. + * + * @since 12.2 + */ + protected function batchMove($values, $pks, $contexts) + { + if (empty($this->batchSet)) + { + // Set some needed variables. + $this->user = JFactory::getUser(); + $this->table = $this->getTable(); + $this->tableClassName = get_class($this->table); + $this->contentType = new JUcmType; + $this->type = $this->contentType->getTypeByTable($this->tableClassName); + $this->canDo = ComponentbuilderHelper::getActions('language_placeholder'); + } + + if (!$this->canDo->get('language_placeholder.edit') && !$this->canDo->get('language_placeholder.batch')) + { + $this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT')); + return false; + } + + // make sure published only updates if user has the permission. + if (isset($values['published']) && !$this->canDo->get('language_placeholder.edit.state')) + { + unset($values['published']); + } + // remove move_copy from array + unset($values['move_copy']); + + // Parent exists so we proceed + foreach ($pks as $pk) + { + if (!$this->user->authorise('language_placeholder.edit', $contexts[$pk])) + { + $this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT')); + + return false; + } + + // Check that the row actually exists + if (!$this->table->load($pk)) + { + if ($error = $this->table->getError()) + { + // Fatal error + $this->setError($error); + + return false; + } + else + { + // Not fatal error + $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); + continue; + } + } + + // insert all set values. + if (ComponentbuilderHelper::checkArray($values)) + { + foreach ($values as $key => $value) + { + // Do special action for access. + if ('access' === $key && strlen($value) > 0) + { + $this->table->$key = $value; + } + elseif (strlen($value) > 0 && isset($this->table->$key)) + { + $this->table->$key = $value; + } + } + } + + + // Check the row. + if (!$this->table->check()) + { + $this->setError($this->table->getError()); + + return false; + } + + if (!empty($this->type)) + { + $this->createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); + } + + // Store the row. + if (!$this->table->store()) + { + $this->setError($this->table->getError()); + + return false; + } + } + + // Clean the cache + $this->cleanCache(); + + return true; + } + + /** + * Method to save the form data. + * + * @param array $data The form data. + * + * @return boolean True on success. + * + * @since 1.6 + */ + public function save($data) + { + $input = JFactory::getApplication()->input; + $filter = JFilterInput::getInstance(); + + // set the metadata to the Item Data + if (isset($data['metadata']) && isset($data['metadata']['author'])) + { + $data['metadata']['author'] = $filter->clean($data['metadata']['author'], 'TRIM'); + + $metadata = new JRegistry; + $metadata->loadArray($data['metadata']); + $data['metadata'] = (string) $metadata; + } + + // Set the components string to JSON string. + if (isset($data['components'])) + { + $data['components'] = (string) json_encode($data['components']); + } + + // Set the Params Items to data + if (isset($data['params']) && is_array($data['params'])) + { + $params = new JRegistry; + $params->loadArray($data['params']); + $data['params'] = (string) $params; + } + + // Alter the uniqe field for save as copy + if ($input->get('task') === 'save2copy') + { + // Automatic handling of other uniqe fields + $uniqeFields = $this->getUniqeFields(); + if (ComponentbuilderHelper::checkArray($uniqeFields)) + { + foreach ($uniqeFields as $uniqeField) + { + $data[$uniqeField] = $this->generateUniqe($uniqeField,$data[$uniqeField]); + } + } + } + + if (parent::save($data)) + { + return true; + } + return false; + } + + /** + * Method to generate a uniqe value. + * + * @param string $field name. + * @param string $value data. + * + * @return string New value. + * + * @since 3.0 + */ + protected function generateUniqe($field,$value) + { + + // set field value uniqe + $table = $this->getTable(); + + while ($table->load(array($field => $value))) + { + $value = JString::increment($value); + } + + return $value; + } + + /** + * Method to change the title & alias. + * + * @param string $title The title. + * + * @return array Contains the modified title and alias. + * + */ + protected function _generateNewTitle($title) + { + + // Alter the title + $table = $this->getTable(); + + while ($table->load(array('title' => $title))) + { + $title = JString::increment($title); + } + + return $title; + } +} diff --git a/admin/models/language_placeholders.php b/admin/models/language_placeholders.php new file mode 100644 index 000000000..38a579882 --- /dev/null +++ b/admin/models/language_placeholders.php @@ -0,0 +1,376 @@ + + @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 the Joomla modellist library +jimport('joomla.application.component.modellist'); + +/** + * Language_placeholders Model + */ +class ComponentbuilderModelLanguage_placeholders extends JModelList +{ + public function __construct($config = array()) + { + if (empty($config['filter_fields'])) + { + $config['filter_fields'] = array( + 'a.id','id', + 'a.published','published', + 'a.ordering','ordering', + 'a.created_by','created_by', + 'a.modified_by','modified_by', + 'a.placeholder','placeholder' + ); + } + + parent::__construct($config); + } + + /** + * Method to auto-populate the model state. + * + * @return void + */ + protected function populateState($ordering = null, $direction = null) + { + $app = JFactory::getApplication(); + + // Adjust the context to support modal layouts. + if ($layout = $app->input->get('layout')) + { + $this->context .= '.' . $layout; + } + $placeholder = $this->getUserStateFromRequest($this->context . '.filter.placeholder', 'filter_placeholder'); + $this->setState('filter.placeholder', $placeholder); + + $sorting = $this->getUserStateFromRequest($this->context . '.filter.sorting', 'filter_sorting', 0, 'int'); + $this->setState('filter.sorting', $sorting); + + $access = $this->getUserStateFromRequest($this->context . '.filter.access', 'filter_access', 0, 'int'); + $this->setState('filter.access', $access); + + $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); + $this->setState('filter.search', $search); + + $published = $this->getUserStateFromRequest($this->context . '.filter.published', 'filter_published', ''); + $this->setState('filter.published', $published); + + $created_by = $this->getUserStateFromRequest($this->context . '.filter.created_by', 'filter_created_by', ''); + $this->setState('filter.created_by', $created_by); + + $created = $this->getUserStateFromRequest($this->context . '.filter.created', 'filter_created'); + $this->setState('filter.created', $created); + + // List state information. + parent::populateState($ordering, $direction); + } + + /** + * Method to get an array of data items. + * + * @return mixed An array of data items on success, false on failure. + */ + public function getItems() + { + // check in items + $this->checkInNow(); + + // load parent items + $items = parent::getItems(); + + // set values to display correctly. + if (ComponentbuilderHelper::checkArray($items)) + { + // get user object. + $user = JFactory::getUser(); + foreach ($items as $nr => &$item) + { + $access = ($user->authorise('language_placeholder.access', 'com_componentbuilder.language_placeholder.' . (int) $item->id) && $user->authorise('language_placeholder.access', 'com_componentbuilder')); + if (!$access) + { + unset($items[$nr]); + continue; + } + + // convert components + $item->components = ComponentbuilderHelper::jsonToString($item->components, ', ', 'components'); + } + } + + // return items + return $items; + } + + /** + * Method to build an SQL query to load the list data. + * + * @return string An SQL query + */ + protected function getListQuery() + { + // Get the user object. + $user = JFactory::getUser(); + // Create a new query object. + $db = JFactory::getDBO(); + $query = $db->getQuery(true); + + // Select some fields + $query->select('a.*'); + + // From the componentbuilder_item table + $query->from($db->quoteName('#__componentbuilder_language_placeholder', 'a')); + + // From the componentbuilder_joomla_component table. + $query->select($db->quoteName('g.system_name','components_system_name')); + $query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.components') . ' = ' . $db->quoteName('g.id') . ')'); + + // Filter by published state + $published = $this->getState('filter.published'); + if (is_numeric($published)) + { + $query->where('a.published = ' . (int) $published); + } + elseif ($published === '') + { + $query->where('(a.published = 0 OR a.published = 1)'); + } + + // Join over the asset groups. + $query->select('ag.title AS access_level'); + $query->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); + // Filter by access level. + if ($access = $this->getState('filter.access')) + { + $query->where('a.access = ' . (int) $access); + } + // Implement View Level Access + if (!$user->authorise('core.options', 'com_componentbuilder')) + { + $groups = implode(',', $user->getAuthorisedViewLevels()); + $query->where('a.access IN (' . $groups . ')'); + } + // Filter by search. + $search = $this->getState('filter.search'); + if (!empty($search)) + { + if (stripos($search, 'id:') === 0) + { + $query->where('a.id = ' . (int) substr($search, 3)); + } + else + { + $search = $db->quote('%' . $db->escape($search) . '%'); + $query->where('(a.placeholder LIKE '.$search.' OR a.components LIKE '.$search.' OR g.system_name LIKE '.$search.')'); + } + } + + + // Add the list ordering clause. + $orderCol = $this->state->get('list.ordering', 'a.id'); + $orderDirn = $this->state->get('list.direction', 'asc'); + if ($orderCol != '') + { + $query->order($db->escape($orderCol . ' ' . $orderDirn)); + } + + return $query; + } + + /** + * Method to get list export data. + * + * @return mixed An array of data items on success, false on failure. + */ + public function getExportData($pks) + { + // setup the query + if (ComponentbuilderHelper::checkArray($pks)) + { + // Set a value to know this is exporting method. + $_export = true; + // Get the user object. + $user = JFactory::getUser(); + // Create a new query object. + $db = JFactory::getDBO(); + $query = $db->getQuery(true); + + // Select some fields + $query->select('a.*'); + + // From the componentbuilder_language_placeholder table + $query->from($db->quoteName('#__componentbuilder_language_placeholder', 'a')); + $query->where('a.id IN (' . implode(',',$pks) . ')'); + // Implement View Level Access + if (!$user->authorise('core.options', 'com_componentbuilder')) + { + $groups = implode(',', $user->getAuthorisedViewLevels()); + $query->where('a.access IN (' . $groups . ')'); + } + + // Order the results by ordering + $query->order('a.ordering ASC'); + + // Load the items + $db->setQuery($query); + $db->execute(); + if ($db->getNumRows()) + { + $items = $db->loadObjectList(); + + // set values to display correctly. + if (ComponentbuilderHelper::checkArray($items)) + { + // get user object. + $user = JFactory::getUser(); + foreach ($items as $nr => &$item) + { + $access = ($user->authorise('language_placeholder.access', 'com_componentbuilder.language_placeholder.' . (int) $item->id) && $user->authorise('language_placeholder.access', 'com_componentbuilder')); + if (!$access) + { + unset($items[$nr]); + continue; + } + + // unset the values we don't want exported. + unset($item->asset_id); + unset($item->checked_out); + unset($item->checked_out_time); + } + } + // Add headers to items array. + $headers = $this->getExImPortHeaders(); + if (ComponentbuilderHelper::checkObject($headers)) + { + array_unshift($items,$headers); + } + return $items; + } + } + return false; + } + + /** + * Method to get header. + * + * @return mixed An array of data items on success, false on failure. + */ + public function getExImPortHeaders() + { + // Get a db connection. + $db = JFactory::getDbo(); + // get the columns + $columns = $db->getTableColumns("#__componentbuilder_language_placeholder"); + if (ComponentbuilderHelper::checkArray($columns)) + { + // remove the headers you don't import/export. + unset($columns['asset_id']); + unset($columns['checked_out']); + unset($columns['checked_out_time']); + $headers = new stdClass(); + foreach ($columns as $column => $type) + { + $headers->{$column} = $column; + } + return $headers; + } + return false; + } + + /** + * Method to get a store id based on model configuration state. + * + * @return string A store id. + * + */ + protected function getStoreId($id = '') + { + // Compile the store id. + $id .= ':' . $this->getState('filter.id'); + $id .= ':' . $this->getState('filter.search'); + $id .= ':' . $this->getState('filter.published'); + $id .= ':' . $this->getState('filter.ordering'); + $id .= ':' . $this->getState('filter.created_by'); + $id .= ':' . $this->getState('filter.modified_by'); + $id .= ':' . $this->getState('filter.placeholder'); + + return parent::getStoreId($id); + } + + /** + * Build an SQL query to checkin all items left checked out longer then a set time. + * + * @return a bool + * + */ + protected function checkInNow() + { + // Get set check in time + $time = JComponentHelper::getParams('com_componentbuilder')->get('check_in'); + + if ($time) + { + + // Get a db connection. + $db = JFactory::getDbo(); + // reset query + $query = $db->getQuery(true); + $query->select('*'); + $query->from($db->quoteName('#__componentbuilder_language_placeholder')); + $db->setQuery($query); + $db->execute(); + if ($db->getNumRows()) + { + // Get Yesterdays date + $date = JFactory::getDate()->modify($time)->toSql(); + // reset query + $query = $db->getQuery(true); + + // Fields to update. + $fields = array( + $db->quoteName('checked_out_time') . '=\'0000-00-00 00:00:00\'', + $db->quoteName('checked_out') . '=0' + ); + + // Conditions for which records should be updated. + $conditions = array( + $db->quoteName('checked_out') . '!=0', + $db->quoteName('checked_out_time') . '<\''.$date.'\'' + ); + + // Check table + $query->update($db->quoteName('#__componentbuilder_language_placeholder'))->set($fields)->where($conditions); + + $db->setQuery($query); + + $db->execute(); + } + } + + return false; + } +} diff --git a/admin/models/languages.php b/admin/models/languages.php new file mode 100644 index 000000000..8bcf570cc --- /dev/null +++ b/admin/models/languages.php @@ -0,0 +1,375 @@ + + @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 the Joomla modellist library +jimport('joomla.application.component.modellist'); + +/** + * Languages Model + */ +class ComponentbuilderModelLanguages extends JModelList +{ + public function __construct($config = array()) + { + if (empty($config['filter_fields'])) + { + $config['filter_fields'] = array( + 'a.id','id', + 'a.published','published', + 'a.ordering','ordering', + 'a.created_by','created_by', + 'a.modified_by','modified_by', + 'a.name','name', + 'a.langtag','langtag' + ); + } + + parent::__construct($config); + } + + /** + * Method to auto-populate the model state. + * + * @return void + */ + protected function populateState($ordering = null, $direction = null) + { + $app = JFactory::getApplication(); + + // Adjust the context to support modal layouts. + if ($layout = $app->input->get('layout')) + { + $this->context .= '.' . $layout; + } + $name = $this->getUserStateFromRequest($this->context . '.filter.name', 'filter_name'); + $this->setState('filter.name', $name); + + $langtag = $this->getUserStateFromRequest($this->context . '.filter.langtag', 'filter_langtag'); + $this->setState('filter.langtag', $langtag); + + $sorting = $this->getUserStateFromRequest($this->context . '.filter.sorting', 'filter_sorting', 0, 'int'); + $this->setState('filter.sorting', $sorting); + + $access = $this->getUserStateFromRequest($this->context . '.filter.access', 'filter_access', 0, 'int'); + $this->setState('filter.access', $access); + + $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); + $this->setState('filter.search', $search); + + $published = $this->getUserStateFromRequest($this->context . '.filter.published', 'filter_published', ''); + $this->setState('filter.published', $published); + + $created_by = $this->getUserStateFromRequest($this->context . '.filter.created_by', 'filter_created_by', ''); + $this->setState('filter.created_by', $created_by); + + $created = $this->getUserStateFromRequest($this->context . '.filter.created', 'filter_created'); + $this->setState('filter.created', $created); + + // List state information. + parent::populateState($ordering, $direction); + } + + /** + * Method to get an array of data items. + * + * @return mixed An array of data items on success, false on failure. + */ + public function getItems() + { + // check in items + $this->checkInNow(); + + // load parent items + $items = parent::getItems(); + + // set values to display correctly. + if (ComponentbuilderHelper::checkArray($items)) + { + // get user object. + $user = JFactory::getUser(); + foreach ($items as $nr => &$item) + { + $access = ($user->authorise('language.access', 'com_componentbuilder.language.' . (int) $item->id) && $user->authorise('language.access', 'com_componentbuilder')); + if (!$access) + { + unset($items[$nr]); + continue; + } + + } + } + + // return items + return $items; + } + + /** + * Method to build an SQL query to load the list data. + * + * @return string An SQL query + */ + protected function getListQuery() + { + // Get the user object. + $user = JFactory::getUser(); + // Create a new query object. + $db = JFactory::getDBO(); + $query = $db->getQuery(true); + + // Select some fields + $query->select('a.*'); + + // From the componentbuilder_item table + $query->from($db->quoteName('#__componentbuilder_language', 'a')); + + // Filter by published state + $published = $this->getState('filter.published'); + if (is_numeric($published)) + { + $query->where('a.published = ' . (int) $published); + } + elseif ($published === '') + { + $query->where('(a.published = 0 OR a.published = 1)'); + } + + // Join over the asset groups. + $query->select('ag.title AS access_level'); + $query->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); + // Filter by access level. + if ($access = $this->getState('filter.access')) + { + $query->where('a.access = ' . (int) $access); + } + // Implement View Level Access + if (!$user->authorise('core.options', 'com_componentbuilder')) + { + $groups = implode(',', $user->getAuthorisedViewLevels()); + $query->where('a.access IN (' . $groups . ')'); + } + // Filter by search. + $search = $this->getState('filter.search'); + if (!empty($search)) + { + if (stripos($search, 'id:') === 0) + { + $query->where('a.id = ' . (int) substr($search, 3)); + } + else + { + $search = $db->quote('%' . $db->escape($search) . '%'); + $query->where('(a.name LIKE '.$search.' OR a.langtag LIKE '.$search.')'); + } + } + + + // Add the list ordering clause. + $orderCol = $this->state->get('list.ordering', 'a.id'); + $orderDirn = $this->state->get('list.direction', 'asc'); + if ($orderCol != '') + { + $query->order($db->escape($orderCol . ' ' . $orderDirn)); + } + + return $query; + } + + /** + * Method to get list export data. + * + * @return mixed An array of data items on success, false on failure. + */ + public function getExportData($pks) + { + // setup the query + if (ComponentbuilderHelper::checkArray($pks)) + { + // Set a value to know this is exporting method. + $_export = true; + // Get the user object. + $user = JFactory::getUser(); + // Create a new query object. + $db = JFactory::getDBO(); + $query = $db->getQuery(true); + + // Select some fields + $query->select('a.*'); + + // From the componentbuilder_language table + $query->from($db->quoteName('#__componentbuilder_language', 'a')); + $query->where('a.id IN (' . implode(',',$pks) . ')'); + // Implement View Level Access + if (!$user->authorise('core.options', 'com_componentbuilder')) + { + $groups = implode(',', $user->getAuthorisedViewLevels()); + $query->where('a.access IN (' . $groups . ')'); + } + + // Order the results by ordering + $query->order('a.ordering ASC'); + + // Load the items + $db->setQuery($query); + $db->execute(); + if ($db->getNumRows()) + { + $items = $db->loadObjectList(); + + // set values to display correctly. + if (ComponentbuilderHelper::checkArray($items)) + { + // get user object. + $user = JFactory::getUser(); + foreach ($items as $nr => &$item) + { + $access = ($user->authorise('language.access', 'com_componentbuilder.language.' . (int) $item->id) && $user->authorise('language.access', 'com_componentbuilder')); + if (!$access) + { + unset($items[$nr]); + continue; + } + + // unset the values we don't want exported. + unset($item->asset_id); + unset($item->checked_out); + unset($item->checked_out_time); + } + } + // Add headers to items array. + $headers = $this->getExImPortHeaders(); + if (ComponentbuilderHelper::checkObject($headers)) + { + array_unshift($items,$headers); + } + return $items; + } + } + return false; + } + + /** + * Method to get header. + * + * @return mixed An array of data items on success, false on failure. + */ + public function getExImPortHeaders() + { + // Get a db connection. + $db = JFactory::getDbo(); + // get the columns + $columns = $db->getTableColumns("#__componentbuilder_language"); + if (ComponentbuilderHelper::checkArray($columns)) + { + // remove the headers you don't import/export. + unset($columns['asset_id']); + unset($columns['checked_out']); + unset($columns['checked_out_time']); + $headers = new stdClass(); + foreach ($columns as $column => $type) + { + $headers->{$column} = $column; + } + return $headers; + } + return false; + } + + /** + * Method to get a store id based on model configuration state. + * + * @return string A store id. + * + */ + protected function getStoreId($id = '') + { + // Compile the store id. + $id .= ':' . $this->getState('filter.id'); + $id .= ':' . $this->getState('filter.search'); + $id .= ':' . $this->getState('filter.published'); + $id .= ':' . $this->getState('filter.ordering'); + $id .= ':' . $this->getState('filter.created_by'); + $id .= ':' . $this->getState('filter.modified_by'); + $id .= ':' . $this->getState('filter.name'); + $id .= ':' . $this->getState('filter.langtag'); + + return parent::getStoreId($id); + } + + /** + * Build an SQL query to checkin all items left checked out longer then a set time. + * + * @return a bool + * + */ + protected function checkInNow() + { + // Get set check in time + $time = JComponentHelper::getParams('com_componentbuilder')->get('check_in'); + + if ($time) + { + + // Get a db connection. + $db = JFactory::getDbo(); + // reset query + $query = $db->getQuery(true); + $query->select('*'); + $query->from($db->quoteName('#__componentbuilder_language')); + $db->setQuery($query); + $db->execute(); + if ($db->getNumRows()) + { + // Get Yesterdays date + $date = JFactory::getDate()->modify($time)->toSql(); + // reset query + $query = $db->getQuery(true); + + // Fields to update. + $fields = array( + $db->quoteName('checked_out_time') . '=\'0000-00-00 00:00:00\'', + $db->quoteName('checked_out') . '=0' + ); + + // Conditions for which records should be updated. + $conditions = array( + $db->quoteName('checked_out') . '!=0', + $db->quoteName('checked_out_time') . '<\''.$date.'\'' + ); + + // Check table + $query->update($db->quoteName('#__componentbuilder_language'))->set($fields)->where($conditions); + + $db->setQuery($query); + + $db->execute(); + } + } + + return false; + } +} diff --git a/admin/sql/install.mysql.utf8.sql b/admin/sql/install.mysql.utf8.sql index 2de984f8a..c81eb1db0 100644 --- a/admin/sql/install.mysql.utf8.sql +++ b/admin/sql/install.mysql.utf8.sql @@ -683,6 +683,58 @@ CREATE TABLE IF NOT EXISTS `#__componentbuilder_fieldtype` ( KEY `idx_catid` (`catid`) ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `#__componentbuilder_language_placeholder` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.', + `components` TEXT NOT NULL, + `placeholder` TEXT NOT NULL, + `translation` TEXT NOT NULL, + `params` text NOT NULL DEFAULT '', + `published` TINYINT(3) NOT NULL DEFAULT 1, + `created_by` INT(10) unsigned NOT NULL DEFAULT 0, + `modified_by` INT(10) unsigned NOT NULL DEFAULT 0, + `created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + `modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + `checked_out` int(11) unsigned NOT NULL DEFAULT 0, + `checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + `version` INT(10) unsigned NOT NULL DEFAULT 1, + `hits` INT(10) unsigned NOT NULL DEFAULT 0, + `access` INT(10) unsigned NOT NULL DEFAULT 0, + `ordering` INT(11) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + KEY `idx_access` (`access`), + KEY `idx_checkout` (`checked_out`), + KEY `idx_createdby` (`created_by`), + KEY `idx_modifiedby` (`modified_by`), + KEY `idx_state` (`published`) +) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `#__componentbuilder_language` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.', + `langtag` VARCHAR(64) NOT NULL DEFAULT '', + `name` VARCHAR(255) NOT NULL DEFAULT '', + `params` text NOT NULL DEFAULT '', + `published` TINYINT(3) NOT NULL DEFAULT 1, + `created_by` INT(10) unsigned NOT NULL DEFAULT 0, + `modified_by` INT(10) unsigned NOT NULL DEFAULT 0, + `created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + `modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + `checked_out` int(11) unsigned NOT NULL DEFAULT 0, + `checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + `version` INT(10) unsigned NOT NULL DEFAULT 1, + `hits` INT(10) unsigned NOT NULL DEFAULT 0, + `access` INT(10) unsigned NOT NULL DEFAULT 0, + `ordering` INT(11) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + KEY `idx_access` (`access`), + KEY `idx_checkout` (`checked_out`), + KEY `idx_createdby` (`created_by`), + KEY `idx_modifiedby` (`modified_by`), + KEY `idx_state` (`published`), + KEY `idx_name` (`name`) +) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; + CREATE TABLE IF NOT EXISTS `#__componentbuilder_help_document` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.', diff --git a/admin/sql/uninstall.mysql.utf8.sql b/admin/sql/uninstall.mysql.utf8.sql index 45da17ee2..fcddac080 100644 --- a/admin/sql/uninstall.mysql.utf8.sql +++ b/admin/sql/uninstall.mysql.utf8.sql @@ -9,4 +9,6 @@ DROP TABLE IF EXISTS `#__componentbuilder_custom_code`; DROP TABLE IF EXISTS `#__componentbuilder_snippet`; DROP TABLE IF EXISTS `#__componentbuilder_field`; DROP TABLE IF EXISTS `#__componentbuilder_fieldtype`; +DROP TABLE IF EXISTS `#__componentbuilder_language_placeholder`; +DROP TABLE IF EXISTS `#__componentbuilder_language`; DROP TABLE IF EXISTS `#__componentbuilder_help_document`; diff --git a/admin/sql/updates/mysql/2.4.1.sql b/admin/sql/updates/mysql/2.4.1.sql new file mode 100644 index 000000000..a4a9eb87d --- /dev/null +++ b/admin/sql/updates/mysql/2.4.1.sql @@ -0,0 +1,51 @@ +CREATE TABLE IF NOT EXISTS `#__componentbuilder_language_placeholder` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.', + `components` TEXT NOT NULL, + `placeholder` TEXT NOT NULL, + `translation` TEXT NOT NULL, + `params` text NOT NULL DEFAULT '', + `published` TINYINT(3) NOT NULL DEFAULT 1, + `created_by` INT(10) unsigned NOT NULL DEFAULT 0, + `modified_by` INT(10) unsigned NOT NULL DEFAULT 0, + `created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + `modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + `checked_out` int(11) unsigned NOT NULL DEFAULT 0, + `checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + `version` INT(10) unsigned NOT NULL DEFAULT 1, + `hits` INT(10) unsigned NOT NULL DEFAULT 0, + `access` INT(10) unsigned NOT NULL DEFAULT 0, + `ordering` INT(11) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + KEY `idx_access` (`access`), + KEY `idx_checkout` (`checked_out`), + KEY `idx_createdby` (`created_by`), + KEY `idx_modifiedby` (`modified_by`), + KEY `idx_state` (`published`) +) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `#__componentbuilder_language` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.', + `langtag` VARCHAR(64) NOT NULL DEFAULT '', + `name` VARCHAR(255) NOT NULL DEFAULT '', + `params` text NOT NULL DEFAULT '', + `published` TINYINT(3) NOT NULL DEFAULT 1, + `created_by` INT(10) unsigned NOT NULL DEFAULT 0, + `modified_by` INT(10) unsigned NOT NULL DEFAULT 0, + `created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + `modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + `checked_out` int(11) unsigned NOT NULL DEFAULT 0, + `checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + `version` INT(10) unsigned NOT NULL DEFAULT 1, + `hits` INT(10) unsigned NOT NULL DEFAULT 0, + `access` INT(10) unsigned NOT NULL DEFAULT 0, + `ordering` INT(11) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + KEY `idx_access` (`access`), + KEY `idx_checkout` (`checked_out`), + KEY `idx_createdby` (`created_by`), + KEY `idx_modifiedby` (`modified_by`), + KEY `idx_state` (`published`), + KEY `idx_name` (`name`) +) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; diff --git a/admin/tables/help_document.php b/admin/tables/help_document.php index 45217b177..5c4b29858 100644 --- a/admin/tables/help_document.php +++ b/admin/tables/help_document.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage help_document.php diff --git a/admin/tables/language.php b/admin/tables/language.php new file mode 100644 index 000000000..57370ff8c --- /dev/null +++ b/admin/tables/language.php @@ -0,0 +1,351 @@ + + @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'); + +use Joomla\Registry\Registry; + +// import Joomla table library +jimport('joomla.database.table'); + +/** + * Languages Table class + */ +class ComponentbuilderTableLanguage extends JTable +{ + /** + * Ensure the params and metadata in json encoded in the bind method + * + * @var array + * @since 3.3 + */ + protected $_jsonEncode = array('params', 'metadata'); + + /** + * Constructor + * + * @param object Database connector object + */ + function __construct(&$db) + { + parent::__construct('#__componentbuilder_language', 'id', $db); + + // Adding History Options + JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_componentbuilder.language')); + } + + public function bind($array, $ignore = '') + { + + if (isset($array['params']) && is_array($array['params'])) + { + $registry = new JRegistry; + $registry->loadArray($array['params']); + $array['params'] = (string) $registry; + } + + if (isset($array['metadata']) && is_array($array['metadata'])) + { + $registry = new JRegistry; + $registry->loadArray($array['metadata']); + $array['metadata'] = (string) $registry; + } + + // Bind the rules. + if (isset($array['rules']) && is_array($array['rules'])) + { + $rules = new JAccessRules($array['rules']); + $this->setRules($rules); + } + return parent::bind($array, $ignore); + } + + /** + * Overload the store method for the Language table. + * + * @param boolean Toggle whether null values should be updated. + * @return boolean True on success, false on failure. + * @since 1.6 + */ + public function store($updateNulls = false) + { + $date = JFactory::getDate(); + $user = JFactory::getUser(); + + if ($this->id) + { + // Existing item + $this->modified = $date->toSql(); + $this->modified_by = $user->get('id'); + } + else + { + // New language. A language created and created_by field can be set by the user, + // so we don't touch either of these if they are set. + if (!(int) $this->created) + { + $this->created = $date->toSql(); + } + if (empty($this->created_by)) + { + $this->created_by = $user->get('id'); + } + } + + if (isset($this->alias)) + { + // Verify that the alias is unique + $table = JTable::getInstance('language', 'ComponentbuilderTable'); + + if ($table->load(array('alias' => $this->alias)) && ($table->id != $this->id || $this->id == 0)) + { + $this->setError(JText::_('COM_COMPONENTBUILDER_LANGUAGE_ERROR_UNIQUE_ALIAS')); + return false; + } + } + + if (isset($this->url)) + { + // Convert IDN urls to punycode + $this->url = JStringPunycode::urlToPunycode($this->url); + } + if (isset($this->website)) + { + // Convert IDN urls to punycode + $this->website = JStringPunycode::urlToPunycode($this->website); + } + + return parent::store($updateNulls); + } + + /** + * Overloaded check method to ensure data integrity. + * + * @return boolean True on success. + */ + public function check() + { + if (isset($this->alias)) + { + // Generate a valid alias + $this->generateAlias(); + + $table = JTable::getInstance('language', 'componentbuilderTable'); + + while ($table->load(array('alias' => $this->alias)) && ($table->id != $this->id || $this->id == 0)) + { + $this->alias = JString::increment($this->alias, 'dash'); + } + } + + /* + * Clean up keywords -- eliminate extra spaces between phrases + * and cr (\r) and lf (\n) characters from string. + * Only process if not empty. + */ + if (!empty($this->metakey)) + { + // Array of characters to remove. + $bad_characters = array("\n", "\r", "\"", "<", ">"); + + // Remove bad characters. + $after_clean = JString::str_ireplace($bad_characters, "", $this->metakey); + + // Create array using commas as delimiter. + $keys = explode(',', $after_clean); + $clean_keys = array(); + + foreach ($keys as $key) + { + // Ignore blank keywords. + if (trim($key)) + { + $clean_keys[] = trim($key); + } + } + + // Put array back together delimited by ", " + $this->metakey = implode(", ", $clean_keys); + } + + // Clean up description -- eliminate quotes and <> brackets + if (!empty($this->metadesc)) + { + // Only process if not empty + $bad_characters = array("\"", "<", ">"); + $this->metadesc = JString::str_ireplace($bad_characters, "", $this->metadesc); + } + + // If we don't have any access rules set at this point just use an empty JAccessRules class + if (!$this->getRules()) + { + $rules = $this->getDefaultAssetValues('com_componentbuilder.language.'.$this->id); + $this->setRules($rules); + } + + // Set ordering + if ($this->published < 0) + { + // Set ordering to 0 if state is archived or trashed + $this->ordering = 0; + } + + return true; + } + + /** + * Gets the default asset values for a component. + * + * @param $string $component The component asset name to search for + * + * @return JAccessRules The JAccessRules object for the asset + */ + protected function getDefaultAssetValues($component, $try = true) + { + // Need to find the asset id by the name of the component. + $db = JFactory::getDbo(); + $query = $db->getQuery(true) + ->select($db->quoteName('id')) + ->from($db->quoteName('#__assets')) + ->where($db->quoteName('name') . ' = ' . $db->quote($component)); + $db->setQuery($query); + $db->execute(); + if ($db->loadRowList()) + { + // asset alread set so use saved rules + $assetId = (int) $db->loadResult(); + return JAccess::getAssetRules($assetId); + } + // try again + elseif ($try) + { + $try = explode('.',$component); + $result = $this->getDefaultAssetValues($try[0], false); + if ($result instanceof JAccessRules) + { + if (isset($try[1])) + { + $_result = (string) $result; + $_result = json_decode($_result); + foreach ($_result as $name => &$rule) + { + $v = explode('.', $name); + if ($try[1] !== $v[0]) + { + // remove since it is not part of this view + unset($_result->$name); + } + else + { + // clear the value since we inherit + $rule = array(); + } + } + // check if there are any view values remaining + if (count($_result)) + { + $_result = json_encode($_result); + $_result = array($_result); + // Instantiate and return the JAccessRules object for the asset rules. + $rules = new JAccessRules; + $rules->mergeCollection($_result); + + return $rules; + } + } + return $result; + } + } + return JAccess::getAssetRules(0); + } + + /** + * Method to compute the default name of the asset. + * The default name is in the form 'table_name.id' + * where id is the value of the primary key of the table. + * + * @return string + * @since 2.5 + */ + protected function _getAssetName() + { + $k = $this->_tbl_key; + return 'com_componentbuilder.language.'.(int) $this->$k; + } + + /** + * Method to return the title to use for the asset table. + * + * @return string + * @since 2.5 + */ + protected function _getAssetTitle() + { + if (isset($this->title)) + { + return $this->title; + } + return ''; + } + + /** + * Get the parent asset id for the record + * + * @return int + * @since 2.5 + */ + protected function _getAssetParentId(JTable $table = NULL, $id = NULL) + { + $asset = JTable::getInstance('Asset'); + $asset->loadByName('com_componentbuilder'); + + return $asset->id; + } + + /** + * Generate a valid alias from title / date. + * Remains public to be able to check for duplicated alias before saving + * + * @return string + */ + public function generateAlias() + { + if (empty($this->alias)) + { + $this->alias = $this->name; + } + + $this->alias = JApplication::stringURLSafe($this->alias); + + if (trim(str_replace('-', '', $this->alias)) == '') + { + $this->alias = JFactory::getDate()->format("Y-m-d-H-i-s"); + } + + return $this->alias; + } + +} diff --git a/admin/tables/language_placeholder.php b/admin/tables/language_placeholder.php new file mode 100644 index 000000000..7390e2769 --- /dev/null +++ b/admin/tables/language_placeholder.php @@ -0,0 +1,351 @@ + + @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'); + +use Joomla\Registry\Registry; + +// import Joomla table library +jimport('joomla.database.table'); + +/** + * Language_placeholders Table class + */ +class ComponentbuilderTableLanguage_placeholder extends JTable +{ + /** + * Ensure the params and metadata in json encoded in the bind method + * + * @var array + * @since 3.3 + */ + protected $_jsonEncode = array('params', 'metadata'); + + /** + * Constructor + * + * @param object Database connector object + */ + function __construct(&$db) + { + parent::__construct('#__componentbuilder_language_placeholder', 'id', $db); + + // Adding History Options + JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_componentbuilder.language_placeholder')); + } + + public function bind($array, $ignore = '') + { + + if (isset($array['params']) && is_array($array['params'])) + { + $registry = new JRegistry; + $registry->loadArray($array['params']); + $array['params'] = (string) $registry; + } + + if (isset($array['metadata']) && is_array($array['metadata'])) + { + $registry = new JRegistry; + $registry->loadArray($array['metadata']); + $array['metadata'] = (string) $registry; + } + + // Bind the rules. + if (isset($array['rules']) && is_array($array['rules'])) + { + $rules = new JAccessRules($array['rules']); + $this->setRules($rules); + } + return parent::bind($array, $ignore); + } + + /** + * Overload the store method for the Language_placeholder table. + * + * @param boolean Toggle whether null values should be updated. + * @return boolean True on success, false on failure. + * @since 1.6 + */ + public function store($updateNulls = false) + { + $date = JFactory::getDate(); + $user = JFactory::getUser(); + + if ($this->id) + { + // Existing item + $this->modified = $date->toSql(); + $this->modified_by = $user->get('id'); + } + else + { + // New language_placeholder. A language_placeholder created and created_by field can be set by the user, + // so we don't touch either of these if they are set. + if (!(int) $this->created) + { + $this->created = $date->toSql(); + } + if (empty($this->created_by)) + { + $this->created_by = $user->get('id'); + } + } + + if (isset($this->alias)) + { + // Verify that the alias is unique + $table = JTable::getInstance('language_placeholder', 'ComponentbuilderTable'); + + if ($table->load(array('alias' => $this->alias)) && ($table->id != $this->id || $this->id == 0)) + { + $this->setError(JText::_('COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_ERROR_UNIQUE_ALIAS')); + return false; + } + } + + if (isset($this->url)) + { + // Convert IDN urls to punycode + $this->url = JStringPunycode::urlToPunycode($this->url); + } + if (isset($this->website)) + { + // Convert IDN urls to punycode + $this->website = JStringPunycode::urlToPunycode($this->website); + } + + return parent::store($updateNulls); + } + + /** + * Overloaded check method to ensure data integrity. + * + * @return boolean True on success. + */ + public function check() + { + if (isset($this->alias)) + { + // Generate a valid alias + $this->generateAlias(); + + $table = JTable::getInstance('language_placeholder', 'componentbuilderTable'); + + while ($table->load(array('alias' => $this->alias)) && ($table->id != $this->id || $this->id == 0)) + { + $this->alias = JString::increment($this->alias, 'dash'); + } + } + + /* + * Clean up keywords -- eliminate extra spaces between phrases + * and cr (\r) and lf (\n) characters from string. + * Only process if not empty. + */ + if (!empty($this->metakey)) + { + // Array of characters to remove. + $bad_characters = array("\n", "\r", "\"", "<", ">"); + + // Remove bad characters. + $after_clean = JString::str_ireplace($bad_characters, "", $this->metakey); + + // Create array using commas as delimiter. + $keys = explode(',', $after_clean); + $clean_keys = array(); + + foreach ($keys as $key) + { + // Ignore blank keywords. + if (trim($key)) + { + $clean_keys[] = trim($key); + } + } + + // Put array back together delimited by ", " + $this->metakey = implode(", ", $clean_keys); + } + + // Clean up description -- eliminate quotes and <> brackets + if (!empty($this->metadesc)) + { + // Only process if not empty + $bad_characters = array("\"", "<", ">"); + $this->metadesc = JString::str_ireplace($bad_characters, "", $this->metadesc); + } + + // If we don't have any access rules set at this point just use an empty JAccessRules class + if (!$this->getRules()) + { + $rules = $this->getDefaultAssetValues('com_componentbuilder.language_placeholder.'.$this->id); + $this->setRules($rules); + } + + // Set ordering + if ($this->published < 0) + { + // Set ordering to 0 if state is archived or trashed + $this->ordering = 0; + } + + return true; + } + + /** + * Gets the default asset values for a component. + * + * @param $string $component The component asset name to search for + * + * @return JAccessRules The JAccessRules object for the asset + */ + protected function getDefaultAssetValues($component, $try = true) + { + // Need to find the asset id by the name of the component. + $db = JFactory::getDbo(); + $query = $db->getQuery(true) + ->select($db->quoteName('id')) + ->from($db->quoteName('#__assets')) + ->where($db->quoteName('name') . ' = ' . $db->quote($component)); + $db->setQuery($query); + $db->execute(); + if ($db->loadRowList()) + { + // asset alread set so use saved rules + $assetId = (int) $db->loadResult(); + return JAccess::getAssetRules($assetId); + } + // try again + elseif ($try) + { + $try = explode('.',$component); + $result = $this->getDefaultAssetValues($try[0], false); + if ($result instanceof JAccessRules) + { + if (isset($try[1])) + { + $_result = (string) $result; + $_result = json_decode($_result); + foreach ($_result as $name => &$rule) + { + $v = explode('.', $name); + if ($try[1] !== $v[0]) + { + // remove since it is not part of this view + unset($_result->$name); + } + else + { + // clear the value since we inherit + $rule = array(); + } + } + // check if there are any view values remaining + if (count($_result)) + { + $_result = json_encode($_result); + $_result = array($_result); + // Instantiate and return the JAccessRules object for the asset rules. + $rules = new JAccessRules; + $rules->mergeCollection($_result); + + return $rules; + } + } + return $result; + } + } + return JAccess::getAssetRules(0); + } + + /** + * Method to compute the default name of the asset. + * The default name is in the form 'table_name.id' + * where id is the value of the primary key of the table. + * + * @return string + * @since 2.5 + */ + protected function _getAssetName() + { + $k = $this->_tbl_key; + return 'com_componentbuilder.language_placeholder.'.(int) $this->$k; + } + + /** + * Method to return the title to use for the asset table. + * + * @return string + * @since 2.5 + */ + protected function _getAssetTitle() + { + if (isset($this->title)) + { + return $this->title; + } + return ''; + } + + /** + * Get the parent asset id for the record + * + * @return int + * @since 2.5 + */ + protected function _getAssetParentId(JTable $table = NULL, $id = NULL) + { + $asset = JTable::getInstance('Asset'); + $asset->loadByName('com_componentbuilder'); + + return $asset->id; + } + + /** + * Generate a valid alias from title / date. + * Remains public to be able to check for duplicated alias before saving + * + * @return string + */ + public function generateAlias() + { + if (empty($this->alias)) + { + $this->alias = $this->name; + } + + $this->alias = JApplication::stringURLSafe($this->alias); + + if (trim(str_replace('-', '', $this->alias)) == '') + { + $this->alias = JFactory::getDate()->format("Y-m-d-H-i-s"); + } + + return $this->alias; + } + +} diff --git a/admin/views/componentbuilder/tmpl/default.php b/admin/views/componentbuilder/tmpl/default.php index 569e21abb..d7c8b9dfd 100644 --- a/admin/views/componentbuilder/tmpl/default.php +++ b/admin/views/componentbuilder/tmpl/default.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage default.php diff --git a/admin/views/componentbuilder/tmpl/default_closed_issues_the_closed_issues_on_github.php b/admin/views/componentbuilder/tmpl/default_closed_issues_the_closed_issues_on_github.php index 37820dc7e..bb328c9b2 100644 --- a/admin/views/componentbuilder/tmpl/default_closed_issues_the_closed_issues_on_github.php +++ b/admin/views/componentbuilder/tmpl/default_closed_issues_the_closed_issues_on_github.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage default_closed_issues_the_closed_issues_on_github.php diff --git a/admin/views/componentbuilder/tmpl/default_main.php b/admin/views/componentbuilder/tmpl/default_main.php index 4e4587f64..a58ff88ac 100644 --- a/admin/views/componentbuilder/tmpl/default_main.php +++ b/admin/views/componentbuilder/tmpl/default_main.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage default_main.php diff --git a/admin/views/componentbuilder/tmpl/default_open_issues_the_open_issues_on_github.php b/admin/views/componentbuilder/tmpl/default_open_issues_the_open_issues_on_github.php index b484eb23b..2960466ac 100644 --- a/admin/views/componentbuilder/tmpl/default_open_issues_the_open_issues_on_github.php +++ b/admin/views/componentbuilder/tmpl/default_open_issues_the_open_issues_on_github.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage default_open_issues_the_open_issues_on_github.php diff --git a/admin/views/componentbuilder/tmpl/default_readme_information.php b/admin/views/componentbuilder/tmpl/default_readme_information.php index e192bff73..e0bea9c3f 100644 --- a/admin/views/componentbuilder/tmpl/default_readme_information.php +++ b/admin/views/componentbuilder/tmpl/default_readme_information.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage default_readme_information.php diff --git a/admin/views/componentbuilder/tmpl/default_vast_development_method_notice_board.php b/admin/views/componentbuilder/tmpl/default_vast_development_method_notice_board.php index 1bd34d2e0..6cf0d068b 100644 --- a/admin/views/componentbuilder/tmpl/default_vast_development_method_notice_board.php +++ b/admin/views/componentbuilder/tmpl/default_vast_development_method_notice_board.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage default_vast_development_method_notice_board.php diff --git a/admin/views/componentbuilder/tmpl/default_vdm.php b/admin/views/componentbuilder/tmpl/default_vdm.php index 68f43c122..1d7c793eb 100644 --- a/admin/views/componentbuilder/tmpl/default_vdm.php +++ b/admin/views/componentbuilder/tmpl/default_vdm.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage default_vdm.php diff --git a/admin/views/componentbuilder/view.html.php b/admin/views/componentbuilder/view.html.php index 08a977d20..44a925089 100644 --- a/admin/views/componentbuilder/view.html.php +++ b/admin/views/componentbuilder/view.html.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage view.html.php diff --git a/admin/views/help_document/submitbutton.js b/admin/views/help_document/submitbutton.js index b8f8f0aac..43fc878f4 100644 --- a/admin/views/help_document/submitbutton.js +++ b/admin/views/help_document/submitbutton.js @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage submitbutton.js diff --git a/admin/views/help_document/tmpl/edit.php b/admin/views/help_document/tmpl/edit.php index 1e348ee3a..2420cfa5e 100644 --- a/admin/views/help_document/tmpl/edit.php +++ b/admin/views/help_document/tmpl/edit.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage edit.php diff --git a/admin/views/help_document/view.html.php b/admin/views/help_document/view.html.php index 950cf867f..914ed2364 100644 --- a/admin/views/help_document/view.html.php +++ b/admin/views/help_document/view.html.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage view.html.php diff --git a/admin/views/help_documents/tmpl/default.php b/admin/views/help_documents/tmpl/default.php index bd97385a4..c475a4f25 100644 --- a/admin/views/help_documents/tmpl/default.php +++ b/admin/views/help_documents/tmpl/default.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage default.php diff --git a/admin/views/help_documents/tmpl/default_batch_body.php b/admin/views/help_documents/tmpl/default_batch_body.php index 1b6e9f603..6ae140a23 100644 --- a/admin/views/help_documents/tmpl/default_batch_body.php +++ b/admin/views/help_documents/tmpl/default_batch_body.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage default_batch_body.php diff --git a/admin/views/help_documents/tmpl/default_batch_footer.php b/admin/views/help_documents/tmpl/default_batch_footer.php index 2d658233d..b17000070 100644 --- a/admin/views/help_documents/tmpl/default_batch_footer.php +++ b/admin/views/help_documents/tmpl/default_batch_footer.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage default_batch_footer.php diff --git a/admin/views/help_documents/tmpl/default_body.php b/admin/views/help_documents/tmpl/default_body.php index dd59f6adb..17d8d6021 100644 --- a/admin/views/help_documents/tmpl/default_body.php +++ b/admin/views/help_documents/tmpl/default_body.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage default_body.php diff --git a/admin/views/help_documents/tmpl/default_foot.php b/admin/views/help_documents/tmpl/default_foot.php index a034d0cc4..6930ef269 100644 --- a/admin/views/help_documents/tmpl/default_foot.php +++ b/admin/views/help_documents/tmpl/default_foot.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage default_foot.php diff --git a/admin/views/help_documents/tmpl/default_head.php b/admin/views/help_documents/tmpl/default_head.php index 5b22f3a96..307cb65f0 100644 --- a/admin/views/help_documents/tmpl/default_head.php +++ b/admin/views/help_documents/tmpl/default_head.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage default_head.php diff --git a/admin/views/help_documents/tmpl/default_toolbar.php b/admin/views/help_documents/tmpl/default_toolbar.php index 9223cd26b..8aa3d9a9a 100644 --- a/admin/views/help_documents/tmpl/default_toolbar.php +++ b/admin/views/help_documents/tmpl/default_toolbar.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage default_toolbar.php diff --git a/admin/views/help_documents/view.html.php b/admin/views/help_documents/view.html.php index c719328be..786c28036 100644 --- a/admin/views/help_documents/view.html.php +++ b/admin/views/help_documents/view.html.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version @update number 6 of this MVC - @build 17th October, 2016 + @build 18th October, 2016 @created 4th March, 2016 @package Component Builder @subpackage view.html.php diff --git a/admin/views/import/tmpl/default.php b/admin/views/import/tmpl/default.php index 796e153da..059076e23 100644 --- a/admin/views/import/tmpl/default.php +++ b/admin/views/import/tmpl/default.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage default.php diff --git a/admin/views/import/view.html.php b/admin/views/import/view.html.php index be6012f12..1d633b2cb 100644 --- a/admin/views/import/view.html.php +++ b/admin/views/import/view.html.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage view.html.php diff --git a/admin/views/import_joomla_components/tmpl/default.php b/admin/views/import_joomla_components/tmpl/default.php index 908ea3c6b..1a4e1c410 100644 --- a/admin/views/import_joomla_components/tmpl/default.php +++ b/admin/views/import_joomla_components/tmpl/default.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage default.php diff --git a/admin/views/import_joomla_components/view.html.php b/admin/views/import_joomla_components/view.html.php index 1ad378fe1..e21b2aa59 100644 --- a/admin/views/import_joomla_components/view.html.php +++ b/admin/views/import_joomla_components/view.html.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage view.html.php diff --git a/admin/views/language/submitbutton.js b/admin/views/language/submitbutton.js new file mode 100644 index 000000000..55d835eb0 --- /dev/null +++ b/admin/views/language/submitbutton.js @@ -0,0 +1,49 @@ +/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/ + __ __ _ _____ _ _ __ __ _ _ _ + \ \ / / | | | __ \ | | | | | \/ | | | | | | | + \ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| | + \ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` | + \ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| | + \/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_| + | | + |_| +/-------------------------------------------------------------------------------------------------------------------------------/ + + @version @update number 3 of this MVC + @build 3rd April, 2017 + @created 3rd April, 2017 + @package Component Builder + @subpackage submitbutton.js + @author Llewellyn van der Merwe + @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 + +/-----------------------------------------------------------------------------------------------------------------------------*/ + +Joomla.submitbutton = function(task) +{ + if (task == ''){ + return false; + } else { + var isValid=true; + var action = task.split('.'); + if (action[1] != 'cancel' && action[1] != 'close'){ + var forms = $$('form.form-validate'); + for (var i=0;i + @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'); + +JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); +JHtml::_('behavior.tooltip'); +JHtml::_('behavior.formvalidation'); +JHtml::_('formbehavior.chosen', 'select'); +JHtml::_('behavior.keepalive'); +$componentParams = JComponentHelper::getParams('com_componentbuilder'); +?> + + diff --git a/admin/views/language/tmpl/index.html b/admin/views/language/tmpl/index.html new file mode 100644 index 000000000..fa6d84e80 --- /dev/null +++ b/admin/views/language/tmpl/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/admin/views/language/view.html.php b/admin/views/language/view.html.php new file mode 100644 index 000000000..374949377 --- /dev/null +++ b/admin/views/language/view.html.php @@ -0,0 +1,200 @@ + + @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 view library +jimport('joomla.application.component.view'); + +/** + * Language View class + */ +class ComponentbuilderViewLanguage extends JViewLegacy +{ + /** + * display method of View + * @return void + */ + public function display($tpl = null) + { + // Check for errors. + if (count($errors = $this->get('Errors'))) + { + JError::raiseError(500, implode('
', $errors)); + return false; + } + + // Assign the variables + $this->form = $this->get('Form'); + $this->item = $this->get('Item'); + $this->script = $this->get('Script'); + $this->state = $this->get('State'); + // get action permissions + $this->canDo = ComponentbuilderHelper::getActions('language',$this->item); + // get input + $jinput = JFactory::getApplication()->input; + $this->ref = $jinput->get('ref', 0, 'word'); + $this->refid = $jinput->get('refid', 0, 'int'); + $this->referral = ''; + if ($this->refid) + { + // return to the item that refered to this item + $this->referral = '&ref='.(string)$this->ref.'&refid='.(int)$this->refid; + } + elseif($this->ref) + { + // return to the list view that refered to this item + $this->referral = '&ref='.(string)$this->ref; + } + + // Set the toolbar + $this->addToolBar(); + + // Display the template + parent::display($tpl); + + // Set the document + $this->setDocument(); + } + + + /** + * Setting the toolbar + */ + protected function addToolBar() + { + JFactory::getApplication()->input->set('hidemainmenu', true); + $user = JFactory::getUser(); + $userId = $user->id; + $isNew = $this->item->id == 0; + + JToolbarHelper::title( JText::_($isNew ? 'COM_COMPONENTBUILDER_LANGUAGE_NEW' : 'COM_COMPONENTBUILDER_LANGUAGE_EDIT'), 'pencil-2 article-add'); + // Built the actions for new and existing records. + if ($this->refid || $this->ref) + { + if ($this->canDo->get('language.create') && $isNew) + { + // We can create the record. + JToolBarHelper::save('language.save', 'JTOOLBAR_SAVE'); + } + elseif ($this->canDo->get('language.edit')) + { + // We can save the record. + JToolBarHelper::save('language.save', 'JTOOLBAR_SAVE'); + } + if ($isNew) + { + // Do not creat but cancel. + JToolBarHelper::cancel('language.cancel', 'JTOOLBAR_CANCEL'); + } + else + { + // We can close it. + JToolBarHelper::cancel('language.cancel', 'JTOOLBAR_CLOSE'); + } + } + else + { + if ($isNew) + { + // For new records, check the create permission. + if ($this->canDo->get('language.create')) + { + JToolBarHelper::apply('language.apply', 'JTOOLBAR_APPLY'); + JToolBarHelper::save('language.save', 'JTOOLBAR_SAVE'); + JToolBarHelper::custom('language.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false); + }; + JToolBarHelper::cancel('language.cancel', 'JTOOLBAR_CANCEL'); + } + else + { + if ($this->canDo->get('language.edit')) + { + // We can save the new record + JToolBarHelper::apply('language.apply', 'JTOOLBAR_APPLY'); + JToolBarHelper::save('language.save', 'JTOOLBAR_SAVE'); + // We can save this record, but check the create permission to see + // if we can return to make a new one. + if ($this->canDo->get('language.create')) + { + JToolBarHelper::custom('language.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false); + } + } + $canVersion = ($this->canDo->get('core.version') && $this->canDo->get('language.version')); + if ($this->state->params->get('save_history', 1) && $this->canDo->get('language.edit') && $canVersion) + { + JToolbarHelper::versions('com_componentbuilder.language', $this->item->id); + } + if ($this->canDo->get('language.create')) + { + JToolBarHelper::custom('language.save2copy', 'save-copy.png', 'save-copy_f2.png', 'JTOOLBAR_SAVE_AS_COPY', false); + } + JToolBarHelper::cancel('language.cancel', 'JTOOLBAR_CLOSE'); + } + } + JToolbarHelper::divider(); + // set help url for this view if found + $help_url = ComponentbuilderHelper::getHelpUrl('language'); + if (ComponentbuilderHelper::checkString($help_url)) + { + JToolbarHelper::help('COM_COMPONENTBUILDER_HELP_MANAGER', false, $help_url); + } + } + + /** + * Escapes a value for output in a view script. + * + * @param mixed $var The output to escape. + * + * @return mixed The escaped value. + */ + public function escape($var) + { + if(strlen($var) > 30) + { + // use the helper htmlEscape method instead and shorten the string + return ComponentbuilderHelper::htmlEscape($var, $this->_charset, true, 30); + } + // use the helper htmlEscape method instead. + return ComponentbuilderHelper::htmlEscape($var, $this->_charset); + } + + /** + * Method to set up the document properties + * + * @return void + */ + protected function setDocument() + { + $isNew = ($this->item->id < 1); + $document = JFactory::getDocument(); + $document->setTitle(JText::_($isNew ? 'COM_COMPONENTBUILDER_LANGUAGE_NEW' : 'COM_COMPONENTBUILDER_LANGUAGE_EDIT')); + $document->addStyleSheet(JURI::root() . "administrator/components/com_componentbuilder/assets/css/language.css"); + $document->addScript(JURI::root() . $this->script); + $document->addScript(JURI::root() . "administrator/components/com_componentbuilder/views/language/submitbutton.js"); + JText::script('view not acceptable. Error'); + } +} diff --git a/admin/views/language_placeholder/submitbutton.js b/admin/views/language_placeholder/submitbutton.js new file mode 100644 index 000000000..f922155c3 --- /dev/null +++ b/admin/views/language_placeholder/submitbutton.js @@ -0,0 +1,49 @@ +/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/ + __ __ _ _____ _ _ __ __ _ _ _ + \ \ / / | | | __ \ | | | | | \/ | | | | | | | + \ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| | + \ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` | + \ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| | + \/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_| + | | + |_| +/-------------------------------------------------------------------------------------------------------------------------------/ + + @version @update number 8 of this MVC + @build 3rd April, 2017 + @created 3rd April, 2017 + @package Component Builder + @subpackage submitbutton.js + @author Llewellyn van der Merwe + @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 + +/-----------------------------------------------------------------------------------------------------------------------------*/ + +Joomla.submitbutton = function(task) +{ + if (task == ''){ + return false; + } else { + var isValid=true; + var action = task.split('.'); + if (action[1] != 'cancel' && action[1] != 'close'){ + var forms = $$('form.form-validate'); + for (var i=0;i + @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'); + +JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); +JHtml::_('behavior.tooltip'); +JHtml::_('behavior.formvalidation'); +JHtml::_('formbehavior.chosen', 'select'); +JHtml::_('behavior.keepalive'); +$componentParams = JComponentHelper::getParams('com_componentbuilder'); +?> + + diff --git a/admin/views/language_placeholder/tmpl/index.html b/admin/views/language_placeholder/tmpl/index.html new file mode 100644 index 000000000..fa6d84e80 --- /dev/null +++ b/admin/views/language_placeholder/tmpl/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/admin/views/language_placeholder/view.html.php b/admin/views/language_placeholder/view.html.php new file mode 100644 index 000000000..1025e48d6 --- /dev/null +++ b/admin/views/language_placeholder/view.html.php @@ -0,0 +1,200 @@ + + @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 view library +jimport('joomla.application.component.view'); + +/** + * Language_placeholder View class + */ +class ComponentbuilderViewLanguage_placeholder extends JViewLegacy +{ + /** + * display method of View + * @return void + */ + public function display($tpl = null) + { + // Check for errors. + if (count($errors = $this->get('Errors'))) + { + JError::raiseError(500, implode('
', $errors)); + return false; + } + + // Assign the variables + $this->form = $this->get('Form'); + $this->item = $this->get('Item'); + $this->script = $this->get('Script'); + $this->state = $this->get('State'); + // get action permissions + $this->canDo = ComponentbuilderHelper::getActions('language_placeholder',$this->item); + // get input + $jinput = JFactory::getApplication()->input; + $this->ref = $jinput->get('ref', 0, 'word'); + $this->refid = $jinput->get('refid', 0, 'int'); + $this->referral = ''; + if ($this->refid) + { + // return to the item that refered to this item + $this->referral = '&ref='.(string)$this->ref.'&refid='.(int)$this->refid; + } + elseif($this->ref) + { + // return to the list view that refered to this item + $this->referral = '&ref='.(string)$this->ref; + } + + // Set the toolbar + $this->addToolBar(); + + // Display the template + parent::display($tpl); + + // Set the document + $this->setDocument(); + } + + + /** + * Setting the toolbar + */ + protected function addToolBar() + { + JFactory::getApplication()->input->set('hidemainmenu', true); + $user = JFactory::getUser(); + $userId = $user->id; + $isNew = $this->item->id == 0; + + JToolbarHelper::title( JText::_($isNew ? 'COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_NEW' : 'COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_EDIT'), 'pencil-2 article-add'); + // Built the actions for new and existing records. + if ($this->refid || $this->ref) + { + if ($this->canDo->get('language_placeholder.create') && $isNew) + { + // We can create the record. + JToolBarHelper::save('language_placeholder.save', 'JTOOLBAR_SAVE'); + } + elseif ($this->canDo->get('language_placeholder.edit')) + { + // We can save the record. + JToolBarHelper::save('language_placeholder.save', 'JTOOLBAR_SAVE'); + } + if ($isNew) + { + // Do not creat but cancel. + JToolBarHelper::cancel('language_placeholder.cancel', 'JTOOLBAR_CANCEL'); + } + else + { + // We can close it. + JToolBarHelper::cancel('language_placeholder.cancel', 'JTOOLBAR_CLOSE'); + } + } + else + { + if ($isNew) + { + // For new records, check the create permission. + if ($this->canDo->get('language_placeholder.create')) + { + JToolBarHelper::apply('language_placeholder.apply', 'JTOOLBAR_APPLY'); + JToolBarHelper::save('language_placeholder.save', 'JTOOLBAR_SAVE'); + JToolBarHelper::custom('language_placeholder.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false); + }; + JToolBarHelper::cancel('language_placeholder.cancel', 'JTOOLBAR_CANCEL'); + } + else + { + if ($this->canDo->get('language_placeholder.edit')) + { + // We can save the new record + JToolBarHelper::apply('language_placeholder.apply', 'JTOOLBAR_APPLY'); + JToolBarHelper::save('language_placeholder.save', 'JTOOLBAR_SAVE'); + // We can save this record, but check the create permission to see + // if we can return to make a new one. + if ($this->canDo->get('language_placeholder.create')) + { + JToolBarHelper::custom('language_placeholder.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false); + } + } + $canVersion = ($this->canDo->get('core.version') && $this->canDo->get('language_placeholder.version')); + if ($this->state->params->get('save_history', 1) && $this->canDo->get('language_placeholder.edit') && $canVersion) + { + JToolbarHelper::versions('com_componentbuilder.language_placeholder', $this->item->id); + } + if ($this->canDo->get('language_placeholder.create')) + { + JToolBarHelper::custom('language_placeholder.save2copy', 'save-copy.png', 'save-copy_f2.png', 'JTOOLBAR_SAVE_AS_COPY', false); + } + JToolBarHelper::cancel('language_placeholder.cancel', 'JTOOLBAR_CLOSE'); + } + } + JToolbarHelper::divider(); + // set help url for this view if found + $help_url = ComponentbuilderHelper::getHelpUrl('language_placeholder'); + if (ComponentbuilderHelper::checkString($help_url)) + { + JToolbarHelper::help('COM_COMPONENTBUILDER_HELP_MANAGER', false, $help_url); + } + } + + /** + * Escapes a value for output in a view script. + * + * @param mixed $var The output to escape. + * + * @return mixed The escaped value. + */ + public function escape($var) + { + if(strlen($var) > 30) + { + // use the helper htmlEscape method instead and shorten the string + return ComponentbuilderHelper::htmlEscape($var, $this->_charset, true, 30); + } + // use the helper htmlEscape method instead. + return ComponentbuilderHelper::htmlEscape($var, $this->_charset); + } + + /** + * Method to set up the document properties + * + * @return void + */ + protected function setDocument() + { + $isNew = ($this->item->id < 1); + $document = JFactory::getDocument(); + $document->setTitle(JText::_($isNew ? 'COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_NEW' : 'COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_EDIT')); + $document->addStyleSheet(JURI::root() . "administrator/components/com_componentbuilder/assets/css/language_placeholder.css"); + $document->addScript(JURI::root() . $this->script); + $document->addScript(JURI::root() . "administrator/components/com_componentbuilder/views/language_placeholder/submitbutton.js"); + JText::script('view not acceptable. Error'); + } +} diff --git a/admin/views/language_placeholders/index.html b/admin/views/language_placeholders/index.html new file mode 100644 index 000000000..fa6d84e80 --- /dev/null +++ b/admin/views/language_placeholders/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/admin/views/language_placeholders/tmpl/default.php b/admin/views/language_placeholders/tmpl/default.php new file mode 100644 index 000000000..27ca96de6 --- /dev/null +++ b/admin/views/language_placeholders/tmpl/default.php @@ -0,0 +1,99 @@ + + @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'); + +// load tooltip behavior +JHtml::_('behavior.tooltip'); +JHtml::_('behavior.multiselect'); +JHtml::_('dropdown.init'); +JHtml::_('formbehavior.chosen', 'select'); + +if ($this->saveOrder) +{ + $saveOrderingUrl = 'index.php?option=com_componentbuilder&task=language_placeholders.saveOrderAjax&tmpl=component'; + JHtml::_('sortablelist.sortable', 'language_placeholderList', 'adminForm', strtolower($this->listDirn), $saveOrderingUrl); +} + +?> + +
+sidebar)): ?> +
+ sidebar; ?> +
+
+ +
+ +items)): ?> + loadTemplate('toolbar');?> +
+ +
+ + loadTemplate('toolbar');?> + + loadTemplate('head');?> + loadTemplate('foot');?> + loadTemplate('body');?> +
+ + canCreate && $this->canEdit) : ?> + JText::_('COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_BATCH_OPTIONS'), + 'footer' => $this->loadTemplate('batch_footer') + ), + $this->loadTemplate('batch_body') + ); ?> + + + + +
+ + + + \ No newline at end of file diff --git a/admin/views/language_placeholders/tmpl/default_batch_body.php b/admin/views/language_placeholders/tmpl/default_batch_body.php new file mode 100644 index 000000000..5c011683f --- /dev/null +++ b/admin/views/language_placeholders/tmpl/default_batch_body.php @@ -0,0 +1,32 @@ + + @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'); + +?> + +

+batchDisplay; ?> \ No newline at end of file diff --git a/admin/views/language_placeholders/tmpl/default_batch_footer.php b/admin/views/language_placeholders/tmpl/default_batch_footer.php new file mode 100644 index 000000000..c949e886e --- /dev/null +++ b/admin/views/language_placeholders/tmpl/default_batch_footer.php @@ -0,0 +1,37 @@ + + @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'); + +?> + + + + \ No newline at end of file diff --git a/admin/views/language_placeholders/tmpl/default_body.php b/admin/views/language_placeholders/tmpl/default_body.php new file mode 100644 index 000000000..f70d8b322 --- /dev/null +++ b/admin/views/language_placeholders/tmpl/default_body.php @@ -0,0 +1,111 @@ + + @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'); + +$edit = "index.php?option=com_componentbuilder&view=language_placeholders&task=language_placeholder.edit"; + +?> +items as $i => $item): ?> + user->authorise('core.manage', 'com_checkin') || $item->checked_out == $this->user->id || $item->checked_out == 0; + $userChkOut = JFactory::getUser($item->checked_out); + $canDo = ComponentbuilderHelper::getActions('language_placeholder',$item,'language_placeholders'); + ?> + + + get('language_placeholder.edit.state')): ?> + saveOrder) + { + $iconClass = ' inactive'; + } + else + { + $iconClass = ' inactive tip-top" hasTooltip" title="' . JHtml::tooltipText('JORDERINGDISABLED'); + } + ?> + + + + saveOrder) : ?> + + + + ⋮ + + + + get('language_placeholder.edit')): ?> + checked_out) : ?> + + id); ?> + + □ + + + id); ?> + + + □ + + + + get('language_placeholder.edit')): ?> +
+ escape($item->placeholder); ?> + checked_out): ?> + name, $item->checked_out_time, 'language_placeholders.', $canCheckin); ?> + +
+ +
escape($item->placeholder); ?>
+ + + + escape($item->components); ?> + + + get('language_placeholder.edit.state')) : ?> + checked_out) : ?> + + published, $i, 'language_placeholders.', true, 'cb'); ?> + + published, $i, 'language_placeholders.', false, 'cb'); ?> + + + published, $i, 'language_placeholders.', true, 'cb'); ?> + + + published, $i, 'language_placeholders.', false, 'cb'); ?> + + + + id; ?> + + + \ No newline at end of file diff --git a/admin/views/language_placeholders/tmpl/default_foot.php b/admin/views/language_placeholders/tmpl/default_foot.php new file mode 100644 index 000000000..00796167e --- /dev/null +++ b/admin/views/language_placeholders/tmpl/default_foot.php @@ -0,0 +1,32 @@ + + @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'); + +?> + + pagination->getListFooter(); ?> + \ No newline at end of file diff --git a/admin/views/language_placeholders/tmpl/default_head.php b/admin/views/language_placeholders/tmpl/default_head.php new file mode 100644 index 000000000..67db508f1 --- /dev/null +++ b/admin/views/language_placeholders/tmpl/default_head.php @@ -0,0 +1,64 @@ + + @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'); + +?> + + canEdit&& $this->canState): ?> + + ', 'ordering', $this->listDirn, $this->listOrder, null, 'asc', 'JGRID_HEADING_ORDERING'); ?> + + + + + + + ▾ + + + ■ + + + + listDirn, $this->listOrder); ?> + + + listDirn, $this->listOrder); ?> + + canState): ?> + + listDirn, $this->listOrder); ?> + + + + + + + + listDirn, $this->listOrder); ?> + + \ No newline at end of file diff --git a/admin/views/language_placeholders/tmpl/default_toolbar.php b/admin/views/language_placeholders/tmpl/default_toolbar.php new file mode 100644 index 000000000..095cbe62b --- /dev/null +++ b/admin/views/language_placeholders/tmpl/default_toolbar.php @@ -0,0 +1,59 @@ + + @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'); + +?> +
+ +
+ + +
+
+ + pagination->getLimitBox(); ?> +
+
+ + +
+
+ + +
+
+
\ No newline at end of file diff --git a/admin/views/language_placeholders/tmpl/index.html b/admin/views/language_placeholders/tmpl/index.html new file mode 100644 index 000000000..fa6d84e80 --- /dev/null +++ b/admin/views/language_placeholders/tmpl/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/admin/views/language_placeholders/view.html.php b/admin/views/language_placeholders/view.html.php new file mode 100644 index 000000000..777b6c5f0 --- /dev/null +++ b/admin/views/language_placeholders/view.html.php @@ -0,0 +1,255 @@ + + @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 view library +jimport('joomla.application.component.view'); + +/** + * Componentbuilder View class for the Language_placeholders + */ +class ComponentbuilderViewLanguage_placeholders extends JViewLegacy +{ + /** + * Language_placeholders view display method + * @return void + */ + function display($tpl = null) + { + if ($this->getLayout() !== 'modal') + { + // Include helper submenu + ComponentbuilderHelper::addSubmenu('language_placeholders'); + } + + // Check for errors. + if (count($errors = $this->get('Errors'))) + { + JError::raiseError(500, implode('
', $errors)); + return false; + } + + // Assign data to the view + $this->items = $this->get('Items'); + $this->pagination = $this->get('Pagination'); + $this->state = $this->get('State'); + $this->user = JFactory::getUser(); + $this->listOrder = $this->escape($this->state->get('list.ordering')); + $this->listDirn = $this->escape($this->state->get('list.direction')); + $this->saveOrder = $this->listOrder == 'ordering'; + // get global action permissions + $this->canDo = ComponentbuilderHelper::getActions('language_placeholder'); + $this->canEdit = $this->canDo->get('language_placeholder.edit'); + $this->canState = $this->canDo->get('language_placeholder.edit.state'); + $this->canCreate = $this->canDo->get('language_placeholder.create'); + $this->canDelete = $this->canDo->get('language_placeholder.delete'); + $this->canBatch = $this->canDo->get('core.batch'); + + // We don't need toolbar in the modal window. + if ($this->getLayout() !== 'modal') + { + $this->addToolbar(); + $this->sidebar = JHtmlSidebar::render(); + // load the batch html + if ($this->canCreate && $this->canEdit && $this->canState) + { + $this->batchDisplay = JHtmlBatch_::render(); + } + } + + // Display the template + parent::display($tpl); + + // Set the document + $this->setDocument(); + } + + /** + * Setting the toolbar + */ + protected function addToolBar() + { + JToolBarHelper::title(JText::_('COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS'), 'comments-2'); + JHtmlSidebar::setAction('index.php?option=com_componentbuilder&view=language_placeholders'); + JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields'); + + if ($this->canCreate) + { + JToolBarHelper::addNew('language_placeholder.add'); + } + + // Only load if there are items + if (ComponentbuilderHelper::checkArray($this->items)) + { + if ($this->canEdit) + { + JToolBarHelper::editList('language_placeholder.edit'); + } + + if ($this->canState) + { + JToolBarHelper::publishList('language_placeholders.publish'); + JToolBarHelper::unpublishList('language_placeholders.unpublish'); + JToolBarHelper::archiveList('language_placeholders.archive'); + + if ($this->canDo->get('core.admin')) + { + JToolBarHelper::checkin('language_placeholders.checkin'); + } + } + + // Add a batch button + if ($this->canBatch && $this->canCreate && $this->canEdit && $this->canState) + { + // Get the toolbar object instance + $bar = JToolBar::getInstance('toolbar'); + // set the batch button name + $title = JText::_('JTOOLBAR_BATCH'); + // Instantiate a new JLayoutFile instance and render the batch button + $layout = new JLayoutFile('joomla.toolbar.batch'); + // add the button to the page + $dhtml = $layout->render(array('title' => $title)); + $bar->appendButton('Custom', $dhtml, 'batch'); + } + if ($this->user->authorise('language_placeholder.update_placeholders')) + { + // add Update Placeholders button. + JToolBarHelper::custom('language_placeholders.updatePlaceholders', 'flash', '', 'COM_COMPONENTBUILDER_UPDATE_PLACEHOLDERS', false); + } + + if ($this->state->get('filter.published') == -2 && ($this->canState && $this->canDelete)) + { + JToolbarHelper::deleteList('', 'language_placeholders.delete', 'JTOOLBAR_EMPTY_TRASH'); + } + elseif ($this->canState && $this->canDelete) + { + JToolbarHelper::trash('language_placeholders.trash'); + } + + if ($this->canDo->get('core.export') && $this->canDo->get('language_placeholder.export')) + { + JToolBarHelper::custom('language_placeholders.exportData', 'download', '', 'COM_COMPONENTBUILDER_EXPORT_DATA', true); + } + } + + if ($this->canDo->get('core.import') && $this->canDo->get('language_placeholder.import')) + { + JToolBarHelper::custom('language_placeholders.importData', 'upload', '', 'COM_COMPONENTBUILDER_IMPORT_DATA', false); + } + + // set help url for this view if found + $help_url = ComponentbuilderHelper::getHelpUrl('language_placeholders'); + if (ComponentbuilderHelper::checkString($help_url)) + { + JToolbarHelper::help('COM_COMPONENTBUILDER_HELP_MANAGER', false, $help_url); + } + + // add the options comp button + if ($this->canDo->get('core.admin') || $this->canDo->get('core.options')) + { + JToolBarHelper::preferences('com_componentbuilder'); + } + + if ($this->canState) + { + JHtmlSidebar::addFilter( + JText::_('JOPTION_SELECT_PUBLISHED'), + 'filter_published', + JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true) + ); + // only load if batch allowed + if ($this->canBatch) + { + JHtmlBatch_::addListSelection( + JText::_('COM_COMPONENTBUILDER_KEEP_ORIGINAL_STATE'), + 'batch[published]', + JHtml::_('select.options', JHtml::_('jgrid.publishedOptions', array('all' => false)), 'value', 'text', '', true) + ); + } + } + + JHtmlSidebar::addFilter( + JText::_('JOPTION_SELECT_ACCESS'), + 'filter_access', + JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access')) + ); + + if ($this->canBatch && $this->canCreate && $this->canEdit) + { + JHtmlBatch_::addListSelection( + JText::_('COM_COMPONENTBUILDER_KEEP_ORIGINAL_ACCESS'), + 'batch[access]', + JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text') + ); + } + } + + /** + * Method to set up the document properties + * + * @return void + */ + protected function setDocument() + { + $document = JFactory::getDocument(); + $document->setTitle(JText::_('COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS')); + $document->addStyleSheet(JURI::root() . "administrator/components/com_componentbuilder/assets/css/language_placeholders.css"); + } + + /** + * Escapes a value for output in a view script. + * + * @param mixed $var The output to escape. + * + * @return mixed The escaped value. + */ + public function escape($var) + { + if(strlen($var) > 50) + { + // use the helper htmlEscape method instead and shorten the string + return ComponentbuilderHelper::htmlEscape($var, $this->_charset, true); + } + // use the helper htmlEscape method instead. + return ComponentbuilderHelper::htmlEscape($var, $this->_charset); + } + + /** + * Returns an array of fields the table can be sorted by + * + * @return array Array containing the field name to sort by as the key and display text as value + */ + protected function getSortFields() + { + return array( + 'a.sorting' => JText::_('JGRID_HEADING_ORDERING'), + 'a.published' => JText::_('JSTATUS'), + 'a.placeholder' => JText::_('COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_PLACEHOLDER_LABEL'), + 'a.id' => JText::_('JGRID_HEADING_ID') + ); + } +} diff --git a/admin/views/languages/index.html b/admin/views/languages/index.html new file mode 100644 index 000000000..fa6d84e80 --- /dev/null +++ b/admin/views/languages/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/admin/views/languages/tmpl/default.php b/admin/views/languages/tmpl/default.php new file mode 100644 index 000000000..8dc44bb69 --- /dev/null +++ b/admin/views/languages/tmpl/default.php @@ -0,0 +1,99 @@ + + @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'); + +// load tooltip behavior +JHtml::_('behavior.tooltip'); +JHtml::_('behavior.multiselect'); +JHtml::_('dropdown.init'); +JHtml::_('formbehavior.chosen', 'select'); + +if ($this->saveOrder) +{ + $saveOrderingUrl = 'index.php?option=com_componentbuilder&task=languages.saveOrderAjax&tmpl=component'; + JHtml::_('sortablelist.sortable', 'languageList', 'adminForm', strtolower($this->listDirn), $saveOrderingUrl); +} + +?> + +
+sidebar)): ?> +
+ sidebar; ?> +
+
+ +
+ +items)): ?> + loadTemplate('toolbar');?> +
+ +
+ + loadTemplate('toolbar');?> + + loadTemplate('head');?> + loadTemplate('foot');?> + loadTemplate('body');?> +
+ + canCreate && $this->canEdit) : ?> + JText::_('COM_COMPONENTBUILDER_LANGUAGES_BATCH_OPTIONS'), + 'footer' => $this->loadTemplate('batch_footer') + ), + $this->loadTemplate('batch_body') + ); ?> + + + + +
+ + + + \ No newline at end of file diff --git a/admin/views/languages/tmpl/default_batch_body.php b/admin/views/languages/tmpl/default_batch_body.php new file mode 100644 index 000000000..faeb701b8 --- /dev/null +++ b/admin/views/languages/tmpl/default_batch_body.php @@ -0,0 +1,32 @@ + + @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'); + +?> + +

+batchDisplay; ?> \ No newline at end of file diff --git a/admin/views/languages/tmpl/default_batch_footer.php b/admin/views/languages/tmpl/default_batch_footer.php new file mode 100644 index 000000000..a82216fd8 --- /dev/null +++ b/admin/views/languages/tmpl/default_batch_footer.php @@ -0,0 +1,37 @@ + + @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'); + +?> + + + + \ No newline at end of file diff --git a/admin/views/languages/tmpl/default_body.php b/admin/views/languages/tmpl/default_body.php new file mode 100644 index 000000000..1d295d47c --- /dev/null +++ b/admin/views/languages/tmpl/default_body.php @@ -0,0 +1,111 @@ + + @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'); + +$edit = "index.php?option=com_componentbuilder&view=languages&task=language.edit"; + +?> +items as $i => $item): ?> + user->authorise('core.manage', 'com_checkin') || $item->checked_out == $this->user->id || $item->checked_out == 0; + $userChkOut = JFactory::getUser($item->checked_out); + $canDo = ComponentbuilderHelper::getActions('language',$item,'languages'); + ?> + + + get('language.edit.state')): ?> + saveOrder) + { + $iconClass = ' inactive'; + } + else + { + $iconClass = ' inactive tip-top" hasTooltip" title="' . JHtml::tooltipText('JORDERINGDISABLED'); + } + ?> + + + + saveOrder) : ?> + + + + ⋮ + + + + get('language.edit')): ?> + checked_out) : ?> + + id); ?> + + □ + + + id); ?> + + + □ + + + + get('language.edit')): ?> +
+ escape($item->name); ?> + checked_out): ?> + name, $item->checked_out_time, 'languages.', $canCheckin); ?> + +
+ +
escape($item->name); ?>
+ + + + escape($item->langtag); ?> + + + get('language.edit.state')) : ?> + checked_out) : ?> + + published, $i, 'languages.', true, 'cb'); ?> + + published, $i, 'languages.', false, 'cb'); ?> + + + published, $i, 'languages.', true, 'cb'); ?> + + + published, $i, 'languages.', false, 'cb'); ?> + + + + id; ?> + + + \ No newline at end of file diff --git a/admin/views/languages/tmpl/default_foot.php b/admin/views/languages/tmpl/default_foot.php new file mode 100644 index 000000000..7bbd92029 --- /dev/null +++ b/admin/views/languages/tmpl/default_foot.php @@ -0,0 +1,32 @@ + + @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'); + +?> + + pagination->getListFooter(); ?> + \ No newline at end of file diff --git a/admin/views/languages/tmpl/default_head.php b/admin/views/languages/tmpl/default_head.php new file mode 100644 index 000000000..caaf19c28 --- /dev/null +++ b/admin/views/languages/tmpl/default_head.php @@ -0,0 +1,64 @@ + + @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'); + +?> + + canEdit&& $this->canState): ?> + + ', 'ordering', $this->listDirn, $this->listOrder, null, 'asc', 'JGRID_HEADING_ORDERING'); ?> + + + + + + + ▾ + + + ■ + + + + listDirn, $this->listOrder); ?> + + + listDirn, $this->listOrder); ?> + + canState): ?> + + listDirn, $this->listOrder); ?> + + + + + + + + listDirn, $this->listOrder); ?> + + \ No newline at end of file diff --git a/admin/views/languages/tmpl/default_toolbar.php b/admin/views/languages/tmpl/default_toolbar.php new file mode 100644 index 000000000..82f13ccf7 --- /dev/null +++ b/admin/views/languages/tmpl/default_toolbar.php @@ -0,0 +1,59 @@ + + @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'); + +?> +
+ +
+ + +
+
+ + pagination->getLimitBox(); ?> +
+
+ + +
+
+ + +
+
+
\ No newline at end of file diff --git a/admin/views/languages/tmpl/index.html b/admin/views/languages/tmpl/index.html new file mode 100644 index 000000000..fa6d84e80 --- /dev/null +++ b/admin/views/languages/tmpl/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/admin/views/languages/view.html.php b/admin/views/languages/view.html.php new file mode 100644 index 000000000..31b1cb252 --- /dev/null +++ b/admin/views/languages/view.html.php @@ -0,0 +1,251 @@ + + @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 view library +jimport('joomla.application.component.view'); + +/** + * Componentbuilder View class for the Languages + */ +class ComponentbuilderViewLanguages extends JViewLegacy +{ + /** + * Languages view display method + * @return void + */ + function display($tpl = null) + { + if ($this->getLayout() !== 'modal') + { + // Include helper submenu + ComponentbuilderHelper::addSubmenu('languages'); + } + + // Check for errors. + if (count($errors = $this->get('Errors'))) + { + JError::raiseError(500, implode('
', $errors)); + return false; + } + + // Assign data to the view + $this->items = $this->get('Items'); + $this->pagination = $this->get('Pagination'); + $this->state = $this->get('State'); + $this->user = JFactory::getUser(); + $this->listOrder = $this->escape($this->state->get('list.ordering')); + $this->listDirn = $this->escape($this->state->get('list.direction')); + $this->saveOrder = $this->listOrder == 'ordering'; + // get global action permissions + $this->canDo = ComponentbuilderHelper::getActions('language'); + $this->canEdit = $this->canDo->get('language.edit'); + $this->canState = $this->canDo->get('language.edit.state'); + $this->canCreate = $this->canDo->get('language.create'); + $this->canDelete = $this->canDo->get('language.delete'); + $this->canBatch = $this->canDo->get('core.batch'); + + // We don't need toolbar in the modal window. + if ($this->getLayout() !== 'modal') + { + $this->addToolbar(); + $this->sidebar = JHtmlSidebar::render(); + // load the batch html + if ($this->canCreate && $this->canEdit && $this->canState) + { + $this->batchDisplay = JHtmlBatch_::render(); + } + } + + // Display the template + parent::display($tpl); + + // Set the document + $this->setDocument(); + } + + /** + * Setting the toolbar + */ + protected function addToolBar() + { + JToolBarHelper::title(JText::_('COM_COMPONENTBUILDER_LANGUAGES'), 'comment'); + JHtmlSidebar::setAction('index.php?option=com_componentbuilder&view=languages'); + JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields'); + + if ($this->canCreate) + { + JToolBarHelper::addNew('language.add'); + } + + // Only load if there are items + if (ComponentbuilderHelper::checkArray($this->items)) + { + if ($this->canEdit) + { + JToolBarHelper::editList('language.edit'); + } + + if ($this->canState) + { + JToolBarHelper::publishList('languages.publish'); + JToolBarHelper::unpublishList('languages.unpublish'); + JToolBarHelper::archiveList('languages.archive'); + + if ($this->canDo->get('core.admin')) + { + JToolBarHelper::checkin('languages.checkin'); + } + } + + // Add a batch button + if ($this->canBatch && $this->canCreate && $this->canEdit && $this->canState) + { + // Get the toolbar object instance + $bar = JToolBar::getInstance('toolbar'); + // set the batch button name + $title = JText::_('JTOOLBAR_BATCH'); + // Instantiate a new JLayoutFile instance and render the batch button + $layout = new JLayoutFile('joomla.toolbar.batch'); + // add the button to the page + $dhtml = $layout->render(array('title' => $title)); + $bar->appendButton('Custom', $dhtml, 'batch'); + } + + if ($this->state->get('filter.published') == -2 && ($this->canState && $this->canDelete)) + { + JToolbarHelper::deleteList('', 'languages.delete', 'JTOOLBAR_EMPTY_TRASH'); + } + elseif ($this->canState && $this->canDelete) + { + JToolbarHelper::trash('languages.trash'); + } + + if ($this->canDo->get('core.export') && $this->canDo->get('language.export')) + { + JToolBarHelper::custom('languages.exportData', 'download', '', 'COM_COMPONENTBUILDER_EXPORT_DATA', true); + } + } + + if ($this->canDo->get('core.import') && $this->canDo->get('language.import')) + { + JToolBarHelper::custom('languages.importData', 'upload', '', 'COM_COMPONENTBUILDER_IMPORT_DATA', false); + } + + // set help url for this view if found + $help_url = ComponentbuilderHelper::getHelpUrl('languages'); + if (ComponentbuilderHelper::checkString($help_url)) + { + JToolbarHelper::help('COM_COMPONENTBUILDER_HELP_MANAGER', false, $help_url); + } + + // add the options comp button + if ($this->canDo->get('core.admin') || $this->canDo->get('core.options')) + { + JToolBarHelper::preferences('com_componentbuilder'); + } + + if ($this->canState) + { + JHtmlSidebar::addFilter( + JText::_('JOPTION_SELECT_PUBLISHED'), + 'filter_published', + JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true) + ); + // only load if batch allowed + if ($this->canBatch) + { + JHtmlBatch_::addListSelection( + JText::_('COM_COMPONENTBUILDER_KEEP_ORIGINAL_STATE'), + 'batch[published]', + JHtml::_('select.options', JHtml::_('jgrid.publishedOptions', array('all' => false)), 'value', 'text', '', true) + ); + } + } + + JHtmlSidebar::addFilter( + JText::_('JOPTION_SELECT_ACCESS'), + 'filter_access', + JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access')) + ); + + if ($this->canBatch && $this->canCreate && $this->canEdit) + { + JHtmlBatch_::addListSelection( + JText::_('COM_COMPONENTBUILDER_KEEP_ORIGINAL_ACCESS'), + 'batch[access]', + JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text') + ); + } + } + + /** + * Method to set up the document properties + * + * @return void + */ + protected function setDocument() + { + $document = JFactory::getDocument(); + $document->setTitle(JText::_('COM_COMPONENTBUILDER_LANGUAGES')); + $document->addStyleSheet(JURI::root() . "administrator/components/com_componentbuilder/assets/css/languages.css"); + } + + /** + * Escapes a value for output in a view script. + * + * @param mixed $var The output to escape. + * + * @return mixed The escaped value. + */ + public function escape($var) + { + if(strlen($var) > 50) + { + // use the helper htmlEscape method instead and shorten the string + return ComponentbuilderHelper::htmlEscape($var, $this->_charset, true); + } + // use the helper htmlEscape method instead. + return ComponentbuilderHelper::htmlEscape($var, $this->_charset); + } + + /** + * Returns an array of fields the table can be sorted by + * + * @return array Array containing the field name to sort by as the key and display text as value + */ + protected function getSortFields() + { + return array( + 'a.sorting' => JText::_('JGRID_HEADING_ORDERING'), + 'a.published' => JText::_('JSTATUS'), + 'a.name' => JText::_('COM_COMPONENTBUILDER_LANGUAGE_NAME_LABEL'), + 'a.langtag' => JText::_('COM_COMPONENTBUILDER_LANGUAGE_LANGTAG_LABEL'), + 'a.id' => JText::_('JGRID_HEADING_ID') + ); + } +} diff --git a/componentbuilder.xml b/componentbuilder.xml index 8a40227c5..a604e0530 100644 --- a/componentbuilder.xml +++ b/componentbuilder.xml @@ -1,15 +1,15 @@ COM_COMPONENTBUILDER - 1st April, 2017 + 3rd April, 2017 Llewellyn van der Merwe joomla@vdm.io http://vdm.bz/component-builder Copyright (C) 2015. All Rights Reserved GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html - 2.4.1 + 2.4.2 Component Builder (v.2.4.1) +

Component Builder (v.2.4.2)

The Component Builder for [Joomla](http://www.joomla.org/) that is highly advanced, truly able to build extremely complex components in a fraction of the time. @@ -70,6 +70,7 @@ Whether you're a seasoned [Joomla](http://www.joomla.org/) developer, or have ju

COM_COMPONENTBUILDER_MENU_SNIPPETS COM_COMPONENTBUILDER_MENU_FIELDS COM_COMPONENTBUILDER_MENU_FIELDTYPES + COM_COMPONENTBUILDER_MENU_LANGUAGE_PLACEHOLDERS COM_COMPONENTBUILDER_MENU_HELP_DOCUMENTS diff --git a/componentbuilder_update_server.xml b/componentbuilder_update_server.xml index f7a9ff9a4..86865f36a 100644 --- a/componentbuilder_update_server.xml +++ b/componentbuilder_update_server.xml @@ -220,4 +220,21 @@ http://vdm.bz/component-builder + + Component Builder + Builds Complex Joomla Components + com_componentbuilder + component + 2.4.2 + http://vdm.bz/component-builder + + https://github.com/vdm-io/Joomla-Component-Builder/releases/download/v2.4.2/JCB_v2.4.2.zip + + + stable + + Llewellyn van der Merwe + http://vdm.bz/component-builder + + \ No newline at end of file diff --git a/script.php b/script.php index 495df16cb..7aff1131c 100644 --- a/script.php +++ b/script.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version 2.4.1 - @build 1st April, 2017 + @version 2.4.2 + @build 3rd April, 2017 @created 30th April, 2015 @package Component Builder @subpackage script.php @@ -1176,6 +1176,178 @@ class com_componentbuilderInstallerScript } } + // Create a new query object. + $query = $db->getQuery(true); + // Select id from content type table + $query->select($db->quoteName('type_id')); + $query->from($db->quoteName('#__content_types')); + // Where Language_placeholder alias is found + $query->where( $db->quoteName('type_alias') . ' = '. $db->quote('com_componentbuilder.language_placeholder') ); + $db->setQuery($query); + // Execute query to see if alias is found + $db->execute(); + $language_placeholder_found = $db->getNumRows(); + // Now check if there were any rows + if ($language_placeholder_found) + { + // Since there are load the needed language_placeholder type ids + $language_placeholder_ids = $db->loadColumn(); + // Remove Language_placeholder from the content type table + $language_placeholder_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_componentbuilder.language_placeholder') ); + // Create a new query object. + $query = $db->getQuery(true); + $query->delete($db->quoteName('#__content_types')); + $query->where($language_placeholder_condition); + $db->setQuery($query); + // Execute the query to remove Language_placeholder items + $language_placeholder_done = $db->execute(); + if ($language_placeholder_done); + { + // If succesfully remove Language_placeholder add queued success message. + $app->enqueueMessage(JText::_('The (com_componentbuilder.language_placeholder) type alias was removed from the #__content_type table')); + } + + // Remove Language_placeholder items from the contentitem tag map table + $language_placeholder_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_componentbuilder.language_placeholder') ); + // Create a new query object. + $query = $db->getQuery(true); + $query->delete($db->quoteName('#__contentitem_tag_map')); + $query->where($language_placeholder_condition); + $db->setQuery($query); + // Execute the query to remove Language_placeholder items + $language_placeholder_done = $db->execute(); + if ($language_placeholder_done); + { + // If succesfully remove Language_placeholder add queued success message. + $app->enqueueMessage(JText::_('The (com_componentbuilder.language_placeholder) type alias was removed from the #__contentitem_tag_map table')); + } + + // Remove Language_placeholder items from the ucm content table + $language_placeholder_condition = array( $db->quoteName('core_type_alias') . ' = ' . $db->quote('com_componentbuilder.language_placeholder') ); + // Create a new query object. + $query = $db->getQuery(true); + $query->delete($db->quoteName('#__ucm_content')); + $query->where($language_placeholder_condition); + $db->setQuery($query); + // Execute the query to remove Language_placeholder items + $language_placeholder_done = $db->execute(); + if ($language_placeholder_done); + { + // If succesfully remove Language_placeholder add queued success message. + $app->enqueueMessage(JText::_('The (com_componentbuilder.language_placeholder) type alias was removed from the #__ucm_content table')); + } + + // Make sure that all the Language_placeholder items are cleared from DB + foreach ($language_placeholder_ids as $language_placeholder_id) + { + // Remove Language_placeholder items from the ucm base table + $language_placeholder_condition = array( $db->quoteName('ucm_type_id') . ' = ' . $language_placeholder_id); + // Create a new query object. + $query = $db->getQuery(true); + $query->delete($db->quoteName('#__ucm_base')); + $query->where($language_placeholder_condition); + $db->setQuery($query); + // Execute the query to remove Language_placeholder items + $db->execute(); + + // Remove Language_placeholder items from the ucm history table + $language_placeholder_condition = array( $db->quoteName('ucm_type_id') . ' = ' . $language_placeholder_id); + // Create a new query object. + $query = $db->getQuery(true); + $query->delete($db->quoteName('#__ucm_history')); + $query->where($language_placeholder_condition); + $db->setQuery($query); + // Execute the query to remove Language_placeholder items + $db->execute(); + } + } + + // Create a new query object. + $query = $db->getQuery(true); + // Select id from content type table + $query->select($db->quoteName('type_id')); + $query->from($db->quoteName('#__content_types')); + // Where Language alias is found + $query->where( $db->quoteName('type_alias') . ' = '. $db->quote('com_componentbuilder.language') ); + $db->setQuery($query); + // Execute query to see if alias is found + $db->execute(); + $language_found = $db->getNumRows(); + // Now check if there were any rows + if ($language_found) + { + // Since there are load the needed language type ids + $language_ids = $db->loadColumn(); + // Remove Language from the content type table + $language_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_componentbuilder.language') ); + // Create a new query object. + $query = $db->getQuery(true); + $query->delete($db->quoteName('#__content_types')); + $query->where($language_condition); + $db->setQuery($query); + // Execute the query to remove Language items + $language_done = $db->execute(); + if ($language_done); + { + // If succesfully remove Language add queued success message. + $app->enqueueMessage(JText::_('The (com_componentbuilder.language) type alias was removed from the #__content_type table')); + } + + // Remove Language items from the contentitem tag map table + $language_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_componentbuilder.language') ); + // Create a new query object. + $query = $db->getQuery(true); + $query->delete($db->quoteName('#__contentitem_tag_map')); + $query->where($language_condition); + $db->setQuery($query); + // Execute the query to remove Language items + $language_done = $db->execute(); + if ($language_done); + { + // If succesfully remove Language add queued success message. + $app->enqueueMessage(JText::_('The (com_componentbuilder.language) type alias was removed from the #__contentitem_tag_map table')); + } + + // Remove Language items from the ucm content table + $language_condition = array( $db->quoteName('core_type_alias') . ' = ' . $db->quote('com_componentbuilder.language') ); + // Create a new query object. + $query = $db->getQuery(true); + $query->delete($db->quoteName('#__ucm_content')); + $query->where($language_condition); + $db->setQuery($query); + // Execute the query to remove Language items + $language_done = $db->execute(); + if ($language_done); + { + // If succesfully remove Language add queued success message. + $app->enqueueMessage(JText::_('The (com_componentbuilder.language) type alias was removed from the #__ucm_content table')); + } + + // Make sure that all the Language items are cleared from DB + foreach ($language_ids as $language_id) + { + // Remove Language items from the ucm base table + $language_condition = array( $db->quoteName('ucm_type_id') . ' = ' . $language_id); + // Create a new query object. + $query = $db->getQuery(true); + $query->delete($db->quoteName('#__ucm_base')); + $query->where($language_condition); + $db->setQuery($query); + // Execute the query to remove Language items + $db->execute(); + + // Remove Language items from the ucm history table + $language_condition = array( $db->quoteName('ucm_type_id') . ' = ' . $language_id); + // Create a new query object. + $query = $db->getQuery(true); + $query->delete($db->quoteName('#__ucm_history')); + $query->where($language_condition); + $db->setQuery($query); + // Execute the query to remove Language items + $db->execute(); + } + } + // Create a new query object. $query = $db->getQuery(true); // Select id from content type table @@ -1500,6 +1672,30 @@ class com_componentbuilderInstallerScript // Set the object into the content types table. $fieldtype_category_Inserted = $db->insertObject('#__content_types', $fieldtype_category); + // Create the language_placeholder content type object. + $language_placeholder = new stdClass(); + $language_placeholder->type_title = 'Componentbuilder Language_placeholder'; + $language_placeholder->type_alias = 'com_componentbuilder.language_placeholder'; + $language_placeholder->table = '{"special": {"dbtable": "#__componentbuilder_language_placeholder","key": "id","type": "Language_placeholder","prefix": "componentbuilderTable","config": "array()"},"common": {"dbtable": "#__ucm_content","key": "ucm_id","type": "Corecontent","prefix": "JTable","config": "array()"}}'; + $language_placeholder->field_mappings = '{"common": {"core_content_item_id": "id","core_title": "placeholder","core_state": "published","core_alias": "null","core_created_time": "created","core_modified_time": "modified","core_body": "null","core_hits": "hits","core_publish_up": "null","core_publish_down": "null","core_access": "access","core_params": "params","core_featured": "null","core_metadata": "null","core_language": "null","core_images": "null","core_urls": "null","core_version": "version","core_ordering": "ordering","core_metakey": "null","core_metadesc": "null","core_catid": "null","core_xreference": "null","asset_id": "asset_id"},"special": {"placeholder":"placeholder","components":"components"}}'; + $language_placeholder->router = 'ComponentbuilderHelperRoute::getLanguage_placeholderRoute'; + $language_placeholder->content_history_options = '{"formFile": "administrator/components/com_componentbuilder/models/forms/language_placeholder.xml","hideFields": ["asset_id","checked_out","checked_out_time","version"],"ignoreChanges": ["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt": ["published","ordering"],"displayLookup": [{"sourceColumn": "created_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "access","targetTable": "#__viewlevels","targetColumn": "id","displayColumn": "title"},{"sourceColumn": "modified_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "components","targetTable": "#__componentbuilder_joomla_component","targetColumn": "id","displayColumn": "system_name"}]}'; + + // Set the object into the content types table. + $language_placeholder_Inserted = $db->insertObject('#__content_types', $language_placeholder); + + // Create the language content type object. + $language = new stdClass(); + $language->type_title = 'Componentbuilder Language'; + $language->type_alias = 'com_componentbuilder.language'; + $language->table = '{"special": {"dbtable": "#__componentbuilder_language","key": "id","type": "Language","prefix": "componentbuilderTable","config": "array()"},"common": {"dbtable": "#__ucm_content","key": "ucm_id","type": "Corecontent","prefix": "JTable","config": "array()"}}'; + $language->field_mappings = '{"common": {"core_content_item_id": "id","core_title": "name","core_state": "published","core_alias": "null","core_created_time": "created","core_modified_time": "modified","core_body": "null","core_hits": "hits","core_publish_up": "null","core_publish_down": "null","core_access": "access","core_params": "params","core_featured": "null","core_metadata": "null","core_language": "null","core_images": "null","core_urls": "null","core_version": "version","core_ordering": "ordering","core_metakey": "null","core_metadesc": "null","core_catid": "null","core_xreference": "null","asset_id": "asset_id"},"special": {"name":"name","langtag":"langtag"}}'; + $language->router = 'ComponentbuilderHelperRoute::getLanguageRoute'; + $language->content_history_options = '{"formFile": "administrator/components/com_componentbuilder/models/forms/language.xml","hideFields": ["asset_id","checked_out","checked_out_time","version"],"ignoreChanges": ["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt": ["published","ordering"],"displayLookup": [{"sourceColumn": "created_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "access","targetTable": "#__viewlevels","targetColumn": "id","displayColumn": "title"},{"sourceColumn": "modified_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"}]}'; + + // Set the object into the content types table. + $language_Inserted = $db->insertObject('#__content_types', $language); + // Create the help_document content type object. $help_document = new stdClass(); $help_document->type_title = 'Componentbuilder Help_document'; @@ -1917,6 +2113,64 @@ class com_componentbuilderInstallerScript $fieldtype_category_Inserted = $db->insertObject('#__content_types', $fieldtype_category); } + // Create the language_placeholder content type object. + $language_placeholder = new stdClass(); + $language_placeholder->type_title = 'Componentbuilder Language_placeholder'; + $language_placeholder->type_alias = 'com_componentbuilder.language_placeholder'; + $language_placeholder->table = '{"special": {"dbtable": "#__componentbuilder_language_placeholder","key": "id","type": "Language_placeholder","prefix": "componentbuilderTable","config": "array()"},"common": {"dbtable": "#__ucm_content","key": "ucm_id","type": "Corecontent","prefix": "JTable","config": "array()"}}'; + $language_placeholder->field_mappings = '{"common": {"core_content_item_id": "id","core_title": "placeholder","core_state": "published","core_alias": "null","core_created_time": "created","core_modified_time": "modified","core_body": "null","core_hits": "hits","core_publish_up": "null","core_publish_down": "null","core_access": "access","core_params": "params","core_featured": "null","core_metadata": "null","core_language": "null","core_images": "null","core_urls": "null","core_version": "version","core_ordering": "ordering","core_metakey": "null","core_metadesc": "null","core_catid": "null","core_xreference": "null","asset_id": "asset_id"},"special": {"placeholder":"placeholder","components":"components"}}'; + $language_placeholder->router = 'ComponentbuilderHelperRoute::getLanguage_placeholderRoute'; + $language_placeholder->content_history_options = '{"formFile": "administrator/components/com_componentbuilder/models/forms/language_placeholder.xml","hideFields": ["asset_id","checked_out","checked_out_time","version"],"ignoreChanges": ["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt": ["published","ordering"],"displayLookup": [{"sourceColumn": "created_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "access","targetTable": "#__viewlevels","targetColumn": "id","displayColumn": "title"},{"sourceColumn": "modified_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "components","targetTable": "#__componentbuilder_joomla_component","targetColumn": "id","displayColumn": "system_name"}]}'; + + // Check if language_placeholder type is already in content_type DB. + $language_placeholder_id = null; + $query = $db->getQuery(true); + $query->select($db->quoteName(array('type_id'))); + $query->from($db->quoteName('#__content_types')); + $query->where($db->quoteName('type_alias') . ' LIKE '. $db->quote($language_placeholder->type_alias)); + $db->setQuery($query); + $db->execute(); + + // Set the object into the content types table. + if ($db->getNumRows()) + { + $language_placeholder->type_id = $db->loadResult(); + $language_placeholder_Updated = $db->updateObject('#__content_types', $language_placeholder, 'type_id'); + } + else + { + $language_placeholder_Inserted = $db->insertObject('#__content_types', $language_placeholder); + } + + // Create the language content type object. + $language = new stdClass(); + $language->type_title = 'Componentbuilder Language'; + $language->type_alias = 'com_componentbuilder.language'; + $language->table = '{"special": {"dbtable": "#__componentbuilder_language","key": "id","type": "Language","prefix": "componentbuilderTable","config": "array()"},"common": {"dbtable": "#__ucm_content","key": "ucm_id","type": "Corecontent","prefix": "JTable","config": "array()"}}'; + $language->field_mappings = '{"common": {"core_content_item_id": "id","core_title": "name","core_state": "published","core_alias": "null","core_created_time": "created","core_modified_time": "modified","core_body": "null","core_hits": "hits","core_publish_up": "null","core_publish_down": "null","core_access": "access","core_params": "params","core_featured": "null","core_metadata": "null","core_language": "null","core_images": "null","core_urls": "null","core_version": "version","core_ordering": "ordering","core_metakey": "null","core_metadesc": "null","core_catid": "null","core_xreference": "null","asset_id": "asset_id"},"special": {"name":"name","langtag":"langtag"}}'; + $language->router = 'ComponentbuilderHelperRoute::getLanguageRoute'; + $language->content_history_options = '{"formFile": "administrator/components/com_componentbuilder/models/forms/language.xml","hideFields": ["asset_id","checked_out","checked_out_time","version"],"ignoreChanges": ["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt": ["published","ordering"],"displayLookup": [{"sourceColumn": "created_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "access","targetTable": "#__viewlevels","targetColumn": "id","displayColumn": "title"},{"sourceColumn": "modified_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"}]}'; + + // Check if language type is already in content_type DB. + $language_id = null; + $query = $db->getQuery(true); + $query->select($db->quoteName(array('type_id'))); + $query->from($db->quoteName('#__content_types')); + $query->where($db->quoteName('type_alias') . ' LIKE '. $db->quote($language->type_alias)); + $db->setQuery($query); + $db->execute(); + + // Set the object into the content types table. + if ($db->getNumRows()) + { + $language->type_id = $db->loadResult(); + $language_Updated = $db->updateObject('#__content_types', $language, 'type_id'); + } + else + { + $language_Inserted = $db->insertObject('#__content_types', $language); + } + // Create the help_document content type object. $help_document = new stdClass(); $help_document->type_title = 'Componentbuilder Help_document'; @@ -1950,7 +2204,7 @@ class com_componentbuilderInstallerScript echo ' -

Upgrade to Version 2.4.1 Was Successful! Let us know if anything is not working as expected.

'; +

Upgrade to Version 2.4.2 Was Successful! Let us know if anything is not working as expected.

'; } } } -- 2.40.1 From 34d14ed95d5569508d5036c9f6f182d6291d14cd Mon Sep 17 00:00:00 2001 From: dev Date: Wed, 5 Apr 2017 14:21:10 +0100 Subject: [PATCH 2/8] gh-60 language translation component added, basic implementation --- README.md | 6 +- admin/README.txt | 6 +- admin/access.xml | 43 ++- admin/assets/css/admin.css | 2 +- admin/assets/css/custom_code.css | 4 +- admin/assets/css/custom_codes.css | 4 +- admin/assets/css/dashboard.css | 2 +- admin/assets/css/joomla_component.css | 4 +- admin/assets/css/joomla_components.css | 4 +- ...aceholder.css => language_translation.css} | 6 +- ...eholders.css => language_translations.css} | 6 +- .../images/icons/language_placeholder_add.png | Bin 43823 -> 0 bytes ...eholders.png => language_translations.png} | Bin admin/compiler/joomla_3/component.xml | 6 +- admin/compiler/joomla_3/settings.json | 24 -- admin/componentbuilder.php | 7 +- admin/controller.php | 4 +- admin/controllers/ajax.json.php | 83 +++++- admin/controllers/componentbuilder.php | 2 +- admin/controllers/custom_code.php | 4 +- admin/controllers/custom_codes.php | 4 +- admin/controllers/help.php | 2 +- admin/controllers/import.php | 2 +- .../controllers/import_joomla_components.php | 2 +- admin/controllers/joomla_component.php | 4 +- admin/controllers/joomla_components.php | 4 +- ...aceholder.php => language_translation.php} | 30 +- ...eholders.php => language_translations.php} | 36 +-- admin/helpers/compiler.php | 10 +- admin/helpers/compiler/a_Get.php | 258 +++++++++++++++++- admin/helpers/compiler/c_Fields.php | 2 +- admin/helpers/compiler/e_Interpretation.php | 97 +++---- admin/helpers/compiler/f_Infusion.php | 135 +++++++-- admin/helpers/componentbuilder.php | 76 +++++- admin/helpers/headercheck.php | 2 +- admin/helpers/html/batch_.php | 2 +- admin/helpers/indenter.php | 2 +- admin/helpers/js.php | 2 +- admin/helpers/minify.php | 2 +- .../en-GB/en-GB.com_componentbuilder.ini | 169 ++++++------ .../en-GB/en-GB.com_componentbuilder.sys.ini | 2 +- admin/layouts/admin_view/css_fullwidth.php | 2 +- .../admin_view/custom_buttons_fullwidth.php | 2 +- .../admin_view/custom_buttons_left.php | 2 +- .../admin_view/custom_import_fullwidth.php | 2 +- admin/layouts/admin_view/fields_fullwidth.php | 2 +- .../admin_view/javascript_fullwidth.php | 2 +- .../linked_components_fullwidth.php | 2 +- admin/layouts/admin_view/mysql_fullwidth.php | 2 +- admin/layouts/admin_view/mysql_left.php | 2 +- admin/layouts/admin_view/php_fullwidth.php | 2 +- admin/layouts/admin_view/publishing.php | 2 +- admin/layouts/admin_view/publlshing.php | 2 +- admin/layouts/admin_view/settings_above.php | 2 +- admin/layouts/admin_view/settings_left.php | 2 +- admin/layouts/admin_view/settings_right.php | 2 +- admin/layouts/admin_view/settings_under.php | 2 +- admin/layouts/batchselection.php | 2 +- .../custom_buttons_fullwidth.php | 2 +- .../custom_admin_view/custom_buttons_left.php | 2 +- .../custom_script_fullwidth.php | 2 +- .../custom_admin_view/details_above.php | 2 +- .../custom_admin_view/details_fullwidth.php | 2 +- .../custom_admin_view/details_left.php | 2 +- .../custom_admin_view/details_right.php | 2 +- .../custom_admin_view/details_rightside.php | 2 +- .../custom_admin_view/details_under.php | 2 +- .../linked_components_fullwidth.php | 2 +- .../layouts/custom_admin_view/publishing.php | 2 +- .../layouts/custom_admin_view/publlshing.php | 2 +- admin/layouts/custom_code/details_above.php | 2 +- .../layouts/custom_code/details_fullwidth.php | 2 +- admin/layouts/custom_code/details_left.php | 2 +- admin/layouts/custom_code/details_right.php | 2 +- admin/layouts/custom_code/details_under.php | 2 +- admin/layouts/custom_code/publishing.php | 2 +- admin/layouts/custom_code/publlshing.php | 2 +- .../layouts/dynamic_get/abacus_fullwidth.php | 2 +- admin/layouts/dynamic_get/abacus_left.php | 2 +- .../dynamic_get/custom_script_fullwidth.php | 2 +- admin/layouts/dynamic_get/gettable_above.php | 2 +- .../dynamic_get/gettable_fullwidth.php | 2 +- admin/layouts/dynamic_get/gettable_left.php | 2 +- admin/layouts/dynamic_get/gettable_right.php | 2 +- admin/layouts/dynamic_get/gettable_under.php | 2 +- admin/layouts/dynamic_get/publishing.php | 2 +- admin/layouts/dynamic_get/publlshing.php | 2 +- admin/layouts/field/details_fullwidth.php | 2 +- admin/layouts/field/details_left.php | 2 +- admin/layouts/field/details_right.php | 2 +- admin/layouts/field/details_under.php | 2 +- .../field/linked_admin_views_fullwidth.php | 2 +- admin/layouts/field/publishing.php | 2 +- admin/layouts/field/publlshing.php | 2 +- admin/layouts/field/scripts_left.php | 2 +- admin/layouts/field/scripts_right.php | 2 +- admin/layouts/fieldtype/details_left.php | 2 +- admin/layouts/fieldtype/details_right.php | 2 +- admin/layouts/fieldtype/fields_fullwidth.php | 2 +- admin/layouts/fieldtype/publishing.php | 2 +- admin/layouts/fieldtype/publlshing.php | 2 +- admin/layouts/help_document/details_above.php | 2 +- .../help_document/details_fullwidth.php | 2 +- admin/layouts/help_document/details_left.php | 2 +- admin/layouts/help_document/details_right.php | 2 +- admin/layouts/help_document/details_under.php | 2 +- admin/layouts/help_document/publishing.php | 2 +- admin/layouts/help_document/publlshing.php | 2 +- .../admin_views_fullwidth.php | 2 +- .../custom_admin_views_fullwidth.php | 2 +- .../joomla_component/details_above.php | 2 +- .../layouts/joomla_component/details_left.php | 2 +- .../joomla_component/details_right.php | 2 +- .../joomla_component/details_under.php | 2 +- .../dynamic_build_beta_fullwidth.php | 2 +- .../dynamic_integration_fullwidth.php | 2 +- .../libs_helpers_fullwidth.php | 2 +- .../joomla_component/mysql_fullwidth.php | 2 +- .../joomla_component/php_fullwidth.php | 2 +- admin/layouts/joomla_component/publishing.php | 2 +- admin/layouts/joomla_component/publlshing.php | 2 +- .../layouts/joomla_component/readme_left.php | 2 +- .../layouts/joomla_component/readme_right.php | 2 +- .../joomla_component/settings_left.php | 2 +- .../joomla_component/settings_right.php | 2 +- .../joomla_component/site_views_fullwidth.php | 2 +- admin/layouts/language/details_left.php | 2 +- admin/layouts/language/details_right.php | 2 +- admin/layouts/language/publishing.php | 2 +- admin/layouts/language/publlshing.php | 2 +- .../details_above.php | 2 +- .../details_fullwidth.php | 4 +- .../index.html | 0 .../publishing.php | 2 +- .../publlshing.php | 2 +- .../layout/custom_script_fullwidth.php | 2 +- admin/layouts/layout/details_fullwidth.php | 2 +- admin/layouts/layout/details_left.php | 2 +- admin/layouts/layout/details_right.php | 2 +- admin/layouts/layout/details_rightside.php | 2 +- admin/layouts/layout/details_under.php | 2 +- admin/layouts/layout/publishing.php | 2 +- admin/layouts/layout/publlshing.php | 2 +- .../site_view/custom_buttons_fullwidth.php | 2 +- .../layouts/site_view/custom_buttons_left.php | 2 +- .../site_view/custom_buttons_right.php | 2 +- admin/layouts/site_view/details_above.php | 2 +- admin/layouts/site_view/details_fullwidth.php | 2 +- admin/layouts/site_view/details_left.php | 2 +- admin/layouts/site_view/details_right.php | 2 +- admin/layouts/site_view/details_rightside.php | 2 +- admin/layouts/site_view/details_under.php | 2 +- .../site_view/javascript_css_fullwidth.php | 2 +- .../site_view/linked_components_fullwidth.php | 2 +- admin/layouts/site_view/php_fullwidth.php | 2 +- admin/layouts/site_view/publishing.php | 2 +- admin/layouts/site_view/publlshing.php | 2 +- admin/layouts/snippet/details_above.php | 2 +- admin/layouts/snippet/details_left.php | 2 +- admin/layouts/snippet/details_right.php | 2 +- admin/layouts/snippet/publishing.php | 2 +- admin/layouts/snippet/publlshing.php | 2 +- .../template/custom_script_fullwidth.php | 2 +- admin/layouts/template/details_fullwidth.php | 2 +- admin/layouts/template/details_left.php | 2 +- admin/layouts/template/details_right.php | 2 +- admin/layouts/template/details_rightside.php | 2 +- admin/layouts/template/details_under.php | 2 +- admin/layouts/template/publishing.php | 2 +- admin/layouts/template/publlshing.php | 2 +- admin/models/ajax.php | 222 ++++++++++++++- admin/models/componentbuilder.php | 15 +- admin/models/custom_code.php | 4 +- admin/models/custom_codes.php | 6 +- admin/models/fields/adminviewfolderlist.php | 2 +- admin/models/fields/adminviews.php | 2 +- admin/models/fields/articles.php | 2 +- admin/models/fields/component.php | 2 +- admin/models/fields/components.php | 2 +- admin/models/fields/customadminviews.php | 2 +- admin/models/fields/customfilelist.php | 2 +- admin/models/fields/customfolderlist.php | 2 +- admin/models/fields/customgets.php | 2 +- admin/models/fields/dbtables.php | 2 +- admin/models/fields/dynamicget.php | 2 +- admin/models/fields/dynamicgets.php | 2 +- admin/models/fields/fields.php | 2 +- admin/models/fields/fieldsmulti.php | 2 +- admin/models/fields/fieldtypes.php | 2 +- admin/models/fields/lang.php | 171 ++++++++++++ admin/models/fields/maingets.php | 2 +- admin/models/fields/siteviewfolderlist.php | 2 +- admin/models/fields/siteviews.php | 2 +- admin/models/fields/snippets.php | 2 +- admin/models/forms/custom_code.js | 4 +- admin/models/forms/custom_code.xml | 114 ++++---- admin/models/forms/joomla_component.js | 4 +- admin/models/forms/language_placeholder.js | 25 -- admin/models/forms/language_translation.js | 84 ++++++ ...aceholder.xml => language_translation.xml} | 77 +++--- admin/models/import.php | 2 +- admin/models/import_joomla_components.php | 2 +- admin/models/joomla_component.php | 4 +- admin/models/joomla_components.php | 8 +- ...aceholder.php => language_translation.php} | 82 ++++-- ...eholders.php => language_translations.php} | 42 ++- admin/sql/install.mysql.utf8.sql | 10 +- admin/sql/uninstall.mysql.utf8.sql | 2 +- admin/sql/updates/mysql/2.4.1.sql | 4 +- admin/tables/custom_code.php | 4 +- admin/tables/joomla_component.php | 4 +- ...aceholder.php => language_translation.php} | 28 +- admin/views/componentbuilder/tmpl/default.php | 2 +- ...sed_issues_the_closed_issues_on_github.php | 2 +- .../componentbuilder/tmpl/default_main.php | 2 +- ..._open_issues_the_open_issues_on_github.php | 2 +- .../tmpl/default_readme_information.php | 2 +- ...t_vast_development_method_notice_board.php | 2 +- .../componentbuilder/tmpl/default_vdm.php | 2 +- admin/views/componentbuilder/view.html.php | 2 +- admin/views/custom_code/submitbutton.js | 4 +- admin/views/custom_code/tmpl/edit.php | 7 +- admin/views/custom_code/view.html.php | 4 +- admin/views/custom_codes/tmpl/default.php | 4 +- .../custom_codes/tmpl/default_batch_body.php | 4 +- .../tmpl/default_batch_footer.php | 4 +- .../views/custom_codes/tmpl/default_body.php | 4 +- .../views/custom_codes/tmpl/default_foot.php | 4 +- .../views/custom_codes/tmpl/default_head.php | 4 +- .../custom_codes/tmpl/default_toolbar.php | 4 +- admin/views/custom_codes/view.html.php | 4 +- admin/views/import/tmpl/default.php | 2 +- admin/views/import/view.html.php | 2 +- .../import_joomla_components/tmpl/default.php | 2 +- .../import_joomla_components/view.html.php | 2 +- admin/views/joomla_component/submitbutton.js | 4 +- admin/views/joomla_component/tmpl/edit.php | 4 +- admin/views/joomla_component/view.html.php | 4 +- .../views/joomla_components/tmpl/default.php | 4 +- .../tmpl/default_batch_body.php | 4 +- .../tmpl/default_batch_footer.php | 4 +- .../joomla_components/tmpl/default_body.php | 4 +- .../joomla_components/tmpl/default_foot.php | 4 +- .../joomla_components/tmpl/default_head.php | 4 +- .../tmpl/default_toolbar.php | 4 +- admin/views/joomla_components/view.html.php | 4 +- .../submitbutton.js | 6 +- .../tmpl/edit.php | 54 +++- .../tmpl/index.html | 0 .../view.html.php | 75 ++--- .../index.html | 0 .../tmpl/default.php | 14 +- .../tmpl/default_batch_body.php | 6 +- .../tmpl/default_batch_footer.php | 6 +- .../tmpl/default_body.php | 30 +- .../tmpl/default_foot.php | 4 +- .../tmpl/default_head.php | 14 +- .../tmpl/default_toolbar.php | 6 +- .../tmpl/index.html | 0 .../view.html.php | 62 ++--- componentbuilder.xml | 6 +- script.php | 132 ++++----- 262 files changed, 1876 insertions(+), 928 deletions(-) rename admin/assets/css/{language_placeholder.css => language_translation.css} (92%) rename admin/assets/css/{language_placeholders.css => language_translations.css} (92%) delete mode 100644 admin/assets/images/icons/language_placeholder_add.png rename admin/assets/images/icons/{language_placeholders.png => language_translations.png} (100%) rename admin/controllers/{language_placeholder.php => language_translation.php} (85%) rename admin/controllers/{language_placeholders.php => language_translations.php} (78%) rename admin/layouts/{language_placeholder => language_translation}/details_above.php (96%) rename admin/layouts/{language_placeholder => language_translation}/details_fullwidth.php (96%) rename admin/layouts/{language_placeholder => language_translation}/index.html (100%) rename admin/layouts/{language_placeholder => language_translation}/publishing.php (96%) rename admin/layouts/{language_placeholder => language_translation}/publlshing.php (96%) create mode 100644 admin/models/fields/lang.php delete mode 100644 admin/models/forms/language_placeholder.js create mode 100644 admin/models/forms/language_translation.js rename admin/models/forms/{language_placeholder.xml => language_translation.xml} (64%) rename admin/models/{language_placeholder.php => language_translation.php} (87%) rename admin/models/{language_placeholders.php => language_translations.php} (84%) rename admin/tables/{language_placeholder.php => language_translation.php} (88%) rename admin/views/{language_placeholder => language_translation}/submitbutton.js (92%) rename admin/views/{language_placeholder => language_translation}/tmpl/edit.php (74%) rename admin/views/{language_placeholder => language_translation}/tmpl/index.html (100%) rename admin/views/{language_placeholder => language_translation}/view.html.php (65%) rename admin/views/{language_placeholders => language_translations}/index.html (100%) rename admin/views/{language_placeholders => language_translations}/tmpl/default.php (89%) rename admin/views/{language_placeholders => language_translations}/tmpl/default_batch_body.php (89%) rename admin/views/{language_placeholders => language_translations}/tmpl/default_batch_footer.php (93%) rename admin/views/{language_placeholders => language_translations}/tmpl/default_body.php (80%) rename admin/views/{language_placeholders => language_translations}/tmpl/default_foot.php (94%) rename admin/views/{language_placeholders => language_translations}/tmpl/default_head.php (86%) rename admin/views/{language_placeholders => language_translations}/tmpl/default_toolbar.php (95%) rename admin/views/{language_placeholders => language_translations}/tmpl/index.html (100%) rename admin/views/{language_placeholders => language_translations}/view.html.php (83%) diff --git a/README.md b/README.md index 883b3b30f..f83377068 100644 --- a/README.md +++ b/README.md @@ -105,12 +105,12 @@ 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*: 3rd April, 2017 ++ *Last Build*: 5th April, 2017 + *Version*: 2.4.2 + *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*: **104692** -+ *File count*: **639** ++ *Line count*: **105345** ++ *File count*: **638** + *Folder count*: **115** > This **component** was build with a Joomla [Automated Component Builder](http://vdm.bz/component-builder). diff --git a/admin/README.txt b/admin/README.txt index 883b3b30f..f83377068 100644 --- a/admin/README.txt +++ b/admin/README.txt @@ -105,12 +105,12 @@ 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*: 3rd April, 2017 ++ *Last Build*: 5th April, 2017 + *Version*: 2.4.2 + *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*: **104692** -+ *File count*: **639** ++ *Line count*: **105345** ++ *File count*: **638** + *Folder count*: **115** > This **component** was build with a Joomla [Automated Component Builder](http://vdm.bz/component-builder). diff --git a/admin/access.xml b/admin/access.xml index 6be89abce..9ff76fa7e 100644 --- a/admin/access.xml +++ b/admin/access.xml @@ -113,20 +113,19 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -268,14 +267,14 @@
-
- - - - - - - +
+ + + + + + +
diff --git a/admin/assets/css/admin.css b/admin/assets/css/admin.css index 3232356c4..a1ef075bd 100644 --- a/admin/assets/css/admin.css +++ b/admin/assets/css/admin.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage admin.css diff --git a/admin/assets/css/custom_code.css b/admin/assets/css/custom_code.css index b4b088076..5a1ec04dc 100644 --- a/admin/assets/css/custom_code.css +++ b/admin/assets/css/custom_code.css @@ -9,8 +9,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage custom_code.css diff --git a/admin/assets/css/custom_codes.css b/admin/assets/css/custom_codes.css index 346222347..d3cee09a1 100644 --- a/admin/assets/css/custom_codes.css +++ b/admin/assets/css/custom_codes.css @@ -9,8 +9,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage custom_codes.css diff --git a/admin/assets/css/dashboard.css b/admin/assets/css/dashboard.css index 9431eb91f..d2bf3b477 100644 --- a/admin/assets/css/dashboard.css +++ b/admin/assets/css/dashboard.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage dashboard.css diff --git a/admin/assets/css/joomla_component.css b/admin/assets/css/joomla_component.css index a7cffa02e..b6c71c520 100644 --- a/admin/assets/css/joomla_component.css +++ b/admin/assets/css/joomla_component.css @@ -9,8 +9,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage joomla_component.css diff --git a/admin/assets/css/joomla_components.css b/admin/assets/css/joomla_components.css index a4176b676..93b6a7e2b 100644 --- a/admin/assets/css/joomla_components.css +++ b/admin/assets/css/joomla_components.css @@ -9,8 +9,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage joomla_components.css diff --git a/admin/assets/css/language_placeholder.css b/admin/assets/css/language_translation.css similarity index 92% rename from admin/assets/css/language_placeholder.css rename to admin/assets/css/language_translation.css index 4380e5ceb..616479971 100644 --- a/admin/assets/css/language_placeholder.css +++ b/admin/assets/css/language_translation.css @@ -9,11 +9,11 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 8 of this MVC - @build 3rd April, 2017 + @version @update number 28 of this MVC + @build 5th April, 2017 @created 3rd April, 2017 @package Component Builder - @subpackage language_placeholder.css + @subpackage language_translation.css @author Llewellyn van der Merwe @copyright Copyright (C) 2015. All Rights Reserved @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html diff --git a/admin/assets/css/language_placeholders.css b/admin/assets/css/language_translations.css similarity index 92% rename from admin/assets/css/language_placeholders.css rename to admin/assets/css/language_translations.css index 13d0b9fed..fc9012f38 100644 --- a/admin/assets/css/language_placeholders.css +++ b/admin/assets/css/language_translations.css @@ -9,11 +9,11 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 8 of this MVC - @build 3rd April, 2017 + @version @update number 28 of this MVC + @build 5th April, 2017 @created 3rd April, 2017 @package Component Builder - @subpackage language_placeholders.css + @subpackage language_translations.css @author Llewellyn van der Merwe @copyright Copyright (C) 2015. All Rights Reserved @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html diff --git a/admin/assets/images/icons/language_placeholder_add.png b/admin/assets/images/icons/language_placeholder_add.png deleted file mode 100644 index e27635ba423e263411c077e7cdfbfef1495dbe38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43823 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 Hu0mjf=`_vv diff --git a/admin/assets/images/icons/language_placeholders.png b/admin/assets/images/icons/language_translations.png similarity index 100% rename from admin/assets/images/icons/language_placeholders.png rename to admin/assets/images/icons/language_translations.png diff --git a/admin/compiler/joomla_3/component.xml b/admin/compiler/joomla_3/component.xml index a51f9eb84..e729a86db 100644 --- a/admin/compiler/joomla_3/component.xml +++ b/admin/compiler/joomla_3/component.xml @@ -60,8 +60,7 @@ - language/en-GB/en-GB.com_###component###.ini - language/en-GB/en-GB.com_###component###.sys.ini + ###SITE_LANGUAGES### @@ -86,8 +85,7 @@ - language/en-GB/en-GB.com_###component###.ini - language/en-GB/en-GB.com_###component###.sys.ini + ###ADMIN_LANGUAGES### ###UPDATESERVER### diff --git a/admin/compiler/joomla_3/settings.json b/admin/compiler/joomla_3/settings.json index 878ecefbc..9e5cd8796 100644 --- a/admin/compiler/joomla_3/settings.json +++ b/admin/compiler/joomla_3/settings.json @@ -170,18 +170,6 @@ "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", @@ -219,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", diff --git a/admin/componentbuilder.php b/admin/componentbuilder.php index 5b2dee12e..26de222cd 100644 --- a/admin/componentbuilder.php +++ b/admin/componentbuilder.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 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'); diff --git a/admin/controller.php b/admin/controller.php index b2c493ed2..c6600ef7d 100644 --- a/admin/controller.php +++ b/admin/controller.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage controller.php @@ -99,7 +99,7 @@ class ComponentbuilderController extends JControllerLegacy 'snippet' => 'snippets', 'field' => 'fields', 'fieldtype' => 'fieldtypes', - 'language_placeholder' => 'language_placeholders', + 'language_translation' => 'language_translations', 'language' => 'languages', 'help_document' => 'help_documents' ); diff --git a/admin/controllers/ajax.json.php b/admin/controllers/ajax.json.php index 8bffcdea9..b024172d7 100644 --- a/admin/controllers/ajax.json.php +++ b/admin/controllers/ajax.json.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage ajax.json.php @@ -57,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() @@ -687,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; } } diff --git a/admin/controllers/componentbuilder.php b/admin/controllers/componentbuilder.php index aa4cd6745..20c6ed0b4 100644 --- a/admin/controllers/componentbuilder.php +++ b/admin/controllers/componentbuilder.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage componentbuilder.php diff --git a/admin/controllers/custom_code.php b/admin/controllers/custom_code.php index b772871cb..bb3a1b148 100644 --- a/admin/controllers/custom_code.php +++ b/admin/controllers/custom_code.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage custom_code.php diff --git a/admin/controllers/custom_codes.php b/admin/controllers/custom_codes.php index 6dc75d3b1..d4e4664ca 100644 --- a/admin/controllers/custom_codes.php +++ b/admin/controllers/custom_codes.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage custom_codes.php diff --git a/admin/controllers/help.php b/admin/controllers/help.php index 9fcca801b..bc03b3068 100644 --- a/admin/controllers/help.php +++ b/admin/controllers/help.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage help.php diff --git a/admin/controllers/import.php b/admin/controllers/import.php index 3c0fb02ca..16823cffa 100644 --- a/admin/controllers/import.php +++ b/admin/controllers/import.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage import.php diff --git a/admin/controllers/import_joomla_components.php b/admin/controllers/import_joomla_components.php index f0ee219ae..d635787d8 100644 --- a/admin/controllers/import_joomla_components.php +++ b/admin/controllers/import_joomla_components.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage import_joomla_components.php diff --git a/admin/controllers/joomla_component.php b/admin/controllers/joomla_component.php index 3da08775a..52089d074 100644 --- a/admin/controllers/joomla_component.php +++ b/admin/controllers/joomla_component.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage joomla_component.php diff --git a/admin/controllers/joomla_components.php b/admin/controllers/joomla_components.php index c03546916..ab30a2d10 100644 --- a/admin/controllers/joomla_components.php +++ b/admin/controllers/joomla_components.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage joomla_components.php diff --git a/admin/controllers/language_placeholder.php b/admin/controllers/language_translation.php similarity index 85% rename from admin/controllers/language_placeholder.php rename to admin/controllers/language_translation.php index ebdf36177..021740473 100644 --- a/admin/controllers/language_placeholder.php +++ b/admin/controllers/language_translation.php @@ -10,11 +10,11 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 8 of this MVC - @build 3rd April, 2017 + @version @update number 28 of this MVC + @build 5th April, 2017 @created 3rd April, 2017 @package Component Builder - @subpackage language_placeholder.php + @subpackage language_translation.php @author Llewellyn van der Merwe @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'); /** - * Language_placeholder Controller + * Language_translation Controller */ -class ComponentbuilderControllerLanguage_placeholder extends JControllerForm +class ComponentbuilderControllerLanguage_translation extends JControllerForm { /** * Current or most recently performed task. @@ -45,7 +45,7 @@ class ComponentbuilderControllerLanguage_placeholder extends JControllerForm public function __construct($config = array()) { - $this->view_list = 'Language_placeholders'; // safeguard for setting the return view listing to the main view. + $this->view_list = 'Language_translations'; // safeguard for setting the return view listing to the main view. parent::__construct($config); } @@ -61,13 +61,13 @@ class ComponentbuilderControllerLanguage_placeholder extends JControllerForm protected function allowAdd($data = array()) { // Access check. - $access = JFactory::getUser()->authorise('language_placeholder.access', 'com_componentbuilder'); + $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_placeholder.create', $this->option); + return JFactory::getUser()->authorise('language_translation.create', $this->option); } /** @@ -89,7 +89,7 @@ class ComponentbuilderControllerLanguage_placeholder extends JControllerForm // Access check. - $access = ($user->authorise('language_placeholder.access', 'com_componentbuilder.language_placeholder.' . (int) $recordId) && $user->authorise('language_placeholder.access', 'com_componentbuilder')); + $access = ($user->authorise('language_translation.access', 'com_componentbuilder.language_translation.' . (int) $recordId) && $user->authorise('language_translation.access', 'com_componentbuilder')); if (!$access) { return false; @@ -98,10 +98,10 @@ class ComponentbuilderControllerLanguage_placeholder extends JControllerForm if ($recordId) { // The record has been set. Check the record permissions. - $permission = $user->authorise('language_placeholder.edit', 'com_componentbuilder.language_placeholder.' . (int) $recordId); + $permission = $user->authorise('language_translation.edit', 'com_componentbuilder.language_translation.' . (int) $recordId); if (!$permission) { - if ($user->authorise('language_placeholder.edit.own', 'com_componentbuilder.language_placeholder.' . $recordId)) + 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; @@ -120,7 +120,7 @@ class ComponentbuilderControllerLanguage_placeholder extends JControllerForm // If the owner matches 'me' then allow. if ($ownerId == $user->id) { - if ($user->authorise('language_placeholder.edit.own', 'com_componentbuilder')) + if ($user->authorise('language_translation.edit.own', 'com_componentbuilder')) { return true; } @@ -130,7 +130,7 @@ class ComponentbuilderControllerLanguage_placeholder extends JControllerForm } } // Since there is no permission, revert to the component permissions. - return $user->authorise('language_placeholder.edit', $this->option); + return $user->authorise('language_translation.edit', $this->option); } /** @@ -196,10 +196,10 @@ class ComponentbuilderControllerLanguage_placeholder extends JControllerForm JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); // Set the model - $model = $this->getModel('Language_placeholder', '', array()); + $model = $this->getModel('Language_translation', '', array()); // Preset the redirect - $this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=language_placeholders' . $this->getRedirectToListAppend(), false)); + $this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=language_translations' . $this->getRedirectToListAppend(), false)); return parent::batch($model); } diff --git a/admin/controllers/language_placeholders.php b/admin/controllers/language_translations.php similarity index 78% rename from admin/controllers/language_placeholders.php rename to admin/controllers/language_translations.php index 8d631ea6a..795a39648 100644 --- a/admin/controllers/language_placeholders.php +++ b/admin/controllers/language_translations.php @@ -10,11 +10,11 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 8 of this MVC - @build 3rd April, 2017 + @version @update number 28 of this MVC + @build 5th April, 2017 @created 3rd April, 2017 @package Component Builder - @subpackage language_placeholders.php + @subpackage language_translations.php @author Llewellyn van der Merwe @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'); /** - * Language_placeholders Controller + * Language_translations Controller */ -class ComponentbuilderControllerLanguage_placeholders extends JControllerAdmin +class ComponentbuilderControllerLanguage_translations extends JControllerAdmin { - protected $text_prefix = 'COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS'; + protected $text_prefix = 'COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS'; /** * Proxy for getModel. * @since 2.5 */ - public function getModel($name = 'Language_placeholder', $prefix = 'ComponentbuilderModel', $config = array()) + public function getModel($name = 'Language_translation', $prefix = 'ComponentbuilderModel', $config = array()) { $model = parent::getModel($name, $prefix, array('ignore_request' => true)); @@ -52,7 +52,7 @@ class ComponentbuilderControllerLanguage_placeholders extends JControllerAdmin JSession::checkToken() or die(JText::_('JINVALID_TOKEN')); // check if export is allowed for this user. $user = JFactory::getUser(); - if ($user->authorise('language_placeholder.export', 'com_componentbuilder') && $user->authorise('core.export', 'com_componentbuilder')) + if ($user->authorise('language_translation.export', 'com_componentbuilder') && $user->authorise('core.export', 'com_componentbuilder')) { // Get the input $input = JFactory::getApplication()->input; @@ -60,19 +60,19 @@ class ComponentbuilderControllerLanguage_placeholders extends JControllerAdmin // Sanitize the input JArrayHelper::toInteger($pks); // Get the model - $model = $this->getModel('Language_placeholders'); + $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_placeholders_'.$date->format('jS_F_Y'),'Language placeholders exported ('.$date->format('jS F, Y').')','language placeholders'); + 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_placeholders', false), $message, 'error'); + $this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=language_translations', false), $message, 'error'); return; } @@ -83,10 +83,10 @@ class ComponentbuilderControllerLanguage_placeholders extends JControllerAdmin JSession::checkToken() or die(JText::_('JINVALID_TOKEN')); // check if import is allowed for this user. $user = JFactory::getUser(); - if ($user->authorise('language_placeholder.import', 'com_componentbuilder') && $user->authorise('core.import', 'com_componentbuilder')) + if ($user->authorise('language_translation.import', 'com_componentbuilder') && $user->authorise('core.import', 'com_componentbuilder')) { // Get the import model - $model = $this->getModel('Language_placeholders'); + $model = $this->getModel('Language_translations'); // get the headers to import $headers = $model->getExImPortHeaders(); if (ComponentbuilderHelper::checkObject($headers)) @@ -94,18 +94,18 @@ class ComponentbuilderControllerLanguage_placeholders extends JControllerAdmin // Load headers to session. $session = JFactory::getSession(); $headers = json_encode($headers); - $session->set('language_placeholder_VDM_IMPORTHEADERS', $headers); - $session->set('backto_VDM_IMPORT', 'language_placeholders'); - $session->set('dataType_VDM_IMPORTINTO', 'language_placeholder'); + $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_PLACEHOLDERS'); + $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_placeholders', false), $message, 'error'); + $this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=language_translations', false), $message, 'error'); return; } diff --git a/admin/helpers/compiler.php b/admin/helpers/compiler.php index c8b003306..75b861d58 100644 --- a/admin/helpers/compiler.php +++ b/admin/helpers/compiler.php @@ -152,9 +152,7 @@ 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 = file_get_contents($this->bomPath); // first we do the static files @@ -162,12 +160,6 @@ class Compiler extends Infusion { 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')) diff --git a/admin/helpers/compiler/a_Get.php b/admin/helpers/compiler/a_Get.php index ca090fac7..8b5279a3b 100644 --- a/admin/helpers/compiler/a_Get.php +++ b/admin/helpers/compiler/a_Get.php @@ -163,11 +163,11 @@ class Get public $loadLineNr = false; /** - * The Language prefix + * The Placholder Language prefix * * @var string */ - public $langPrefix = 'COM_'; + public $langPrefix; /** * The Language content @@ -176,6 +176,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 * @@ -460,7 +488,7 @@ class Get 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 @@ -2979,6 +3007,230 @@ 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'))); + $query->where($this->db->quoteName('a.entranslation') . ' 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()) + { + 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 (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(($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); + if (in_array($this->componentID, $components)) + { + continue; + } + else + { + $components[] = $this->componentID; + } + } + else + { + $components = array($this->componentID); + } + // 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)); + + $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(); + } + } + /** * get the custom code from the system * diff --git a/admin/helpers/compiler/c_Fields.php b/admin/helpers/compiler/c_Fields.php index a6514a582..d6ba83837 100644 --- a/admin/helpers/compiler/c_Fields.php +++ b/admin/helpers/compiler/c_Fields.php @@ -1790,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])) { diff --git a/admin/helpers/compiler/e_Interpretation.php b/admin/helpers/compiler/e_Interpretation.php index d71b70880..28cce9bbd 100644 --- a/admin/helpers/compiler/e_Interpretation.php +++ b/admin/helpers/compiler/e_Interpretation.php @@ -5092,20 +5092,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() @@ -5141,20 +5135,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() @@ -5165,20 +5153,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() @@ -5186,20 +5168,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) @@ -7206,7 +7182,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;"; @@ -7572,7 +7548,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']."'));"; @@ -10643,7 +10620,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 = ''; @@ -10849,7 +10826,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 { diff --git a/admin/helpers/compiler/f_Infusion.php b/admin/helpers/compiler/f_Infusion.php index c462b82e4..715a42033 100644 --- a/admin/helpers/compiler/f_Infusion.php +++ b/admin/helpers/compiler/f_Infusion.php @@ -1067,33 +1067,124 @@ 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); + // 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 = file_get_contents($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) + { + // check if we sould install this translation (must be atleast 50% ready + $dif = bcdiv(count($languageStrings), $mainLangLoader[$area]); + $percentage = bcmul($dif, 100); + if ($percentage < 50) + { + // 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.'/'.$fileName.''; + } + } + // 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); } } } - } diff --git a/admin/helpers/componentbuilder.php b/admin/helpers/componentbuilder.php index 8b3a69a5d..b809ab676 100644 --- a/admin/helpers/componentbuilder.php +++ b/admin/helpers/componentbuilder.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage componentbuilder.php @@ -30,7 +30,16 @@ 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 @@ -1065,7 +1074,64 @@ abstract class ComponentbuilderHelper } 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. **/ @@ -1245,9 +1311,9 @@ 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_placeholder.access', 'com_componentbuilder') && $user->authorise('language_placeholder.submenu', 'com_componentbuilder')) + if ($user->authorise('language_translation.access', 'com_componentbuilder') && $user->authorise('language_translation.submenu', 'com_componentbuilder')) { - JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_SUBMENU_LANGUAGE_PLACEHOLDERS'), 'index.php?option=com_componentbuilder&view=language_placeholders', $submenu === 'language_placeholders'); + 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')) { diff --git a/admin/helpers/headercheck.php b/admin/helpers/headercheck.php index fc9cf2e68..21fa40c14 100644 --- a/admin/helpers/headercheck.php +++ b/admin/helpers/headercheck.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage headercheck.php diff --git a/admin/helpers/html/batch_.php b/admin/helpers/html/batch_.php index f223e253c..91a315f18 100644 --- a/admin/helpers/html/batch_.php +++ b/admin/helpers/html/batch_.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage batch_.php diff --git a/admin/helpers/indenter.php b/admin/helpers/indenter.php index 2393af18d..65ee15ba6 100644 --- a/admin/helpers/indenter.php +++ b/admin/helpers/indenter.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage indenter.php diff --git a/admin/helpers/js.php b/admin/helpers/js.php index dc6dcef98..f4aab0e13 100644 --- a/admin/helpers/js.php +++ b/admin/helpers/js.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage js.php diff --git a/admin/helpers/minify.php b/admin/helpers/minify.php index 56167fae6..740d97da5 100644 --- a/admin/helpers/minify.php +++ b/admin/helpers/minify.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage minify.php diff --git a/admin/language/en-GB/en-GB.com_componentbuilder.ini b/admin/language/en-GB/en-GB.com_componentbuilder.ini index 22797d706..85db72709 100644 --- a/admin/language/en-GB/en-GB.com_componentbuilder.ini +++ b/admin/language/en-GB/en-GB.com_componentbuilder.ini @@ -696,6 +696,7 @@ COM_COMPONENTBUILDER_ADMIN_VIEW_ZOOM_IN="Zoom In" COM_COMPONENTBUILDER_ADMIN_VIEW_ZOOM_OUT="Zoom Out" COM_COMPONENTBUILDER_ALL_IS_GOOD_PLEASE_CHECK_AGAIN_LATTER="All is good, please check again latter." COM_COMPONENTBUILDER_ALL_IS_GOOD_THERE_IN_NO_NOTICE_AT_THIS_TIME="All is good, there in no notice at this time." +COM_COMPONENTBUILDER_ALL_UNSAVED_WORK_WILL_BE_LOST_ARE_YOU_SURE_YOU_WANT_TO_CONTINUE="All unsaved work will be lost, are you sure you want to continue?" COM_COMPONENTBUILDER_ALWAYS_INSURE_THAT_YOU_HAVE_YOUR_LOCAL_COMPONENTS_BACKED_UP_BY_MAKING_AN_EXPORT_OF_ALL_YOUR_LOCAL_COMPONENTS_BEFORE_IMPORTING_ANY_NEW_COMPONENTS_SMALLMAKE_BSUREB_TO_MOVE_THIS_ZIPPED_BACKUP_PACKAGE_OUT_OF_THE_TMP_FOLDER_BEFORE_DOING_AN_IMPORTSMALLBR_IF_YOU_ARE_IMPORTING_A_PACKAGE_OF_A_THREERD_PARTY_JCB_PACKAGE_DEVELOPER_BMAKE_SURE_IT_IS_A_REPUTABLE_JCB_PACKAGE_DEVELOPERSB="Always insure that you have your local components backed up, by making an export of all your local components before importing any new components. (Make SURE to move this zipped backup package out of the tmp folder before doing an import)
If you are importing a package of a 3rd party JCB package developer, make sure it is a reputable JCB package developers!" COM_COMPONENTBUILDER_AUTHOR="Author" COM_COMPONENTBUILDER_A_FEW_CLOSED_ISSUES_FROM_GITHUB_IS_LOADING="A few closed issues from Github is loading" @@ -1489,8 +1490,7 @@ COM_COMPONENTBUILDER_DASHBOARD_HELP_DOCUMENTS="Help Documents

" COM_COMPONENTBUILDER_DASHBOARD_HELP_DOCUMENT_ADD="Add Help Document

" COM_COMPONENTBUILDER_DASHBOARD_JOOMLA_COMPONENTS="Joomla Components

" COM_COMPONENTBUILDER_DASHBOARD_JOOMLA_COMPONENT_ADD="Add Joomla Component

" -COM_COMPONENTBUILDER_DASHBOARD_LANGUAGE_PLACEHOLDERS="Language Placeholders

" -COM_COMPONENTBUILDER_DASHBOARD_LANGUAGE_PLACEHOLDER_ADD="Add Language Placeholder

" +COM_COMPONENTBUILDER_DASHBOARD_LANGUAGE_TRANSLATIONS="Language Translations

" COM_COMPONENTBUILDER_DASHBOARD_LAYOUTS="Layouts

" COM_COMPONENTBUILDER_DASHBOARD_LAYOUT_ADD="Add Layout

" COM_COMPONENTBUILDER_DASHBOARD_SITE_VIEWS="Site Views

" @@ -2269,7 +2269,7 @@ COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_FIELDTYPES="Select the file to impor COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_HELP_DOCUMENTS="Select the file to import data to help_documents." COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_JOOMLA_COMPONENTS="Select the file to import data to joomla_components." COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_LANGUAGES="Select the file to import data to languages." -COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_LANGUAGE_PLACEHOLDERS="Select the file to import data to language_placeholders." +COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_LANGUAGE_TRANSLATIONS="Select the file to import data to language_translations." COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_LAYOUTS="Select the file to import data to layouts." COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_SITE_VIEWS="Select the file to import data to site_views." COM_COMPONENTBUILDER_IMPORT_SELECT_FILE_FOR_SNIPPETS="Select the file to import data to snippets." @@ -3070,90 +3070,88 @@ COM_COMPONENTBUILDER_LANGUAGE_NAME_LABEL="Name" COM_COMPONENTBUILDER_LANGUAGE_NEW="A New Language" COM_COMPONENTBUILDER_LANGUAGE_ORDERING_LABEL="Ordering" COM_COMPONENTBUILDER_LANGUAGE_PERMISSION="Permissions" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER="Language Placeholder" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS="Language Placeholders" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_ACCESS="Language Placeholders Access" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_ACCESS_DESC="Allows the users in this group to access access language placeholders" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_BATCH_OPTIONS="Batch process the selected Language Placeholders" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_BATCH_TIP="All changes will be applied to all selected Language Placeholders" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_BATCH_USE="Language Placeholders Batch Use" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_BATCH_USE_DESC="Allows users in this group to use batch copy/update method of batch language placeholders" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_CREATE="Language Placeholders Create" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_CREATE_DESC="Allows the users in this group to create create language placeholders" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_DASHBOARD_ADD="Language Placeholders Dashboard Add" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_DASHBOARD_ADD_DESC="Allows the users in this group to update the dashboard add of the language placeholder" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_DASHBOARD_LIST="Language Placeholders Dashboard List" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_DASHBOARD_LIST_DESC="Allows the users in this group to update the dashboard list of the language placeholder" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_DELETE="Language Placeholders Delete" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_DELETE_DESC="Allows the users in this group to delete delete language placeholders" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EDIT="Language Placeholders Edit" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EDIT_DESC="Allows the users in this group to edit the language placeholder" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EDIT_OWN="Language Placeholders Edit Own" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EDIT_OWN_DESC="Allows the users in this group to edit edit own language placeholders created by them" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EDIT_STATE="Language Placeholders Edit State" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EDIT_STATE_DESC="Allows the users in this group to update the state of the language placeholder" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EDIT_VERSION="Language Placeholders Edit Version" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EDIT_VERSION_DESC="Allows users in this group to edit versions of version language placeholders" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EXPORT="Language Placeholders Export" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_EXPORT_DESC="Allows the users in this group to export export language placeholders" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_IMPORT="Language Placeholders Import" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_IMPORT_DESC="Allows the users in this group to import import language placeholders" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_ARCHIVED="%s Language Placeholders archived." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_ARCHIVED_1="%s Language Placeholder archived." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_CHECKED_IN_0="No Language Placeholder successfully checked in." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_CHECKED_IN_1="%d Language Placeholder successfully checked in." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_CHECKED_IN_MORE="%d Language Placeholders successfully checked in." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_DELETED="%s Language Placeholders deleted." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_DELETED_1="%s Language Placeholder deleted." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_FEATURED="%s Language Placeholders featured." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_FEATURED_1="%s Language Placeholder featured." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_PUBLISHED="%s Language Placeholders published." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_PUBLISHED_1="%s Language Placeholder published." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_TRASHED="%s Language Placeholders trashed." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_TRASHED_1="%s Language Placeholder trashed." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_UNFEATURED="%s Language Placeholders unfeatured." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_UNFEATURED_1="%s Language Placeholder unfeatured." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_UNPUBLISHED="%s Language Placeholders unpublished." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_N_ITEMS_UNPUBLISHED_1="%s Language Placeholder unpublished." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_SUBMENU="Language Placeholders Submenu" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDERS_SUBMENU_DESC="Allows the users in this group to update the submenu of the language placeholder" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_COMPONENTS="Components" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_COMPONENTS_LABEL="Components" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_CREATED_BY_DESC="The user that created this Language Placeholder." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_CREATED_BY_LABEL="Created By" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_CREATED_DATE_DESC="The date this Language Placeholder was created." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_CREATED_DATE_LABEL="Created Date" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_DETAILS="Details" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_EDIT="Editing the Language Placeholder" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_ERROR_UNIQUE_ALIAS="Another Language Placeholder has the same alias." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_ID="Id" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_LANGUAGE_LABEL="Language" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_MODIFIED_BY_DESC="The last user that modified this Language Placeholder." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_MODIFIED_BY_LABEL="Modified By" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_MODIFIED_DATE_DESC="The date this Language Placeholder was modified." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_MODIFIED_DATE_LABEL="Modified Date" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_NEW="A New Language Placeholder" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_ORDERING_LABEL="Ordering" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_PERMISSION="Permissions" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_PLACEHOLDER="Placeholder" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_PLACEHOLDER_DESCRIPTION="The language placeholder in the code" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_PLACEHOLDER_HINT="Automatically generated!" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_PLACEHOLDER_LABEL="Placeholder" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_PUBLISHING="Publishing" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_SAVE_WARNING="Alias already existed so a number was added at the end. You can re-edit the Language Placeholder to customise the alias." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_STATUS="Status" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_TRANSLATION="Translation" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_TRANSLATION_DESCRIPTION="The translation strings." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_TRANSLATION_HINT="Translated String Here" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_TRANSLATION_LABEL="Translated String" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_TRANSLATION_SELECT="Click here" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_UPDATE_PLACEHOLDERS_BUTTON_ACCESS="Language Placeholder Update Placeholders Button Access" -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_UPDATE_PLACEHOLDERS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the update placeholders button." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_VERSION_DESC="A count of the number of times this Language Placeholder has been revised." -COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_VERSION_LABEL="Revision" COM_COMPONENTBUILDER_LANGUAGE_PUBLISHING="Publishing" COM_COMPONENTBUILDER_LANGUAGE_SAVE_WARNING="Alias already existed so a number was added at the end. You can re-edit the Language to customise the alias." COM_COMPONENTBUILDER_LANGUAGE_STATUS="Status" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION="Language Translation" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS="Language Translations" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_ACCESS="Language Translations Access" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_ACCESS_DESC="Allows the users in this group to access access language translations" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_BATCH_OPTIONS="Batch process the selected Language Translations" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_BATCH_TIP="All changes will be applied to all selected Language Translations" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_BATCH_USE="Language Translations Batch Use" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_BATCH_USE_DESC="Allows users in this group to use batch copy/update method of batch language translations" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_CREATE="Language Translations Create" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_CREATE_DESC="Allows the users in this group to create create language translations" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_DASHBOARD_LIST="Language Translations Dashboard List" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_DASHBOARD_LIST_DESC="Allows the users in this group to update the dashboard list of the language translation" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_DELETE="Language Translations Delete" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_DELETE_DESC="Allows the users in this group to delete delete language translations" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT="Language Translations Edit" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_DESC="Allows the users in this group to edit the language translation" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_OWN="Language Translations Edit Own" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_OWN_DESC="Allows the users in this group to edit edit own language translations created by them" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_STATE="Language Translations Edit State" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_STATE_DESC="Allows the users in this group to update the state of the language translation" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_VERSION="Language Translations Edit Version" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_VERSION_DESC="Allows users in this group to edit versions of version language translations" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EXPORT="Language Translations Export" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EXPORT_DESC="Allows the users in this group to export export language translations" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_IMPORT="Language Translations Import" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_IMPORT_DESC="Allows the users in this group to import import language translations" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_N_ITEMS_ARCHIVED="%s Language Translations archived." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_N_ITEMS_ARCHIVED_1="%s Language Translation archived." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_N_ITEMS_CHECKED_IN_0="No Language Translation successfully checked in." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_N_ITEMS_CHECKED_IN_1="%d Language Translation successfully checked in." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_N_ITEMS_CHECKED_IN_MORE="%d Language Translations successfully checked in." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_N_ITEMS_DELETED="%s Language Translations deleted." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_N_ITEMS_DELETED_1="%s Language Translation deleted." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_N_ITEMS_FEATURED="%s Language Translations featured." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_N_ITEMS_FEATURED_1="%s Language Translation featured." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_N_ITEMS_PUBLISHED="%s Language Translations published." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_N_ITEMS_PUBLISHED_1="%s Language Translation published." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_N_ITEMS_TRASHED="%s Language Translations trashed." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_N_ITEMS_TRASHED_1="%s Language Translation trashed." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_N_ITEMS_UNFEATURED="%s Language Translations unfeatured." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_N_ITEMS_UNFEATURED_1="%s Language Translation unfeatured." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_N_ITEMS_UNPUBLISHED="%s Language Translations unpublished." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_N_ITEMS_UNPUBLISHED_1="%s Language Translation unpublished." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_SUBMENU="Language Translations Submenu" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_SUBMENU_DESC="Allows the users in this group to update the submenu of the language translation" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_COMPONENTS="Components" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_COMPONENTS_LABEL="Components" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_CREATED_BY_DESC="The user that created this Language Translation." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_CREATED_BY_LABEL="Created By" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_CREATED_DATE_DESC="The date this Language Translation was created." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_CREATED_DATE_LABEL="Created Date" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_DETAILS="Details" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_EDIT="Editing the Language Translation" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_ENTRANSLATION="Entranslation" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_ENTRANSLATION_HINT="Automatically generated!" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_ENTRANSLATION_LABEL="English String" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_ERROR_UNIQUE_ALIAS="Another Language Translation has the same alias." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_ID="Id" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_LANGUAGE="Language" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_LANGUAGE_LABEL="Language" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_MODIFIED_BY_DESC="The last user that modified this Language Translation." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_MODIFIED_BY_LABEL="Modified By" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_MODIFIED_DATE_DESC="The date this Language Translation was modified." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_MODIFIED_DATE_LABEL="Modified Date" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_NEW="A New Language Translation" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_ORDERING_LABEL="Ordering" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_PERMISSION="Permissions" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_PUBLISHING="Publishing" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_SAVE_WARNING="Alias already existed so a number was added at the end. You can re-edit the Language Translation to customise the alias." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_STATUS="Status" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_TRANSLATION="Translation" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_TRANSLATION_DESCRIPTION="The translation strings." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_TRANSLATION_HINT="Translated String Here" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_TRANSLATION_LABEL="Translated String" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_TRANSLATION_SELECT="add/edit" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_UPDATE_PLACEHOLDERS_BUTTON_ACCESS="Language Translation Update Placeholders Button Access" +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_UPDATE_PLACEHOLDERS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the update placeholders button." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_VERSION_DESC="A count of the number of times this Language Translation has been revised." +COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_VERSION_LABEL="Revision" COM_COMPONENTBUILDER_LANGUAGE_VERSION_DESC="A count of the number of times this Language has been revised." COM_COMPONENTBUILDER_LANGUAGE_VERSION_LABEL="Revision" COM_COMPONENTBUILDER_LAYOUT="Layout" @@ -3833,7 +3831,7 @@ COM_COMPONENTBUILDER_SUBMENU_FIELDTYPES="Fieldtypes" COM_COMPONENTBUILDER_SUBMENU_HELP_DOCUMENTS="Help Documents" COM_COMPONENTBUILDER_SUBMENU_JOOMLA_COMPONENTS="Joomla Components" COM_COMPONENTBUILDER_SUBMENU_LANGUAGES="Languages" -COM_COMPONENTBUILDER_SUBMENU_LANGUAGE_PLACEHOLDERS="Language Placeholders" +COM_COMPONENTBUILDER_SUBMENU_LANGUAGE_TRANSLATIONS="Language Translations" COM_COMPONENTBUILDER_SUBMENU_LAYOUTS="Layouts" COM_COMPONENTBUILDER_SUBMENU_SITE_VIEWS="Site Views" COM_COMPONENTBUILDER_SUBMENU_SNIPPETS="Snippets" @@ -3951,6 +3949,7 @@ COM_COMPONENTBUILDER_THE_README_IS_LOADING="The readme is loading" COM_COMPONENTBUILDER_THE_WIKI_IS_LOADING="The wiki is loading" COM_COMPONENTBUILDER_THIS_PACKAGE_HAS_NO_KEY="This package has no key." 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="To change the package owner defaults. Open the JCB Global Options, go to the Company tab and add the correct company details there." +COM_COMPONENTBUILDER_TRANSLATION="Translation" COM_COMPONENTBUILDER_UPDATE_PLACEHOLDERS="Update Placeholders" COM_COMPONENTBUILDER_USE_BATCH="Use Batch" COM_COMPONENTBUILDER_USE_BATCH_DESC=" Allows users in this group to use batch copy/update method." diff --git a/admin/language/en-GB/en-GB.com_componentbuilder.sys.ini b/admin/language/en-GB/en-GB.com_componentbuilder.sys.ini index f6bb5169e..16073e5f2 100644 --- a/admin/language/en-GB/en-GB.com_componentbuilder.sys.ini +++ b/admin/language/en-GB/en-GB.com_componentbuilder.sys.ini @@ -10,7 +10,7 @@ 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_PLACEHOLDERS="Language Placeholders" +COM_COMPONENTBUILDER_MENU_LANGUAGE_TRANSLATIONS="Language Translations" COM_COMPONENTBUILDER_MENU_LAYOUTS="Layouts" COM_COMPONENTBUILDER_MENU_SITE_VIEWS="Site Views" COM_COMPONENTBUILDER_MENU_SNIPPETS="Snippets" diff --git a/admin/layouts/admin_view/css_fullwidth.php b/admin/layouts/admin_view/css_fullwidth.php index 550c0dae9..0cb611922 100644 --- a/admin/layouts/admin_view/css_fullwidth.php +++ b/admin/layouts/admin_view/css_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage css_fullwidth.php diff --git a/admin/layouts/admin_view/custom_buttons_fullwidth.php b/admin/layouts/admin_view/custom_buttons_fullwidth.php index 102e6a03a..706c3bbe0 100644 --- a/admin/layouts/admin_view/custom_buttons_fullwidth.php +++ b/admin/layouts/admin_view/custom_buttons_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_buttons_fullwidth.php diff --git a/admin/layouts/admin_view/custom_buttons_left.php b/admin/layouts/admin_view/custom_buttons_left.php index 61c408bfb..8c417c045 100644 --- a/admin/layouts/admin_view/custom_buttons_left.php +++ b/admin/layouts/admin_view/custom_buttons_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_buttons_left.php diff --git a/admin/layouts/admin_view/custom_import_fullwidth.php b/admin/layouts/admin_view/custom_import_fullwidth.php index 6944ad102..d8b46734c 100644 --- a/admin/layouts/admin_view/custom_import_fullwidth.php +++ b/admin/layouts/admin_view/custom_import_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_import_fullwidth.php diff --git a/admin/layouts/admin_view/fields_fullwidth.php b/admin/layouts/admin_view/fields_fullwidth.php index 6c1af6d8b..ac277b713 100644 --- a/admin/layouts/admin_view/fields_fullwidth.php +++ b/admin/layouts/admin_view/fields_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage fields_fullwidth.php diff --git a/admin/layouts/admin_view/javascript_fullwidth.php b/admin/layouts/admin_view/javascript_fullwidth.php index b67fdf81e..f257dc31f 100644 --- a/admin/layouts/admin_view/javascript_fullwidth.php +++ b/admin/layouts/admin_view/javascript_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage javascript_fullwidth.php diff --git a/admin/layouts/admin_view/linked_components_fullwidth.php b/admin/layouts/admin_view/linked_components_fullwidth.php index 3039789b5..994d07cc7 100644 --- a/admin/layouts/admin_view/linked_components_fullwidth.php +++ b/admin/layouts/admin_view/linked_components_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage linked_components_fullwidth.php diff --git a/admin/layouts/admin_view/mysql_fullwidth.php b/admin/layouts/admin_view/mysql_fullwidth.php index f9f7d484a..08cfebad3 100644 --- a/admin/layouts/admin_view/mysql_fullwidth.php +++ b/admin/layouts/admin_view/mysql_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage mysql_fullwidth.php diff --git a/admin/layouts/admin_view/mysql_left.php b/admin/layouts/admin_view/mysql_left.php index bbf4680d6..0e15001d6 100644 --- a/admin/layouts/admin_view/mysql_left.php +++ b/admin/layouts/admin_view/mysql_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage mysql_left.php diff --git a/admin/layouts/admin_view/php_fullwidth.php b/admin/layouts/admin_view/php_fullwidth.php index cecc00e79..0f9ee9163 100644 --- a/admin/layouts/admin_view/php_fullwidth.php +++ b/admin/layouts/admin_view/php_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage php_fullwidth.php diff --git a/admin/layouts/admin_view/publishing.php b/admin/layouts/admin_view/publishing.php index fd7f0e9c1..b33a65282 100644 --- a/admin/layouts/admin_view/publishing.php +++ b/admin/layouts/admin_view/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/admin_view/publlshing.php b/admin/layouts/admin_view/publlshing.php index 102b733fa..7505c2d8b 100644 --- a/admin/layouts/admin_view/publlshing.php +++ b/admin/layouts/admin_view/publlshing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/admin_view/settings_above.php b/admin/layouts/admin_view/settings_above.php index 0ca0ff6d5..99e29760d 100644 --- a/admin/layouts/admin_view/settings_above.php +++ b/admin/layouts/admin_view/settings_above.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage settings_above.php diff --git a/admin/layouts/admin_view/settings_left.php b/admin/layouts/admin_view/settings_left.php index 6fdeeef5c..6241ae506 100644 --- a/admin/layouts/admin_view/settings_left.php +++ b/admin/layouts/admin_view/settings_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage settings_left.php diff --git a/admin/layouts/admin_view/settings_right.php b/admin/layouts/admin_view/settings_right.php index 1ffb265b4..6cf9e090a 100644 --- a/admin/layouts/admin_view/settings_right.php +++ b/admin/layouts/admin_view/settings_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage settings_right.php diff --git a/admin/layouts/admin_view/settings_under.php b/admin/layouts/admin_view/settings_under.php index b09035ef6..d03126be0 100644 --- a/admin/layouts/admin_view/settings_under.php +++ b/admin/layouts/admin_view/settings_under.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage settings_under.php diff --git a/admin/layouts/batchselection.php b/admin/layouts/batchselection.php index bee289666..18002ac46 100644 --- a/admin/layouts/batchselection.php +++ b/admin/layouts/batchselection.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage batchselection.php diff --git a/admin/layouts/custom_admin_view/custom_buttons_fullwidth.php b/admin/layouts/custom_admin_view/custom_buttons_fullwidth.php index 7673dde26..063f67d61 100644 --- a/admin/layouts/custom_admin_view/custom_buttons_fullwidth.php +++ b/admin/layouts/custom_admin_view/custom_buttons_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_buttons_fullwidth.php diff --git a/admin/layouts/custom_admin_view/custom_buttons_left.php b/admin/layouts/custom_admin_view/custom_buttons_left.php index 61c408bfb..8c417c045 100644 --- a/admin/layouts/custom_admin_view/custom_buttons_left.php +++ b/admin/layouts/custom_admin_view/custom_buttons_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_buttons_left.php diff --git a/admin/layouts/custom_admin_view/custom_script_fullwidth.php b/admin/layouts/custom_admin_view/custom_script_fullwidth.php index 3a97729c4..3198d3abe 100644 --- a/admin/layouts/custom_admin_view/custom_script_fullwidth.php +++ b/admin/layouts/custom_admin_view/custom_script_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_script_fullwidth.php diff --git a/admin/layouts/custom_admin_view/details_above.php b/admin/layouts/custom_admin_view/details_above.php index 504996d9f..34e490c28 100644 --- a/admin/layouts/custom_admin_view/details_above.php +++ b/admin/layouts/custom_admin_view/details_above.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_above.php diff --git a/admin/layouts/custom_admin_view/details_fullwidth.php b/admin/layouts/custom_admin_view/details_fullwidth.php index cce076d1b..1186f0475 100644 --- a/admin/layouts/custom_admin_view/details_fullwidth.php +++ b/admin/layouts/custom_admin_view/details_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_fullwidth.php diff --git a/admin/layouts/custom_admin_view/details_left.php b/admin/layouts/custom_admin_view/details_left.php index 4f0775c74..cc5e07514 100644 --- a/admin/layouts/custom_admin_view/details_left.php +++ b/admin/layouts/custom_admin_view/details_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/custom_admin_view/details_right.php b/admin/layouts/custom_admin_view/details_right.php index 4eb6d2668..3c5d9b135 100644 --- a/admin/layouts/custom_admin_view/details_right.php +++ b/admin/layouts/custom_admin_view/details_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/custom_admin_view/details_rightside.php b/admin/layouts/custom_admin_view/details_rightside.php index 88e5cd21a..1ba61b2bc 100644 --- a/admin/layouts/custom_admin_view/details_rightside.php +++ b/admin/layouts/custom_admin_view/details_rightside.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_rightside.php diff --git a/admin/layouts/custom_admin_view/details_under.php b/admin/layouts/custom_admin_view/details_under.php index 6b7267268..a4c7b61cc 100644 --- a/admin/layouts/custom_admin_view/details_under.php +++ b/admin/layouts/custom_admin_view/details_under.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_under.php diff --git a/admin/layouts/custom_admin_view/linked_components_fullwidth.php b/admin/layouts/custom_admin_view/linked_components_fullwidth.php index 63103555e..85e97268d 100644 --- a/admin/layouts/custom_admin_view/linked_components_fullwidth.php +++ b/admin/layouts/custom_admin_view/linked_components_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage linked_components_fullwidth.php diff --git a/admin/layouts/custom_admin_view/publishing.php b/admin/layouts/custom_admin_view/publishing.php index fd7f0e9c1..b33a65282 100644 --- a/admin/layouts/custom_admin_view/publishing.php +++ b/admin/layouts/custom_admin_view/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/custom_admin_view/publlshing.php b/admin/layouts/custom_admin_view/publlshing.php index 102b733fa..7505c2d8b 100644 --- a/admin/layouts/custom_admin_view/publlshing.php +++ b/admin/layouts/custom_admin_view/publlshing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/custom_code/details_above.php b/admin/layouts/custom_code/details_above.php index 86f1de6af..ef90f262a 100644 --- a/admin/layouts/custom_code/details_above.php +++ b/admin/layouts/custom_code/details_above.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_above.php diff --git a/admin/layouts/custom_code/details_fullwidth.php b/admin/layouts/custom_code/details_fullwidth.php index 504b775b8..542f0d0cb 100644 --- a/admin/layouts/custom_code/details_fullwidth.php +++ b/admin/layouts/custom_code/details_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_fullwidth.php diff --git a/admin/layouts/custom_code/details_left.php b/admin/layouts/custom_code/details_left.php index 341593b48..d3490529a 100644 --- a/admin/layouts/custom_code/details_left.php +++ b/admin/layouts/custom_code/details_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/custom_code/details_right.php b/admin/layouts/custom_code/details_right.php index 2a9885434..06c1df0d4 100644 --- a/admin/layouts/custom_code/details_right.php +++ b/admin/layouts/custom_code/details_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/custom_code/details_under.php b/admin/layouts/custom_code/details_under.php index 6b7267268..a4c7b61cc 100644 --- a/admin/layouts/custom_code/details_under.php +++ b/admin/layouts/custom_code/details_under.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_under.php diff --git a/admin/layouts/custom_code/publishing.php b/admin/layouts/custom_code/publishing.php index fd7f0e9c1..b33a65282 100644 --- a/admin/layouts/custom_code/publishing.php +++ b/admin/layouts/custom_code/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/custom_code/publlshing.php b/admin/layouts/custom_code/publlshing.php index 102b733fa..7505c2d8b 100644 --- a/admin/layouts/custom_code/publlshing.php +++ b/admin/layouts/custom_code/publlshing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/dynamic_get/abacus_fullwidth.php b/admin/layouts/dynamic_get/abacus_fullwidth.php index e79581b91..837a3e010 100644 --- a/admin/layouts/dynamic_get/abacus_fullwidth.php +++ b/admin/layouts/dynamic_get/abacus_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage abacus_fullwidth.php diff --git a/admin/layouts/dynamic_get/abacus_left.php b/admin/layouts/dynamic_get/abacus_left.php index cd978c29e..297af2b5a 100644 --- a/admin/layouts/dynamic_get/abacus_left.php +++ b/admin/layouts/dynamic_get/abacus_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage abacus_left.php diff --git a/admin/layouts/dynamic_get/custom_script_fullwidth.php b/admin/layouts/dynamic_get/custom_script_fullwidth.php index 286f1a279..df2c91bba 100644 --- a/admin/layouts/dynamic_get/custom_script_fullwidth.php +++ b/admin/layouts/dynamic_get/custom_script_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_script_fullwidth.php diff --git a/admin/layouts/dynamic_get/gettable_above.php b/admin/layouts/dynamic_get/gettable_above.php index fe8cab238..059fd9440 100644 --- a/admin/layouts/dynamic_get/gettable_above.php +++ b/admin/layouts/dynamic_get/gettable_above.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage gettable_above.php diff --git a/admin/layouts/dynamic_get/gettable_fullwidth.php b/admin/layouts/dynamic_get/gettable_fullwidth.php index 49cfba9c5..750e8441d 100644 --- a/admin/layouts/dynamic_get/gettable_fullwidth.php +++ b/admin/layouts/dynamic_get/gettable_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage gettable_fullwidth.php diff --git a/admin/layouts/dynamic_get/gettable_left.php b/admin/layouts/dynamic_get/gettable_left.php index 573df0c6b..2b2b47e9a 100644 --- a/admin/layouts/dynamic_get/gettable_left.php +++ b/admin/layouts/dynamic_get/gettable_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage gettable_left.php diff --git a/admin/layouts/dynamic_get/gettable_right.php b/admin/layouts/dynamic_get/gettable_right.php index ab92d21ed..784a02992 100644 --- a/admin/layouts/dynamic_get/gettable_right.php +++ b/admin/layouts/dynamic_get/gettable_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage gettable_right.php diff --git a/admin/layouts/dynamic_get/gettable_under.php b/admin/layouts/dynamic_get/gettable_under.php index 89dcb1824..e43f3c349 100644 --- a/admin/layouts/dynamic_get/gettable_under.php +++ b/admin/layouts/dynamic_get/gettable_under.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage gettable_under.php diff --git a/admin/layouts/dynamic_get/publishing.php b/admin/layouts/dynamic_get/publishing.php index fd7f0e9c1..b33a65282 100644 --- a/admin/layouts/dynamic_get/publishing.php +++ b/admin/layouts/dynamic_get/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/dynamic_get/publlshing.php b/admin/layouts/dynamic_get/publlshing.php index 102b733fa..7505c2d8b 100644 --- a/admin/layouts/dynamic_get/publlshing.php +++ b/admin/layouts/dynamic_get/publlshing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/field/details_fullwidth.php b/admin/layouts/field/details_fullwidth.php index 4e29edd30..44d8baccf 100644 --- a/admin/layouts/field/details_fullwidth.php +++ b/admin/layouts/field/details_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_fullwidth.php diff --git a/admin/layouts/field/details_left.php b/admin/layouts/field/details_left.php index 3995154e7..191999e08 100644 --- a/admin/layouts/field/details_left.php +++ b/admin/layouts/field/details_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/field/details_right.php b/admin/layouts/field/details_right.php index b59a4ce91..fa056bd4b 100644 --- a/admin/layouts/field/details_right.php +++ b/admin/layouts/field/details_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/field/details_under.php b/admin/layouts/field/details_under.php index 6b7267268..a4c7b61cc 100644 --- a/admin/layouts/field/details_under.php +++ b/admin/layouts/field/details_under.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_under.php diff --git a/admin/layouts/field/linked_admin_views_fullwidth.php b/admin/layouts/field/linked_admin_views_fullwidth.php index d57f044f1..4a0b49177 100644 --- a/admin/layouts/field/linked_admin_views_fullwidth.php +++ b/admin/layouts/field/linked_admin_views_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage linked_admin_views_fullwidth.php diff --git a/admin/layouts/field/publishing.php b/admin/layouts/field/publishing.php index fd7f0e9c1..b33a65282 100644 --- a/admin/layouts/field/publishing.php +++ b/admin/layouts/field/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/field/publlshing.php b/admin/layouts/field/publlshing.php index 102b733fa..7505c2d8b 100644 --- a/admin/layouts/field/publlshing.php +++ b/admin/layouts/field/publlshing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/field/scripts_left.php b/admin/layouts/field/scripts_left.php index ad05034b4..2c8fec09c 100644 --- a/admin/layouts/field/scripts_left.php +++ b/admin/layouts/field/scripts_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage scripts_left.php diff --git a/admin/layouts/field/scripts_right.php b/admin/layouts/field/scripts_right.php index 83967e257..e56eb310c 100644 --- a/admin/layouts/field/scripts_right.php +++ b/admin/layouts/field/scripts_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage scripts_right.php diff --git a/admin/layouts/fieldtype/details_left.php b/admin/layouts/fieldtype/details_left.php index 4c6d7851d..2d4b44214 100644 --- a/admin/layouts/fieldtype/details_left.php +++ b/admin/layouts/fieldtype/details_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/fieldtype/details_right.php b/admin/layouts/fieldtype/details_right.php index 5a5c2c7eb..2cd249bee 100644 --- a/admin/layouts/fieldtype/details_right.php +++ b/admin/layouts/fieldtype/details_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/fieldtype/fields_fullwidth.php b/admin/layouts/fieldtype/fields_fullwidth.php index b1026dc58..28f1a2baf 100644 --- a/admin/layouts/fieldtype/fields_fullwidth.php +++ b/admin/layouts/fieldtype/fields_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage fields_fullwidth.php diff --git a/admin/layouts/fieldtype/publishing.php b/admin/layouts/fieldtype/publishing.php index fd7f0e9c1..b33a65282 100644 --- a/admin/layouts/fieldtype/publishing.php +++ b/admin/layouts/fieldtype/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/fieldtype/publlshing.php b/admin/layouts/fieldtype/publlshing.php index 102b733fa..7505c2d8b 100644 --- a/admin/layouts/fieldtype/publlshing.php +++ b/admin/layouts/fieldtype/publlshing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/help_document/details_above.php b/admin/layouts/help_document/details_above.php index be3f279c1..8aeea4642 100644 --- a/admin/layouts/help_document/details_above.php +++ b/admin/layouts/help_document/details_above.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_above.php diff --git a/admin/layouts/help_document/details_fullwidth.php b/admin/layouts/help_document/details_fullwidth.php index 3860f070c..73fccb3df 100644 --- a/admin/layouts/help_document/details_fullwidth.php +++ b/admin/layouts/help_document/details_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_fullwidth.php diff --git a/admin/layouts/help_document/details_left.php b/admin/layouts/help_document/details_left.php index 620d9a485..b3cb99a24 100644 --- a/admin/layouts/help_document/details_left.php +++ b/admin/layouts/help_document/details_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/help_document/details_right.php b/admin/layouts/help_document/details_right.php index 86b4974f9..9bc7cf32b 100644 --- a/admin/layouts/help_document/details_right.php +++ b/admin/layouts/help_document/details_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/help_document/details_under.php b/admin/layouts/help_document/details_under.php index 6b7267268..a4c7b61cc 100644 --- a/admin/layouts/help_document/details_under.php +++ b/admin/layouts/help_document/details_under.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_under.php diff --git a/admin/layouts/help_document/publishing.php b/admin/layouts/help_document/publishing.php index fd7f0e9c1..b33a65282 100644 --- a/admin/layouts/help_document/publishing.php +++ b/admin/layouts/help_document/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/help_document/publlshing.php b/admin/layouts/help_document/publlshing.php index bfe84d83b..a5f98e954 100644 --- a/admin/layouts/help_document/publlshing.php +++ b/admin/layouts/help_document/publlshing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/joomla_component/admin_views_fullwidth.php b/admin/layouts/joomla_component/admin_views_fullwidth.php index 821ca1c1e..05a9cac95 100644 --- a/admin/layouts/joomla_component/admin_views_fullwidth.php +++ b/admin/layouts/joomla_component/admin_views_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage admin_views_fullwidth.php diff --git a/admin/layouts/joomla_component/custom_admin_views_fullwidth.php b/admin/layouts/joomla_component/custom_admin_views_fullwidth.php index 66d714542..bc89a5555 100644 --- a/admin/layouts/joomla_component/custom_admin_views_fullwidth.php +++ b/admin/layouts/joomla_component/custom_admin_views_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_admin_views_fullwidth.php diff --git a/admin/layouts/joomla_component/details_above.php b/admin/layouts/joomla_component/details_above.php index 504996d9f..34e490c28 100644 --- a/admin/layouts/joomla_component/details_above.php +++ b/admin/layouts/joomla_component/details_above.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_above.php diff --git a/admin/layouts/joomla_component/details_left.php b/admin/layouts/joomla_component/details_left.php index 05344d065..f17052143 100644 --- a/admin/layouts/joomla_component/details_left.php +++ b/admin/layouts/joomla_component/details_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/joomla_component/details_right.php b/admin/layouts/joomla_component/details_right.php index c584cc88c..25d0c15bf 100644 --- a/admin/layouts/joomla_component/details_right.php +++ b/admin/layouts/joomla_component/details_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/joomla_component/details_under.php b/admin/layouts/joomla_component/details_under.php index 6b7267268..a4c7b61cc 100644 --- a/admin/layouts/joomla_component/details_under.php +++ b/admin/layouts/joomla_component/details_under.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_under.php diff --git a/admin/layouts/joomla_component/dynamic_build_beta_fullwidth.php b/admin/layouts/joomla_component/dynamic_build_beta_fullwidth.php index ba1c42727..1cdbf48b0 100644 --- a/admin/layouts/joomla_component/dynamic_build_beta_fullwidth.php +++ b/admin/layouts/joomla_component/dynamic_build_beta_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage dynamic_build_beta_fullwidth.php diff --git a/admin/layouts/joomla_component/dynamic_integration_fullwidth.php b/admin/layouts/joomla_component/dynamic_integration_fullwidth.php index 647c9ffa5..6fbe413de 100644 --- a/admin/layouts/joomla_component/dynamic_integration_fullwidth.php +++ b/admin/layouts/joomla_component/dynamic_integration_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage dynamic_integration_fullwidth.php diff --git a/admin/layouts/joomla_component/libs_helpers_fullwidth.php b/admin/layouts/joomla_component/libs_helpers_fullwidth.php index 76695645d..44d216622 100644 --- a/admin/layouts/joomla_component/libs_helpers_fullwidth.php +++ b/admin/layouts/joomla_component/libs_helpers_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage libs_helpers_fullwidth.php diff --git a/admin/layouts/joomla_component/mysql_fullwidth.php b/admin/layouts/joomla_component/mysql_fullwidth.php index d44e2d48f..4711b8cc1 100644 --- a/admin/layouts/joomla_component/mysql_fullwidth.php +++ b/admin/layouts/joomla_component/mysql_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage mysql_fullwidth.php diff --git a/admin/layouts/joomla_component/php_fullwidth.php b/admin/layouts/joomla_component/php_fullwidth.php index 50ca04d72..ccf25863c 100644 --- a/admin/layouts/joomla_component/php_fullwidth.php +++ b/admin/layouts/joomla_component/php_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage php_fullwidth.php diff --git a/admin/layouts/joomla_component/publishing.php b/admin/layouts/joomla_component/publishing.php index fd7f0e9c1..b33a65282 100644 --- a/admin/layouts/joomla_component/publishing.php +++ b/admin/layouts/joomla_component/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/joomla_component/publlshing.php b/admin/layouts/joomla_component/publlshing.php index 102b733fa..7505c2d8b 100644 --- a/admin/layouts/joomla_component/publlshing.php +++ b/admin/layouts/joomla_component/publlshing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/joomla_component/readme_left.php b/admin/layouts/joomla_component/readme_left.php index 9856adfcd..fde1474a5 100644 --- a/admin/layouts/joomla_component/readme_left.php +++ b/admin/layouts/joomla_component/readme_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage readme_left.php diff --git a/admin/layouts/joomla_component/readme_right.php b/admin/layouts/joomla_component/readme_right.php index 93168fe04..0d4902683 100644 --- a/admin/layouts/joomla_component/readme_right.php +++ b/admin/layouts/joomla_component/readme_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage readme_right.php diff --git a/admin/layouts/joomla_component/settings_left.php b/admin/layouts/joomla_component/settings_left.php index a9448bca5..43537ac04 100644 --- a/admin/layouts/joomla_component/settings_left.php +++ b/admin/layouts/joomla_component/settings_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage settings_left.php diff --git a/admin/layouts/joomla_component/settings_right.php b/admin/layouts/joomla_component/settings_right.php index 17b1f2fd7..fb394b979 100644 --- a/admin/layouts/joomla_component/settings_right.php +++ b/admin/layouts/joomla_component/settings_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage settings_right.php diff --git a/admin/layouts/joomla_component/site_views_fullwidth.php b/admin/layouts/joomla_component/site_views_fullwidth.php index 882082134..6c19ac874 100644 --- a/admin/layouts/joomla_component/site_views_fullwidth.php +++ b/admin/layouts/joomla_component/site_views_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage site_views_fullwidth.php diff --git a/admin/layouts/language/details_left.php b/admin/layouts/language/details_left.php index bbd6dcc61..af41d6b66 100644 --- a/admin/layouts/language/details_left.php +++ b/admin/layouts/language/details_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/language/details_right.php b/admin/layouts/language/details_right.php index 5668a76fa..ac453907c 100644 --- a/admin/layouts/language/details_right.php +++ b/admin/layouts/language/details_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/language/publishing.php b/admin/layouts/language/publishing.php index fd7f0e9c1..b33a65282 100644 --- a/admin/layouts/language/publishing.php +++ b/admin/layouts/language/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/language/publlshing.php b/admin/layouts/language/publlshing.php index 102b733fa..7505c2d8b 100644 --- a/admin/layouts/language/publlshing.php +++ b/admin/layouts/language/publlshing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/language_placeholder/details_above.php b/admin/layouts/language_translation/details_above.php similarity index 96% rename from admin/layouts/language_placeholder/details_above.php rename to admin/layouts/language_translation/details_above.php index cd900471d..4306eae55 100644 --- a/admin/layouts/language_placeholder/details_above.php +++ b/admin/layouts/language_translation/details_above.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_above.php diff --git a/admin/layouts/language_placeholder/details_fullwidth.php b/admin/layouts/language_translation/details_fullwidth.php similarity index 96% rename from admin/layouts/language_placeholder/details_fullwidth.php rename to admin/layouts/language_translation/details_fullwidth.php index 7931472c5..9cfcbf79e 100644 --- a/admin/layouts/language_placeholder/details_fullwidth.php +++ b/admin/layouts/language_translation/details_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_fullwidth.php @@ -30,7 +30,7 @@ defined('_JEXEC') or die('Restricted access'); $form = $displayData->getForm(); $fields = $displayData->get('fields') ?: array( - 'placeholder', + 'entranslation', 'translation' ); diff --git a/admin/layouts/language_placeholder/index.html b/admin/layouts/language_translation/index.html similarity index 100% rename from admin/layouts/language_placeholder/index.html rename to admin/layouts/language_translation/index.html diff --git a/admin/layouts/language_placeholder/publishing.php b/admin/layouts/language_translation/publishing.php similarity index 96% rename from admin/layouts/language_placeholder/publishing.php rename to admin/layouts/language_translation/publishing.php index fd7f0e9c1..b33a65282 100644 --- a/admin/layouts/language_placeholder/publishing.php +++ b/admin/layouts/language_translation/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/language_placeholder/publlshing.php b/admin/layouts/language_translation/publlshing.php similarity index 96% rename from admin/layouts/language_placeholder/publlshing.php rename to admin/layouts/language_translation/publlshing.php index 102b733fa..7505c2d8b 100644 --- a/admin/layouts/language_placeholder/publlshing.php +++ b/admin/layouts/language_translation/publlshing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/layout/custom_script_fullwidth.php b/admin/layouts/layout/custom_script_fullwidth.php index 03dbc25a1..291a49bb9 100644 --- a/admin/layouts/layout/custom_script_fullwidth.php +++ b/admin/layouts/layout/custom_script_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_script_fullwidth.php diff --git a/admin/layouts/layout/details_fullwidth.php b/admin/layouts/layout/details_fullwidth.php index 58b1d4d47..751b2c3e0 100644 --- a/admin/layouts/layout/details_fullwidth.php +++ b/admin/layouts/layout/details_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_fullwidth.php diff --git a/admin/layouts/layout/details_left.php b/admin/layouts/layout/details_left.php index 1b871120b..f16793487 100644 --- a/admin/layouts/layout/details_left.php +++ b/admin/layouts/layout/details_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/layout/details_right.php b/admin/layouts/layout/details_right.php index b7c3154a7..cf36704f8 100644 --- a/admin/layouts/layout/details_right.php +++ b/admin/layouts/layout/details_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/layout/details_rightside.php b/admin/layouts/layout/details_rightside.php index 15e0158f2..9fa9979c9 100644 --- a/admin/layouts/layout/details_rightside.php +++ b/admin/layouts/layout/details_rightside.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_rightside.php diff --git a/admin/layouts/layout/details_under.php b/admin/layouts/layout/details_under.php index 6b7267268..a4c7b61cc 100644 --- a/admin/layouts/layout/details_under.php +++ b/admin/layouts/layout/details_under.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_under.php diff --git a/admin/layouts/layout/publishing.php b/admin/layouts/layout/publishing.php index fd7f0e9c1..b33a65282 100644 --- a/admin/layouts/layout/publishing.php +++ b/admin/layouts/layout/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/layout/publlshing.php b/admin/layouts/layout/publlshing.php index 102b733fa..7505c2d8b 100644 --- a/admin/layouts/layout/publlshing.php +++ b/admin/layouts/layout/publlshing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/site_view/custom_buttons_fullwidth.php b/admin/layouts/site_view/custom_buttons_fullwidth.php index 7673dde26..063f67d61 100644 --- a/admin/layouts/site_view/custom_buttons_fullwidth.php +++ b/admin/layouts/site_view/custom_buttons_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_buttons_fullwidth.php diff --git a/admin/layouts/site_view/custom_buttons_left.php b/admin/layouts/site_view/custom_buttons_left.php index 4c313eafb..1221a2927 100644 --- a/admin/layouts/site_view/custom_buttons_left.php +++ b/admin/layouts/site_view/custom_buttons_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_buttons_left.php diff --git a/admin/layouts/site_view/custom_buttons_right.php b/admin/layouts/site_view/custom_buttons_right.php index 58bf7c7ee..b1df3418b 100644 --- a/admin/layouts/site_view/custom_buttons_right.php +++ b/admin/layouts/site_view/custom_buttons_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_buttons_right.php diff --git a/admin/layouts/site_view/details_above.php b/admin/layouts/site_view/details_above.php index 504996d9f..34e490c28 100644 --- a/admin/layouts/site_view/details_above.php +++ b/admin/layouts/site_view/details_above.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_above.php diff --git a/admin/layouts/site_view/details_fullwidth.php b/admin/layouts/site_view/details_fullwidth.php index cce076d1b..1186f0475 100644 --- a/admin/layouts/site_view/details_fullwidth.php +++ b/admin/layouts/site_view/details_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_fullwidth.php diff --git a/admin/layouts/site_view/details_left.php b/admin/layouts/site_view/details_left.php index 4f0775c74..cc5e07514 100644 --- a/admin/layouts/site_view/details_left.php +++ b/admin/layouts/site_view/details_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/site_view/details_right.php b/admin/layouts/site_view/details_right.php index b7c3154a7..cf36704f8 100644 --- a/admin/layouts/site_view/details_right.php +++ b/admin/layouts/site_view/details_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/site_view/details_rightside.php b/admin/layouts/site_view/details_rightside.php index 88e5cd21a..1ba61b2bc 100644 --- a/admin/layouts/site_view/details_rightside.php +++ b/admin/layouts/site_view/details_rightside.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_rightside.php diff --git a/admin/layouts/site_view/details_under.php b/admin/layouts/site_view/details_under.php index 6b7267268..a4c7b61cc 100644 --- a/admin/layouts/site_view/details_under.php +++ b/admin/layouts/site_view/details_under.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_under.php diff --git a/admin/layouts/site_view/javascript_css_fullwidth.php b/admin/layouts/site_view/javascript_css_fullwidth.php index ae709dcf6..7776933af 100644 --- a/admin/layouts/site_view/javascript_css_fullwidth.php +++ b/admin/layouts/site_view/javascript_css_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage javascript_css_fullwidth.php diff --git a/admin/layouts/site_view/linked_components_fullwidth.php b/admin/layouts/site_view/linked_components_fullwidth.php index ea33c894b..2dce96820 100644 --- a/admin/layouts/site_view/linked_components_fullwidth.php +++ b/admin/layouts/site_view/linked_components_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage linked_components_fullwidth.php diff --git a/admin/layouts/site_view/php_fullwidth.php b/admin/layouts/site_view/php_fullwidth.php index e3b21813e..61885aa73 100644 --- a/admin/layouts/site_view/php_fullwidth.php +++ b/admin/layouts/site_view/php_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage php_fullwidth.php diff --git a/admin/layouts/site_view/publishing.php b/admin/layouts/site_view/publishing.php index fd7f0e9c1..b33a65282 100644 --- a/admin/layouts/site_view/publishing.php +++ b/admin/layouts/site_view/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/site_view/publlshing.php b/admin/layouts/site_view/publlshing.php index 102b733fa..7505c2d8b 100644 --- a/admin/layouts/site_view/publlshing.php +++ b/admin/layouts/site_view/publlshing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/snippet/details_above.php b/admin/layouts/snippet/details_above.php index ae3f9befe..274b24757 100644 --- a/admin/layouts/snippet/details_above.php +++ b/admin/layouts/snippet/details_above.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_above.php diff --git a/admin/layouts/snippet/details_left.php b/admin/layouts/snippet/details_left.php index 91c917bb4..4a29cdf44 100644 --- a/admin/layouts/snippet/details_left.php +++ b/admin/layouts/snippet/details_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/snippet/details_right.php b/admin/layouts/snippet/details_right.php index 4ab0fdb12..2de423150 100644 --- a/admin/layouts/snippet/details_right.php +++ b/admin/layouts/snippet/details_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/snippet/publishing.php b/admin/layouts/snippet/publishing.php index fd7f0e9c1..b33a65282 100644 --- a/admin/layouts/snippet/publishing.php +++ b/admin/layouts/snippet/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/snippet/publlshing.php b/admin/layouts/snippet/publlshing.php index 102b733fa..7505c2d8b 100644 --- a/admin/layouts/snippet/publlshing.php +++ b/admin/layouts/snippet/publlshing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/layouts/template/custom_script_fullwidth.php b/admin/layouts/template/custom_script_fullwidth.php index 03dbc25a1..291a49bb9 100644 --- a/admin/layouts/template/custom_script_fullwidth.php +++ b/admin/layouts/template/custom_script_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage custom_script_fullwidth.php diff --git a/admin/layouts/template/details_fullwidth.php b/admin/layouts/template/details_fullwidth.php index f71dfae2d..518a316db 100644 --- a/admin/layouts/template/details_fullwidth.php +++ b/admin/layouts/template/details_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_fullwidth.php diff --git a/admin/layouts/template/details_left.php b/admin/layouts/template/details_left.php index 1b871120b..f16793487 100644 --- a/admin/layouts/template/details_left.php +++ b/admin/layouts/template/details_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_left.php diff --git a/admin/layouts/template/details_right.php b/admin/layouts/template/details_right.php index b7c3154a7..cf36704f8 100644 --- a/admin/layouts/template/details_right.php +++ b/admin/layouts/template/details_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_right.php diff --git a/admin/layouts/template/details_rightside.php b/admin/layouts/template/details_rightside.php index 15e0158f2..9fa9979c9 100644 --- a/admin/layouts/template/details_rightside.php +++ b/admin/layouts/template/details_rightside.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_rightside.php diff --git a/admin/layouts/template/details_under.php b/admin/layouts/template/details_under.php index 6b7267268..a4c7b61cc 100644 --- a/admin/layouts/template/details_under.php +++ b/admin/layouts/template/details_under.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage details_under.php diff --git a/admin/layouts/template/publishing.php b/admin/layouts/template/publishing.php index fd7f0e9c1..b33a65282 100644 --- a/admin/layouts/template/publishing.php +++ b/admin/layouts/template/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publishing.php diff --git a/admin/layouts/template/publlshing.php b/admin/layouts/template/publlshing.php index 102b733fa..7505c2d8b 100644 --- a/admin/layouts/template/publlshing.php +++ b/admin/layouts/template/publlshing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage publlshing.php diff --git a/admin/models/ajax.php b/admin/models/ajax.php index b940f5ce9..01e5c1848 100644 --- a/admin/models/ajax.php +++ b/admin/models/ajax.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage ajax.php @@ -1055,5 +1055,225 @@ class ComponentbuilderModelAjax extends JModelList return $field; } return false; + } + + // Used in language_translation + protected $functionArray = array( + 'translation' => 'checkString', + 'language' => 'getLanguageName'); + + protected function checkString($header, $value) + { + return $value; + } + + protected function getLanguageName($header, $value) + { + if ($name = ComponentbuilderHelper::getVar($header, $value, 'langtag', 'name')) + { + return $name . ' (' . $value . ')'; + } + return $value; + } + + protected function setAutoLangZero() + { + // set the headers + $headers = array( + 'translation' => JText::_('COM_COMPONENTBUILDER_TRANSLATION'), + 'language' => JText::_('COM_COMPONENTBUILDER_LANGUAGE') + ); + // loop the array + foreach ($headers as $key => $lang) + { + $this->setLanguage($key,$lang); + } + } + + protected $languageArray = array(); + + protected function setLanguage($key,$lang) + { + $this->languageArray[$key] = $lang; + } + + public function getLanguage() + { + // return the language string that were set + return $this->languageArray; + } + + protected function autoLoader() + { + $functions = range(0,10); + foreach ($functions as $function) + { + $function = 'setAutoLang'.ComponentbuilderHelper::safeString($function, 'f'); + if (method_exists($this, $function)) + { + $this->{$function}(); + } + } + foreach ($functions as $function) + { + $function = 'setAutoFunc'.ComponentbuilderHelper::safeString($function, 'f'); + if (method_exists($this, $function)) + { + $this->{$function}(); + } + } + } + + public function getBuildTable($idName, $oject) + { + if (ComponentbuilderHelper::checkJson($oject) && ComponentbuilderHelper::checkString($idName)) + { + $array = json_decode($oject, true); + if (ComponentbuilderHelper::checkArray($array)) + { + // make sure we run the autoloader to insure all is set + $this->autoLoader(); + // set the target headers + $targetHeaders = $this->getLanguage(); + // start table build + $table = ''; + $rows = array(); + foreach ($array as $header => $values) + { + if (ComponentbuilderHelper::checkArray($values)) + { + $targetHeader = (isset($targetHeaders[$header])) ? $targetHeaders[$header] : ComponentbuilderHelper::safeString($header, 'W'); + $table .= ''; + + foreach ($values as $nr => $value) + { + // set the value for the row + $this->setRows($nr, $this->setValue($header, $value), $rows); + } + } + } + // close header start body + $table .= ''; + // add rows to table + if (ComponentbuilderHelper::checkArray($rows)) + { + foreach ($rows as $row) + { + $table .= ''.$row.''; + } + } + // close the body and table + $table .= '
'.$targetHeader.'
'; + // return the table + return $table; + } + } + return false; + } + + protected function setValue($header, $value) + { + if (array_key_exists($header, $this->functionArray) && method_exists($this, $this->functionArray[$header])) + { + $value = $this->{$this->functionArray[$header]}($header, $value); + } + // if no value are set + if (!ComponentbuilderHelper::checkString($value)) + { + $value = '-'; + } + // make total stand out + if ('total' == $header) + { + $value = ''.$value.''; + } + return $value; + } + + protected function setRows($nr, $value, &$rows) + { + // build rows + if (!isset($rows[$nr])) + { + $rows[$nr] = ''.$value.''; + } + else + { + $rows[$nr] .= ''.$value.''; + } + } + + protected $viewid = array(); + + protected function getViewID($call = 'table') + { + if (!isset($this->viewid[$call])) + { + // get the vdm key + $jinput = JFactory::getApplication()->input; + $vdm = $jinput->get('vdm', null, 'WORD'); + if ($vdm) + { + if ($view = ComponentbuilderHelper::get($vdm)) + { + $current = (array) explode('__', $view); + if (ComponentbuilderHelper::checkString($current[0]) && isset($current[1]) && is_numeric($current[1])) + { + // get the view name & id + $this->viewid[$call] = array( + 'a_id' => (int) $current[1], + 'a_view' => $current[0] + ); + } + } + } + } + if (isset($this->viewid[$call])) + { + return $this->viewid[$call]; + } + return false; + } + + protected $buttonArray = array( + 'language' => true); + + public function getButton($type) + { + if (isset($this->buttonArray[$type])) + { + $user = JFactory::getUser(); + // only add if user allowed to create + if ($user->authorise($type.'.create', 'com_componentbuilder')) + { + // get the input from url + $jinput = JFactory::getApplication()->input; + // get the view name & id + $values = $this->getViewID(); + // check if new item + $ref = ''; + if (!is_null($values['a_id']) && $values['a_id'] > 0 && strlen($values['a_view'])) + { + // only load referal if not new item. + $ref = '&ref=' . $values['a_view'] . '&refid=' . $values['a_id']; + } + // build the button + $button = '
'; + // return the button attached to input field + return $button; + } + return ''; + } + return false; } } diff --git a/admin/models/componentbuilder.php b/admin/models/componentbuilder.php index 31ea9ed7b..1686b2d4a 100644 --- a/admin/models/componentbuilder.php +++ b/admin/models/componentbuilder.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage componentbuilder.php @@ -43,7 +43,7 @@ class ComponentbuilderModelComponentbuilder extends JModelList $icons = array(); // view groups array $viewGroups = array( - 'main' => array('png.compiler', 'png.joomla_component.add', 'png.joomla_components', 'png.admin_view.add', 'png.admin_views', 'png.custom_admin_view.add', 'png.custom_admin_views', 'png.site_view.add', 'png.site_views', 'png.template.add', 'png.templates', 'png.layout.add', 'png.layouts', 'png.dynamic_get.add', 'png.dynamic_gets', 'png.custom_codes', 'png.snippet.add', 'png.snippets', 'png.field.add', 'png.fields', 'png.fields.catid', 'png.fieldtype.add', 'png.fieldtypes', 'png.fieldtypes.catid', 'png.language_placeholder.add', 'png.language_placeholders', 'png.help_document.add', 'png.help_documents') + 'main' => array('png.compiler', 'png.joomla_component.add', 'png.joomla_components', 'png.admin_view.add', 'png.admin_views', 'png.custom_admin_view.add', 'png.custom_admin_views', 'png.site_view.add', 'png.site_views', 'png.template.add', 'png.templates', 'png.layout.add', 'png.layouts', 'png.dynamic_get.add', 'png.dynamic_gets', 'png.custom_codes', 'png.snippet.add', 'png.snippets', 'png.field.add', 'png.fields', 'png.fields.catid', 'png.fieldtype.add', 'png.fieldtypes', 'png.fieldtypes.catid', 'png.language_translations', 'png.help_document.add', 'png.help_documents') ); // view access array $viewAccess = array( @@ -107,12 +107,11 @@ class ComponentbuilderModelComponentbuilder extends JModelList 'fieldtypes.submenu' => 'fieldtype.submenu', 'fieldtypes.dashboard_list' => 'fieldtype.dashboard_list', 'fieldtype.dashboard_add' => 'fieldtype.dashboard_add', - 'language_placeholder.create' => 'language_placeholder.create', - 'language_placeholders.access' => 'language_placeholder.access', - 'language_placeholder.access' => 'language_placeholder.access', - 'language_placeholders.submenu' => 'language_placeholder.submenu', - 'language_placeholders.dashboard_list' => 'language_placeholder.dashboard_list', - 'language_placeholder.dashboard_add' => 'language_placeholder.dashboard_add', + 'language_translation.create' => 'language_translation.create', + 'language_translations.access' => 'language_translation.access', + 'language_translation.access' => 'language_translation.access', + 'language_translations.submenu' => 'language_translation.submenu', + 'language_translations.dashboard_list' => 'language_translation.dashboard_list', 'language.create' => 'language.create', 'languages.access' => 'language.access', 'language.access' => 'language.access', diff --git a/admin/models/custom_code.php b/admin/models/custom_code.php index fd32e8234..f3c0bab94 100644 --- a/admin/models/custom_code.php +++ b/admin/models/custom_code.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage custom_code.php diff --git a/admin/models/custom_codes.php b/admin/models/custom_codes.php index b361506a2..1a0f38663 100644 --- a/admin/models/custom_codes.php +++ b/admin/models/custom_codes.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage custom_codes.php @@ -280,7 +280,7 @@ class ComponentbuilderModelCustom_codes extends JModelList else { $search = $db->quote('%' . $db->escape($search) . '%'); - $query->where('(a.component LIKE '.$search.' OR g.system_name LIKE '.$search.' OR a.path LIKE '.$search.' OR a.comment_type LIKE '.$search.' OR a.system_name LIKE '.$search.' OR a.function_name LIKE '.$search.')'); + $query->where('(a.component LIKE '.$search.' OR g.system_name LIKE '.$search.' OR a.path LIKE '.$search.' OR a.comment_type LIKE '.$search.' OR a.function_name LIKE '.$search.' OR a.system_name LIKE '.$search.')'); } } diff --git a/admin/models/fields/adminviewfolderlist.php b/admin/models/fields/adminviewfolderlist.php index 6bd862dcc..d883578ab 100644 --- a/admin/models/fields/adminviewfolderlist.php +++ b/admin/models/fields/adminviewfolderlist.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage adminviewfolderlist.php diff --git a/admin/models/fields/adminviews.php b/admin/models/fields/adminviews.php index 21cd45aae..3a74a62b3 100644 --- a/admin/models/fields/adminviews.php +++ b/admin/models/fields/adminviews.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage adminviews.php diff --git a/admin/models/fields/articles.php b/admin/models/fields/articles.php index da5c24105..315ae86cc 100644 --- a/admin/models/fields/articles.php +++ b/admin/models/fields/articles.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage articles.php diff --git a/admin/models/fields/component.php b/admin/models/fields/component.php index 62bb7a857..8db383156 100644 --- a/admin/models/fields/component.php +++ b/admin/models/fields/component.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage component.php diff --git a/admin/models/fields/components.php b/admin/models/fields/components.php index 932631b2c..683a5b056 100644 --- a/admin/models/fields/components.php +++ b/admin/models/fields/components.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage components.php diff --git a/admin/models/fields/customadminviews.php b/admin/models/fields/customadminviews.php index 82c2254ef..d7ea3bcfd 100644 --- a/admin/models/fields/customadminviews.php +++ b/admin/models/fields/customadminviews.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage customadminviews.php diff --git a/admin/models/fields/customfilelist.php b/admin/models/fields/customfilelist.php index ef0423759..b60eeebc1 100644 --- a/admin/models/fields/customfilelist.php +++ b/admin/models/fields/customfilelist.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage customfilelist.php diff --git a/admin/models/fields/customfolderlist.php b/admin/models/fields/customfolderlist.php index 61349411d..dfda4c17d 100644 --- a/admin/models/fields/customfolderlist.php +++ b/admin/models/fields/customfolderlist.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage customfolderlist.php diff --git a/admin/models/fields/customgets.php b/admin/models/fields/customgets.php index 9901bab42..697419c8d 100644 --- a/admin/models/fields/customgets.php +++ b/admin/models/fields/customgets.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage customgets.php diff --git a/admin/models/fields/dbtables.php b/admin/models/fields/dbtables.php index 92e299f13..289d6a192 100644 --- a/admin/models/fields/dbtables.php +++ b/admin/models/fields/dbtables.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage dbtables.php diff --git a/admin/models/fields/dynamicget.php b/admin/models/fields/dynamicget.php index c909976ae..90f37a006 100644 --- a/admin/models/fields/dynamicget.php +++ b/admin/models/fields/dynamicget.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage dynamicget.php diff --git a/admin/models/fields/dynamicgets.php b/admin/models/fields/dynamicgets.php index 104a58dc7..a5aafeafd 100644 --- a/admin/models/fields/dynamicgets.php +++ b/admin/models/fields/dynamicgets.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage dynamicgets.php diff --git a/admin/models/fields/fields.php b/admin/models/fields/fields.php index 1a227063f..498067c68 100644 --- a/admin/models/fields/fields.php +++ b/admin/models/fields/fields.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage fields.php diff --git a/admin/models/fields/fieldsmulti.php b/admin/models/fields/fieldsmulti.php index 133027a89..1c894c34d 100644 --- a/admin/models/fields/fieldsmulti.php +++ b/admin/models/fields/fieldsmulti.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage fieldsmulti.php diff --git a/admin/models/fields/fieldtypes.php b/admin/models/fields/fieldtypes.php index 5a6c23401..f27a9f953 100644 --- a/admin/models/fields/fieldtypes.php +++ b/admin/models/fields/fieldtypes.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage fieldtypes.php diff --git a/admin/models/fields/lang.php b/admin/models/fields/lang.php new file mode 100644 index 000000000..6f7dd4da6 --- /dev/null +++ b/admin/models/fields/lang.php @@ -0,0 +1,171 @@ + + @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 the list field type +jimport('joomla.form.helper'); +JFormHelper::loadFieldClass('list'); + +/** + * Lang Form Field class for the Componentbuilder component + */ +class JFormFieldLang extends JFormFieldList +{ + /** + * The lang field type. + * + * @var string + */ + public $type = 'lang'; + /** + * Override to add new button + * + * @return string The field input markup. + * + * @since 3.2 + */ + protected function getInput() + { + // see if we should add buttons + $setButton = $this->getAttribute('button'); + // get html + $html = parent::getInput(); + // if true set button + if ($setButton === 'true') + { + $button = array(); + $script = array(); + $buttonName = $this->getAttribute('name'); + // get the input from url + $app = JFactory::getApplication(); + $jinput = $app->input; + // get the view name & id + $values = $jinput->getArray(array( + 'id' => 'int', + 'view' => 'word' + )); + // check if new item + $ref = ''; + $refJ = ''; + if (!is_null($values['id']) && strlen($values['view'])) + { + // only load referal if not new item. + $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; + $refJ = '&ref=' . $values['view'] . '&refid=' . $values['id']; + } + $user = JFactory::getUser(); + // only add if user allowed to create language + if ($user->authorise('language.create', 'com_componentbuilder') && $app->isAdmin()) // TODO for now only in admin area. + { + // build Create button + $buttonNamee = trim($buttonName); + $buttonNamee = preg_replace('/_+/', ' ', $buttonNamee); + $buttonNamee = preg_replace('/\s+/', ' ', $buttonNamee); + $buttonNamee = preg_replace("/[^A-Za-z ]/", '', $buttonNamee); + $buttonNamee = ucfirst(strtolower($buttonNamee)); + $button[] = ' + '; + } + // only add if user allowed to edit language + if (($buttonName === 'language' || $buttonName === 'languages') && $user->authorise('language.edit', 'com_componentbuilder') && $app->isAdmin()) // TODO for now only in admin area. + { + // build edit button + $buttonNamee = trim($buttonName); + $buttonNamee = preg_replace('/_+/', ' ', $buttonNamee); + $buttonNamee = preg_replace('/\s+/', ' ', $buttonNamee); + $buttonNamee = preg_replace("/[^A-Za-z ]/", '', $buttonNamee); + $buttonNamee = ucfirst(strtolower($buttonNamee)); + $button[] = ''; + // build script + $script[] = " + jQuery(document).ready(function() { + jQuery('#adminForm').on('change', '#jform_".$buttonName."',function (e) { + e.preventDefault(); + var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val(); + ".$buttonName."Button(".$buttonName."Value); + }); + var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val(); + ".$buttonName."Button(".$buttonName."Value); + }); + function ".$buttonName."Button(value) { + if (value > 0) { + // hide the create button + jQuery('#".$buttonName."Create').hide(); + // show edit button + jQuery('#".$buttonName."Edit').show(); + var url = 'index.php?option=com_componentbuilder&view=languages&task=language.edit&id='+value+'".$refJ."'; + jQuery('#".$buttonName."Edit').attr('href', url); + } else { + // show the create button + jQuery('#".$buttonName."Create').show(); + // hide edit button + jQuery('#".$buttonName."Edit').hide(); + } + }"; + } + // check if button was created for language field. + if (is_array($button) && count($button) > 0) + { + // Load the needed script. + $document = JFactory::getDocument(); + $document->addScriptDeclaration(implode(' ',$script)); + // return the button attached to input field. + return '
' .$html . implode('',$button).'
'; + } + } + return $html; + } + + /** + * Method to get a list of options for a list input. + * + * @return array An array of JHtml options. + */ + public function getOptions() + { + $db = JFactory::getDBO(); + $query = $db->getQuery(true); + $query->select($db->quoteName(array('a.langtag','a.name'),array('langtag','language_name'))); + $query->from($db->quoteName('#__componentbuilder_language', 'a')); + $query->where($db->quoteName('a.published') . ' >= 1'); + $query->order('a.langtag ASC'); + $db->setQuery((string)$query); + $items = $db->loadObjectList(); + $options = array(); + if ($items) + { + $options[] = JHtml::_('select.option', '', 'Select an option'); + foreach($items as $item) + { + $options[] = JHtml::_('select.option', $item->langtag, $item->language_name . ' (' .$item->langtag.')'); + } + } + return $options; + } +} diff --git a/admin/models/fields/maingets.php b/admin/models/fields/maingets.php index 8952a7086..99fe46aa0 100644 --- a/admin/models/fields/maingets.php +++ b/admin/models/fields/maingets.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage maingets.php diff --git a/admin/models/fields/siteviewfolderlist.php b/admin/models/fields/siteviewfolderlist.php index 1f0b409d9..5592d356e 100644 --- a/admin/models/fields/siteviewfolderlist.php +++ b/admin/models/fields/siteviewfolderlist.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage siteviewfolderlist.php diff --git a/admin/models/fields/siteviews.php b/admin/models/fields/siteviews.php index 0018c3303..0c29038f7 100644 --- a/admin/models/fields/siteviews.php +++ b/admin/models/fields/siteviews.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage siteviews.php diff --git a/admin/models/fields/snippets.php b/admin/models/fields/snippets.php index 4908d2b00..e9834b4d1 100644 --- a/admin/models/fields/snippets.php +++ b/admin/models/fields/snippets.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage snippets.php diff --git a/admin/models/forms/custom_code.js b/admin/models/forms/custom_code.js index c7440f10f..31257c178 100644 --- a/admin/models/forms/custom_code.js +++ b/admin/models/forms/custom_code.js @@ -9,8 +9,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage custom_code.js diff --git a/admin/models/forms/custom_code.xml b/admin/models/forms/custom_code.xml index 4a04184ed..2957cb13a 100644 --- a/admin/models/forms/custom_code.xml +++ b/admin/models/forms/custom_code.xml @@ -159,43 +159,33 @@ - + - + - - - - - - - + + + + + + + - - + + diff --git a/admin/models/forms/joomla_component.js b/admin/models/forms/joomla_component.js index 414da787c..d0ca23757 100644 --- a/admin/models/forms/joomla_component.js +++ b/admin/models/forms/joomla_component.js @@ -9,8 +9,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage joomla_component.js diff --git a/admin/models/forms/language_placeholder.js b/admin/models/forms/language_placeholder.js deleted file mode 100644 index b1815115b..000000000 --- a/admin/models/forms/language_placeholder.js +++ /dev/null @@ -1,25 +0,0 @@ -/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/ - __ __ _ _____ _ _ __ __ _ _ _ - \ \ / / | | | __ \ | | | | | \/ | | | | | | | - \ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| | - \ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` | - \ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| | - \/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_| - | | - |_| -/-------------------------------------------------------------------------------------------------------------------------------/ - - @version @update number 8 of this MVC - @build 3rd April, 2017 - @created 3rd April, 2017 - @package Component Builder - @subpackage language_placeholder.js - @author Llewellyn van der Merwe - @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 - -/-----------------------------------------------------------------------------------------------------------------------------*/ - - diff --git a/admin/models/forms/language_translation.js b/admin/models/forms/language_translation.js new file mode 100644 index 000000000..160fe7208 --- /dev/null +++ b/admin/models/forms/language_translation.js @@ -0,0 +1,84 @@ +/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/ + __ __ _ _____ _ _ __ __ _ _ _ + \ \ / / | | | __ \ | | | | | \/ | | | | | | | + \ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| | + \ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` | + \ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| | + \/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_| + | | + |_| +/-------------------------------------------------------------------------------------------------------------------------------/ + + @version @update number 28 of this MVC + @build 5th April, 2017 + @created 3rd April, 2017 + @package Component Builder + @subpackage language_translation.js + @author Llewellyn van der Merwe + @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 + +/-----------------------------------------------------------------------------------------------------------------------------*/ + + + +jQuery(document).ready(function($) +{ + // build table of translations + var translation = encodeURIComponent(jQuery('#jform_translation').val()); + if (translation) { + getBuildTable(translation,'jform_translation'); + } + // set button to add more languages + addButton('language','components'); +}); + +function getBuildTable_server(string, idName){ + var getUrl = JRouter("index.php?option=com_componentbuilder&task=ajax.getBuildTable&format=json&vdm="+vastDevMod); + if(token.length > 0 && string.length > 0 && idName.length > 0){ + var request = 'token='+token+'&idName='+idName+'&object='+string; + } + return jQuery.ajax({ + type: 'GET', + url: getUrl, + dataType: 'jsonp', + data: request, + jsonp: 'callback' + }); +} +function getBuildTable(string, idName){ + getBuildTable_server(string, idName).done(function(result) { + jQuery('#table_'+idName).remove(); + if(result){ + addData(result, '#'+idName); + } + }) +} +function addData(result, where){ + jQuery(where).closest('.control-group').parent().append(result); +} +function addButton_server(type){ + var getUrl = JRouter("index.php?option=com_componentbuilder&task=ajax.getButton&format=json&vdm="+vastDevMod); + if(token.length > 0 && type.length > 0){ + var request = 'token='+token+'&type='+type; + } + return jQuery.ajax({ + type: 'GET', + url: getUrl, + dataType: 'jsonp', + data: request, + jsonp: 'callback' + }); +} +function addButton(type, where){ + addButton_server(type).done(function(result) { + if(result){ + setButton(result, '#jform_'+where); + } + }); +} +function setButton(result, where){ + jQuery(where).closest('.control-group').append(result); +} diff --git a/admin/models/forms/language_placeholder.xml b/admin/models/forms/language_translation.xml similarity index 64% rename from admin/models/forms/language_placeholder.xml rename to admin/models/forms/language_translation.xml index cfc1ca8d6..f667c60ec 100644 --- a/admin/models/forms/language_placeholder.xml +++ b/admin/models/forms/language_translation.xml @@ -16,8 +16,8 @@ - + \ No newline at end of file diff --git a/admin/models/import.php b/admin/models/import.php index 60c63a4f5..d927eff8f 100644 --- a/admin/models/import.php +++ b/admin/models/import.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage import.php diff --git a/admin/models/import_joomla_components.php b/admin/models/import_joomla_components.php index 146c3319b..7c6a36574 100644 --- a/admin/models/import_joomla_components.php +++ b/admin/models/import_joomla_components.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage import_joomla_components.php diff --git a/admin/models/joomla_component.php b/admin/models/joomla_component.php index 31f52904b..bc9fd785a 100644 --- a/admin/models/joomla_component.php +++ b/admin/models/joomla_component.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage joomla_component.php diff --git a/admin/models/joomla_components.php b/admin/models/joomla_components.php index f6138aef6..ab3b0f9e4 100644 --- a/admin/models/joomla_components.php +++ b/admin/models/joomla_components.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage joomla_components.php @@ -101,7 +101,7 @@ class ComponentbuilderModelJoomla_components extends JModelList $query = $db->getQuery(true); // Select some fields - $query->select($db->quoteName('a.*')); + $query->select(array('a.*')); // From the componentbuilder_joomla_component table $query->from($db->quoteName('#__componentbuilder_joomla_component', 'a')); @@ -459,7 +459,7 @@ class ComponentbuilderModelJoomla_components extends JModelList $query = $db->getQuery(true); // Select some fields - $query->select($db->quoteName('a.*')); + $query->select(array('a.*')); // From the componentbuilder_ANY table $query->from($db->quoteName('#__componentbuilder_'. $table, 'a')); diff --git a/admin/models/language_placeholder.php b/admin/models/language_translation.php similarity index 87% rename from admin/models/language_placeholder.php rename to admin/models/language_translation.php index d32829de5..f1cee6b35 100644 --- a/admin/models/language_placeholder.php +++ b/admin/models/language_translation.php @@ -10,11 +10,11 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 8 of this MVC - @build 3rd April, 2017 + @version @update number 28 of this MVC + @build 5th April, 2017 @created 3rd April, 2017 @package Component Builder - @subpackage language_placeholder.php + @subpackage language_translation.php @author Llewellyn van der Merwe @copyright Copyright (C) 2015. All Rights Reserved @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html @@ -32,9 +32,9 @@ use Joomla\Registry\Registry; jimport('joomla.application.component.modeladmin'); /** - * Componentbuilder Language_placeholder Model + * Componentbuilder Language_translation Model */ -class ComponentbuilderModelLanguage_placeholder extends JModelAdmin +class ComponentbuilderModelLanguage_translation extends JModelAdmin { /** * @var string The prefix to use with controller messages. @@ -48,7 +48,7 @@ class ComponentbuilderModelLanguage_placeholder extends JModelAdmin * @var string * @since 3.2 */ - public $typeAlias = 'com_componentbuilder.language_placeholder'; + public $typeAlias = 'com_componentbuilder.language_translation'; /** * Returns a Table object, always creating it @@ -61,9 +61,14 @@ class ComponentbuilderModelLanguage_placeholder extends JModelAdmin * * @since 1.6 */ - public function getTable($type = 'language_placeholder', $prefix = 'ComponentbuilderTable', $config = array()) + public function getTable($type = 'language_translation', $prefix = 'ComponentbuilderTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); + } + + public function getVDM() + { + return $this->vastDevMod; } /** @@ -99,12 +104,33 @@ class ComponentbuilderModelLanguage_placeholder extends JModelAdmin { // JSON Decode components. $item->components = json_decode($item->components); + } + + + if (empty($item->id)) + { + $id = 0; } + else + { + $id = $item->id; + } + // set the id and view name to session + if ($vdm = ComponentbuilderHelper::get('language_placeholder__'.$id)) + { + $this->vastDevMod = $vdm; + } + else + { + $this->vastDevMod = ComponentbuilderHelper::randomkey(50); + ComponentbuilderHelper::set($this->vastDevMod, 'language_placeholder__'.$id); + ComponentbuilderHelper::set('language_placeholder__'.$id, $this->vastDevMod); + } if (!empty($item->id)) { $item->tags = new JHelperTags; - $item->tags->getTagIds($item->id, 'com_componentbuilder.language_placeholder'); + $item->tags->getTagIds($item->id, 'com_componentbuilder.language_translation'); } } @@ -124,7 +150,7 @@ class ComponentbuilderModelLanguage_placeholder extends JModelAdmin public function getForm($data = array(), $loadData = true) { // Get the form. - $form = $this->loadForm('com_componentbuilder.language_placeholder', 'language_placeholder', array('control' => 'jform', 'load_data' => $loadData)); + $form = $this->loadForm('com_componentbuilder.language_translation', 'language_translation', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { @@ -148,8 +174,8 @@ class ComponentbuilderModelLanguage_placeholder extends JModelAdmin // Check for existing item. // Modify the form based on Edit State access controls. - if ($id != 0 && (!$user->authorise('language_placeholder.edit.state', 'com_componentbuilder.language_placeholder.' . (int) $id)) - || ($id == 0 && !$user->authorise('language_placeholder.edit.state', 'com_componentbuilder'))) + if ($id != 0 && (!$user->authorise('language_translation.edit.state', 'com_componentbuilder.language_translation.' . (int) $id)) + || ($id == 0 && !$user->authorise('language_translation.edit.state', 'com_componentbuilder'))) { // Disable fields for display. $form->setFieldAttribute('ordering', 'disabled', 'true'); @@ -206,7 +232,7 @@ class ComponentbuilderModelLanguage_placeholder extends JModelAdmin */ public function getScript() { - return 'administrator/components/com_componentbuilder/models/forms/language_placeholder.js'; + return 'administrator/components/com_componentbuilder/models/forms/language_translation.js'; } /** @@ -229,7 +255,7 @@ class ComponentbuilderModelLanguage_placeholder extends JModelAdmin $user = JFactory::getUser(); // The record has been set. Check the record permissions. - return $user->authorise('language_placeholder.delete', 'com_componentbuilder.language_placeholder.' . (int) $record->id); + return $user->authorise('language_translation.delete', 'com_componentbuilder.language_translation.' . (int) $record->id); } return false; } @@ -251,14 +277,14 @@ class ComponentbuilderModelLanguage_placeholder extends JModelAdmin if ($recordId) { // The record has been set. Check the record permissions. - $permission = $user->authorise('language_placeholder.edit.state', 'com_componentbuilder.language_placeholder.' . (int) $recordId); + $permission = $user->authorise('language_translation.edit.state', 'com_componentbuilder.language_translation.' . (int) $recordId); if (!$permission && !is_null($permission)) { return false; } } // In the absense of better information, revert to the component permissions. - return $user->authorise('language_placeholder.edit.state', 'com_componentbuilder'); + return $user->authorise('language_translation.edit.state', 'com_componentbuilder'); } /** @@ -275,7 +301,7 @@ class ComponentbuilderModelLanguage_placeholder extends JModelAdmin // Check specific edit permission then general edit permission. $user = JFactory::getUser(); - return $user->authorise('language_placeholder.edit', 'com_componentbuilder.language_placeholder.'. ((int) isset($data[$key]) ? $data[$key] : 0)) or $user->authorise('language_placeholder.edit', 'com_componentbuilder'); + return $user->authorise('language_translation.edit', 'com_componentbuilder.language_translation.'. ((int) isset($data[$key]) ? $data[$key] : 0)) or $user->authorise('language_translation.edit', 'com_componentbuilder'); } /** @@ -316,7 +342,7 @@ class ComponentbuilderModelLanguage_placeholder extends JModelAdmin $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('MAX(ordering)') - ->from($db->quoteName('#__componentbuilder_language_placeholder')); + ->from($db->quoteName('#__componentbuilder_language_translation')); $db->setQuery($query); $max = $db->loadResult(); @@ -346,7 +372,7 @@ class ComponentbuilderModelLanguage_placeholder extends JModelAdmin protected function loadFormData() { // Check the session for previously entered form data. - $data = JFactory::getApplication()->getUserState('com_componentbuilder.edit.language_placeholder.data', array()); + $data = JFactory::getApplication()->getUserState('com_componentbuilder.edit.language_translation.data', array()); if (empty($data)) { @@ -444,7 +470,7 @@ class ComponentbuilderModelLanguage_placeholder extends JModelAdmin $this->tableClassName = get_class($this->table); $this->contentType = new JUcmType; $this->type = $this->contentType->getTypeByTable($this->tableClassName); - $this->canDo = ComponentbuilderHelper::getActions('language_placeholder'); + $this->canDo = ComponentbuilderHelper::getActions('language_translation'); $this->batchSet = true; if (!$this->canDo->get('core.batch')) @@ -524,10 +550,10 @@ class ComponentbuilderModelLanguage_placeholder extends JModelAdmin $this->tableClassName = get_class($this->table); $this->contentType = new JUcmType; $this->type = $this->contentType->getTypeByTable($this->tableClassName); - $this->canDo = ComponentbuilderHelper::getActions('language_placeholder'); + $this->canDo = ComponentbuilderHelper::getActions('language_translation'); } - if (!$this->canDo->get('language_placeholder.create') && !$this->canDo->get('language_placeholder.batch')) + if (!$this->canDo->get('language_translation.create') && !$this->canDo->get('language_translation.batch')) { return false; } @@ -542,7 +568,7 @@ class ComponentbuilderModelLanguage_placeholder extends JModelAdmin { $values['published'] = 0; } - elseif (isset($values['published']) && !$this->canDo->get('language_placeholder.edit.state')) + elseif (isset($values['published']) && !$this->canDo->get('language_translation.edit.state')) { $values['published'] = 0; } @@ -559,7 +585,7 @@ class ComponentbuilderModelLanguage_placeholder extends JModelAdmin // only allow copy if user may edit this item. - if (!$this->user->authorise('language_placeholder.edit', $contexts[$pk])) + if (!$this->user->authorise('language_translation.edit', $contexts[$pk])) { @@ -589,7 +615,7 @@ class ComponentbuilderModelLanguage_placeholder extends JModelAdmin } } - $this->table->placeholder = $this->generateUniqe('placeholder',$this->table->placeholder); + $this->table->entranslation = $this->generateUniqe('entranslation',$this->table->entranslation); // insert all set values if (ComponentbuilderHelper::checkArray($values)) @@ -673,17 +699,17 @@ class ComponentbuilderModelLanguage_placeholder extends JModelAdmin $this->tableClassName = get_class($this->table); $this->contentType = new JUcmType; $this->type = $this->contentType->getTypeByTable($this->tableClassName); - $this->canDo = ComponentbuilderHelper::getActions('language_placeholder'); + $this->canDo = ComponentbuilderHelper::getActions('language_translation'); } - if (!$this->canDo->get('language_placeholder.edit') && !$this->canDo->get('language_placeholder.batch')) + if (!$this->canDo->get('language_translation.edit') && !$this->canDo->get('language_translation.batch')) { $this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT')); return false; } // make sure published only updates if user has the permission. - if (isset($values['published']) && !$this->canDo->get('language_placeholder.edit.state')) + if (isset($values['published']) && !$this->canDo->get('language_translation.edit.state')) { unset($values['published']); } @@ -693,7 +719,7 @@ class ComponentbuilderModelLanguage_placeholder extends JModelAdmin // Parent exists so we proceed foreach ($pks as $pk) { - if (!$this->user->authorise('language_placeholder.edit', $contexts[$pk])) + if (!$this->user->authorise('language_translation.edit', $contexts[$pk])) { $this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT')); diff --git a/admin/models/language_placeholders.php b/admin/models/language_translations.php similarity index 84% rename from admin/models/language_placeholders.php rename to admin/models/language_translations.php index 38a579882..2f85084e6 100644 --- a/admin/models/language_placeholders.php +++ b/admin/models/language_translations.php @@ -10,11 +10,11 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 8 of this MVC - @build 3rd April, 2017 + @version @update number 28 of this MVC + @build 5th April, 2017 @created 3rd April, 2017 @package Component Builder - @subpackage language_placeholders.php + @subpackage language_translations.php @author Llewellyn van der Merwe @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.modellist'); /** - * Language_placeholders Model + * Language_translations Model */ -class ComponentbuilderModelLanguage_placeholders extends JModelList +class ComponentbuilderModelLanguage_translations extends JModelList { public function __construct($config = array()) { @@ -44,7 +44,7 @@ class ComponentbuilderModelLanguage_placeholders extends JModelList 'a.ordering','ordering', 'a.created_by','created_by', 'a.modified_by','modified_by', - 'a.placeholder','placeholder' + 'a.entranslation','entranslation' ); } @@ -65,8 +65,8 @@ class ComponentbuilderModelLanguage_placeholders extends JModelList { $this->context .= '.' . $layout; } - $placeholder = $this->getUserStateFromRequest($this->context . '.filter.placeholder', 'filter_placeholder'); - $this->setState('filter.placeholder', $placeholder); + $entranslation = $this->getUserStateFromRequest($this->context . '.filter.entranslation', 'filter_entranslation'); + $this->setState('filter.entranslation', $entranslation); $sorting = $this->getUserStateFromRequest($this->context . '.filter.sorting', 'filter_sorting', 0, 'int'); $this->setState('filter.sorting', $sorting); @@ -110,7 +110,7 @@ class ComponentbuilderModelLanguage_placeholders extends JModelList $user = JFactory::getUser(); foreach ($items as $nr => &$item) { - $access = ($user->authorise('language_placeholder.access', 'com_componentbuilder.language_placeholder.' . (int) $item->id) && $user->authorise('language_placeholder.access', 'com_componentbuilder')); + $access = ($user->authorise('language_translation.access', 'com_componentbuilder.language_translation.' . (int) $item->id) && $user->authorise('language_translation.access', 'com_componentbuilder')); if (!$access) { unset($items[$nr]); @@ -118,7 +118,7 @@ class ComponentbuilderModelLanguage_placeholders extends JModelList } // convert components - $item->components = ComponentbuilderHelper::jsonToString($item->components, ', ', 'components'); + $item->components = ComponentbuilderHelper::jsonToString($item->components, ', ', 'joomla_component'); } } @@ -143,11 +143,7 @@ class ComponentbuilderModelLanguage_placeholders extends JModelList $query->select('a.*'); // From the componentbuilder_item table - $query->from($db->quoteName('#__componentbuilder_language_placeholder', 'a')); - - // From the componentbuilder_joomla_component table. - $query->select($db->quoteName('g.system_name','components_system_name')); - $query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.components') . ' = ' . $db->quoteName('g.id') . ')'); + $query->from($db->quoteName('#__componentbuilder_language_translation', 'a')); // Filter by published state $published = $this->getState('filter.published'); @@ -185,7 +181,7 @@ class ComponentbuilderModelLanguage_placeholders extends JModelList else { $search = $db->quote('%' . $db->escape($search) . '%'); - $query->where('(a.placeholder LIKE '.$search.' OR a.components LIKE '.$search.' OR g.system_name LIKE '.$search.')'); + $query->where('(a.entranslation LIKE '.$search.' OR a.components LIKE '.$search.' OR g.system_name LIKE '.$search.')'); } } @@ -222,8 +218,8 @@ class ComponentbuilderModelLanguage_placeholders extends JModelList // Select some fields $query->select('a.*'); - // From the componentbuilder_language_placeholder table - $query->from($db->quoteName('#__componentbuilder_language_placeholder', 'a')); + // From the componentbuilder_language_translation table + $query->from($db->quoteName('#__componentbuilder_language_translation', 'a')); $query->where('a.id IN (' . implode(',',$pks) . ')'); // Implement View Level Access if (!$user->authorise('core.options', 'com_componentbuilder')) @@ -249,7 +245,7 @@ class ComponentbuilderModelLanguage_placeholders extends JModelList $user = JFactory::getUser(); foreach ($items as $nr => &$item) { - $access = ($user->authorise('language_placeholder.access', 'com_componentbuilder.language_placeholder.' . (int) $item->id) && $user->authorise('language_placeholder.access', 'com_componentbuilder')); + $access = ($user->authorise('language_translation.access', 'com_componentbuilder.language_translation.' . (int) $item->id) && $user->authorise('language_translation.access', 'com_componentbuilder')); if (!$access) { unset($items[$nr]); @@ -284,7 +280,7 @@ class ComponentbuilderModelLanguage_placeholders extends JModelList // Get a db connection. $db = JFactory::getDbo(); // get the columns - $columns = $db->getTableColumns("#__componentbuilder_language_placeholder"); + $columns = $db->getTableColumns("#__componentbuilder_language_translation"); if (ComponentbuilderHelper::checkArray($columns)) { // remove the headers you don't import/export. @@ -316,7 +312,7 @@ class ComponentbuilderModelLanguage_placeholders extends JModelList $id .= ':' . $this->getState('filter.ordering'); $id .= ':' . $this->getState('filter.created_by'); $id .= ':' . $this->getState('filter.modified_by'); - $id .= ':' . $this->getState('filter.placeholder'); + $id .= ':' . $this->getState('filter.entranslation'); return parent::getStoreId($id); } @@ -340,7 +336,7 @@ class ComponentbuilderModelLanguage_placeholders extends JModelList // reset query $query = $db->getQuery(true); $query->select('*'); - $query->from($db->quoteName('#__componentbuilder_language_placeholder')); + $query->from($db->quoteName('#__componentbuilder_language_translation')); $db->setQuery($query); $db->execute(); if ($db->getNumRows()) @@ -363,7 +359,7 @@ class ComponentbuilderModelLanguage_placeholders extends JModelList ); // Check table - $query->update($db->quoteName('#__componentbuilder_language_placeholder'))->set($fields)->where($conditions); + $query->update($db->quoteName('#__componentbuilder_language_translation'))->set($fields)->where($conditions); $db->setQuery($query); diff --git a/admin/sql/install.mysql.utf8.sql b/admin/sql/install.mysql.utf8.sql index c81eb1db0..64cbd78e3 100644 --- a/admin/sql/install.mysql.utf8.sql +++ b/admin/sql/install.mysql.utf8.sql @@ -558,9 +558,9 @@ CREATE TABLE IF NOT EXISTS `#__componentbuilder_custom_code` ( KEY `idx_component` (`component`), KEY `idx_target` (`target`), KEY `idx_type` (`type`), + KEY `idx_to_line` (`to_line`), KEY `idx_function_name` (`function_name`), - KEY `idx_from_line` (`from_line`), - KEY `idx_to_line` (`to_line`) + KEY `idx_from_line` (`from_line`) ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__componentbuilder_snippet` ( @@ -683,11 +683,11 @@ CREATE TABLE IF NOT EXISTS `#__componentbuilder_fieldtype` ( KEY `idx_catid` (`catid`) ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; -CREATE TABLE IF NOT EXISTS `#__componentbuilder_language_placeholder` ( +CREATE TABLE IF NOT EXISTS `#__componentbuilder_language_translation` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.', `components` TEXT NOT NULL, - `placeholder` TEXT NOT NULL, + `entranslation` TEXT NOT NULL, `translation` TEXT NOT NULL, `params` text NOT NULL DEFAULT '', `published` TINYINT(3) NOT NULL DEFAULT 1, @@ -950,7 +950,7 @@ INSERT INTO `#__componentbuilder_fieldtype` (`id`, `catid`, `description`, `name (20, '', 'The spacer form field type provides a visual separator between parameter field elements. It is purely a visual aid and no field value is stored.', 'Spacer', '{\"name\":[\"type\",\"name\",\"label\",\"description\",\"hr\",\"class\"],\"example\":[\"spacer\",\"myspacer\",\"The notice\",\"The notice description\",\"\",\"\"],\"adjustable\":[\"0\",\"1\",\"1\",\"1\",\"1\",\"1\"],\"mandatory\":[\"1\",\"1\",\"0\",\"0\",\"0\",\"0\"],\"translatable\":[\"0\",\"0\",\"1\",\"1\",\"0\",\"0\"],\"description\":[\"(mandatory) must be spacer.\",\"(mandatory) is the unique name of the field.\",\"(optional) (translatable) is the text to use as a spacer.\",\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\",\"(optional) is whether to display a horizontal rule (\'true\' or \'false\'). If this attribute is \'true\', the label attribute will be ignored.\",\"(optional) is a CSS class name for the HTML form field.\"]}', 'provides a visual separator between form fields. It is purely a visual aid and no value is stored.', '', 1, 1, '', ''), (23, '', 'The tel field type is an alias for a text field. Telephone numbers can be validated using the tel rule and filtered using the tel input filter.', 'Tel', '{\"name\":[\"type\",\"name\",\"label\",\"size\",\"maxlength\",\"default\",\"description\",\"class\",\"readonly\",\"disabled\",\"required\",\"filter\",\"validated\",\"message\",\"hint\",\"showon\",\"onchange\"],\"example\":[\"text\",\"phone\",\"Phone\",\"10\",\"50\",\"\",\"Enter phone number\",\"text_area\",\"false\",\"false\",\"false\",\"tel\",\"tel\",\"Error! Please add phone number here.\",\"Your Phone Number\",\"\",\"\"],\"adjustable\":[\"0\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\"],\"mandatory\":[\"1\",\"1\",\"1\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\"],\"translatable\":[\"0\",\"0\",\"1\",\"0\",\"0\",\"0\",\"1\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"1\",\"0\",\"0\"],\"description\":[\"(mandatory) must be text.\",\"(mandatory) is the unique name of the field.\",\"(mandatory) (translatable) is the descriptive title of the field.\",\"(optional) is the width of the text box in characters. If omitted the width is determined by the browser. The value of size does not limit the number of characters that may be entered.\",\"(optional) limits the number of characters that may be entered.\",\"(optional) (not translatable) is the default value.\",\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\",\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'text_area\'.\",\"(optional) The field cannot be changed and will automatically inherit the default value\",\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\",\"(optional) The field must be filled before submitting the form.\",\"(optional) allow the system to save certain html tags or raw data.\",\"(optional) allow the system to validated the input data.\",\"(optional) The error message that will be displayed instead of the default message.\",\"(optional) The placeholder to display inside the text box.\",\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+\",\"(optional) HTML equivalent attribute (javascript use)\"]}', 'provides an input field for a telephone number.', '', 1, 4, '', ''), (24, '', 'The text form field type provides a text box for data entry. If the field has a value saved, this value is displayed when the page is first loaded. If not, the default value (if any) is selected.', 'Text', '{\"name\":[\"type\",\"name\",\"label\",\"size\",\"maxlength\",\"default\",\"description\",\"class\",\"readonly\",\"disabled\",\"required\",\"filter\",\"validate\",\"field\",\"message\",\"hint\",\"showon\",\"onchange\"],\"example\":[\"text\",\"mytextvalue\",\"Enter some text\",\"10\",\"50\",\"Some text\",\"Enter some description\",\"text_area\",\"false\",\"false\",\"false\",\"STRING\",\"\",\"\",\"Error! Please add some text here.\",\"Your Name Here\",\"\",\"\"],\"adjustable\":[\"0\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\"],\"mandatory\":[\"1\",\"1\",\"1\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\"],\"translatable\":[\"0\",\"0\",\"1\",\"0\",\"0\",\"0\",\"1\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"1\",\"0\",\"0\"],\"description\":[\"(mandatory) must be text.\",\"(mandatory) is the unique name of the field.\",\"(mandatory) (translatable) is the descriptive title of the field.\",\"(optional) is the width of the text box in characters. If omitted the width is determined by the browser. The value of size does not limit the number of characters that may be entered.\",\"(optional) limits the number of characters that may be entered.\",\"(optional) (not translatable) is the default value.\",\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\",\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'text_area\'.\",\"(optional) The field cannot be changed and will automatically inherit the default value\",\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\",\"(optional) The field must be filled before submitting the form.\",\"(optional) allow the system to save certain html tags or raw data.\",\"(optional) makes the system validate the data.\",\"(optional) used in validation of \\\"equals\\\" to link the field to match.\",\"(optional) The error message that will be displayed instead of the default message.\",\"(optional) The placeholder to display inside the text box.\",\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+\",\"(optional) HTML equivalent attribute (javascript use)\"]}', 'provides a text box for data entry.', '', 1, 5, '', ''), -(25, '', 'The textarea form field type provides a text area for entry of multi-line text. If the field has a value saved, this value is displayed when the page is first loaded. If not, the default value (if any) is selected.', 'Textarea', '{\"name\":[\"type\",\"name\",\"label\",\"rows\",\"cols\",\"default\",\"description\",\"class\",\"filter\",\"hint\",\"required\",\"showon\",\"onchange\"],\"example\":[\"textarea\",\"mytextarea\",\"Enter some text\",\"10\",\"5\",\"default text\",\"Text Area\",\"text_area\",\"raw\",\"\",\"\",\"\",\"\"],\"adjustable\":[\"0\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\"],\"mandatory\":[\"1\",\"1\",\"1\",\"1\",\"1\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\"],\"translatable\":[\"0\",\"0\",\"1\",\"0\",\"0\",\"0\",\"1\",\"0\",\"0\",\"1\",\"0\",\"0\",\"0\"],\"description\":[\"(mandatory) must be textarea.\",\"(mandatory) is the unique name of the field.\",\"(mandatory) (translatable) is the descriptive title of the field.\",\"(mandatory) is the height of the visible text area in lines. If omitted the width is determined by the browser. The value of rows does not limit the number of lines that may be entered.\",\"(mandatory) is the width of the visible text area in characters. If omitted the width is determined by the browser. The value of cols does not limit the number of characters that may be entered.\",\"(optional) (not translatable) is the default value.\",\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\",\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'text_area\'.\",\"(optional) allow the system to save certain html tags or raw data.\",\"(optional) The placeholder to display inside the textarea.\",\"(optional) The field must be filled before submitting the form.\",\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+\",\"(optional) HTML equivalent attribute (javascript use)\"]}', 'provides a text area for entry of multi-line text.', '', 1, 4, '', ''), +(25, '', 'The textarea form field type provides a text area for entry of multi-line text. If the field has a value saved, this value is displayed when the page is first loaded. If not, the default value (if any) is selected.', 'Textarea', '{\"name\":[\"type\",\"name\",\"label\",\"rows\",\"cols\",\"default\",\"description\",\"class\",\"filter\",\"hint\",\"required\",\"readonly\",\"disabled\",\"showon\",\"onchange\"],\"example\":[\"textarea\",\"mytextarea\",\"Enter some text\",\"10\",\"5\",\"default text\",\"Text Area\",\"text_area\",\"raw\",\"\",\"false\",\"false\",\"false\",\"\",\"\"],\"adjustable\":[\"0\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\"],\"mandatory\":[\"1\",\"1\",\"1\",\"1\",\"1\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\"],\"translatable\":[\"0\",\"0\",\"1\",\"0\",\"0\",\"0\",\"1\",\"0\",\"0\",\"1\",\"0\",\"0\",\"0\",\"0\",\"0\"],\"description\":[\"(mandatory) must be textarea.\",\"(mandatory) is the unique name of the field.\",\"(mandatory) (translatable) is the descriptive title of the field.\",\"(mandatory) is the height of the visible text area in lines. If omitted the width is determined by the browser. The value of rows does not limit the number of lines that may be entered.\",\"(mandatory) is the width of the visible text area in characters. If omitted the width is determined by the browser. The value of cols does not limit the number of characters that may be entered.\",\"(optional) (not translatable) is the default value.\",\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\",\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'text_area\'.\",\"(optional) allow the system to save certain html tags or raw data.\",\"(optional) The placeholder to display inside the textarea.\",\"(optional) The field must be filled before submitting the form.\",\"(optional) The field cannot be changed and will automatically inherit the default value\",\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\",\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+\",\"(optional) HTML equivalent attribute (javascript use)\"]}', 'provides a text area for entry of multi-line text.', '', 1, 5, '', ''), (26, '', 'The timezones form field type provides a drop down list of time zones. If the field has a value saved, this value is displayed when the page is first loaded. If not, the default value (if any) is selected.', 'Timezone', '{\"name\":[\"type\",\"name\",\"label\",\"default\",\"description\",\"showon\"],\"example\":[\"timezone\",\"timezone\",\"Timezone\",\"\",\"\",\"\"],\"adjustable\":[\"0\",\"1\",\"1\",\"1\",\"1\",\"1\"],\"mandatory\":[\"1\",\"1\",\"1\",\"0\",\"0\",\"0\"],\"translatable\":[\"0\",\"0\",\"1\",\"0\",\"1\",\"0\"],\"description\":[\"(mandatory) must be timezone.\",\"(mandatory) is the unique name of the field.\",\"(mandatory) (translatable) is the descriptive title of the field.\",\"(optional) is the default time zone. For example, use \'-10\' for \'(UTC -10:00) Hawaii\'.\",\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\",\"(optional) show this field on the bases of the value in another field.\"]}', 'provides a drop down list of time zones.', '', 1, 2, '', ''), (27, '', 'This field essentially is a text field with the type of url. If a fully qualified url (that is one with a scheme and domain such as http://example.com) is entered and it uses idn (that is uses characters that are non ascii such as ê or Ψ) it will translat', 'URL', '{\"name\":[\"type\",\"name\",\"label\",\"size\",\"maxlength\",\"default\",\"description\",\"class\",\"readonly\",\"disabled\",\"required\",\"filter\",\"validated\",\"message\",\"hint\",\"showon\",\"onchange\"],\"example\":[\"url\",\"website\",\"Website\",\"10\",\"50\",\"\",\"Enter website address\",\"text_area\",\"\",\"\",\"\",\"url\",\"url\",\"Error! Please add website here.\",\"Your Website Here\",\"\",\"\"],\"adjustable\":[\"0\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\"],\"mandatory\":[\"1\",\"1\",\"1\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\"],\"translatable\":[\"0\",\"0\",\"1\",\"0\",\"0\",\"0\",\"1\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"1\",\"0\",\"0\"],\"description\":[\"(mandatory) must be url.\",\"(mandatory) is the unique name of the field.\",\"(mandatory) (translatable) is the descriptive title of the field.\",\"(optional) is the width of the text box in characters. If omitted the width is determined by the browser. The value of size does not limit the number of characters that may be entered.\",\"(optional) limits the number of characters that may be entered.\",\"(optional) (not translatable) is the default value.\",\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\",\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'text_area\'.\",\"(optional) The field cannot be changed and will automatically inherit the default value\",\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\",\"(optional) The field must be filled before submitting the form.\",\"(optional) allow the system to save certain html tags or raw data.\",\"(optional) allow the system to validated the input data.\",\"(optional) The error message that will be displayed instead of the default message.\",\"(optional) The placeholder to display inside the text box.\",\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+\",\"(optional) HTML equivalent attribute (javascript use)\"]}', 'provides a URL text input field.', '', 1, 4, '', ''); diff --git a/admin/sql/uninstall.mysql.utf8.sql b/admin/sql/uninstall.mysql.utf8.sql index fcddac080..7212c0456 100644 --- a/admin/sql/uninstall.mysql.utf8.sql +++ b/admin/sql/uninstall.mysql.utf8.sql @@ -9,6 +9,6 @@ DROP TABLE IF EXISTS `#__componentbuilder_custom_code`; DROP TABLE IF EXISTS `#__componentbuilder_snippet`; DROP TABLE IF EXISTS `#__componentbuilder_field`; DROP TABLE IF EXISTS `#__componentbuilder_fieldtype`; -DROP TABLE IF EXISTS `#__componentbuilder_language_placeholder`; +DROP TABLE IF EXISTS `#__componentbuilder_language_translation`; DROP TABLE IF EXISTS `#__componentbuilder_language`; DROP TABLE IF EXISTS `#__componentbuilder_help_document`; diff --git a/admin/sql/updates/mysql/2.4.1.sql b/admin/sql/updates/mysql/2.4.1.sql index a4a9eb87d..a03ca162e 100644 --- a/admin/sql/updates/mysql/2.4.1.sql +++ b/admin/sql/updates/mysql/2.4.1.sql @@ -1,8 +1,8 @@ -CREATE TABLE IF NOT EXISTS `#__componentbuilder_language_placeholder` ( +CREATE TABLE IF NOT EXISTS `#__componentbuilder_language_translation` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.', `components` TEXT NOT NULL, - `placeholder` TEXT NOT NULL, + `entranslation` TEXT NOT NULL, `translation` TEXT NOT NULL, `params` text NOT NULL DEFAULT '', `published` TINYINT(3) NOT NULL DEFAULT 1, diff --git a/admin/tables/custom_code.php b/admin/tables/custom_code.php index cf8fb28eb..0eb9dfbfb 100644 --- a/admin/tables/custom_code.php +++ b/admin/tables/custom_code.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage custom_code.php diff --git a/admin/tables/joomla_component.php b/admin/tables/joomla_component.php index fed5dd789..ad6a2cf51 100644 --- a/admin/tables/joomla_component.php +++ b/admin/tables/joomla_component.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage joomla_component.php diff --git a/admin/tables/language_placeholder.php b/admin/tables/language_translation.php similarity index 88% rename from admin/tables/language_placeholder.php rename to admin/tables/language_translation.php index 7390e2769..3ad379a5d 100644 --- a/admin/tables/language_placeholder.php +++ b/admin/tables/language_translation.php @@ -10,11 +10,11 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 8 of this MVC - @build 3rd April, 2017 + @version @update number 28 of this MVC + @build 5th April, 2017 @created 3rd April, 2017 @package Component Builder - @subpackage language_placeholder.php + @subpackage language_translation.php @author Llewellyn van der Merwe @copyright Copyright (C) 2015. All Rights Reserved @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html @@ -32,9 +32,9 @@ use Joomla\Registry\Registry; jimport('joomla.database.table'); /** - * Language_placeholders Table class + * Language_translations Table class */ -class ComponentbuilderTableLanguage_placeholder extends JTable +class ComponentbuilderTableLanguage_translation extends JTable { /** * Ensure the params and metadata in json encoded in the bind method @@ -51,10 +51,10 @@ class ComponentbuilderTableLanguage_placeholder extends JTable */ function __construct(&$db) { - parent::__construct('#__componentbuilder_language_placeholder', 'id', $db); + parent::__construct('#__componentbuilder_language_translation', 'id', $db); // Adding History Options - JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_componentbuilder.language_placeholder')); + JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_componentbuilder.language_translation')); } public function bind($array, $ignore = '') @@ -84,7 +84,7 @@ class ComponentbuilderTableLanguage_placeholder extends JTable } /** - * Overload the store method for the Language_placeholder table. + * Overload the store method for the Language_translation table. * * @param boolean Toggle whether null values should be updated. * @return boolean True on success, false on failure. @@ -103,7 +103,7 @@ class ComponentbuilderTableLanguage_placeholder extends JTable } else { - // New language_placeholder. A language_placeholder created and created_by field can be set by the user, + // New language_translation. A language_translation created and created_by field can be set by the user, // so we don't touch either of these if they are set. if (!(int) $this->created) { @@ -118,11 +118,11 @@ class ComponentbuilderTableLanguage_placeholder extends JTable if (isset($this->alias)) { // Verify that the alias is unique - $table = JTable::getInstance('language_placeholder', 'ComponentbuilderTable'); + $table = JTable::getInstance('language_translation', 'ComponentbuilderTable'); if ($table->load(array('alias' => $this->alias)) && ($table->id != $this->id || $this->id == 0)) { - $this->setError(JText::_('COM_COMPONENTBUILDER_LANGUAGE_PLACEHOLDER_ERROR_UNIQUE_ALIAS')); + $this->setError(JText::_('COM_COMPONENTBUILDER_LANGUAGE_TRANSLATION_ERROR_UNIQUE_ALIAS')); return false; } } @@ -153,7 +153,7 @@ class ComponentbuilderTableLanguage_placeholder extends JTable // Generate a valid alias $this->generateAlias(); - $table = JTable::getInstance('language_placeholder', 'componentbuilderTable'); + $table = JTable::getInstance('language_translation', 'componentbuilderTable'); while ($table->load(array('alias' => $this->alias)) && ($table->id != $this->id || $this->id == 0)) { @@ -202,7 +202,7 @@ class ComponentbuilderTableLanguage_placeholder extends JTable // If we don't have any access rules set at this point just use an empty JAccessRules class if (!$this->getRules()) { - $rules = $this->getDefaultAssetValues('com_componentbuilder.language_placeholder.'.$this->id); + $rules = $this->getDefaultAssetValues('com_componentbuilder.language_translation.'.$this->id); $this->setRules($rules); } @@ -293,7 +293,7 @@ class ComponentbuilderTableLanguage_placeholder extends JTable protected function _getAssetName() { $k = $this->_tbl_key; - return 'com_componentbuilder.language_placeholder.'.(int) $this->$k; + return 'com_componentbuilder.language_translation.'.(int) $this->$k; } /** diff --git a/admin/views/componentbuilder/tmpl/default.php b/admin/views/componentbuilder/tmpl/default.php index d7c8b9dfd..15d0cd6b4 100644 --- a/admin/views/componentbuilder/tmpl/default.php +++ b/admin/views/componentbuilder/tmpl/default.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage default.php diff --git a/admin/views/componentbuilder/tmpl/default_closed_issues_the_closed_issues_on_github.php b/admin/views/componentbuilder/tmpl/default_closed_issues_the_closed_issues_on_github.php index bb328c9b2..6e0c5ec2e 100644 --- a/admin/views/componentbuilder/tmpl/default_closed_issues_the_closed_issues_on_github.php +++ b/admin/views/componentbuilder/tmpl/default_closed_issues_the_closed_issues_on_github.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage default_closed_issues_the_closed_issues_on_github.php diff --git a/admin/views/componentbuilder/tmpl/default_main.php b/admin/views/componentbuilder/tmpl/default_main.php index a58ff88ac..99ba085e5 100644 --- a/admin/views/componentbuilder/tmpl/default_main.php +++ b/admin/views/componentbuilder/tmpl/default_main.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage default_main.php diff --git a/admin/views/componentbuilder/tmpl/default_open_issues_the_open_issues_on_github.php b/admin/views/componentbuilder/tmpl/default_open_issues_the_open_issues_on_github.php index 2960466ac..1df1884fd 100644 --- a/admin/views/componentbuilder/tmpl/default_open_issues_the_open_issues_on_github.php +++ b/admin/views/componentbuilder/tmpl/default_open_issues_the_open_issues_on_github.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage default_open_issues_the_open_issues_on_github.php diff --git a/admin/views/componentbuilder/tmpl/default_readme_information.php b/admin/views/componentbuilder/tmpl/default_readme_information.php index e0bea9c3f..73d40ec65 100644 --- a/admin/views/componentbuilder/tmpl/default_readme_information.php +++ b/admin/views/componentbuilder/tmpl/default_readme_information.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage default_readme_information.php diff --git a/admin/views/componentbuilder/tmpl/default_vast_development_method_notice_board.php b/admin/views/componentbuilder/tmpl/default_vast_development_method_notice_board.php index 6cf0d068b..ef287458f 100644 --- a/admin/views/componentbuilder/tmpl/default_vast_development_method_notice_board.php +++ b/admin/views/componentbuilder/tmpl/default_vast_development_method_notice_board.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage default_vast_development_method_notice_board.php diff --git a/admin/views/componentbuilder/tmpl/default_vdm.php b/admin/views/componentbuilder/tmpl/default_vdm.php index 1d7c793eb..8d8637053 100644 --- a/admin/views/componentbuilder/tmpl/default_vdm.php +++ b/admin/views/componentbuilder/tmpl/default_vdm.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage default_vdm.php diff --git a/admin/views/componentbuilder/view.html.php b/admin/views/componentbuilder/view.html.php index 44a925089..7b76fdb98 100644 --- a/admin/views/componentbuilder/view.html.php +++ b/admin/views/componentbuilder/view.html.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage view.html.php diff --git a/admin/views/custom_code/submitbutton.js b/admin/views/custom_code/submitbutton.js index 2a64e8a96..94b1ab5f5 100644 --- a/admin/views/custom_code/submitbutton.js +++ b/admin/views/custom_code/submitbutton.js @@ -9,8 +9,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage submitbutton.js diff --git a/admin/views/custom_code/tmpl/edit.php b/admin/views/custom_code/tmpl/edit.php index 4f9c1b60a..1432dcf75 100644 --- a/admin/views/custom_code/tmpl/edit.php +++ b/admin/views/custom_code/tmpl/edit.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage edit.php @@ -262,6 +262,7 @@ jQuery('#adminForm').on('change', '#jform_comment_type',function (e) jQuery('#phpjs-comment-info').show(); } }); + // nice little dot trick :) jQuery(document).ready( function($) { var x=0; @@ -273,5 +274,5 @@ jQuery(document).ready( function($) { } $(".loading-dots").text(dots); } , 500); -}); +}); diff --git a/admin/views/custom_code/view.html.php b/admin/views/custom_code/view.html.php index 990b0380a..295535513 100644 --- a/admin/views/custom_code/view.html.php +++ b/admin/views/custom_code/view.html.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage view.html.php diff --git a/admin/views/custom_codes/tmpl/default.php b/admin/views/custom_codes/tmpl/default.php index c7774c40b..d41fe504a 100644 --- a/admin/views/custom_codes/tmpl/default.php +++ b/admin/views/custom_codes/tmpl/default.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage default.php diff --git a/admin/views/custom_codes/tmpl/default_batch_body.php b/admin/views/custom_codes/tmpl/default_batch_body.php index b5503b91e..3350ce19b 100644 --- a/admin/views/custom_codes/tmpl/default_batch_body.php +++ b/admin/views/custom_codes/tmpl/default_batch_body.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage default_batch_body.php diff --git a/admin/views/custom_codes/tmpl/default_batch_footer.php b/admin/views/custom_codes/tmpl/default_batch_footer.php index 8f8f0b1c6..3f6a68132 100644 --- a/admin/views/custom_codes/tmpl/default_batch_footer.php +++ b/admin/views/custom_codes/tmpl/default_batch_footer.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage default_batch_footer.php diff --git a/admin/views/custom_codes/tmpl/default_body.php b/admin/views/custom_codes/tmpl/default_body.php index ebd8a5203..4812d89af 100644 --- a/admin/views/custom_codes/tmpl/default_body.php +++ b/admin/views/custom_codes/tmpl/default_body.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage default_body.php diff --git a/admin/views/custom_codes/tmpl/default_foot.php b/admin/views/custom_codes/tmpl/default_foot.php index 12bea733e..2a0345024 100644 --- a/admin/views/custom_codes/tmpl/default_foot.php +++ b/admin/views/custom_codes/tmpl/default_foot.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage default_foot.php diff --git a/admin/views/custom_codes/tmpl/default_head.php b/admin/views/custom_codes/tmpl/default_head.php index 227fcfbfb..0eaf27831 100644 --- a/admin/views/custom_codes/tmpl/default_head.php +++ b/admin/views/custom_codes/tmpl/default_head.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage default_head.php diff --git a/admin/views/custom_codes/tmpl/default_toolbar.php b/admin/views/custom_codes/tmpl/default_toolbar.php index 9be2ca100..c01b438bc 100644 --- a/admin/views/custom_codes/tmpl/default_toolbar.php +++ b/admin/views/custom_codes/tmpl/default_toolbar.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage default_toolbar.php diff --git a/admin/views/custom_codes/view.html.php b/admin/views/custom_codes/view.html.php index 2b6a3150c..572e2bbd6 100644 --- a/admin/views/custom_codes/view.html.php +++ b/admin/views/custom_codes/view.html.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 81 of this MVC - @build 1st March, 2017 + @version @update number 82 of this MVC + @build 3rd April, 2017 @created 11th October, 2016 @package Component Builder @subpackage view.html.php diff --git a/admin/views/import/tmpl/default.php b/admin/views/import/tmpl/default.php index 059076e23..79aa4647b 100644 --- a/admin/views/import/tmpl/default.php +++ b/admin/views/import/tmpl/default.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage default.php diff --git a/admin/views/import/view.html.php b/admin/views/import/view.html.php index 1d633b2cb..01b6d15b0 100644 --- a/admin/views/import/view.html.php +++ b/admin/views/import/view.html.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage view.html.php diff --git a/admin/views/import_joomla_components/tmpl/default.php b/admin/views/import_joomla_components/tmpl/default.php index 1a4e1c410..8ec67d603 100644 --- a/admin/views/import_joomla_components/tmpl/default.php +++ b/admin/views/import_joomla_components/tmpl/default.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage default.php diff --git a/admin/views/import_joomla_components/view.html.php b/admin/views/import_joomla_components/view.html.php index e21b2aa59..21a8b21dd 100644 --- a/admin/views/import_joomla_components/view.html.php +++ b/admin/views/import_joomla_components/view.html.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 2.4.2 - @build 3rd April, 2017 + @build 5th April, 2017 @created 30th April, 2015 @package Component Builder @subpackage view.html.php diff --git a/admin/views/joomla_component/submitbutton.js b/admin/views/joomla_component/submitbutton.js index 6d9c70bae..b38aa9e40 100644 --- a/admin/views/joomla_component/submitbutton.js +++ b/admin/views/joomla_component/submitbutton.js @@ -9,8 +9,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage submitbutton.js diff --git a/admin/views/joomla_component/tmpl/edit.php b/admin/views/joomla_component/tmpl/edit.php index 373f860ec..df55593ac 100644 --- a/admin/views/joomla_component/tmpl/edit.php +++ b/admin/views/joomla_component/tmpl/edit.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage edit.php diff --git a/admin/views/joomla_component/view.html.php b/admin/views/joomla_component/view.html.php index e3506719d..f5d64a46e 100644 --- a/admin/views/joomla_component/view.html.php +++ b/admin/views/joomla_component/view.html.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage view.html.php diff --git a/admin/views/joomla_components/tmpl/default.php b/admin/views/joomla_components/tmpl/default.php index 17bc64b74..64c313e2a 100644 --- a/admin/views/joomla_components/tmpl/default.php +++ b/admin/views/joomla_components/tmpl/default.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage default.php diff --git a/admin/views/joomla_components/tmpl/default_batch_body.php b/admin/views/joomla_components/tmpl/default_batch_body.php index eeaa61320..5b7720d36 100644 --- a/admin/views/joomla_components/tmpl/default_batch_body.php +++ b/admin/views/joomla_components/tmpl/default_batch_body.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage default_batch_body.php diff --git a/admin/views/joomla_components/tmpl/default_batch_footer.php b/admin/views/joomla_components/tmpl/default_batch_footer.php index 5b8a1530b..102a2eee9 100644 --- a/admin/views/joomla_components/tmpl/default_batch_footer.php +++ b/admin/views/joomla_components/tmpl/default_batch_footer.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage default_batch_footer.php diff --git a/admin/views/joomla_components/tmpl/default_body.php b/admin/views/joomla_components/tmpl/default_body.php index 5ff9abc4b..d387ab674 100644 --- a/admin/views/joomla_components/tmpl/default_body.php +++ b/admin/views/joomla_components/tmpl/default_body.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage default_body.php diff --git a/admin/views/joomla_components/tmpl/default_foot.php b/admin/views/joomla_components/tmpl/default_foot.php index cc3a64c8c..d60877c3e 100644 --- a/admin/views/joomla_components/tmpl/default_foot.php +++ b/admin/views/joomla_components/tmpl/default_foot.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage default_foot.php diff --git a/admin/views/joomla_components/tmpl/default_head.php b/admin/views/joomla_components/tmpl/default_head.php index 09eea54d4..f3deed9f0 100644 --- a/admin/views/joomla_components/tmpl/default_head.php +++ b/admin/views/joomla_components/tmpl/default_head.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage default_head.php diff --git a/admin/views/joomla_components/tmpl/default_toolbar.php b/admin/views/joomla_components/tmpl/default_toolbar.php index 30d9ae631..dbaf67007 100644 --- a/admin/views/joomla_components/tmpl/default_toolbar.php +++ b/admin/views/joomla_components/tmpl/default_toolbar.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage default_toolbar.php diff --git a/admin/views/joomla_components/view.html.php b/admin/views/joomla_components/view.html.php index 9a4a912be..69fb56c58 100644 --- a/admin/views/joomla_components/view.html.php +++ b/admin/views/joomla_components/view.html.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 311 of this MVC - @build 1st April, 2017 + @version @update number 314 of this MVC + @build 5th April, 2017 @created 6th May, 2015 @package Component Builder @subpackage view.html.php diff --git a/admin/views/language_placeholder/submitbutton.js b/admin/views/language_translation/submitbutton.js similarity index 92% rename from admin/views/language_placeholder/submitbutton.js rename to admin/views/language_translation/submitbutton.js index f922155c3..ac063b22d 100644 --- a/admin/views/language_placeholder/submitbutton.js +++ b/admin/views/language_translation/submitbutton.js @@ -9,8 +9,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 8 of this MVC - @build 3rd April, 2017 + @version @update number 28 of this MVC + @build 5th April, 2017 @created 3rd April, 2017 @package Component Builder @subpackage submitbutton.js @@ -42,7 +42,7 @@ Joomla.submitbutton = function(task) Joomla.submitform(task); return true; } else { - alert(Joomla.JText._('language_placeholder, some values are not acceptable.','Some values are unacceptable')); + alert(Joomla.JText._('language_translation, some values are not acceptable.','Some values are unacceptable')); return false; } } diff --git a/admin/views/language_placeholder/tmpl/edit.php b/admin/views/language_translation/tmpl/edit.php similarity index 74% rename from admin/views/language_placeholder/tmpl/edit.php rename to admin/views/language_translation/tmpl/edit.php index 84235ef1a..963723837 100644 --- a/admin/views/language_placeholder/tmpl/edit.php +++ b/admin/views/language_translation/tmpl/edit.php @@ -10,8 +10,8 @@ |_| /-------------------------------------------------------------------------------------------------------------------------------/ - @version @update number 8 of this MVC - @build 3rd April, 2017 + @version @update number 28 of this MVC + @build 5th April, 2017 @created 3rd April, 2017 @package Component Builder @subpackage edit.php @@ -58,35 +58,35 @@ $componentParams = JComponentHelper::getParams('com_componentbuilder');