Compare commits

...

74 Commits
v4.0.1 ... 5.x

Author SHA1 Message Date
45453f7330 Release of v5.1.2-alpha1
Fix the template and layout linker for packages.
2025-07-15 08:05:13 +00:00
e097540a7d Release of v5.1.1
Move all banners to GitHub. Adds library phpspreadsheet to JCB. Adds import item example to demo component. Updates the Superpower class with the GetRemote class in the plugin. Ensures the super power autoloader triggers the correct repositories. Adds the ModalSelect fieldtype to Joomla Component Builder - J5. Adds the Data Import Function to the Demo Component. Adds new country related tables and fields to the Demo Component. Resolves the Database Updating issue in the compiler. #1212,#1209. Adds the Component Commands Plugin to the CLI for Import of spreadsheet data-sets. Add edit and create options to the ModalSelect Field (in Joomla 5). Add all needed Powers to the release package, to speed-up the build of the demo component. Refactor initialization flow to accommodate future scalability and integration with all designated areas. Refactor the Creator Builders class. Refactor the FieldString and FieldXML classes. Add JCB new package engine. Enhance operator support in dynamic get system. Relates to issue #1226. Fixes issue with loading the Component Builder Wiki. Adds advanced version update notice to the Component Builder Dashboard. Completely refactors the class that builds the Component Dashboard. #1134. Fix the FieldXML interface mismatch. #1228. Adds Initialize, Reset, and Push functionality to the Repository entities. Completely refactors the SQL tweaks and SQL dump classes. Fix bug in the filter of Languages by linked entities. #1230. Adds option to export Language Translations.
2025-07-03 23:03:13 +00:00
087e3a7c19 Release of v5.1.1-rc1
Move all banners to GitHub. Adds library phpspreadsheet to JCB. Adds import item example to demo component. Updates the Superpower class with the GetRemote class in the plugin. Ensures the super power autoloader triggers the correct repositories. Adds the ModalSelect fieldtype to Joomla Component Builder - J5. Adds the Data Import Function to the Demo Component. Adds new country related tables and fields to the Demo Component. Resolves the Database Updating issue in the compiler. #1212,#1209. Adds the Component Commands Plugin to the CLI for Import of spreadsheet data-sets. Add edit and create options to the ModalSelect Field (in Joomla 5). Add all needed Powers to the release package, to speed-up the build of the demo component. Refactor initialization flow to accommodate future scalability and integration with all designated areas. Refactor the Creator Builders class. Refactor the FieldString and FieldXML classes. Add JCB new package engine. Enhance operator support in dynamic get system. Relates to issue #1226. Fixes issue with loading the Component Builder Wiki. Adds advanced version update notice to the Component Builder Dashboard. Completely refactors the class that builds the Component Dashboard. #1134. Fix the FieldXML interface mismatch. #1228. Adds Initialize, Reset, and Push functionality to the Repository entities. Completely refactors the SQL tweaks and SQL dump classes. Fix bug in the filter of Languages by linked entities. #1230.
2025-07-02 19:03:37 +00:00
1702bd1f0c Release of v5.1.1-beta6
Fix bug in the filter of Languages by linked entities. #1230.
2025-07-01 15:21:42 +00:00
cf681b2b16 Release of v5.1.1-beta5
Completely refactors the SQL tweaks and SQL dump classes.
2025-06-25 20:14:59 +00:00
af4b12a82b Release of v5.1.1-beta4
Fix the FieldXML interface mismatch. #1228. Adds Initialize, Reset, and Push functionality to the Repository entities.
2025-06-25 10:16:52 +00:00
dbebb5663c Release of v5.1.1-beta3
Fixes issue with loading the Component Builder Wiki. Adds advanced version update notice to the Component Builder Dashboard. Completely refactors the class that builds the Component Dashboard. #1134.
2025-06-23 17:02:17 +00:00
3c1057a830 Release of v5.1.1-beta2
Enhance operator support in dynamic get system. Relates to issue #1226.
2025-06-19 15:47:12 +00:00
70718936b4 Release of v5.1.1-beta1
Add JCB new package engine.
2025-06-18 19:49:35 +00:00
3b502eb09b Release of v5.1.1-alpha5
Refactor initialization flow to accommodate future scalability and integration with all designated areas. Refactor the Creator Builders class. Refactor the FieldString and FieldXML classes.
2025-05-13 13:39:32 +00:00
0b7e68d14e Release of v5.1.1-alpha4
Add all needed Powers to the release package, to speed-up the build of the demo component.
2025-03-30 21:42:51 +00:00
b9f38943aa Release of v5.1.1-alpha3
Add edit and create options to the ModalSelect Field (in Joomla 5).
2025-03-30 19:52:28 +00:00
8342c5bb9f Release of v5.1.1-alpha2
Adds the ModalSelect fieldtype to Joomla Component Builder - J5. Adds the Data Import Function to the Demo Component. Adds new country related tables and fields to the Demo Component. Resolves the Database Updating issue in the compiler. #1212,#1209. Adds the Component Commands Plugin to the CLI for Import of spreadsheet data-sets.
2025-03-28 13:15:25 +00:00
06185f8c3a Release of v5.1.1-alpha1
Move all banners to GitHub. Adds library phpspreadsheet to JCB. Adds import item example to demo component. Updates the Superpower class with the GetRemote class in the plugin. Ensures the super power autoloader triggers the correct repositories.
2025-03-04 21:50:18 +00:00
442263e387 Release of v5.1.0
Add [AllowDynamicProperties] in the base view class for J5. Move the _prepareDocument  above the display call in the base view class. Remove all backward compatibility issues, so JCB will not need the [Backward Compatibility] plugin to run. Added new import powers for custom import of spreadsheets. Move the setDocument and _prepareDocument above the display in the site view and custom admin view. Update the trashhelper layout to work in Joomla 5. Add AllowDynamicProperties (Joomla 4+5) to view class to allow Custom Dynamic Get methods to work without issues. Fix Save failed issue in dynamicGet. #1148. Move all [TEXT, EDITOR, TEXTAREA] fields from [NOT NULL] to [NULL]. Add the DateHelper class and improve the date methods. Add simple SessionHelper class. Add first classes for the new import engine. Improve the [VDM Registry] to be Joomla Registry Compatible. Move all registries to the [VDM Registry] class. Fix Checked Out to be null and not 0. (#1194). Fix created_by, modified_by, checked_out fields in the compiler of the SQL. (#1194). Update all core date fields in table class. (#1188). Update created_by, modified_by, checked_out fields in table class. Implementation of the decentralized Super-Power CORE repository network. (#1190). Fix the noticeboard to display Llewellyn's Joomla Social feed. Started compiling JCB5 on Joomla 5 with PHP 8.2. Add init_defaults option for dynamic form selection setup (to int new items with default values dynamically). Update all JCB 5 tables to utf8mb4_unicode_ci collation if misaligned. Move all internal ID linking to GUID inside of JCB 5. Updated the admin-tab-fields in add-fields view. #1205. Remove Custom Import Tab from admin view. Improved the customcode and placeholder search features.
2025-02-14 22:55:55 +02:00
82922eca5a Release of v5.0.3
Add [push] option to powers area. Fix error in [Save As Copy] functionality for the library. #1162. Fix error when no components exist. #1164. Fix search page error caused by File class. Fix UserGroupList compiler triggers. #1100. Add power integration field type with [init, reset, push] options. Fix default database fields to allow NULL values. #1169. Fix power list field to support search functionality. #1167. Expand Demo component in JCB v4 to include advanced features. Fix missing working path in zip creation. Fix dynamic retrieval for the demo site view. Fix demo site view to display files. Fix field type initialization message. Fix type-agnostic comparisons by casting to CHAR in dynamic get joins. Fix dynamic download for site area to use correct namespace. Fix missing edit button on fields in related views. Fix dashboard display issues. Restore search option in the [use] field for related views. Fix namespace issue causing linker to break.
2024-09-20 03:27:22 +02:00
9256633b37 Release of v5.0.3-beta3
Fix the missing edit button on fields in the related views. Fix the dashboard display. Place the search option back in the use field of the related views. Fix the namespace issue that broken the linker.
2024-09-20 03:01:45 +02:00
8ebeb56d3e Release of v5.0.3-beta2
Fix the demo site view to also display files. Fix the message of field type init. Fix to ensure type-agnostic comparisons by casting to CHAR in joins in dynamic get. Fix dynamic download for site area to have correct namespace.
2024-09-19 05:50:09 +02:00
f71c689d46 Release of v5.0.3-beta1
Fix zip missing working path. Fix demo site view dynamic get.
2024-09-18 23:21:16 +02:00
0603c39cc1 Release of v5.0.3-alpha4
Fix database default fields to allow NULL. #1169. Fix the power list field to allow search. #1167. Expanded the Demo component in JCB v4 to include more advance features.
2024-09-18 04:40:33 +02:00
fc8fabe298 Release of v5.0.3-alpha3
Fix usergrouplist compiler triggers. #1100. Add field type power integration [init, reset, push].
2024-08-23 20:00:42 +02:00
045e6df2e2 Release of v5.0.3-alpha2
Fix library save as copy error. #1162. Fix the error when no components exists. #1164. Fix search page error due to File class.
2024-08-21 21:37:52 +02:00
29fef2cbea Release of v5.0.3-alpha1
Add push option to powers area.
2024-08-20 22:34:47 +02:00
2fab51f611 Release of v5.0.2
Fix site view form missing classes in J4+. Fix permissions tab in items in J4+. Fix site display controller checkEditId function in J4+. Add class methods to the HtmlView classes in J4+. Fix broken toolbar call in HtmlView in J4+. Fix missing scripts and styles fields and methods in the site admin view model. Update subform field layout across JCB for cleaner look. Remove expansion feature. Fix helper area. Fix database mySql update in J4+. Remove phpspreadsheet completely from Joomla 4+. Add option to use powers in preflight event in the installer class. Fix abstract schema class function check default index warring. Fix dynamicGet so that the table values will load again. #1155. Add more pure JS to the dynamic get area. Add native plugin builder for Joomla 4 & 5. Add basic API for admin views.
2024-08-16 19:22:12 +02:00
22aa94ad9c Release of v5.0.2-beta4
Add native plugin builder for Joomla 4 & 5.
2024-08-15 01:35:23 +02:00
6d24fcfd2b Release of v5.0.2-beta3
Add more pure JS to the dynamic get area.
2024-08-01 23:01:42 +02:00
04ebefe98d Release of v5.0.2-beta2
Fix dynamicGet so that the table values will load again. #1155.
2024-08-01 18:08:40 +02:00
6a96c3b2c1 Release of v5.0.2-beta1
Fix abstract schema class function check default index warring.
2024-08-01 10:06:30 +02:00
c8b65b3b0b Release of v5.0.2-alpha3
Fix database mySql update in J4+. Remove phpspreadsheet completely from Joomla 4+. Add option to use powers in preflight event in the installer class.
2024-07-27 22:55:29 +02:00
0cbe573fe0 Release of v5.0.2-alpha2
Fix missing scripts and styles fields and methods in the site admin view model. Update subform field layout across JCB for cleaner look. Remove expansion feature. Fix helper area.
2024-07-26 18:34:11 +02:00
9f05fb090f Release of v5.0.2-alpha1
Fix site view form missing classes in J4+. Fix permissions tab in items in J4+. Fix site display controller checkEditId function in J4+. Add class methods to the HtmlView classes in J4+. Fix broken toolbar call in HtmlView in J4+.
2024-07-26 15:35:23 +02:00
e4d8b043c2 Release of v5.0.1
Fix auto build from SQL in Joomla 5. Fix permission issue for admin views. Add in JCB gitea push feature to help maintain JCB core features. Add extending options to interfaces. Change the extendsinterfaces field to allow null, #1139. Update the Schema class to also update null mismatching if needed. Add repositories for better integration with gitea. Refactored the Data classes. Add new Data classes. Add new subform classes. Fix registry class methods return type. Update all list and custom fields to use the new layouts. Add push options to Joomla Power. Complete the Joomla Power Init and Reset features. Fix Gitea Contents class functions. Fix subform set methods. Improved the Joomla Power Push path. Fix the metadata, metadesc, metakey database issue. Fix function mismatch call in the compiler power class. Fix init feature to only add missing powers. Fix controller postSaveHook function, for correct model class in Joomla 4 and 5. Fix app instances (mismatch) in the install script and schema class when installing from CLI. Add option to use placeholders in Joomla Power namespaces. Fix subform layout of uikit in JCB.
2024-07-20 22:40:37 +02:00
c6a6e8266a Release of v5.0.1-rc1
Final testing for stable release!.
2024-07-19 17:28:07 +02:00
25b59990b3 Release of v5.0.1-beta5
Add option to use placeholders in Joomla Power namespaces.
2024-07-19 12:35:14 +02:00
9db186ef73 Update on v5.0.1-beta4 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-07-18 21:12:31 +02:00
b9860f7718 Release of v5.0.1-beta4
Fix app instances (mismatch) in the install script and schema class when installing from CLI.
2024-07-18 20:47:33 +02:00
dbe4c858fd Release of v5.0.1-beta3
Fix init feature to only add missing powers. Fix controller postSaveHook function, for correct model class in Joomla 4 and 5.
2024-07-18 17:10:48 +02:00
9284115e8d Update on v5.0.1-beta2 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-07-18 14:57:59 +02:00
92a14a44f5 Release of v5.0.1-beta2
Fix function mismatch call in the compiler power class.
2024-07-17 16:02:47 +02:00
a4a4a2ab9a Release of v5.0.1-beta1
Fix subform set methods. Improved the Joomla Power Push path. Fix the metadata, metadesc, metakey database issue.
2024-07-17 02:30:54 +02:00
18545c5b8d Release of v5.0.1-alpha7
Add push options to Joomla Power. Complete the Joomla Power Init and Reset features. Fix Gitea Contents class functions. Last Alpha release (feature block).
2024-07-08 22:55:12 +02:00
0cbf3c0e71 Release of v5.0.1-alpha6
Add new subform classes. Fix registry class methods return type. Update all list and custom fields to use the new layouts.
2024-06-28 03:50:52 +02:00
c51ef999a9 Release of v5.0.1-alpha5
Add repositories for better integration with gitea. Refactored the Data classes. Add new Data classes.
2024-06-21 03:25:28 +02:00
fc6b04cb5c Release of v5.0.1-alpha4
Change the extendsinterfaces field to allow null, #1139. Update the Schema class to also update null mismatching if needed.
2024-06-07 23:21:05 +02:00
0c9a098335 Release of v5.0.1-alpha3
Add in JCB gitea push feature to help maintain JCB core features. Add extending options to interfaces.
2024-06-05 17:08:34 +02:00
aba1267f8e Release of v5.0.1-alpha2
Fix permission issue for admin views.
2024-05-16 16:07:17 +02:00
54d94753b4 Release of v5.0.1-alpha1
Fix auto build from SQL in Joomla 5.
2024-05-13 12:21:17 +02:00
b3199d2abb Release of v5.0.0
Fix the plug-in installer script builder bug #1067. Fix Event triggers for Joomla 4 and 5 builds. Add fix to the update script, so that upgrading JCB from Joomla 4 to 5 will not fail. Fix plugin field selection. Fix plugin params tab layout. Add issue templates. Force autoloader to always load. Fix repeatable layout #1076. Add Factory class to the J5 Event class. #1093. Fix customfilelist field to conform to the new namespacing conventions. #1094. Add menus for languages, servers, get snippets to J5 #1095. Fix [Set String Value] in placeholder table to store the value as a base64 string. Fix the search area layout. Fix the search area code line selection. Fix the input edit button for custom fields. Add the new layout to list fields (GUI UPDATE). Start fixing the field view in Joomla 5. #1096. Add power path override option on component level. Fix the sql build feature. #1032. Add the compiler menu back. Fix the CustomfolderlistField #1094. Add view list and single name fix. Add component code name fix. Add reset list of powers. Add Joomla powers for namespace dynamic management. Add fallback option to ensure that all JCB tables and fields exist. Move the powers autoloader to its own file. Fix the media field size limitation. #1109. Add dynamic datatype update to schema field check. Fix version_update column size. Improved the Schema Table update engine. Improved the Schema Table update engine (more). Fix autoloader timing, and loading. Implement the Joomla Powers in JCB code, to move away from JClasses. Remove the SQL update, to only use the Schema updates of table columns to avoid collusion. Fix the admin.css file loading on dashboard. #1112. Fix dynamic get data-type default to 0. #1110. Fix the missing model call. #1114. Fix the wrong $date call. #1115. Add the BaseDatabaseModel use statement to custom site view controller. #1119. Fix the customfolderlist field. #1120.
2024-05-10 18:39:24 +02:00
b37c57611f Release of v5.0.0-rc6
Fix the customfolderlist field. #1120.
2024-05-06 07:48:49 +02:00
827641a3d4 Release of v5.0.0-rc5
Improved the Schema Table update engine (more). Fix autoloader timing, and loading. Implement the Joomla Powers in JCB code, to move away from JClasses. Remove the SQL update, to only use the Schema updates of table columns to avoid collusion. Fix the admin.css file loading on dashboard. #1112. Fix dynamic get data-type default to 0. #1110. Fix the missing model call. #1114. Fix the wrong $date call. #1115. Add the BaseDatabaseModel use statement to custom site view controller. #1119.
2024-05-03 07:47:48 +02:00
a24b5a0757 Release of v5.0.0-rc3
Improved the Schema Table update engine (more). Fix autoloader timing, and loading. Implement the Joomla Powers in JCB code, to move away from JClasses. Remove the SQL update, to only use the Schema updates of table columns to avoid collusion. Fix the admin.css file loading on dashboard. #1112. Fix dynamic get data-type default to 0. #1110.
2024-04-30 19:21:28 +02:00
8ab5f2daf4 Release of v5.0.0-rc2
Improved the Schema Table update engine (more). Fix autoloader timing, and loading. Implement the Joomla Powers in JCB code, to move away from JClasses. Remove the SQL update, to only use the Schema updates of table columns to avoid collusion.
2024-04-30 12:29:37 +02:00
2a9a66b8a7 Release of v5.0.0-rc1
Improved the Schema Table update engine (more). Fix autoloader timing, and loading. Implement the Joomla Powers in JCB code, to move away from JClasses.
2024-04-27 16:00:36 +02:00
59af18e13a Release of v5.0.0-beta5
Fix the media field size limitation. #1109. Add dynamic datatype update to schema field check. Fix version_update column size. Improved the Schema Table update engine.
2024-04-24 21:38:12 +02:00
0193ab735c Release of v5.0.0-beta4
Add fallback option to ensure that all JCB tables and fields exist. Move the powers autoloader to its own file.
2024-04-22 01:15:03 +02:00
00f14c3bba Release of v5.0.0-beta3
Add Joomla powers for namespace dynamic management.
2024-04-16 20:26:48 +02:00
25b751a935 Takes away a unnecessary question from the issue_template's a-bug.yml. 2024-04-09 19:21:50 +02:00
b2c9daa455 Release of v5.0.0-beta2
Add view list and single name fix. Add component code name fix. Add reset list of powers.
2024-04-09 13:54:59 +02:00
b988010b79 Release of v5.0.0-beta1
Add the compiler menu back. Fix the CustomfolderlistField #1094.
2024-04-07 12:01:31 +02:00
2b7b8f90e1 Release of v5.0.0-alpha8
Add power path override option on component level. Fix the sql build feature. #1032.
2024-04-06 23:41:34 +02:00
2f64eec95b Release of v5.0.0-alpha7
Fix the search area layout. Fix the search area code line selection. Fix the input edit button for custom fields. Add the new layout to list fields (GUI UPDATE). Start fixing the field view in Joomla 5. #1096.
2024-03-26 22:51:07 +02:00
8548530b6d Release of v5.0.0-alpha6
Fix [Set String Value] in placeholder table to store the value as a base64 string.
2024-03-20 15:36:42 +02:00
ac3e230272 Release of v5.0.0-alpha5
Add Factory class to the J5 Event class. #1093. Fix customfilelist field to conform to the new namespacing conventions. #1094. Add menus for languages, servers, get snippets to J5 #1095.
2024-03-20 14:22:10 +02:00
8deb178d7c Release of v5.0.0-alpha4
Fix plugin field selection. Fix plugin params tab layout. Add issue templates. Force autoloader to always load. Fix repeatable layout #1076.
2024-03-15 12:26:29 +02:00
4ef96e9931 Adds g-security.yml to Component Builder v5.x 2024-03-14 14:15:15 +00:00
4116d87799 Adds e-performance.yml to Component Builder v5.x 2024-03-14 14:15:15 +00:00
1e286a7f6e Adds c-task.yml to Component Builder v5.x 2024-03-14 14:15:15 +00:00
e77ebd8e27 Adds a-bug.yml to Component Builder v5.x 2024-03-14 14:15:15 +00:00
ece14672d1 Adds an issue template for reporting the refactoring of specific locations in JCB. 2024-03-14 10:22:04 +02:00
87706b19bc Adds an issue template for the improvement of documentation in JCB. 2024-03-14 10:21:14 +02:00
ecc51c4871 Adds a issue template for reporting enhancements to JCB. 2024-03-14 10:19:10 +02:00
44dacc36a0 Release of v5.0.0-alpha3
Add fix to the update script, so that upgrading JCB from Joomla 4 to 5 will not fail.
2024-03-12 12:56:41 +02:00
a920cb429b Stable release of v5.0.0-alpha2
Fix the plug-in installer script builder bug #1067. Fix Event triggers for Joomla 4 and 5 builds.
2024-03-11 18:30:57 +02:00
87cd4305bb Stable release of v5.0.0-alpha1
First alpha release of Component Builder towards Joomla 5 (very unstable...).
2024-03-09 21:52:51 +02:00
5587 changed files with 583658 additions and 366337 deletions

View File

@ -0,0 +1,165 @@
name: Bug Report
about: Draft a report to aid in our Debugging efforts.
title: "[BUG]: "
labels:
- bug
body:
- type: markdown
attributes:
value: |
We value your effort in reporting an bug! Your feedback is essential for us to address and fix the problem.
- type: textarea
id: what-happened
attributes:
label: What Happened?
description: Please provide a detailed description of the issue and explain what outcome you anticipate.
placeholder: Describe the issue you experienced.
value: ""
validations:
required: true
- type: textarea
id: steps_to_reproduce
attributes:
label: Steps to reproduce the Bug
description: Please provide a detailed description of the steps to reproduce the issue you experienced.
placeholder: Describe the steps to reproduce the issue.
value: ""
validations:
required: true
- type: markdown
attributes:
value: |
# Environment Details
- type: input
id: joomla_version_compiling
attributes:
label: Which Joomla version are you compiling in?
placeholder: e.g., v4.4.3,
validations:
required: true
- type: input
id: php_version_compiling
attributes:
label: Which PHP version are you compiling in?
placeholder: e.g., v8.1,
validations:
required: true
- type: input
id: joomla_versions_targeting
attributes:
label: Which Joomla versions are you targeting?
placeholder: e.g., v5.0.3,
validations:
required: true
- type: input
id: php_version_targeting
attributes:
label: Which PHP version are you targeting?
placeholder: e.g., 8.2
validations:
required: true
- type: input
id: apache_version_using
attributes:
label: Which Web server is JCB running on?
description: Please provide the full name of the web server on which you are running JCB.
placeholder: e.g., Apache 2.4
validations:
required: true
- type: input
id: mysql_version_using
attributes:
label: Which Relational Database is JCB running on?
description: Please provide the full name of the database on which you are running JCB.
placeholder: e.g., Mysql 8.0, MariaDB 10.6,
validations:
required: true
- type: input
id: os
attributes:
label: Which OS is JCB running on?
description: Please provide the full name of the OS on which you are running JCB.
placeholder: e.g. CentOS 8 sever,
value: ""
validations:
required: true
- type: input
id: jcb_version
attributes:
label: Which JCB version are you using?
description: Please provide the full name of the JCB version you are using.
placeholder: e.g., v5.0.0-alpha3
validations:
required: true
- type: dropdown
id: area
attributes:
label: Where in JCB did this issue occur?
multiple: true
options:
- Compilation of a component
- Installation of a component
- Installation JCB pkg
- Installation of JCB plugins
- Compiler(admin_view)
- Dashboard(admin_view)
- Joomla Components(admin_views)
- Joomla Component(admin_view)
- Joomla Modules(admin_views)
- Joomla Module(admin_view)
- Joomla Plugins(admin_views)
- Joomla Plugin(admin_view)
- Power(admin_view)
- Powers(admin_views)
- Search(admin_view)
- Admin View(admin_view)
- Admin Views(admin_views)
- Custom Admin Views(admin_views)
- Site View(admin_view)
- Site Views(admin_views)
- Template(admin_view)
- Templates(admin_views)
- Layout(admin_view)
- Layouts(admin_views)
- Dynamic Get(admin_view)
- Dynamic Gets(admin_views)
- Custom Code(admin_view)
- Custom Codes(admin_views)
- Placeholder(admin_view)
- Placeholders(admin_views)
- Library(admin_view)
- Libraries(admin_views)
- Snippet(admin_view)
- Snippets(admin_views)
- Validation Rule(admin_view)
- Validation Rules(admin_views)
- Field(admin_view)
- Fields(admin_views)
- Fieldtypes(admin_views)
- Language Translations(admin_views)
- Server(admin_view)
- Servers(admin_views)
- Help Documents(admin_views)
- Other
validations:
required: true
- type: dropdown
id: browsers
attributes:
label: On which browsers did you encounter the issue?
multiple: true
options:
- Firefox
- Chrome
- Microsoft Edge
- Safari
- Opera
- Brave
- Vivaldi
validations:
required: true
- type: textarea
id: comments
attributes:
label: Additional Comments
description: Feel free to include any further comments or pertinent details that might assist us.

View File

@ -0,0 +1,81 @@
name: Enhancement Request
about: Suggest an idea for JCB
title: "[ENHANCEMENT]: "
labels:
- enhancement
body:
- type: markdown
attributes:
value: |
Thank you for suggesting an enhancement! Your input is crucial for our innovation and progress. To assist us better, please share detailed information about your idea.
- type: textarea
id: enhancement-details
attributes:
label: Enhancement Details
description: Could you detail the enhancement you're suggesting? Explain the issue it addresses or the new feature it introduces.
placeholder: Please give an in-depth explanation of your proposed enhancement.
validations:
required: true
- type: markdown
attributes:
value: |
# Context and Priority
- type: dropdown
id: area
attributes:
label: Which part of the extension will be affected by this enhancement?
multiple: true
options:
- Compilation of component
- Installation of a component
- Installation JCB pkg
- Installation of JCB plugins
- Compiler(admin_view)
- Dashboard(admin_view)
- Joomla Components(admin_views)
- Joomla Component(admin_view)
- Joomla Modules(admin_views)
- Joomla Module(admin_view)
- Joomla Plugins(admin_views)
- Joomla Plugin(admin_view)
- Power(admin_view)
- Powers(admin_views)
- Search(admin_view)
- Admin View(admin_view)
- Admin Views(admin_views)
- Custom Admin Views(admin_views)
- Site View(admin_view)
- Site Views(admin_views)
- Template(admin_view)
- Templates(admin_views)
- Layout(admin_view)
- Layouts(admin_views)
- Dynamic Get(admin_view)
- Dynamic Gets(admin_views)
- Custom Code(admin_view)
- Custom Codes(admin_views)
- Placeholder(admin_view)
- Placeholders(admin_views)
- Library(admin_view)
- Libraries(admin_views)
- Snippet(admin_view)
- Snippets(admin_views)
- Validation Rule(admin_view)
- Validation Rules(admin_views)
- Field(admin_view)
- Fields(admin_views)
- Fieldtypes(admin_views)
- Language Translations(admin_views)
- Server(admin_view)
- Servers(admin_views)
- Help Documents(admin_views)
- Other
validations:
required: true
- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Supply additional context or screenshots related to the enhancement request in this space.
validations:
required: false

View File

@ -0,0 +1,45 @@
name: Task
about: Create a task for project management
title: "[TASK]: "
labels:
- task
body:
- type: markdown
attributes:
value: |
Thanks for setting up the task! Tasks assist us in arranging and ranking our work. Kindly provide comprehensive details about the task for clarity and efficient tracking.
- type: textarea
id: task-details
attributes:
label: Task Details
description: Please describe the task. What are the specific actions required?
placeholder: Provide a detailed description of the task.
validations:
required: true
- type: markdown
attributes:
value: |
# Task Context and Priority
- type: textarea
id: task-environment
attributes:
label: Task environment
description: Please provide the details of the environment in which this task will be completed.
placeholder: Describe the environment applicable to the task.
validations:
required: true
- type: textarea
id: task-objective
attributes:
label: Task Objective
description: What's the aim or purpose of this task? How will it contribute to the project or system's success?
placeholder: Describe the goal and anticipated result of the task.
validations:
required: true
- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Please share any extra context, files, or screenshots that could aid in comprehending or carrying out the task.
validations:
required: false

View File

@ -0,0 +1,37 @@
name: Documentation
about: Propose improvements to the documentation or highlight any issues found within it.
title: "[DOCUMENTATION]: "
labels:
- documentation
body:
- type: markdown
attributes:
value: |
We appreciate your input on our documentation! Clear and comprehensive documentation plays a vital role in enabling users to effectively interact with our systems. To assist us in making improvements, kindly offer thorough details regarding your suggestion or the specific problem you've encountered.
- type: textarea
id: documentation-details
attributes:
label: Documentation Details
description: Please explain the specific problem with the documentation or the improvements you recommend. Is it a missing topic, unclear instructions, outdated content, or something else?
placeholder: Detail the issue with the documentation or suggest improvements..
validations:
required: true
- type: markdown
attributes:
value: |
# Specific Context
- type: textarea
id: expected-outcome
attributes:
label: Expected Outcome
description: What outcomes do you anticipate from this change in documentation? How will it benifit the users or enhance the project?
placeholder: Explain the expected result of this change in the documentation.
validations:
required: true
- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Share any extra details, files, or screenshots that could help in understanding or applying the documentation change.
validations:
required: false

View File

@ -0,0 +1,61 @@
name: Performance Issue
about: Recommend or propose performance improvements
title: "[PERFORMANCE]: "
labels:
- performance
body:
- type: markdown
attributes:
value: |
Appreciation for tackling performance challenges! Optimizing performance is vital for our system's efficiency and the user experience. Could you offer more comprehensive details to aid in identifying and resolving the suggested performance issue or improvement?
- type: textarea
id: performance-details
attributes:
label: Performance Details
description: Please outline the performance problem or the enhancements you propose. Is it related to speed, resource usage, responsiveness, or something else?
placeholder: Offer an in-depth explanation of the performance challenge or improvement.
validations:
required: true
- type: markdown
attributes:
value: |
# Affected Systems and Context
- type: textarea
id: performance-environment
attributes:
label: Environment in which performance issue occurs
description: Provide a detailed description of the environment in which you are experiencing this perforamnce issue.
placeholder: Describe the environment of the preformance issue.
validations:
required: true
- type: textarea
id: replication-steps
attributes:
label: Steps to Replicate
description: If possible, share a step-by-step guide to replicate the performance problem.
placeholder: Explain how to replicate the problem.
validations:
required: false
- type: textarea
id: impact-assessment
attributes:
label: Impact Assessment
description: How does the performance problem impact the system or its users? How severe is its effect?
placeholder: Explain the impact of the performance problem.
validations:
required: true
- type: textarea
id: proposed-solutions
attributes:
label: Proposed Solutions or Ideas
description: If you have any suggestions or ideas for resolving the performance problem, please share them here.
placeholder: Share any potential solutions or improvement problem.
validations:
required: false
- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Provide any additional context, benchmarks, logs, or screenshots that might help in understanding or addressing the performance problem.
validations:
required: false

View File

@ -0,0 +1,45 @@
name: Refactoring Task
about: Recommend or identify the necessity for code refactoring.
title: "[REFACTOR]: "
labels:
- refactor
body:
- type: markdown
attributes:
value: |
We appreciate your commitment to enhancing the maintainability and quality of our codebase! Code refactoring plays a crucial role in ensuring our system remains efficient and easy to manage. To assist us effectively, please share comprehensive details about the refactoring task you are suggesting or identifying.
- type: textarea
id: refactoring-details
attributes:
label: Refactoring Details
description: Outline the refactoring task, specifying which code segment requires attention and the reasons behind this need. What improvements are expected from this refactoring?
placeholder: Provide an in-depth explanation of the refactoring task?
validations:
required: true
- type: markdown
attributes:
value: |
# Affected Components and Context
- type: textarea
id: area
attributes:
label: Which file or area of JCB needs refactoring?
description: Which area in JCB should be refactored?
placeholder: Give a road map where the refactoring should take place.
validations:
required: true
- type: textarea
id: expected-outcome
attributes:
label: Expected Outcome
description: What benefits do you anticipate from this refactoring? How will it enhance the codebase or overall system?
placeholder: Explain the expected results of this refactoring.
validations:
required: true
- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Share any further details or information, like code snippets, that could aid in comprehending or executing the refactoring task.
validations:
required: false

View File

@ -0,0 +1,38 @@
name: Security Issue
about: Identify a possible security risk.
title: "[SECURITY]: "
labels:
- security
body:
- type: markdown
attributes:
value: |
**⚠️ CRITICAL: Avoid sharing any sensitive or confidential details in this message.** Should you suspect a security flaw, please contact us directly at [joomla@vdm.io].
- type: textarea
id: security-general-description
attributes:
label: General Description
description: Offer a broad overview of the security concern, ensuring not to disclose any sensitive information.
placeholder: Provide a general description of the security problem.
validations:
required: true
- type: markdown
attributes:
value: |
# Affected Systems
- type: textarea
id: security-environment
attributes:
label: Environment affected by security issue.
description: Give a general description of the environment affected by this security issue.
placeholder: Describe the affected environment.
validations:
required: true
- type: textarea
id: non-sensitive-details
attributes:
label: Non-Sensitive Details
description: If applicable, please offer further non-sensitive information or general observations regarding the security concern.
placeholder: Provide any relevant non-sensitive details or observations.
validations:
required: false

View File

@ -1,61 +1,221 @@
# v3.1.28 # v5.1.2-alpha1
- Updates PHPSecLib. - Fix the template and layout linker for packages.
- Fixed connection failure to remote server.
- Adds overriding of back-folder and git-folder on component level.
# v3.1.27 # v5.1.1
- Adds better remote repository management for the super power features. - Move all banners to GitHub.
- Fixes #1014 so that powers are added to components. - Adds library phpspreadsheet to JCB.
- Adds import item example to demo component.
- Updates the Superpower class with the GetRemote class in the plugin.
- Ensures the super power autoloader triggers the correct repositories.
- Adds the ModalSelect fieldtype to Joomla Component Builder - J5
- Adds the Data Import Function to the Demo Component.
- Adds new country related tables and fields to the Demo Component.
- Resolves the Database Updating issue in the compiler. #1212,#1209
- Adds the Component Commands Plugin to the CLI for Import of spreadsheet data-sets.
- Add edit and create options to the ModalSelect Field (in Joomla 5)
- Add all needed Powers to the release package, to speed-up the build of the demo component.
- Refactor initialization flow to accommodate future scalability and integration with all designated areas.
- Refactor the Creator Builders class.
- Refactor the FieldString and FieldXML classes.
- Add JCB new package engine.
- Enhance operator support in dynamic get system. Relates to issue #1226.
- Fixes issue with loading the Component Builder Wiki.
- Adds advanced version update notice to the Component Builder Dashboard.
- Completely refactors the class that builds the Component Dashboard. #1134
- Fix the FieldXML interface mismatch. #1228
- Adds Initialize, Reset, and Push functionality to the Repository entities.
- Completely refactors the SQL tweaks and SQL dump classes.
- Fix bug in the filter of Languages by linked entities. #1230
- Adds option to export Language Translations.
# v3.1.26 # v5.1.0
- Fixed changelog direction so newest changes is listed at top of the file. - Add [AllowDynamicProperties] in the base view class for J5
- Finished the init function of super powers. - Move the _prepareDocument above the display call in the base view class
- Adds rest function inside super power. - Remove all backward compatibility issues, so JCB will not need the [Backward Compatibility] plugin to run.
- Adds super powers to all templates. - Added new import powers for custom import of spreadsheets.
- Updates many helper class methods to now use the utility classes. - Move the setDocument and _prepareDocument above the display in the site view and custom admin view.
- Adds the `spl_autoload_register` method to the component entry file (as-well). - Update the trashhelper layout to work in Joomla 5.
- Moved most methods from the compiler fields class to powers. #955 - Add AllowDynamicProperties (Joomla 4+5) to view class to allow Custom Dynamic Get methods to work without issues.
- Refactored many new builder classes from the registry class. - Fix Save failed issue in dynamicGet. #1148
- Converted the Content class to two builder classes. - Move all [TEXT, EDITOR, TEXTAREA] fields from [NOT NULL] to [NULL]
- Adds option to add additional templates to a module. - Add the DateHelper class and improve the date methods.
- Resolves #1002 by adding STRING instead of WORD. - Add simple SessionHelper class.
- Ported the FOF encryption class into Powers. https://git.vdm.dev/joomla/fof - Add first classes for the new import engine.
- Changed all CSS and JS to use `JHtml::_(` instead of `$this->document->` in compiler code. - Improve the [VDM Registry] to be Joomla Registry Compatible
- Adds option to turn jQuery off if UIKIT 3 is added. - Move all registries to the [VDM Registry] class
- Adds option to auto write injection boilerplate code in Powers area. - Fix Checked Out to be null and not 0. (#1194)
- Adds option to auto write service provider boilerplate code in the Powers area. - Fix created_by, modified_by, checked_out fields in the compiler of the SQL. (#1194)
- Improved the `getDynamicContent` method and all banner locations to fetch from https://git.vdm.dev/joomla/jcb-external/ instead. - Update all core date fields in table class. (#1188)
- Major stability improvements all over the new powers complier classes. - Update created_by, modified_by, checked_out fields in table class.
- New [base Registry class](https://git.vdm.dev/joomla/super-powers/src/branch/master/src/7e822c03-1b20-41d1-9427-f5b8d5836af7) has been created specially for JCB. - Implementation of the decentralized Super-Power CORE repository network. (#1190)
- Remember to update all plug-ins with this version update (use the package). - Fix the noticeboard to display Llewellyn's Joomla Social feed
- Started compiling JCB5 on Joomla 5 with PHP 8.2
- Add init_defaults option for dynamic form selection setup (to int new items with default values dynamically)
- Update all JCB 5 tables to utf8mb4_unicode_ci collation if misaligned
- Move all internal ID linking to GUID inside of JCB 5
- Updated the admin-tab-fields in add-fields view. #1205
- Remove Custom Import Tab from admin view
- Improved the customcode and placeholder search features
# v3.1.24 # v5.0.3
- Fix the update server #978 issue. - Add [push] option to powers area.
- Fixed the change log to load all entries, not just the last one. - Fix error in [Save As Copy] functionality for the library. #1162
- Fixed #983 so that database updates are created when adding a new adminview - Fix error when no components exist. #1164
- Moved a few builder arrays to the Compiler Registry - Fix search page error caused by File class.
- Adds super powers to JCB - Fix UserGroupList compiler triggers. #1100
- Adds Gitea API library - Add power integration field type with [init, reset, push] options.
- Improves Power filters - Fix default database fields to allow NULL values. #1169
- Fix #991 to add the Utilities service class - Fix power list field to support search functionality. #1167
- Adds Superpower Key (SPK) replacement feature - Expand Demo component in JCB v4 to include advanced features.
- Adds Superpower search (GREP) feature - Fix missing working path in zip creation.
- Adds Power Insert/Update Classes - Fix dynamic retrieval for the demo site view.
- Fix #995 that all update sites are using the correct URL - Fix demo site view to display files.
- Fix field type initialization message.
- Fix type-agnostic comparisons by casting to CHAR in dynamic get joins.
- Fix dynamic download for site area to use correct namespace.
- Fix missing edit button on fields in related views.
- Fix dashboard display issues.
- Restore search option in the [use] field for related views.
- Fix namespace issue causing linker to break.
# v3.1.19 # v5.0.2
- We fixed #972 so that custom code (in the header) will be added after the power namespaces - Fix site view form missing classes in J4+
- We added a message to show when a server move failed - Fix permissions tab in items in J4+
- We fixed the BaseConfig to not use '_' as separator - Fix site display controller checkEditId function in J4+
- We fixed the footable loading issue - Add class methods to the HtmlView classes in J4+
- We removed the need for passing placeholders by reference - Fix broken toolbar call in HtmlView in J4+
- We added the option to generate a CHANGELOG - Fix missing scripts and styles fields and methods in the site admin view model
- We fixed the server class to load new client if server details changed. - Update subform field layout across JCB for cleaner look
- We fixed the readme placeholder issue #978. - Remove expansion feature
- We fixed the empty server url issue #978. - Fix helper area
- Fixed Package import to now use the phplibsec version 3 - Fix database mySql update in J4+
- Remove phpspreadsheet completely from Joomla 4+
- Add option to use powers in preflight event in the installer class
- Fix abstract schema class function check default index warring
- Fix dynamicGet so that the table values will load again. #1155
- Add more pure JS to the dynamic get area
- Add native plugin builder for Joomla 4 & 5
- Add basic API for admin views
# v5.0.1
- Fix auto build from SQL in Joomla 5.
- Fix permission issue for admin views.
- Add in JCB gitea push feature to help maintain JCB core features.
- Add extending options to interfaces.
- Change the extendsinterfaces field to allow null, #1139
- Update the Schema class to also update null mismatching if needed
- Add repositories for better integration with gitea
- Refactored the Data classes
- Add new Data classes
- Add new subform classes
- Fix registry class methods return type
- Update all list and custom fields to use the new layouts
- Add push options to Joomla Power
- Complete the Joomla Power Init and Reset features
- Fix Gitea Contents class functions
- Fix subform set methods
- Improved the Joomla Power Push path
- Fix the metadata, metadesc, metakey database issue
- Fix function mismatch call in the compiler power class.
- Fix init feature to only add missing powers
- Fix controller postSaveHook function, for correct model class in Joomla 4 and 5
- Fix app instances (mismatch) in the install script and schema class when installing from CLI
- Add option to use placeholders in Joomla Power namespaces.
- Fix subform layout of uikit in JCB
# v5.0.0
- Fix the plug-in installer script builder bug #1067
- Fix Event triggers for Joomla 4 and 5 builds.
- Add fix to the update script, so that upgrading JCB from Joomla 4 to 5 will not fail.
- Fix plugin field selection
- Fix plugin params tab layout
- Add issue templates
- Force autoloader to always load
- Fix repeatable layout #1076
- Add Factory class to the J5 Event class. #1093
- Fix customfilelist field to conform to the new namespacing conventions. #1094
- Add menus for languages, servers, get snippets to J5 #1095
- Fix [Set String Value] in placeholder table to store the value as a base64 string.
- Fix the search area layout.
- Fix the search area code line selection.
- Fix the input edit button for custom fields.
- Add the new layout to list fields (GUI UPDATE)
- Start fixing the field view in Joomla 5. #1096
- Add power path override option on component level.
- Fix the sql build feature. #1032
- Add the compiler menu back.
- Fix the CustomfolderlistField #1094
- Add view list and single name fix.
- Add component code name fix.
- Add reset list of powers.
- Add Joomla powers for namespace dynamic management.
- Add fallback option to ensure that all JCB tables and fields exist.
- Move the powers autoloader to its own file.
- Fix the media field size limitation. #1109
- Add dynamic datatype update to schema field check.
- Fix version_update column size.
- Improved the Schema Table update engine.
- Improved the Schema Table update engine (more).
- Fix autoloader timing, and loading.
- Implement the Joomla Powers in JCB code, to move away from JClasses.
- Remove the SQL update, to only use the Schema updates of table columns to avoid collusion.
- Fix the admin.css file loading on dashboard. #1112
- Fix dynamic get data-type default to 0. #1110
- Fix the missing model call. #1114
- Fix the wrong $date call. #1115
- Add the BaseDatabaseModel use statement to custom site view controller. #1119
- Fix the customfolderlist field. #1120
# v4.1.1
- Move all banners to GitHub.
- Adds library phpspreadsheet to JCB.
- Add import item example to demo component.
- Updates the Superpower class with the GetRemote class in the plugin.
- Ensures the super power autoloader triggers the correct repositories.
- Adds the Import Function to the Demo Component.
- Resolves the Database Updating issue in the compiler. #1212,#1209
- Adds the Component Commands Plugin to the CLI for Import of spreadsheet data-sets.
- Add all needed Powers to the release package, to speed-up the build of the demo component.
- Refactored initialization flow to accommodate future scalability and integration with all designated areas.
- Refactor the Creator Builders class.
- Adds new JCB package engine.
- Fix issue with loading the Component Builder Wiki.
- Adds advanced version update notice to the Component Builder Dashboard.
- Completely refactors the class that builds the Component Dashboard. #1134
- Adds Initialize, Reset, and Push functionality to the Repository entities.
- Completely refactors the SQL teaks and SQL dump classes.
- Changes J4 fields to allow NULL.
- Fix a bug in Dynamic Get JavaScript that causes table columns to not load.
- Refactor the FieldString and FieldXML classes.
- Adds option to export Language Translations.
# v3.2.5
- Add [AllowDynamicProperties] in the base view class for J5
- Move the _prepareDocument above the display call in the base view class
- Remove all backward compatibility issues, so JCB will not need the [Backward Compatibility] plugin to run.
- Added new import powers for custom import of spreadsheets.
- Move the setDocument and _prepareDocument above the display in the site view and custom admin view.
- Update the trashhelper layout to work in Joomla 5.
- Add AllowDynamicProperties (Joomla 4+5) to view class to allow Custom Dynamic Get methods to work without issues.
- Fix Save failed issue in dynamicGet. #1148
- Move all [TEXT, EDITOR, TEXTAREA] fields from [NOT NULL] to [NULL]
- Add the DateHelper class and improve the date methods.
- Add simple SessionHelper class.
- Add first classes for the new import engine.
- Improve the [VDM Registry] to be Joomla Registry Compatible
- Move all registries to the [VDM Registry] class
- Fix Checked Out to be null and not 0. (#1194)
- Fix created_by, modified_by, checked_out fields in the compiler of the SQL. (#1194)
- Update all core date fields in table class. (#1188)
- Update created_by, modified_by, checked_out fields in table class.
- Implementation of the decentralized Super-Power CORE repository network. (#1190)
- Fix the noticeboard to display Llewellyn's Joomla Social feed

View File

@ -0,0 +1,62 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// No direct access to this file
defined('_JEXEC') or die;
// register additional namespace
spl_autoload_register(function ($class) {
// project-specific base directories and namespace prefix
$search = [
'libraries/vendor_jcb/VDM.Joomla.Github' => 'VDM\\Joomla\\Github',
'libraries/vendor_jcb/VDM.Joomla.Gitea' => 'VDM\\Joomla\\Gitea',
'libraries/vendor_jcb/VDM.Joomla.FOF' => 'VDM\\Joomla\\FOF',
'libraries/vendor_jcb/VDM.Joomla.Git' => 'VDM\\Joomla\\Git',
'libraries/vendor_jcb/VDM.Joomla' => 'VDM\\Joomla',
'libraries/vendor_jcb/VDM.Minify' => 'VDM\\Minify',
'libraries/vendor_jcb/VDM.Psr' => 'VDM\\Psr'
];
// Start the search and load if found
$found = false;
$found_base_dir = "";
$found_len = 0;
foreach ($search as $base_dir => $prefix)
{
// does the class use the namespace prefix?
$len = strlen($prefix);
if (strncmp($prefix, $class, $len) === 0)
{
// we have a match so load the values
$found = true;
$found_base_dir = $base_dir;
$found_len = $len;
// done here
break;
}
}
// check if we found a match
if (!$found)
{
// not found so move to the next registered autoloader
return;
}
// get the relative class name
$relative_class = substr($class, $found_len);
// replace the namespace prefix with the base directory, replace namespace
// separators with directory separators in the relative class name, append
// with .php
$file = __DIR__ . '/' . $found_base_dir . '/src' . str_replace('\\', '/', $relative_class) . '.php';
// if the file exists, require it
if (file_exists($file))
{
require $file;
}
});

File diff suppressed because it is too large Load Diff

327
README.md
View File

@ -1,160 +1,239 @@
# Joomla Component Builder ([JCB](https://www.joomlacomponentbuilder.com)) # Joomla Component Builder ([JCB](https://www.joomlacomponentbuilder.com))
This is a [Joomla 3.x](https://extensions.joomla.org/extension/component-builder/) component. [__See In Action__](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45) ![Component Builder Banner](https://raw.githubusercontent.com/joomengine/Joomla-Component-Builder/refs/heads/5.x/admin/assets/images/jcb-banner.jpg "Component Builder")
![Component Builder image](https://git.vdm.dev/joomla/Component-Builder/raw/branch/master/admin/assets/images/jcb-banner.jpg "The Component Builder") This is a professional-grade [Joomla 5.x](https://extensions.joomla.org/extension/component-builder/) component, created with [Joomla Component Builder (JCB)](https://www.joomlacomponentbuilder.com)—a uniquely advanced development engine for building and maintaining complete Joomla extensions.
The Component Builder for [Joomla](https://extensions.joomla.org/extension/component-builder/) is highly advanced tool that is truly able to build extremely complex components in a fraction of the time. > 🎥 [Original... Quick Hello World Demo](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45), yes JCB has been around for over a decade.
Whether you're a seasoned [Joomla](https://extensions.joomla.org/extension/component-builder/) developer, or have just started, Component Builder will save you lots of time and money. A real must have! JCB generates native Joomla components, plugins, and modules for Joomla 3.x, 4.x, and 5.x - and is already prepared for Joomla 6. Every compiled project is tailored for the specific version without needing backward compatibility plugins. With integrated version-aware compiling, smart boilerplating, and Git-powered project syncing, JCB is much more than a code generator-it's a **full-stack development pipeline for Joomla extensions**.
You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (3.1.28) with **ALL** its features and **ALL** concepts totally open-source and free! You can install this component easily. The latest release (**5.1.2-alpha1**) is available on [Releases](https://git.vdm.dev/joomla/pkg-component-builder/releases) and updated frequently with full source access.
> Watch Quick Build of a Hello World component in [JCB on Youtube](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45) Upgrades are seamless through Joomla's built-in extension update mechanism.
Once installed upgrades are quick and easy via the default [Joomla](https://extensions.joomla.org/extension/component-builder/) upgrade area. ---
Some of the Features ## 🚀 Core Capabilities at a Glance
====================
+ Fetch Code from IDE and place it back in component during next compilation. Here are just some of the key powers JCB brings:
+ Add [Joomla custom fields](https://www.youtube.com/watch?v=n5RBmP0uNCM&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=0s&index=75) in any of your components.
+ Add you [own dashboard](https://www.youtube.com/watch?v=tU7TeYn1Djo&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=60) in the back-end.
+ [Dynamic File and Folder](https://www.youtube.com/watch?v=_c7wzW075lA&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=0s&index=56) Inclusion concept.
+ [Easy Translation](https://www.youtube.com/watch?v=q5NwKGnOHoQ&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=0s&index=51) via excel.
+ Adding your [own rule validation](https://www.youtube.com/watch?v=Z6-ggKtX35o&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=0s&index=46) to a field in [JCB](https://www.joomlacomponentbuilder.com)
+ [Automated backup system](https://www.youtube.com/watch?v=GUWZaODo_IM&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=0s&index=40) in [JCB](https://www.joomlacomponentbuilder.com).
+ Adding mySQL Dump to any View/Table.
+ Grab existing Table data and build a dynamic dump.
+ Unlimited [Joomla](https://extensions.joomla.org/extension/component-builder/) Components.
+ Unlimited Tables/Views.
+ Reusing Views and Fields.
+ Runs on Your Own [Joomla](https://extensions.joomla.org/extension/component-builder/) Install.
+ Add Dynamic/custom back-end views that uses Table and Chart result sets.
+ Build data query of extreme complex nature to use in Dynamic/custom views.
+ Highly Dynamic/custom Front-end Structures.
+ Dynamically setup templates and layouts for Front-end design.
+ Integration of the excellent UIKIT lib.
+ Integration of the excellent FOOTABLE lib.
+ All [Joomla](https://extensions.joomla.org/extension/component-builder/) Standard Field Types (including subforms).
+ Strong Implementation of all [Joomla](https://extensions.joomla.org/extension/component-builder/) Form Security.
+ Load data via ajax with ease.
+ You can add an Update Server to Components you build.
+ Build advanced Dynamic front-end forms.
+ Dynamic data queries from multiple tables.
+ Place in local GIT folder, and publish to sales server.
+ Include any amount of custom files and folders during build.
+ Static helper class with smart methods already included.
+ Static helper methods Can easily be added.
+ Direct install from compiler view.
+ Integrative with native [Joomla](https://extensions.joomla.org/extension/component-builder/) Categories and Tags.
+ Fully Dynamic Search Friendly URL Auto Implementation.
+ Custom scripting options all over the MVC structure.
+ Permission implementation down to each view, item and field.
+ Easy extendible to include other libraries.
+ Can include SQL and visioning update link to distribute your component updates via [Joomla](https://extensions.joomla.org/extension/component-builder/) default upgrade of components.
+ Easy Export & Import addon to all backend-tables.
+ Overriding ability of import concepts in all backend-tables.
+ The Batch and Filter implementation on all backend-list views.
+ This and much much more are all possible with this component builder!
Just Imagine * 🔁 **Bi-Directional IDE Sync** - Fetch custom logic from compiled projects and reintegrate on rebuild.
==================== * 🧱 **Build Joomla Components, Plugins, and Modules** - Fully native and independently compiled.
* 🧠 **Superpowers (PHP Class Builder)** - Create namespaced abstract, interface, and trait-based PHP classes visually.
* 🔌 **Joomla Powers** - Intelligent Joomla class referencing via dynamic placeholders (JPKs) that adapt to Joomla versions.
* 🗃️ **Smart Boilerplating** - Start fast with 6+ curated demo blueprints for instant use or customization.
* 🔂 **Round-Trip Development** - Add, update, and persist changes across compiled code using insert/replace tags.
* 🔐 **Field Types Engine** - Blueprint reusable Joomla-native fields with constraints, security, DB structure, and logic.
* 🧬 **Admin Views, Custom Admin Views & Site Views** - Fine-grained design for structured or dynamic backend/front-end UIs.
* 🧮 **Dynamic GET Builder** - Advanced visual query designer for cross-table, filter-rich, deeply joined SQL fetches.
* 💡 **Snippets, Layouts, Templates & Libraries** - Shareable GUI-linked modules for reusable HTML/CSS/JS integration.
* 🧰 **Custom Code System** - Write logic once and reuse anywhere; full support for HTML & PHP placeholders and tracking.
* 🛠️ **Multi-Version Compilation** - Compile version-specific code for J3, J4, J5 without compatibility bloat.
* 📦 **Package Management** - Export/import blueprints, version control builds, sync with Git, and distribute clean packages.
* 🖥️ **CLI Integration** - Build commands natively via terminal using Joomla's CLI runner.
* 🌐 **Update Server Support** - Integrate custom update mechanisms for extensions post-deployment.
+ Your Component Back-end can be more advanced then the [Joomla](https://extensions.joomla.org/extension/component-builder/) Article Manager. <details>
+ Your Code as Perfectly Unified to the strict [Joomla](https://extensions.joomla.org/extension/component-builder/) Standards. <summary>📚 View 100+ Additional Advanced Features</summary>
+ Adding Custom Scripting almost anywhere in the MVC structure.
+ Import and export feature to all backend-views.
+ Batch copy and move/update feature for all backend-views.
+ History tracking per/change made on any back-end item.
+ Dynamic field control, to show and hide fields in amazing ways.
+ Front-end freedom of design that allows for any library to be used.
+ This and much much more are all possible with this component builder!
You are in Control ### 🧩 Architecture & Core Logic
====================
+ You can change the licensing template for your components. * 🧠 **Super Powers**: Namespaced PHP classes (interfaces, traits, abstracts, finals) managed from GUI
+ You can change/improve existing field types and add more. * 🔌 **Joomla Powers**: Dynamic Joomla class resolution via JPK placeholders per Joomla version
+ Line numbers to show where in compiler was the code build. * 🧱 **Compile native Components, Plugins & Modules** in one unified workflow
+ You can improve the component since all code are open-source. * 🔀 **Multi-version support** (J3, J4, J5, J6-ready) with per-version compilation
+ Free updates for the lifetime of the project. * 🚦 **Conditional logic injection** in models, views, controllers
+ You can dynamically add internal help structures to all component. * 🧬 **Reusable Admin Views** across multiple components
+ There is no limitations on how big or how much you want to build (server limitation only). * 🧠 **Dynamic GET Builder** for visual cross-table queries
+ This is a complete factory kind of component that functions like a deployment hub. * 🔄 **Round-trip code integration** with file-to-database inserts/replaces
+ Export any component completely mapped in [JCB](https://www.joomlacomponentbuilder.com) and import into another [JCB](https://www.joomlacomponentbuilder.com). * 🧬 **Custom Admin Views** with full MVC override power
+ This and much much more are all possible with this component builder! * 🧩 **Site Views** supporting public display of data with custom logic
* 📊 **Dynamic dashboards** built via custom admin view chart helpers
* 🔗 **Model linking between views** using subforms and dynamic selectors
* 🧩 **Shared field reuse across views** and components
* 📥 **Drag & Drop field mapping** for layout and logic assignment
* 🎯 **Dynamic Field Visibility** conditions via GUI
* 📦 **Independent packaging** of views and logic for reuse
Get More Demo Content ### 📁 File & Code Management
====================
> You can now get access to the WOW factor, [JCB](https://www.joomlacomponentbuilder.com) fully mapped can now be yours! Including many other [JCB](https://www.joomlacomponentbuilder.com) mapped components. * 🧾 **Insert/Replace tags** for persistent file overrides
* 🗃️ **PHP & HTML custom code injection** via placeholder system
* 🛠️ **Automatic file synchronization** on rebuild
* 🧮 **Reverse string parser** to restore lang strings back to natural text
* 📋 **Line tracking** to see where code was compiled from
* 🗂️ **Smart override detection** and conflict management
* 🔍 **Compiler debug tracking**
* ✍️ **Dynamic use-statement generation** with alias auto-resolving
* 💾 **Auto language string export** from templates & views
* 🧰 **Helper classes and static utilities** included by default
### All you need to do is [explained here](https://vdm.bz/how-to-get-free-vdm-package-keys)! ### 🧠 Code Reuse & Blueprints
To install these packages [watch this tutorial](https://vdm.bz/how-to-install-jcb-packages). * 🧱 **Demo component blueprints** for rapid prototyping
* 🔁 **Blueprint export/import** via JSON or Git sync
* 📎 **Shared field types** serve as field templates
* 🧪 **Test-friendly compiler mode** for internal checking
* 🧩 **Template-based file creation** with dynamic variables
* 📚 **Smart template merging** for updates
* 🚧 **Field definitions drive DB schema**
* 🎛️ **Custom scripting per field** on get/save
* 🔀 **Field view-type override (admin vs config)**
### 🌐 Joomla CMS Integration
Where can you get support and help? * 🛡️ **Token integration** via Joomla methods
==================== * 🔐 **ACL per view, field, item**
* 🧾 **Field-based Joomla config generation**
* 📘 **Support for Joomla categories/tags/custom fields**
* ⚙️ **CLI-ready components** with native terminal support
* 🛰️ **Joomla Update Server integration**
* 🧪 **Version-aware language string compilation**
* 📤 **Remote publishing to custom repo update streams**
- [Package](https://git.vdm.dev/joomla/pkg-component-builder). ### 🧠 Visual GUI & UX
- [Download](https://git.vdm.dev/joomla/pkg-component-builder/archive/master.zip).
- [Tutorials](https://www.youtube.com/playlist?list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE).
- [German](https://www.youtube.com/playlist?list=PLQRGFI8XZ_wu0tDFxJtZFwW7AxA4JHQV7).
- [Hello World](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45).
- [Discussions](https://github.com/vdm-io/Joomla-Component-Builder/discussions).
- [Wiki](https://git.vdm.dev/joomla/Component-Builder/wiki).
- [Issues](https://git.vdm.dev/joomla/Component-Builder/issues). ^^
- [Issues Stream](https://t.me/jcb_issues).
- [Updates](https://t.me/jcb_updates).
- [User Group](https://t.me/jcb_group).
- [Announcement](https://t.me/Joomla_component_builder).
- [Beta](https://git.vdm.dev/joomla-beta/pkg-component-builder).
- [Nightly Build](https://git.vdm.dev/joomla-beta/pkg-component-builder/archive/master.zip).
- [Community Complaint](https://www.joomlacomponentbuilder.com/community-complaint).
- [Security](https://www.vdm.io/report-security-issues).
^^ Then if you run into any issues, related to the [JCB](https://git.vdm.dev/joomla/Component-Builder/issues) code, like bugs, **start by searching** the (*open & closed*) issues over on [Gitea](https://git.vdm.dev/joomla/Component-Builder/issues), and if the issue has not been mentioned before, **then only** open a new issue, following the [community guidelines](https://git.vdm.dev/joomla/Component-Builder/src/branch/master/.github/CONTRIBUTING.md). * 🎨 **Layout builder** with inline layout reusability
* 📁 **Template builder** with overrides
* 🧠 **Snippets GUI** for code blocks linked to layouts/templates
* 📚 **Custom documentation sections** linked into generated components
* 🧬 **Field injection points in layout/template snippets**
* 🔁 **Dynamic reload on selection change** via JavaScript binding
* 📦 **Reusable custom admin view templates**
* 🧠 **JS callback logic on field events**
* 📄 **Inline help descriptions** from config
* 🖱️ **Custom admin menus** and dashboard menu builders
WHY GIVE IT AWAY LIKE THIS? ### 🌍 Internationalization
====================
> We are Open Source Enthusiast * 🌐 **Excel import/export for language strings**
> Who Support the [Joomla](https://extensions.joomla.org/extension/component-builder/) Community * 📁 **Per-field language control**
* 🧾 **Language string auto-indexing**
* 🔁 **Reverse engineering of language constants**
* 🧠 **Per-Joomla-version lang key mapping**
* 🔧 **GUI to rewrite or update lang string context**
Our idea was to almost let this tool serve as a cheat sheet to how things can be done... and with the help of other developers end up formulating the way how things not only can, but must be done to insure secure, stable, scalable and maintainable code is produced. ### 📦 Packaging & Distribution
MAKING IT BETTER! * 📤 **Push component to Git repo**
==================== * 🔄 **Auto-compile and auto-tag packages**
* 🗂️ **Blueprints stored and versioned by metadata**
* 🎁 **Auto-generated changelog from commits**
* 🔐 **Signed zip packaging supported**
* 📬 **Component update URLs via GUI settings**
* 🏷️ **Version-aware build ID assignment**
Get involved on the forums, and the Gitea issues, and you can even help us develop/improve the pipeline of [JCB](https://www.joomlacomponentbuilder.com) for continues delivery. We really want to see [JCB](https://www.joomlacomponentbuilder.com) remain the tool of choice for all [Joomla Component Development](https://extensions.joomla.org/extension/component-builder/) needs and ideas. ### ⚙️ Compiler Engine Features
TODO ***Under-30-second build time** on large components
====== * 📦 **Memory-optimized ZIP builder**
* 🔁 **Repeatable fields** via subform templates
* 💥 **Fail-safe error protection** and rollback
* 🔍 **Detailed compiler logs with stack trace and UUIDs**
* 📃 **Build summary report** after compilation
- Add automatic unit testing. To nurture pipeline integration for all components build with [JCB](https://www.joomlacomponentbuilder.com). ### 🧱 Custom Code System (Powerful Dual Feature)
- Team collaborative development across [JCB](https://www.joomlacomponentbuilder.com) installations offline and online.
- Documentation (maintained by the community) for [JCB](https://www.joomlacomponentbuilder.com). (help us select the best system for this)
# Build Details * 🔧 **Universal reusable code blocks** (inject anywhere by key)
* 🪄 **Update detection & visual diffing** on reused code
* 🧬 **Multi-context custom code binding**
* 📄 **Dynamic placeholder variable injection**
* 🔁 **Nested custom code support**
* 🔥 **Advanced compiler hooks per code block**
* 🧠 **Round-trip tag tracking in PHP/HTML**
* 📜 [Learn more about this here](https://git.vdm.dev/joomla/Component-Builder/wiki/TIPS:-Custom-Code)
+ *Community*: [Vast Development Method](https://dev.vdm.io) ### 🛠 Field Type System
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
+ *Name*: [Component Builder](https://git.vdm.dev/joomla/Component-Builder)
+ *First Build*: 30th April, 2015
+ *Last Build*: 24th October, 2023
+ *Version*: 3.1.28
+ *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
+ *Line count*: **635155**
+ *Field count*: **2047**
+ *File count*: **4731**
+ *Folder count*: **436**
> This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](https://www.joomlacomponentbuilder.com). * 🧬 **Field types define templates and data types**
> Developed by [Llewellyn van der Merwe](mailto:joomla@vdm.io) * 💡 **GUI-defined rules (required, unique, nullable)**
* 🧠 **Save/get hooks per field**
* 🛡️ **Database schema auto-generated from field settings**
* 📄 **Per-display field rendering config (list/edit)**
* 🧩 **Create dynamic models with modals/selectors**
* 🧠 **Conditional JS & CSS per field**
### 📐 Dynamic GET (Visual SQL Engine)
* 📊 **Design complex joins from GUI**
* 🧠 **Multiple GETs per view**
* 🔄 **Reusable query sets**
* 🧾 **Where/group/order statements supported**
* 📃 **Auto model method generation**
* 🔧 **Switch between list/item GETs**
* 🛡️ **Output Joomla-native query builder logic**
### 📁 Snippets, Templates, Layouts, Libraries
* 🧠 **Snippets = reusable HTML blocks**
* 🧩 **Layouts = reusable PHP render templates**
* 🖼️ **Templates = page-level views linked to custom admin/site views**
* 📦 **Libraries = JS/CSS assets linked to UI**
* 🌐 **CDN/local toggle for library delivery**
* 📁 **Media folder injection with override support**
* 🔧 **Repository push/pull/reset workflow**
* 📥 **Init snippets/layouts/templates via GUI**
### 📚 Documentation & Metadata
* 📄 **Per-entity README auto-generation**
* 📑 **Markdown + PHPDoc docblock support**
* 🧾 **Internal documentation tables**
* 🔄 **Update version history logs per entity**
* 🧠 **Field reference mapping table output**
* 📘 **Auto-documented component structure**
### 📊 Analytics & Insights
* 📈 **Track last build, size, line count, field count**
* 🔄 **Compare current vs previous builds**
* 🧠 **Export component metadata as JSON**
* 🗃️ **Stats per model/view**
* 📁 **Total file/folder/line counters**
</details>
---
## 📦 Get Started Now
* 🔽 **Download**: [Stable Releases](https://git.vdm.dev/joomla/pkg-component-builder/releases) · [Nightly J5](https://git.vdm.dev/joomla/pkg-component-builder/archive/5.x.zip) · [Nightly J4](https://git.vdm.dev/joomla/pkg-component-builder/archive/4.x.zip)
* 📥 **Install**: Use Joomla's extension manager
* 🎓 **Learn**: [Tutorials](https://www.youtube.com/playlist?list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE) · [How to Install Demo Blueprints](https://vdm.bz/how-to-install-jcb-packages)
---
## 🤝 Get Help & Join the Community
* 💬 [GitHub Discussions](https://github.com/orgs/joomengine/discussions)
* 🐛 [Report Issues](https://git.vdm.dev/joomla/Component-Builder/issues)
* 📚 [JCB Wiki](https://git.vdm.dev/joomla/Component-Builder/wiki)
* 👨‍🏫 [Video Tutorials](https://www.youtube.com/playlist?list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE)
* 🇩🇪 [German Series](https://www.youtube.com/playlist?list=PLQRGFI8XZ_wu0tDFxJtZFwW7AxA4JHQV7)
* 🔔 [Telegram Groups](https://t.me/jcb_group) · [Announcements](https://t.me/Joomla_component_builder)
* 📶 [Status](https://status.vdm.dev/status/jcb)
* 🛡️ [Security Reports](https://www.vdm.io/report-security-issues)
---
## 🌱 Why It's Free
JCB is developed by developers for developers. Its purpose is to democratize high-performance Joomla development by empowering everyone — from solo builders to large teams — to work with clean, scalable, maintainable, and versionable code. This isn't a template generator — it's a full-scale **extension engineering platform**.
---
## 🧩 Component Metadata
* **Company:** [Vast Development Method](https://dev.vdm.io)
* **Author:** [Llewellyn van der Merwe](mailto:joomla@vdm.io)
* **Component:** [Component Builder](https://git.vdm.dev/joomla/Component-Builder)
* **Created:** 30th April, 2015 · **Last Build:** 15th July, 2025 · **Version:** 5.1.2-alpha1
* **License:** GNU General Public License version 2 or later; see LICENSE.txt · **Copyright:** Copyright (C) 2015 Vast Development Method. All rights reserved.
* **Lines:** 1095418 · **Fields:** 2096 · **Files:** 7516 · **Folders:** 728
> Generated with [JCB](https://www.joomlacomponentbuilder.com) — The Smartest Way to Build Joomla Extensions.
## Contributors ## Contributors

View File

@ -1,160 +1,239 @@
# Joomla Component Builder ([JCB](https://www.joomlacomponentbuilder.com)) # Joomla Component Builder ([JCB](https://www.joomlacomponentbuilder.com))
This is a [Joomla 3.x](https://extensions.joomla.org/extension/component-builder/) component. [__See In Action__](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45) ![Component Builder Banner](https://raw.githubusercontent.com/joomengine/Joomla-Component-Builder/refs/heads/5.x/admin/assets/images/jcb-banner.jpg "Component Builder")
![Component Builder image](https://git.vdm.dev/joomla/Component-Builder/raw/branch/master/admin/assets/images/jcb-banner.jpg "The Component Builder") This is a professional-grade [Joomla 5.x](https://extensions.joomla.org/extension/component-builder/) component, created with [Joomla Component Builder (JCB)](https://www.joomlacomponentbuilder.com)—a uniquely advanced development engine for building and maintaining complete Joomla extensions.
The Component Builder for [Joomla](https://extensions.joomla.org/extension/component-builder/) is highly advanced tool that is truly able to build extremely complex components in a fraction of the time. > 🎥 [Original... Quick Hello World Demo](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45), yes JCB has been around for over a decade.
Whether you're a seasoned [Joomla](https://extensions.joomla.org/extension/component-builder/) developer, or have just started, Component Builder will save you lots of time and money. A real must have! JCB generates native Joomla components, plugins, and modules for Joomla 3.x, 4.x, and 5.x - and is already prepared for Joomla 6. Every compiled project is tailored for the specific version without needing backward compatibility plugins. With integrated version-aware compiling, smart boilerplating, and Git-powered project syncing, JCB is much more than a code generator-it's a **full-stack development pipeline for Joomla extensions**.
You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (3.1.28) with **ALL** its features and **ALL** concepts totally open-source and free! You can install this component easily. The latest release (**5.1.2-alpha1**) is available on [Releases](https://git.vdm.dev/joomla/pkg-component-builder/releases) and updated frequently with full source access.
> Watch Quick Build of a Hello World component in [JCB on Youtube](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45) Upgrades are seamless through Joomla's built-in extension update mechanism.
Once installed upgrades are quick and easy via the default [Joomla](https://extensions.joomla.org/extension/component-builder/) upgrade area. ---
Some of the Features ## 🚀 Core Capabilities at a Glance
====================
+ Fetch Code from IDE and place it back in component during next compilation. Here are just some of the key powers JCB brings:
+ Add [Joomla custom fields](https://www.youtube.com/watch?v=n5RBmP0uNCM&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=0s&index=75) in any of your components.
+ Add you [own dashboard](https://www.youtube.com/watch?v=tU7TeYn1Djo&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=60) in the back-end.
+ [Dynamic File and Folder](https://www.youtube.com/watch?v=_c7wzW075lA&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=0s&index=56) Inclusion concept.
+ [Easy Translation](https://www.youtube.com/watch?v=q5NwKGnOHoQ&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=0s&index=51) via excel.
+ Adding your [own rule validation](https://www.youtube.com/watch?v=Z6-ggKtX35o&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=0s&index=46) to a field in [JCB](https://www.joomlacomponentbuilder.com)
+ [Automated backup system](https://www.youtube.com/watch?v=GUWZaODo_IM&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=0s&index=40) in [JCB](https://www.joomlacomponentbuilder.com).
+ Adding mySQL Dump to any View/Table.
+ Grab existing Table data and build a dynamic dump.
+ Unlimited [Joomla](https://extensions.joomla.org/extension/component-builder/) Components.
+ Unlimited Tables/Views.
+ Reusing Views and Fields.
+ Runs on Your Own [Joomla](https://extensions.joomla.org/extension/component-builder/) Install.
+ Add Dynamic/custom back-end views that uses Table and Chart result sets.
+ Build data query of extreme complex nature to use in Dynamic/custom views.
+ Highly Dynamic/custom Front-end Structures.
+ Dynamically setup templates and layouts for Front-end design.
+ Integration of the excellent UIKIT lib.
+ Integration of the excellent FOOTABLE lib.
+ All [Joomla](https://extensions.joomla.org/extension/component-builder/) Standard Field Types (including subforms).
+ Strong Implementation of all [Joomla](https://extensions.joomla.org/extension/component-builder/) Form Security.
+ Load data via ajax with ease.
+ You can add an Update Server to Components you build.
+ Build advanced Dynamic front-end forms.
+ Dynamic data queries from multiple tables.
+ Place in local GIT folder, and publish to sales server.
+ Include any amount of custom files and folders during build.
+ Static helper class with smart methods already included.
+ Static helper methods Can easily be added.
+ Direct install from compiler view.
+ Integrative with native [Joomla](https://extensions.joomla.org/extension/component-builder/) Categories and Tags.
+ Fully Dynamic Search Friendly URL Auto Implementation.
+ Custom scripting options all over the MVC structure.
+ Permission implementation down to each view, item and field.
+ Easy extendible to include other libraries.
+ Can include SQL and visioning update link to distribute your component updates via [Joomla](https://extensions.joomla.org/extension/component-builder/) default upgrade of components.
+ Easy Export & Import addon to all backend-tables.
+ Overriding ability of import concepts in all backend-tables.
+ The Batch and Filter implementation on all backend-list views.
+ This and much much more are all possible with this component builder!
Just Imagine * 🔁 **Bi-Directional IDE Sync** - Fetch custom logic from compiled projects and reintegrate on rebuild.
==================== * 🧱 **Build Joomla Components, Plugins, and Modules** - Fully native and independently compiled.
* 🧠 **Superpowers (PHP Class Builder)** - Create namespaced abstract, interface, and trait-based PHP classes visually.
* 🔌 **Joomla Powers** - Intelligent Joomla class referencing via dynamic placeholders (JPKs) that adapt to Joomla versions.
* 🗃️ **Smart Boilerplating** - Start fast with 6+ curated demo blueprints for instant use or customization.
* 🔂 **Round-Trip Development** - Add, update, and persist changes across compiled code using insert/replace tags.
* 🔐 **Field Types Engine** - Blueprint reusable Joomla-native fields with constraints, security, DB structure, and logic.
* 🧬 **Admin Views, Custom Admin Views & Site Views** - Fine-grained design for structured or dynamic backend/front-end UIs.
* 🧮 **Dynamic GET Builder** - Advanced visual query designer for cross-table, filter-rich, deeply joined SQL fetches.
* 💡 **Snippets, Layouts, Templates & Libraries** - Shareable GUI-linked modules for reusable HTML/CSS/JS integration.
* 🧰 **Custom Code System** - Write logic once and reuse anywhere; full support for HTML & PHP placeholders and tracking.
* 🛠️ **Multi-Version Compilation** - Compile version-specific code for J3, J4, J5 without compatibility bloat.
* 📦 **Package Management** - Export/import blueprints, version control builds, sync with Git, and distribute clean packages.
* 🖥️ **CLI Integration** - Build commands natively via terminal using Joomla's CLI runner.
* 🌐 **Update Server Support** - Integrate custom update mechanisms for extensions post-deployment.
+ Your Component Back-end can be more advanced then the [Joomla](https://extensions.joomla.org/extension/component-builder/) Article Manager. <details>
+ Your Code as Perfectly Unified to the strict [Joomla](https://extensions.joomla.org/extension/component-builder/) Standards. <summary>📚 View 100+ Additional Advanced Features</summary>
+ Adding Custom Scripting almost anywhere in the MVC structure.
+ Import and export feature to all backend-views.
+ Batch copy and move/update feature for all backend-views.
+ History tracking per/change made on any back-end item.
+ Dynamic field control, to show and hide fields in amazing ways.
+ Front-end freedom of design that allows for any library to be used.
+ This and much much more are all possible with this component builder!
You are in Control ### 🧩 Architecture & Core Logic
====================
+ You can change the licensing template for your components. * 🧠 **Super Powers**: Namespaced PHP classes (interfaces, traits, abstracts, finals) managed from GUI
+ You can change/improve existing field types and add more. * 🔌 **Joomla Powers**: Dynamic Joomla class resolution via JPK placeholders per Joomla version
+ Line numbers to show where in compiler was the code build. * 🧱 **Compile native Components, Plugins & Modules** in one unified workflow
+ You can improve the component since all code are open-source. * 🔀 **Multi-version support** (J3, J4, J5, J6-ready) with per-version compilation
+ Free updates for the lifetime of the project. * 🚦 **Conditional logic injection** in models, views, controllers
+ You can dynamically add internal help structures to all component. * 🧬 **Reusable Admin Views** across multiple components
+ There is no limitations on how big or how much you want to build (server limitation only). * 🧠 **Dynamic GET Builder** for visual cross-table queries
+ This is a complete factory kind of component that functions like a deployment hub. * 🔄 **Round-trip code integration** with file-to-database inserts/replaces
+ Export any component completely mapped in [JCB](https://www.joomlacomponentbuilder.com) and import into another [JCB](https://www.joomlacomponentbuilder.com). * 🧬 **Custom Admin Views** with full MVC override power
+ This and much much more are all possible with this component builder! * 🧩 **Site Views** supporting public display of data with custom logic
* 📊 **Dynamic dashboards** built via custom admin view chart helpers
* 🔗 **Model linking between views** using subforms and dynamic selectors
* 🧩 **Shared field reuse across views** and components
* 📥 **Drag & Drop field mapping** for layout and logic assignment
* 🎯 **Dynamic Field Visibility** conditions via GUI
* 📦 **Independent packaging** of views and logic for reuse
Get More Demo Content ### 📁 File & Code Management
====================
> You can now get access to the WOW factor, [JCB](https://www.joomlacomponentbuilder.com) fully mapped can now be yours! Including many other [JCB](https://www.joomlacomponentbuilder.com) mapped components. * 🧾 **Insert/Replace tags** for persistent file overrides
* 🗃️ **PHP & HTML custom code injection** via placeholder system
* 🛠️ **Automatic file synchronization** on rebuild
* 🧮 **Reverse string parser** to restore lang strings back to natural text
* 📋 **Line tracking** to see where code was compiled from
* 🗂️ **Smart override detection** and conflict management
* 🔍 **Compiler debug tracking**
* ✍️ **Dynamic use-statement generation** with alias auto-resolving
* 💾 **Auto language string export** from templates & views
* 🧰 **Helper classes and static utilities** included by default
### All you need to do is [explained here](https://vdm.bz/how-to-get-free-vdm-package-keys)! ### 🧠 Code Reuse & Blueprints
To install these packages [watch this tutorial](https://vdm.bz/how-to-install-jcb-packages). * 🧱 **Demo component blueprints** for rapid prototyping
* 🔁 **Blueprint export/import** via JSON or Git sync
* 📎 **Shared field types** serve as field templates
* 🧪 **Test-friendly compiler mode** for internal checking
* 🧩 **Template-based file creation** with dynamic variables
* 📚 **Smart template merging** for updates
* 🚧 **Field definitions drive DB schema**
* 🎛️ **Custom scripting per field** on get/save
* 🔀 **Field view-type override (admin vs config)**
### 🌐 Joomla CMS Integration
Where can you get support and help? * 🛡️ **Token integration** via Joomla methods
==================== * 🔐 **ACL per view, field, item**
* 🧾 **Field-based Joomla config generation**
* 📘 **Support for Joomla categories/tags/custom fields**
* ⚙️ **CLI-ready components** with native terminal support
* 🛰️ **Joomla Update Server integration**
* 🧪 **Version-aware language string compilation**
* 📤 **Remote publishing to custom repo update streams**
- [Package](https://git.vdm.dev/joomla/pkg-component-builder). ### 🧠 Visual GUI & UX
- [Download](https://git.vdm.dev/joomla/pkg-component-builder/archive/master.zip).
- [Tutorials](https://www.youtube.com/playlist?list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE).
- [German](https://www.youtube.com/playlist?list=PLQRGFI8XZ_wu0tDFxJtZFwW7AxA4JHQV7).
- [Hello World](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45).
- [Discussions](https://github.com/vdm-io/Joomla-Component-Builder/discussions).
- [Wiki](https://git.vdm.dev/joomla/Component-Builder/wiki).
- [Issues](https://git.vdm.dev/joomla/Component-Builder/issues). ^^
- [Issues Stream](https://t.me/jcb_issues).
- [Updates](https://t.me/jcb_updates).
- [User Group](https://t.me/jcb_group).
- [Announcement](https://t.me/Joomla_component_builder).
- [Beta](https://git.vdm.dev/joomla-beta/pkg-component-builder).
- [Nightly Build](https://git.vdm.dev/joomla-beta/pkg-component-builder/archive/master.zip).
- [Community Complaint](https://www.joomlacomponentbuilder.com/community-complaint).
- [Security](https://www.vdm.io/report-security-issues).
^^ Then if you run into any issues, related to the [JCB](https://git.vdm.dev/joomla/Component-Builder/issues) code, like bugs, **start by searching** the (*open & closed*) issues over on [Gitea](https://git.vdm.dev/joomla/Component-Builder/issues), and if the issue has not been mentioned before, **then only** open a new issue, following the [community guidelines](https://git.vdm.dev/joomla/Component-Builder/src/branch/master/.github/CONTRIBUTING.md). * 🎨 **Layout builder** with inline layout reusability
* 📁 **Template builder** with overrides
* 🧠 **Snippets GUI** for code blocks linked to layouts/templates
* 📚 **Custom documentation sections** linked into generated components
* 🧬 **Field injection points in layout/template snippets**
* 🔁 **Dynamic reload on selection change** via JavaScript binding
* 📦 **Reusable custom admin view templates**
* 🧠 **JS callback logic on field events**
* 📄 **Inline help descriptions** from config
* 🖱️ **Custom admin menus** and dashboard menu builders
WHY GIVE IT AWAY LIKE THIS? ### 🌍 Internationalization
====================
> We are Open Source Enthusiast * 🌐 **Excel import/export for language strings**
> Who Support the [Joomla](https://extensions.joomla.org/extension/component-builder/) Community * 📁 **Per-field language control**
* 🧾 **Language string auto-indexing**
* 🔁 **Reverse engineering of language constants**
* 🧠 **Per-Joomla-version lang key mapping**
* 🔧 **GUI to rewrite or update lang string context**
Our idea was to almost let this tool serve as a cheat sheet to how things can be done... and with the help of other developers end up formulating the way how things not only can, but must be done to insure secure, stable, scalable and maintainable code is produced. ### 📦 Packaging & Distribution
MAKING IT BETTER! * 📤 **Push component to Git repo**
==================== * 🔄 **Auto-compile and auto-tag packages**
* 🗂️ **Blueprints stored and versioned by metadata**
* 🎁 **Auto-generated changelog from commits**
* 🔐 **Signed zip packaging supported**
* 📬 **Component update URLs via GUI settings**
* 🏷️ **Version-aware build ID assignment**
Get involved on the forums, and the Gitea issues, and you can even help us develop/improve the pipeline of [JCB](https://www.joomlacomponentbuilder.com) for continues delivery. We really want to see [JCB](https://www.joomlacomponentbuilder.com) remain the tool of choice for all [Joomla Component Development](https://extensions.joomla.org/extension/component-builder/) needs and ideas. ### ⚙️ Compiler Engine Features
TODO * ⚡ **Under-30-second build time** on large components
====== * 📦 **Memory-optimized ZIP builder**
* 🔁 **Repeatable fields** via subform templates
* 💥 **Fail-safe error protection** and rollback
* 🔍 **Detailed compiler logs with stack trace and UUIDs**
* 📃 **Build summary report** after compilation
- Add automatic unit testing. To nurture pipeline integration for all components build with [JCB](https://www.joomlacomponentbuilder.com). ### 🧱 Custom Code System (Powerful Dual Feature)
- Team collaborative development across [JCB](https://www.joomlacomponentbuilder.com) installations offline and online.
- Documentation (maintained by the community) for [JCB](https://www.joomlacomponentbuilder.com). (help us select the best system for this)
# Build Details * 🔧 **Universal reusable code blocks** (inject anywhere by key)
* 🪄 **Update detection & visual diffing** on reused code
* 🧬 **Multi-context custom code binding**
* 📄 **Dynamic placeholder variable injection**
* 🔁 **Nested custom code support**
* 🔥 **Advanced compiler hooks per code block**
* 🧠 **Round-trip tag tracking in PHP/HTML**
* 📜 [Learn more about this here](https://git.vdm.dev/joomla/Component-Builder/wiki/TIPS:-Custom-Code)
+ *Community*: [Vast Development Method](https://dev.vdm.io) ### 🛠 Field Type System
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
+ *Name*: [Component Builder](https://git.vdm.dev/joomla/Component-Builder)
+ *First Build*: 30th April, 2015
+ *Last Build*: 24th October, 2023
+ *Version*: 3.1.28
+ *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
+ *Line count*: **635155**
+ *Field count*: **2047**
+ *File count*: **4731**
+ *Folder count*: **436**
> This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](https://www.joomlacomponentbuilder.com). * 🧬 **Field types define templates and data types**
> Developed by [Llewellyn van der Merwe](mailto:joomla@vdm.io) * 💡 **GUI-defined rules (required, unique, nullable)**
* 🧠 **Save/get hooks per field**
* 🛡️ **Database schema auto-generated from field settings**
* 📄 **Per-display field rendering config (list/edit)**
* 🧩 **Create dynamic models with modals/selectors**
* 🧠 **Conditional JS & CSS per field**
### 📐 Dynamic GET (Visual SQL Engine)
* 📊 **Design complex joins from GUI**
* 🧠 **Multiple GETs per view**
* 🔄 **Reusable query sets**
* 🧾 **Where/group/order statements supported**
* 📃 **Auto model method generation**
* 🔧 **Switch between list/item GETs**
* 🛡️ **Output Joomla-native query builder logic**
### 📁 Snippets, Templates, Layouts, Libraries
* 🧠 **Snippets = reusable HTML blocks**
* 🧩 **Layouts = reusable PHP render templates**
* 🖼️ **Templates = page-level views linked to custom admin/site views**
* 📦 **Libraries = JS/CSS assets linked to UI**
* 🌐 **CDN/local toggle for library delivery**
* 📁 **Media folder injection with override support**
* 🔧 **Repository push/pull/reset workflow**
* 📥 **Init snippets/layouts/templates via GUI**
### 📚 Documentation & Metadata
* 📄 **Per-entity README auto-generation**
* 📑 **Markdown + PHPDoc docblock support**
* 🧾 **Internal documentation tables**
* 🔄 **Update version history logs per entity**
* 🧠 **Field reference mapping table output**
* 📘 **Auto-documented component structure**
### 📊 Analytics & Insights
* 📈 **Track last build, size, line count, field count**
* 🔄 **Compare current vs previous builds**
* 🧠 **Export component metadata as JSON**
* 🗃️ **Stats per model/view**
* 📁 **Total file/folder/line counters**
</details>
---
## 📦 Get Started Now
* 🔽 **Download**: [Stable Releases](https://git.vdm.dev/joomla/pkg-component-builder/releases) · [Nightly J5](https://git.vdm.dev/joomla/pkg-component-builder/archive/5.x.zip) · [Nightly J4](https://git.vdm.dev/joomla/pkg-component-builder/archive/4.x.zip)
* 📥 **Install**: Use Joomla's extension manager
* 🎓 **Learn**: [Tutorials](https://www.youtube.com/playlist?list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE) · [How to Install Demo Blueprints](https://vdm.bz/how-to-install-jcb-packages)
---
## 🤝 Get Help & Join the Community
* 💬 [GitHub Discussions](https://github.com/orgs/joomengine/discussions)
* 🐛 [Report Issues](https://git.vdm.dev/joomla/Component-Builder/issues)
* 📚 [JCB Wiki](https://git.vdm.dev/joomla/Component-Builder/wiki)
* 👨‍🏫 [Video Tutorials](https://www.youtube.com/playlist?list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE)
* 🇩🇪 [German Series](https://www.youtube.com/playlist?list=PLQRGFI8XZ_wu0tDFxJtZFwW7AxA4JHQV7)
* 🔔 [Telegram Groups](https://t.me/jcb_group) · [Announcements](https://t.me/Joomla_component_builder)
* 📶 [Status](https://status.vdm.dev/status/jcb)
* 🛡️ [Security Reports](https://www.vdm.io/report-security-issues)
---
## 🌱 Why It's Free
JCB is developed by developers for developers. Its purpose is to democratize high-performance Joomla development by empowering everyone — from solo builders to large teams — to work with clean, scalable, maintainable, and versionable code. This isn't a template generator — it's a full-scale **extension engineering platform**.
---
## 🧩 Component Metadata
* **Company:** [Vast Development Method](https://dev.vdm.io)
* **Author:** [Llewellyn van der Merwe](mailto:joomla@vdm.io)
* **Component:** [Component Builder](https://git.vdm.dev/joomla/Component-Builder)
* **Created:** 30th April, 2015 · **Last Build:** 15th July, 2025 · **Version:** 5.1.2-alpha1
* **License:** GNU General Public License version 2 or later; see LICENSE.txt · **Copyright:** Copyright (C) 2015 Vast Development Method. All rights reserved.
* **Lines:** 1095418 · **Fields:** 2096 · **Files:** 7516 · **Folders:** 728
> Generated with [JCB](https://www.joomlacomponentbuilder.com) — The Smartest Way to Build Joomla Extensions.
## Contributors ## Contributors

View File

@ -4,8 +4,6 @@
<action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" />
<action name="core.options" title="JACTION_OPTIONS" description="JACTION_OPTIONS_COMPONENT_DESC" /> <action name="core.options" title="JACTION_OPTIONS" description="JACTION_OPTIONS_COMPONENT_DESC" />
<action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" />
<action name="core.export" title="COM_COMPONENTBUILDER_EXPORT_DATA" description="COM_COMPONENTBUILDER_EXPORT_DATA_DESC" />
<action name="core.import" title="COM_COMPONENTBUILDER_IMPORT_DATA" description="COM_COMPONENTBUILDER_IMPORT_DATA_DESC" />
<action name="core.batch" title="COM_COMPONENTBUILDER_USE_BATCH" description="COM_COMPONENTBUILDER_USE_BATCH_DESC" /> <action name="core.batch" title="COM_COMPONENTBUILDER_USE_BATCH" description="COM_COMPONENTBUILDER_USE_BATCH_DESC" />
<action name="core.version" title="COM_COMPONENTBUILDER_EDIT_VERSIONS" description="COM_COMPONENTBUILDER_EDIT_VERSIONS_DESC" /> <action name="core.version" title="COM_COMPONENTBUILDER_EDIT_VERSIONS" description="COM_COMPONENTBUILDER_EDIT_VERSIONS_DESC" />
<action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" /> <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" />
@ -15,7 +13,9 @@
<action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_COMPONENT_DESC" /> <action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_COMPONENT_DESC" />
<action name="core.edit.created_by" title="COM_COMPONENTBUILDER_EDIT_CREATED_BY" description="COM_COMPONENTBUILDER_EDIT_CREATED_BY_DESC" /> <action name="core.edit.created_by" title="COM_COMPONENTBUILDER_EDIT_CREATED_BY" description="COM_COMPONENTBUILDER_EDIT_CREATED_BY_DESC" />
<action name="core.edit.created" title="COM_COMPONENTBUILDER_EDIT_CREATED_DATE" description="COM_COMPONENTBUILDER_EDIT_CREATED_DATE_DESC" /> <action name="core.edit.created" title="COM_COMPONENTBUILDER_EDIT_CREATED_DATE" description="COM_COMPONENTBUILDER_EDIT_CREATED_DATE_DESC" />
<action name="admin_view.run_expansion" title="COM_COMPONENTBUILDER_ADMIN_VIEW_RUN_EXPANSION_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_ADMIN_VIEW_RUN_EXPANSION_BUTTON_ACCESS_DESC" /> <action name="admin_view.init" title="COM_COMPONENTBUILDER_ADMIN_VIEW_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_ADMIN_VIEW_INIT_BUTTON_ACCESS_DESC" />
<action name="admin_view.push" title="COM_COMPONENTBUILDER_ADMIN_VIEW_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_ADMIN_VIEW_PUSH_BUTTON_ACCESS_DESC" />
<action name="admin_view.reset" title="COM_COMPONENTBUILDER_ADMIN_VIEW_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_ADMIN_VIEW_RESET_BUTTON_ACCESS_DESC" />
<action name="admin_view.access" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_ACCESS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_ACCESS_DESC" /> <action name="admin_view.access" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_ACCESS" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_ACCESS_DESC" />
<action name="admin_view.batch" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_BATCH_USE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_BATCH_USE_DESC" /> <action name="admin_view.batch" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_BATCH_USE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_BATCH_USE_DESC" />
<action name="admin_view.create" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_CREATE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_CREATE_DESC" /> <action name="admin_view.create" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_CREATE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_CREATE_DESC" />
@ -27,8 +27,6 @@
<action name="admin_view.edit.own" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_OWN" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_OWN_DESC" /> <action name="admin_view.edit.own" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_OWN" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_OWN_DESC" />
<action name="admin_view.edit.state" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_STATE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_STATE_DESC" /> <action name="admin_view.edit.state" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_STATE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_STATE_DESC" />
<action name="admin_view.version" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_VERSION" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_VERSION_DESC" /> <action name="admin_view.version" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_VERSION" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_VERSION_DESC" />
<action name="admin_view.export" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EXPORT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EXPORT_DESC" />
<action name="admin_view.import" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_IMPORT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_IMPORT_DESC" />
<action name="admin_view.submenu" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_SUBMENU" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_SUBMENU_DESC" /> <action name="admin_view.submenu" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_SUBMENU" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_SUBMENU_DESC" />
<action name="admin_custom_tabs.access" title="COM_COMPONENTBUILDER_ADMINS_CUSTOM_TABS_ACCESS" description="COM_COMPONENTBUILDER_ADMINS_CUSTOM_TABS_ACCESS_DESC" /> <action name="admin_custom_tabs.access" title="COM_COMPONENTBUILDER_ADMINS_CUSTOM_TABS_ACCESS" description="COM_COMPONENTBUILDER_ADMINS_CUSTOM_TABS_ACCESS_DESC" />
<action name="admin_custom_tabs.batch" title="COM_COMPONENTBUILDER_ADMINS_CUSTOM_TABS_BATCH_USE" description="COM_COMPONENTBUILDER_ADMINS_CUSTOM_TABS_BATCH_USE_DESC" /> <action name="admin_custom_tabs.batch" title="COM_COMPONENTBUILDER_ADMINS_CUSTOM_TABS_BATCH_USE" description="COM_COMPONENTBUILDER_ADMINS_CUSTOM_TABS_BATCH_USE_DESC" />
@ -80,6 +78,12 @@
<action name="class_extends.edit.own" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_OWN" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_OWN_DESC" /> <action name="class_extends.edit.own" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_OWN" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_OWN_DESC" />
<action name="class_extends.edit.state" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_STATE" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_STATE_DESC" /> <action name="class_extends.edit.state" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_STATE" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_STATE_DESC" />
<action name="class_extends.version" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_VERSION" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_VERSION_DESC" /> <action name="class_extends.version" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_VERSION" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_VERSION_DESC" />
<action name="class_extends.init" title="COM_COMPONENTBUILDER_CLASS_EXTENDS_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_CLASS_EXTENDS_INIT_BUTTON_ACCESS_DESC" />
<action name="class_extends.push" title="COM_COMPONENTBUILDER_CLASS_EXTENDS_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_CLASS_EXTENDS_PUSH_BUTTON_ACCESS_DESC" />
<action name="class_extends.reset" title="COM_COMPONENTBUILDER_CLASS_EXTENDS_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_CLASS_EXTENDS_RESET_BUTTON_ACCESS_DESC" />
<action name="class_method.init" title="COM_COMPONENTBUILDER_CLASS_METHOD_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_CLASS_METHOD_INIT_BUTTON_ACCESS_DESC" />
<action name="class_method.push" title="COM_COMPONENTBUILDER_CLASS_METHOD_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_CLASS_METHOD_PUSH_BUTTON_ACCESS_DESC" />
<action name="class_method.reset" title="COM_COMPONENTBUILDER_CLASS_METHOD_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_CLASS_METHOD_RESET_BUTTON_ACCESS_DESC" />
<action name="class_method.access" title="COM_COMPONENTBUILDER_CLASS_METHODS_ACCESS" description="COM_COMPONENTBUILDER_CLASS_METHODS_ACCESS_DESC" /> <action name="class_method.access" title="COM_COMPONENTBUILDER_CLASS_METHODS_ACCESS" description="COM_COMPONENTBUILDER_CLASS_METHODS_ACCESS_DESC" />
<action name="class_method.batch" title="COM_COMPONENTBUILDER_CLASS_METHODS_BATCH_USE" description="COM_COMPONENTBUILDER_CLASS_METHODS_BATCH_USE_DESC" /> <action name="class_method.batch" title="COM_COMPONENTBUILDER_CLASS_METHODS_BATCH_USE" description="COM_COMPONENTBUILDER_CLASS_METHODS_BATCH_USE_DESC" />
<action name="class_method.create" title="COM_COMPONENTBUILDER_CLASS_METHODS_CREATE" description="COM_COMPONENTBUILDER_CLASS_METHODS_CREATE_DESC" /> <action name="class_method.create" title="COM_COMPONENTBUILDER_CLASS_METHODS_CREATE" description="COM_COMPONENTBUILDER_CLASS_METHODS_CREATE_DESC" />
@ -90,8 +94,6 @@
<action name="class_method.edit.own" title="COM_COMPONENTBUILDER_CLASS_METHODS_EDIT_OWN" description="COM_COMPONENTBUILDER_CLASS_METHODS_EDIT_OWN_DESC" /> <action name="class_method.edit.own" title="COM_COMPONENTBUILDER_CLASS_METHODS_EDIT_OWN" description="COM_COMPONENTBUILDER_CLASS_METHODS_EDIT_OWN_DESC" />
<action name="class_method.edit.state" title="COM_COMPONENTBUILDER_CLASS_METHODS_EDIT_STATE" description="COM_COMPONENTBUILDER_CLASS_METHODS_EDIT_STATE_DESC" /> <action name="class_method.edit.state" title="COM_COMPONENTBUILDER_CLASS_METHODS_EDIT_STATE" description="COM_COMPONENTBUILDER_CLASS_METHODS_EDIT_STATE_DESC" />
<action name="class_method.version" title="COM_COMPONENTBUILDER_CLASS_METHODS_EDIT_VERSION" description="COM_COMPONENTBUILDER_CLASS_METHODS_EDIT_VERSION_DESC" /> <action name="class_method.version" title="COM_COMPONENTBUILDER_CLASS_METHODS_EDIT_VERSION" description="COM_COMPONENTBUILDER_CLASS_METHODS_EDIT_VERSION_DESC" />
<action name="class_method.export" title="COM_COMPONENTBUILDER_CLASS_METHODS_EXPORT" description="COM_COMPONENTBUILDER_CLASS_METHODS_EXPORT_DESC" />
<action name="class_method.import" title="COM_COMPONENTBUILDER_CLASS_METHODS_IMPORT" description="COM_COMPONENTBUILDER_CLASS_METHODS_IMPORT_DESC" />
<action name="class_property.access" title="COM_COMPONENTBUILDER_CLASS_PROPERTIES_ACCESS" description="COM_COMPONENTBUILDER_CLASS_PROPERTIES_ACCESS_DESC" /> <action name="class_property.access" title="COM_COMPONENTBUILDER_CLASS_PROPERTIES_ACCESS" description="COM_COMPONENTBUILDER_CLASS_PROPERTIES_ACCESS_DESC" />
<action name="class_property.batch" title="COM_COMPONENTBUILDER_CLASS_PROPERTIES_BATCH_USE" description="COM_COMPONENTBUILDER_CLASS_PROPERTIES_BATCH_USE_DESC" /> <action name="class_property.batch" title="COM_COMPONENTBUILDER_CLASS_PROPERTIES_BATCH_USE" description="COM_COMPONENTBUILDER_CLASS_PROPERTIES_BATCH_USE_DESC" />
<action name="class_property.create" title="COM_COMPONENTBUILDER_CLASS_PROPERTIES_CREATE" description="COM_COMPONENTBUILDER_CLASS_PROPERTIES_CREATE_DESC" /> <action name="class_property.create" title="COM_COMPONENTBUILDER_CLASS_PROPERTIES_CREATE" description="COM_COMPONENTBUILDER_CLASS_PROPERTIES_CREATE_DESC" />
@ -102,15 +104,14 @@
<action name="class_property.edit.own" title="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT_OWN" description="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT_OWN_DESC" /> <action name="class_property.edit.own" title="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT_OWN" description="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT_OWN_DESC" />
<action name="class_property.edit.state" title="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT_STATE" description="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT_STATE_DESC" /> <action name="class_property.edit.state" title="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT_STATE" description="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT_STATE_DESC" />
<action name="class_property.version" title="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT_VERSION" description="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT_VERSION_DESC" /> <action name="class_property.version" title="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT_VERSION" description="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT_VERSION_DESC" />
<action name="class_property.export" title="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EXPORT" description="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EXPORT_DESC" /> <action name="class_property.init" title="COM_COMPONENTBUILDER_CLASS_PROPERTY_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_CLASS_PROPERTY_INIT_BUTTON_ACCESS_DESC" />
<action name="class_property.import" title="COM_COMPONENTBUILDER_CLASS_PROPERTIES_IMPORT" description="COM_COMPONENTBUILDER_CLASS_PROPERTIES_IMPORT_DESC" /> <action name="class_property.push" title="COM_COMPONENTBUILDER_CLASS_PROPERTY_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_CLASS_PROPERTY_PUSH_BUTTON_ACCESS_DESC" />
<action name="class_property.reset" title="COM_COMPONENTBUILDER_CLASS_PROPERTY_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_CLASS_PROPERTY_RESET_BUTTON_ACCESS_DESC" />
<action name="compiler.access" title="COM_COMPONENTBUILDER_COMPILER_ACCESS" description="COM_COMPONENTBUILDER_COMPILER_ACCESS_DESC" /> <action name="compiler.access" title="COM_COMPONENTBUILDER_COMPILER_ACCESS" description="COM_COMPONENTBUILDER_COMPILER_ACCESS_DESC" />
<action name="compiler.clear_tmp" title="COM_COMPONENTBUILDER_COMPILER_CLEAR_TMP_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_COMPILER_CLEAR_TMP_BUTTON_ACCESS_DESC" /> <action name="compiler.clear_tmp" title="COM_COMPONENTBUILDER_COMPILER_CLEAR_TMP_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_COMPILER_CLEAR_TMP_BUTTON_ACCESS_DESC" />
<action name="compiler.compiler_animations" title="COM_COMPONENTBUILDER_COMPILER_COMPILER_ANIMATIONS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_COMPILER_COMPILER_ANIMATIONS_BUTTON_ACCESS_DESC" /> <action name="compiler.compiler_animations" title="COM_COMPONENTBUILDER_COMPILER_COMPILER_ANIMATIONS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_COMPILER_COMPILER_ANIMATIONS_BUTTON_ACCESS_DESC" />
<action name="compiler.dashboard_list" title="COM_COMPONENTBUILDER_COMPILER_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_COMPILER_DASHBOARD_LIST_DESC" /> <action name="compiler.dashboard_list" title="COM_COMPONENTBUILDER_COMPILER_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_COMPILER_DASHBOARD_LIST_DESC" />
<action name="compiler.run_expansion" title="COM_COMPONENTBUILDER_COMPILER_RUN_EXPANSION_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_COMPILER_RUN_EXPANSION_BUTTON_ACCESS_DESC" />
<action name="compiler.submenu" title="COM_COMPONENTBUILDER_COMPILER_SUBMENU" description="COM_COMPONENTBUILDER_COMPILER_SUBMENU_DESC" /> <action name="compiler.submenu" title="COM_COMPONENTBUILDER_COMPILER_SUBMENU" description="COM_COMPONENTBUILDER_COMPILER_SUBMENU_DESC" />
<action name="compiler.translate" title="COM_COMPONENTBUILDER_COMPILER_TRANSLATE_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_COMPILER_TRANSLATE_BUTTON_ACCESS_DESC" />
<action name="component_admin_views.access" title="COM_COMPONENTBUILDER_COMPONENTS_ADMIN_VIEWS_ACCESS" description="COM_COMPONENTBUILDER_COMPONENTS_ADMIN_VIEWS_ACCESS_DESC" /> <action name="component_admin_views.access" title="COM_COMPONENTBUILDER_COMPONENTS_ADMIN_VIEWS_ACCESS" description="COM_COMPONENTBUILDER_COMPONENTS_ADMIN_VIEWS_ACCESS_DESC" />
<action name="component_admin_views.batch" title="COM_COMPONENTBUILDER_COMPONENTS_ADMIN_VIEWS_BATCH_USE" description="COM_COMPONENTBUILDER_COMPONENTS_ADMIN_VIEWS_BATCH_USE_DESC" /> <action name="component_admin_views.batch" title="COM_COMPONENTBUILDER_COMPONENTS_ADMIN_VIEWS_BATCH_USE" description="COM_COMPONENTBUILDER_COMPONENTS_ADMIN_VIEWS_BATCH_USE_DESC" />
<action name="component_admin_views.create" title="COM_COMPONENTBUILDER_COMPONENTS_ADMIN_VIEWS_CREATE" description="COM_COMPONENTBUILDER_COMPONENTS_ADMIN_VIEWS_CREATE_DESC" /> <action name="component_admin_views.create" title="COM_COMPONENTBUILDER_COMPONENTS_ADMIN_VIEWS_CREATE" description="COM_COMPONENTBUILDER_COMPONENTS_ADMIN_VIEWS_CREATE_DESC" />
@ -211,6 +212,16 @@
<action name="component_plugins.edit.own" title="COM_COMPONENTBUILDER_COMPONENTS_PLUGINS_EDIT_OWN" description="COM_COMPONENTBUILDER_COMPONENTS_PLUGINS_EDIT_OWN_DESC" /> <action name="component_plugins.edit.own" title="COM_COMPONENTBUILDER_COMPONENTS_PLUGINS_EDIT_OWN" description="COM_COMPONENTBUILDER_COMPONENTS_PLUGINS_EDIT_OWN_DESC" />
<action name="component_plugins.edit.state" title="COM_COMPONENTBUILDER_COMPONENTS_PLUGINS_EDIT_STATE" description="COM_COMPONENTBUILDER_COMPONENTS_PLUGINS_EDIT_STATE_DESC" /> <action name="component_plugins.edit.state" title="COM_COMPONENTBUILDER_COMPONENTS_PLUGINS_EDIT_STATE" description="COM_COMPONENTBUILDER_COMPONENTS_PLUGINS_EDIT_STATE_DESC" />
<action name="component_plugins.version" title="COM_COMPONENTBUILDER_COMPONENTS_PLUGINS_EDIT_VERSION" description="COM_COMPONENTBUILDER_COMPONENTS_PLUGINS_EDIT_VERSION_DESC" /> <action name="component_plugins.version" title="COM_COMPONENTBUILDER_COMPONENTS_PLUGINS_EDIT_VERSION" description="COM_COMPONENTBUILDER_COMPONENTS_PLUGINS_EDIT_VERSION_DESC" />
<action name="component_router.access" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_ACCESS" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_ACCESS_DESC" />
<action name="component_router.batch" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_BATCH_USE" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_BATCH_USE_DESC" />
<action name="component_router.create" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_CREATE" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_CREATE_DESC" />
<action name="component_router.delete" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_DELETE" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_DELETE_DESC" />
<action name="component_router.edit" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_DESC" />
<action name="component_router.edit.created_by" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_CREATED_BY" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_CREATED_BY_DESC" />
<action name="component_router.edit.created" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_CREATED_DATE" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_CREATED_DATE_DESC" />
<action name="component_router.edit.own" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_OWN" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_OWN_DESC" />
<action name="component_router.edit.state" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_STATE" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_STATE_DESC" />
<action name="component_router.version" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_VERSION" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_VERSION_DESC" />
<action name="component_site_views.access" title="COM_COMPONENTBUILDER_COMPONENTS_SITE_VIEWS_ACCESS" description="COM_COMPONENTBUILDER_COMPONENTS_SITE_VIEWS_ACCESS_DESC" /> <action name="component_site_views.access" title="COM_COMPONENTBUILDER_COMPONENTS_SITE_VIEWS_ACCESS" description="COM_COMPONENTBUILDER_COMPONENTS_SITE_VIEWS_ACCESS_DESC" />
<action name="component_site_views.batch" title="COM_COMPONENTBUILDER_COMPONENTS_SITE_VIEWS_BATCH_USE" description="COM_COMPONENTBUILDER_COMPONENTS_SITE_VIEWS_BATCH_USE_DESC" /> <action name="component_site_views.batch" title="COM_COMPONENTBUILDER_COMPONENTS_SITE_VIEWS_BATCH_USE" description="COM_COMPONENTBUILDER_COMPONENTS_SITE_VIEWS_BATCH_USE_DESC" />
<action name="component_site_views.create" title="COM_COMPONENTBUILDER_COMPONENTS_SITE_VIEWS_CREATE" description="COM_COMPONENTBUILDER_COMPONENTS_SITE_VIEWS_CREATE_DESC" /> <action name="component_site_views.create" title="COM_COMPONENTBUILDER_COMPONENTS_SITE_VIEWS_CREATE" description="COM_COMPONENTBUILDER_COMPONENTS_SITE_VIEWS_CREATE_DESC" />
@ -231,15 +242,17 @@
<action name="component_updates.edit.own" title="COM_COMPONENTBUILDER_COMPONENTS_UPDATES_EDIT_OWN" description="COM_COMPONENTBUILDER_COMPONENTS_UPDATES_EDIT_OWN_DESC" /> <action name="component_updates.edit.own" title="COM_COMPONENTBUILDER_COMPONENTS_UPDATES_EDIT_OWN" description="COM_COMPONENTBUILDER_COMPONENTS_UPDATES_EDIT_OWN_DESC" />
<action name="component_updates.edit.state" title="COM_COMPONENTBUILDER_COMPONENTS_UPDATES_EDIT_STATE" description="COM_COMPONENTBUILDER_COMPONENTS_UPDATES_EDIT_STATE_DESC" /> <action name="component_updates.edit.state" title="COM_COMPONENTBUILDER_COMPONENTS_UPDATES_EDIT_STATE" description="COM_COMPONENTBUILDER_COMPONENTS_UPDATES_EDIT_STATE_DESC" />
<action name="component_updates.version" title="COM_COMPONENTBUILDER_COMPONENTS_UPDATES_EDIT_VERSION" description="COM_COMPONENTBUILDER_COMPONENTS_UPDATES_EDIT_VERSION_DESC" /> <action name="component_updates.version" title="COM_COMPONENTBUILDER_COMPONENTS_UPDATES_EDIT_VERSION" description="COM_COMPONENTBUILDER_COMPONENTS_UPDATES_EDIT_VERSION_DESC" />
<action name="custom_admin_view.get_snippets" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_GET_SNIPPETS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_GET_SNIPPETS_BUTTON_ACCESS_DESC" /> <action name="custom_admin_view.init" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_INIT_BUTTON_ACCESS_DESC" />
<action name="custom_admin_view.push" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_PUSH_BUTTON_ACCESS_DESC" />
<action name="custom_admin_view.reset" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_RESET_BUTTON_ACCESS_DESC" />
<action name="custom_admin_view.access" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_ACCESS_DESC" /> <action name="custom_admin_view.access" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_ACCESS_DESC" />
<action name="custom_admin_view.batch" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_BATCH_USE" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_BATCH_USE_DESC" /> <action name="custom_admin_view.batch" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_BATCH_USE" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_BATCH_USE_DESC" />
<action name="custom_admin_view.dashboard_list" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_DASHBOARD_LIST_DESC" /> <action name="custom_admin_view.dashboard_list" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_DASHBOARD_LIST_DESC" />
<action name="custom_admin_view.version" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_EDIT_VERSION" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_EDIT_VERSION_DESC" /> <action name="custom_admin_view.version" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_EDIT_VERSION" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_EDIT_VERSION_DESC" />
<action name="custom_admin_view.export" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_EXPORT" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_EXPORT_DESC" />
<action name="custom_admin_view.import" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_IMPORT" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_IMPORT_DESC" />
<action name="custom_admin_view.submenu" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_SUBMENU" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_SUBMENU_DESC" /> <action name="custom_admin_view.submenu" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_SUBMENU" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_SUBMENU_DESC" />
<action name="custom_code.run_expansion" title="COM_COMPONENTBUILDER_CUSTOM_CODE_RUN_EXPANSION_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_CODE_RUN_EXPANSION_BUTTON_ACCESS_DESC" /> <action name="custom_code.init" title="COM_COMPONENTBUILDER_CUSTOM_CODE_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_CODE_INIT_BUTTON_ACCESS_DESC" />
<action name="custom_code.push" title="COM_COMPONENTBUILDER_CUSTOM_CODE_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_CODE_PUSH_BUTTON_ACCESS_DESC" />
<action name="custom_code.reset" title="COM_COMPONENTBUILDER_CUSTOM_CODE_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_CODE_RESET_BUTTON_ACCESS_DESC" />
<action name="custom_code.access" title="COM_COMPONENTBUILDER_CUSTOM_CODES_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_CODES_ACCESS_DESC" /> <action name="custom_code.access" title="COM_COMPONENTBUILDER_CUSTOM_CODES_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_CODES_ACCESS_DESC" />
<action name="custom_code.batch" title="COM_COMPONENTBUILDER_CUSTOM_CODES_BATCH_USE" description="COM_COMPONENTBUILDER_CUSTOM_CODES_BATCH_USE_DESC" /> <action name="custom_code.batch" title="COM_COMPONENTBUILDER_CUSTOM_CODES_BATCH_USE" description="COM_COMPONENTBUILDER_CUSTOM_CODES_BATCH_USE_DESC" />
<action name="custom_code.create" title="COM_COMPONENTBUILDER_CUSTOM_CODES_CREATE" description="COM_COMPONENTBUILDER_CUSTOM_CODES_CREATE_DESC" /> <action name="custom_code.create" title="COM_COMPONENTBUILDER_CUSTOM_CODES_CREATE" description="COM_COMPONENTBUILDER_CUSTOM_CODES_CREATE_DESC" />
@ -251,10 +264,10 @@
<action name="custom_code.edit.own" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_OWN" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_OWN_DESC" /> <action name="custom_code.edit.own" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_OWN" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_OWN_DESC" />
<action name="custom_code.edit.state" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_STATE" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_STATE_DESC" /> <action name="custom_code.edit.state" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_STATE" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_STATE_DESC" />
<action name="custom_code.version" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_VERSION" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_VERSION_DESC" /> <action name="custom_code.version" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_VERSION" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_VERSION_DESC" />
<action name="custom_code.export" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EXPORT" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EXPORT_DESC" />
<action name="custom_code.import" title="COM_COMPONENTBUILDER_CUSTOM_CODES_IMPORT" description="COM_COMPONENTBUILDER_CUSTOM_CODES_IMPORT_DESC" />
<action name="custom_code.submenu" title="COM_COMPONENTBUILDER_CUSTOM_CODES_SUBMENU" description="COM_COMPONENTBUILDER_CUSTOM_CODES_SUBMENU_DESC" /> <action name="custom_code.submenu" title="COM_COMPONENTBUILDER_CUSTOM_CODES_SUBMENU" description="COM_COMPONENTBUILDER_CUSTOM_CODES_SUBMENU_DESC" />
<action name="dynamic_get.run_expansion" title="COM_COMPONENTBUILDER_DYNAMIC_GET_RUN_EXPANSION_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_DYNAMIC_GET_RUN_EXPANSION_BUTTON_ACCESS_DESC" /> <action name="dynamic_get.init" title="COM_COMPONENTBUILDER_DYNAMIC_GET_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_DYNAMIC_GET_INIT_BUTTON_ACCESS_DESC" />
<action name="dynamic_get.push" title="COM_COMPONENTBUILDER_DYNAMIC_GET_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_DYNAMIC_GET_PUSH_BUTTON_ACCESS_DESC" />
<action name="dynamic_get.reset" title="COM_COMPONENTBUILDER_DYNAMIC_GET_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_DYNAMIC_GET_RESET_BUTTON_ACCESS_DESC" />
<action name="dynamic_get.access" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_ACCESS" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_ACCESS_DESC" /> <action name="dynamic_get.access" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_ACCESS" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_ACCESS_DESC" />
<action name="dynamic_get.batch" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_BATCH_USE" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_BATCH_USE_DESC" /> <action name="dynamic_get.batch" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_BATCH_USE" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_BATCH_USE_DESC" />
<action name="dynamic_get.create" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_CREATE" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_CREATE_DESC" /> <action name="dynamic_get.create" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_CREATE" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_CREATE_DESC" />
@ -265,10 +278,10 @@
<action name="dynamic_get.edit.own" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_EDIT_OWN" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_EDIT_OWN_DESC" /> <action name="dynamic_get.edit.own" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_EDIT_OWN" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_EDIT_OWN_DESC" />
<action name="dynamic_get.edit.state" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_EDIT_STATE" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_EDIT_STATE_DESC" /> <action name="dynamic_get.edit.state" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_EDIT_STATE" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_EDIT_STATE_DESC" />
<action name="dynamic_get.version" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_EDIT_VERSION" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_EDIT_VERSION_DESC" /> <action name="dynamic_get.version" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_EDIT_VERSION" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_EDIT_VERSION_DESC" />
<action name="dynamic_get.export" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_EXPORT" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_EXPORT_DESC" />
<action name="dynamic_get.import" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_IMPORT" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_IMPORT_DESC" />
<action name="dynamic_get.submenu" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_SUBMENU" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_SUBMENU_DESC" /> <action name="dynamic_get.submenu" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_SUBMENU" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_SUBMENU_DESC" />
<action name="field.run_expansion" title="COM_COMPONENTBUILDER_FIELD_RUN_EXPANSION_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_FIELD_RUN_EXPANSION_BUTTON_ACCESS_DESC" /> <action name="field.init" title="COM_COMPONENTBUILDER_FIELD_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_FIELD_INIT_BUTTON_ACCESS_DESC" />
<action name="field.push" title="COM_COMPONENTBUILDER_FIELD_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_FIELD_PUSH_BUTTON_ACCESS_DESC" />
<action name="field.reset" title="COM_COMPONENTBUILDER_FIELD_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_FIELD_RESET_BUTTON_ACCESS_DESC" />
<action name="field.access" title="COM_COMPONENTBUILDER_FIELDS_ACCESS" description="COM_COMPONENTBUILDER_FIELDS_ACCESS_DESC" /> <action name="field.access" title="COM_COMPONENTBUILDER_FIELDS_ACCESS" description="COM_COMPONENTBUILDER_FIELDS_ACCESS_DESC" />
<action name="field.batch" title="COM_COMPONENTBUILDER_FIELDS_BATCH_USE" description="COM_COMPONENTBUILDER_FIELDS_BATCH_USE_DESC" /> <action name="field.batch" title="COM_COMPONENTBUILDER_FIELDS_BATCH_USE" description="COM_COMPONENTBUILDER_FIELDS_BATCH_USE_DESC" />
<action name="field.create" title="COM_COMPONENTBUILDER_FIELDS_CREATE" description="COM_COMPONENTBUILDER_FIELDS_CREATE_DESC" /> <action name="field.create" title="COM_COMPONENTBUILDER_FIELDS_CREATE" description="COM_COMPONENTBUILDER_FIELDS_CREATE_DESC" />
@ -279,9 +292,10 @@
<action name="field.edit.own" title="COM_COMPONENTBUILDER_FIELDS_EDIT_OWN" description="COM_COMPONENTBUILDER_FIELDS_EDIT_OWN_DESC" /> <action name="field.edit.own" title="COM_COMPONENTBUILDER_FIELDS_EDIT_OWN" description="COM_COMPONENTBUILDER_FIELDS_EDIT_OWN_DESC" />
<action name="field.edit.state" title="COM_COMPONENTBUILDER_FIELDS_EDIT_STATE" description="COM_COMPONENTBUILDER_FIELDS_EDIT_STATE_DESC" /> <action name="field.edit.state" title="COM_COMPONENTBUILDER_FIELDS_EDIT_STATE" description="COM_COMPONENTBUILDER_FIELDS_EDIT_STATE_DESC" />
<action name="field.version" title="COM_COMPONENTBUILDER_FIELDS_EDIT_VERSION" description="COM_COMPONENTBUILDER_FIELDS_EDIT_VERSION_DESC" /> <action name="field.version" title="COM_COMPONENTBUILDER_FIELDS_EDIT_VERSION" description="COM_COMPONENTBUILDER_FIELDS_EDIT_VERSION_DESC" />
<action name="field.export" title="COM_COMPONENTBUILDER_FIELDS_EXPORT" description="COM_COMPONENTBUILDER_FIELDS_EXPORT_DESC" />
<action name="field.import" title="COM_COMPONENTBUILDER_FIELDS_IMPORT" description="COM_COMPONENTBUILDER_FIELDS_IMPORT_DESC" />
<action name="field.submenu" title="COM_COMPONENTBUILDER_FIELDS_SUBMENU" description="COM_COMPONENTBUILDER_FIELDS_SUBMENU_DESC" /> <action name="field.submenu" title="COM_COMPONENTBUILDER_FIELDS_SUBMENU" description="COM_COMPONENTBUILDER_FIELDS_SUBMENU_DESC" />
<action name="fieldtype.init" title="COM_COMPONENTBUILDER_FIELDTYPE_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_FIELDTYPE_INIT_BUTTON_ACCESS_DESC" />
<action name="fieldtype.push" title="COM_COMPONENTBUILDER_FIELDTYPE_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_FIELDTYPE_PUSH_BUTTON_ACCESS_DESC" />
<action name="fieldtype.reset" title="COM_COMPONENTBUILDER_FIELDTYPE_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_FIELDTYPE_RESET_BUTTON_ACCESS_DESC" />
<action name="fieldtype.access" title="COM_COMPONENTBUILDER_FIELDTYPES_ACCESS" description="COM_COMPONENTBUILDER_FIELDTYPES_ACCESS_DESC" /> <action name="fieldtype.access" title="COM_COMPONENTBUILDER_FIELDTYPES_ACCESS" description="COM_COMPONENTBUILDER_FIELDTYPES_ACCESS_DESC" />
<action name="fieldtype.batch" title="COM_COMPONENTBUILDER_FIELDTYPES_BATCH_USE" description="COM_COMPONENTBUILDER_FIELDTYPES_BATCH_USE_DESC" /> <action name="fieldtype.batch" title="COM_COMPONENTBUILDER_FIELDTYPES_BATCH_USE" description="COM_COMPONENTBUILDER_FIELDTYPES_BATCH_USE_DESC" />
<action name="fieldtype.create" title="COM_COMPONENTBUILDER_FIELDTYPES_CREATE" description="COM_COMPONENTBUILDER_FIELDTYPES_CREATE_DESC" /> <action name="fieldtype.create" title="COM_COMPONENTBUILDER_FIELDTYPES_CREATE" description="COM_COMPONENTBUILDER_FIELDTYPES_CREATE_DESC" />
@ -291,18 +305,7 @@
<action name="fieldtype.edit.own" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_OWN" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_OWN_DESC" /> <action name="fieldtype.edit.own" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_OWN" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_OWN_DESC" />
<action name="fieldtype.edit.state" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_STATE" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_STATE_DESC" /> <action name="fieldtype.edit.state" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_STATE" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_STATE_DESC" />
<action name="fieldtype.version" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_VERSION" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_VERSION_DESC" /> <action name="fieldtype.version" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_VERSION" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_VERSION_DESC" />
<action name="fieldtype.export" title="COM_COMPONENTBUILDER_FIELDTYPES_EXPORT" description="COM_COMPONENTBUILDER_FIELDTYPES_EXPORT_DESC" />
<action name="fieldtype.import" title="COM_COMPONENTBUILDER_FIELDTYPES_IMPORT" description="COM_COMPONENTBUILDER_FIELDTYPES_IMPORT_DESC" />
<action name="fieldtype.submenu" title="COM_COMPONENTBUILDER_FIELDTYPES_SUBMENU" description="COM_COMPONENTBUILDER_FIELDTYPES_SUBMENU_DESC" /> <action name="fieldtype.submenu" title="COM_COMPONENTBUILDER_FIELDTYPES_SUBMENU" description="COM_COMPONENTBUILDER_FIELDTYPES_SUBMENU_DESC" />
<action name="get_snippets.access" title="COM_COMPONENTBUILDER_GET_SNIPPETS_ACCESS" description="COM_COMPONENTBUILDER_GET_SNIPPETS_ACCESS_DESC" />
<action name="get_snippets.custom_admin_views" title="COM_COMPONENTBUILDER_GET_SNIPPETS_CUSTOM_ADMIN_VIEWS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_GET_SNIPPETS_CUSTOM_ADMIN_VIEWS_BUTTON_ACCESS_DESC" />
<action name="get_snippets.dashboard_list" title="COM_COMPONENTBUILDER_GET_SNIPPETS_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_GET_SNIPPETS_DASHBOARD_LIST_DESC" />
<action name="get_snippets.layouts" title="COM_COMPONENTBUILDER_GET_SNIPPETS_LAYOUTS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_GET_SNIPPETS_LAYOUTS_BUTTON_ACCESS_DESC" />
<action name="get_snippets.libraries" title="COM_COMPONENTBUILDER_GET_SNIPPETS_LIBRARIES_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_GET_SNIPPETS_LIBRARIES_BUTTON_ACCESS_DESC" />
<action name="get_snippets.site_views" title="COM_COMPONENTBUILDER_GET_SNIPPETS_SITE_VIEWS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_GET_SNIPPETS_SITE_VIEWS_BUTTON_ACCESS_DESC" />
<action name="get_snippets.snippets" title="COM_COMPONENTBUILDER_GET_SNIPPETS_SNIPPETS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_GET_SNIPPETS_SNIPPETS_BUTTON_ACCESS_DESC" />
<action name="get_snippets.submenu" title="COM_COMPONENTBUILDER_GET_SNIPPETS_SUBMENU" description="COM_COMPONENTBUILDER_GET_SNIPPETS_SUBMENU_DESC" />
<action name="get_snippets.templates" title="COM_COMPONENTBUILDER_GET_SNIPPETS_TEMPLATES_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_GET_SNIPPETS_TEMPLATES_BUTTON_ACCESS_DESC" />
<action name="help_document.access" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_ACCESS" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_ACCESS_DESC" /> <action name="help_document.access" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_ACCESS" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_ACCESS_DESC" />
<action name="help_document.batch" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_BATCH_USE" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_BATCH_USE_DESC" /> <action name="help_document.batch" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_BATCH_USE" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_BATCH_USE_DESC" />
<action name="help_document.create" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_CREATE" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_CREATE_DESC" /> <action name="help_document.create" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_CREATE" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_CREATE_DESC" />
@ -312,15 +315,11 @@
<action name="help_document.edit.own" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_OWN" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_OWN_DESC" /> <action name="help_document.edit.own" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_OWN" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_OWN_DESC" />
<action name="help_document.edit.state" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_STATE" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_STATE_DESC" /> <action name="help_document.edit.state" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_STATE" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_STATE_DESC" />
<action name="help_document.version" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_VERSION" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_VERSION_DESC" /> <action name="help_document.version" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_VERSION" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_VERSION_DESC" />
<action name="help_document.export" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EXPORT" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EXPORT_DESC" />
<action name="help_document.import" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_IMPORT" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_IMPORT_DESC" />
<action name="help_document.submenu" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_SUBMENU" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_SUBMENU_DESC" /> <action name="help_document.submenu" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_SUBMENU" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_SUBMENU_DESC" />
<action name="joomla_component.backup" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_BACKUP_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_BACKUP_BUTTON_ACCESS_DESC" />
<action name="joomla_component.clear_tmp" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CLEAR_TMP_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CLEAR_TMP_BUTTON_ACCESS_DESC" /> <action name="joomla_component.clear_tmp" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CLEAR_TMP_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CLEAR_TMP_BUTTON_ACCESS_DESC" />
<action name="joomla_component.clone" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CLONE_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CLONE_BUTTON_ACCESS_DESC" /> <action name="joomla_component.init" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_INIT_BUTTON_ACCESS_DESC" />
<action name="joomla_component.export_jcb_packages" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_EXPORT_JCB_PACKAGES_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_EXPORT_JCB_PACKAGES_BUTTON_ACCESS_DESC" /> <action name="joomla_component.push" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PUSH_BUTTON_ACCESS_DESC" />
<action name="joomla_component.import_jcb_packages" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_IMPORT_JCB_PACKAGES_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_IMPORT_JCB_PACKAGES_BUTTON_ACCESS_DESC" /> <action name="joomla_component.reset" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_RESET_BUTTON_ACCESS_DESC" />
<action name="joomla_component.run_expansion" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_RUN_EXPANSION_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_RUN_EXPANSION_BUTTON_ACCESS_DESC" />
<action name="joomla_component.access" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_ACCESS_DESC" /> <action name="joomla_component.access" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_ACCESS_DESC" />
<action name="joomla_component.batch" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_BATCH_USE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_BATCH_USE_DESC" /> <action name="joomla_component.batch" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_BATCH_USE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_BATCH_USE_DESC" />
<action name="joomla_component.create" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_CREATE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_CREATE_DESC" /> <action name="joomla_component.create" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_CREATE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_CREATE_DESC" />
@ -333,8 +332,9 @@
<action name="joomla_component.edit.state" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_STATE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_STATE_DESC" /> <action name="joomla_component.edit.state" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_STATE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_STATE_DESC" />
<action name="joomla_component.version" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION_DESC" /> <action name="joomla_component.version" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION_DESC" />
<action name="joomla_component.submenu" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_SUBMENU" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_SUBMENU_DESC" /> <action name="joomla_component.submenu" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_SUBMENU" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_SUBMENU_DESC" />
<action name="joomla_module.get_snippets" title="COM_COMPONENTBUILDER_JOOMLA_MODULE_GET_SNIPPETS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_MODULE_GET_SNIPPETS_BUTTON_ACCESS_DESC" /> <action name="joomla_module.init" title="COM_COMPONENTBUILDER_JOOMLA_MODULE_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_MODULE_INIT_BUTTON_ACCESS_DESC" />
<action name="joomla_module.run_expansion" title="COM_COMPONENTBUILDER_JOOMLA_MODULE_RUN_EXPANSION_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_MODULE_RUN_EXPANSION_BUTTON_ACCESS_DESC" /> <action name="joomla_module.push" title="COM_COMPONENTBUILDER_JOOMLA_MODULE_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_MODULE_PUSH_BUTTON_ACCESS_DESC" />
<action name="joomla_module.reset" title="COM_COMPONENTBUILDER_JOOMLA_MODULE_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_MODULE_RESET_BUTTON_ACCESS_DESC" />
<action name="joomla_module.access" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_ACCESS_DESC" /> <action name="joomla_module.access" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_ACCESS_DESC" />
<action name="joomla_module.batch" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_BATCH_USE" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_BATCH_USE_DESC" /> <action name="joomla_module.batch" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_BATCH_USE" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_BATCH_USE_DESC" />
<action name="joomla_module.create" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_CREATE" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_CREATE_DESC" /> <action name="joomla_module.create" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_CREATE" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_CREATE_DESC" />
@ -346,7 +346,6 @@
<action name="joomla_module.edit.own" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_EDIT_OWN" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_EDIT_OWN_DESC" /> <action name="joomla_module.edit.own" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_EDIT_OWN" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_EDIT_OWN_DESC" />
<action name="joomla_module.edit.state" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_EDIT_STATE" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_EDIT_STATE_DESC" /> <action name="joomla_module.edit.state" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_EDIT_STATE" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_EDIT_STATE_DESC" />
<action name="joomla_module.version" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_EDIT_VERSION_DESC" /> <action name="joomla_module.version" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_EDIT_VERSION_DESC" />
<action name="joomla_module.export" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_EXPORT" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_EXPORT_DESC" />
<action name="joomla_module_files_folders_urls.access" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_ACCESS_DESC" /> <action name="joomla_module_files_folders_urls.access" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_ACCESS_DESC" />
<action name="joomla_module_files_folders_urls.batch" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_BATCH_USE" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_BATCH_USE_DESC" /> <action name="joomla_module_files_folders_urls.batch" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_BATCH_USE" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_BATCH_USE_DESC" />
<action name="joomla_module_files_folders_urls.create" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_CREATE" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_CREATE_DESC" /> <action name="joomla_module_files_folders_urls.create" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_CREATE" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_CREATE_DESC" />
@ -357,7 +356,6 @@
<action name="joomla_module_files_folders_urls.edit.own" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_EDIT_OWN" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_EDIT_OWN_DESC" /> <action name="joomla_module_files_folders_urls.edit.own" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_EDIT_OWN" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_EDIT_OWN_DESC" />
<action name="joomla_module_files_folders_urls.edit.state" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_EDIT_STATE" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_EDIT_STATE_DESC" /> <action name="joomla_module_files_folders_urls.edit.state" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_EDIT_STATE" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_EDIT_STATE_DESC" />
<action name="joomla_module_files_folders_urls.version" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_EDIT_VERSION_DESC" /> <action name="joomla_module_files_folders_urls.version" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_FILES_FOLDERS_URLS_EDIT_VERSION_DESC" />
<action name="joomla_module.import" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_IMPORT" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_IMPORT_DESC" />
<action name="joomla_module.submenu" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_SUBMENU" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_SUBMENU_DESC" /> <action name="joomla_module.submenu" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_SUBMENU" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_SUBMENU_DESC" />
<action name="joomla_module_updates.access" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_ACCESS_DESC" /> <action name="joomla_module_updates.access" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_ACCESS_DESC" />
<action name="joomla_module_updates.batch" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_BATCH_USE" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_BATCH_USE_DESC" /> <action name="joomla_module_updates.batch" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_BATCH_USE" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_BATCH_USE_DESC" />
@ -369,13 +367,12 @@
<action name="joomla_module_updates.edit.own" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT_OWN" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT_OWN_DESC" /> <action name="joomla_module_updates.edit.own" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT_OWN" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT_OWN_DESC" />
<action name="joomla_module_updates.edit.state" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT_STATE" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT_STATE_DESC" /> <action name="joomla_module_updates.edit.state" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT_STATE" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT_STATE_DESC" />
<action name="joomla_module_updates.version" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT_VERSION_DESC" /> <action name="joomla_module_updates.version" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT_VERSION_DESC" />
<action name="joomla_plugin.get_boilerplate" title="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_GET_BOILERPLATE_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_GET_BOILERPLATE_BUTTON_ACCESS_DESC" />
<action name="joomla_plugin_group.access" title="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_GROUPS_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_GROUPS_ACCESS_DESC" /> <action name="joomla_plugin_group.access" title="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_GROUPS_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_GROUPS_ACCESS_DESC" />
<action name="joomla_plugin_group.batch" title="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_GROUPS_BATCH_USE" description="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_GROUPS_BATCH_USE_DESC" /> <action name="joomla_plugin_group.batch" title="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_GROUPS_BATCH_USE" description="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_GROUPS_BATCH_USE_DESC" />
<action name="joomla_plugin_group.version" title="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_GROUPS_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_GROUPS_EDIT_VERSION_DESC" /> <action name="joomla_plugin_group.version" title="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_GROUPS_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_GROUPS_EDIT_VERSION_DESC" />
<action name="joomla_plugin.methods" title="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_METHODS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_METHODS_BUTTON_ACCESS_DESC" /> <action name="joomla_plugin.init" title="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_INIT_BUTTON_ACCESS_DESC" />
<action name="joomla_plugin.properties" title="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_PROPERTIES_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_PROPERTIES_BUTTON_ACCESS_DESC" /> <action name="joomla_plugin.push" title="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_PUSH_BUTTON_ACCESS_DESC" />
<action name="joomla_plugin.run_expansion" title="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_RUN_EXPANSION_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_RUN_EXPANSION_BUTTON_ACCESS_DESC" /> <action name="joomla_plugin.reset" title="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_PLUGIN_RESET_BUTTON_ACCESS_DESC" />
<action name="joomla_plugin.access" title="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_ACCESS_DESC" /> <action name="joomla_plugin.access" title="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_ACCESS_DESC" />
<action name="joomla_plugin.batch" title="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_BATCH_USE" description="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_BATCH_USE_DESC" /> <action name="joomla_plugin.batch" title="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_BATCH_USE" description="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_BATCH_USE_DESC" />
<action name="joomla_plugin.create" title="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_CREATE" description="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_CREATE_DESC" /> <action name="joomla_plugin.create" title="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_CREATE" description="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_CREATE_DESC" />
@ -408,6 +405,20 @@
<action name="joomla_plugin_updates.edit.own" title="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_UPDATES_EDIT_OWN" description="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_UPDATES_EDIT_OWN_DESC" /> <action name="joomla_plugin_updates.edit.own" title="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_UPDATES_EDIT_OWN" description="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_UPDATES_EDIT_OWN_DESC" />
<action name="joomla_plugin_updates.edit.state" title="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_UPDATES_EDIT_STATE" description="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_UPDATES_EDIT_STATE_DESC" /> <action name="joomla_plugin_updates.edit.state" title="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_UPDATES_EDIT_STATE" description="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_UPDATES_EDIT_STATE_DESC" />
<action name="joomla_plugin_updates.version" title="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_UPDATES_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_UPDATES_EDIT_VERSION_DESC" /> <action name="joomla_plugin_updates.version" title="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_UPDATES_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_UPDATES_EDIT_VERSION_DESC" />
<action name="joomla_power.init" title="COM_COMPONENTBUILDER_JOOMLA_POWER_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_POWER_INIT_BUTTON_ACCESS_DESC" />
<action name="joomla_power.push" title="COM_COMPONENTBUILDER_JOOMLA_POWER_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_POWER_PUSH_BUTTON_ACCESS_DESC" />
<action name="joomla_power.reset" title="COM_COMPONENTBUILDER_JOOMLA_POWER_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_POWER_RESET_BUTTON_ACCESS_DESC" />
<action name="joomla_power.access" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_ACCESS_DESC" />
<action name="joomla_power.batch" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_BATCH_USE" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_BATCH_USE_DESC" />
<action name="joomla_power.create" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_CREATE" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_CREATE_DESC" />
<action name="joomla_power.delete" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_DELETE" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_DELETE_DESC" />
<action name="joomla_power.edit" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_DESC" />
<action name="joomla_power.edit.created_by" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_CREATED_BY" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_CREATED_BY_DESC" />
<action name="joomla_power.edit.created" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_CREATED_DATE" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_CREATED_DATE_DESC" />
<action name="joomla_power.edit.own" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_OWN" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_OWN_DESC" />
<action name="joomla_power.edit.state" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_STATE" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_STATE_DESC" />
<action name="joomla_power.version" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_VERSION_DESC" />
<action name="joomla_power.submenu" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_SUBMENU" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_SUBMENU_DESC" />
<action name="language.build" title="COM_COMPONENTBUILDER_LANGUAGE_BUILD_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_LANGUAGE_BUILD_BUTTON_ACCESS_DESC" /> <action name="language.build" title="COM_COMPONENTBUILDER_LANGUAGE_BUILD_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_LANGUAGE_BUILD_BUTTON_ACCESS_DESC" />
<action name="language_translation.access" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_ACCESS" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_ACCESS_DESC" /> <action name="language_translation.access" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_ACCESS" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_ACCESS_DESC" />
<action name="language_translation.batch" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_BATCH_USE" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_BATCH_USE_DESC" /> <action name="language_translation.batch" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_BATCH_USE" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_BATCH_USE_DESC" />
@ -418,27 +429,24 @@
<action name="language_translation.edit.own" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_OWN" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_OWN_DESC" /> <action name="language_translation.edit.own" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_OWN" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_OWN_DESC" />
<action name="language_translation.edit.state" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_STATE" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_STATE_DESC" /> <action name="language_translation.edit.state" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_STATE" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_STATE_DESC" />
<action name="language_translation.version" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_VERSION" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_VERSION_DESC" /> <action name="language_translation.version" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_VERSION" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_VERSION_DESC" />
<action name="language_translation.export" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EXPORT" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EXPORT_DESC" />
<action name="language_translation.import" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_IMPORT" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_IMPORT_DESC" />
<action name="language_translation.submenu" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_SUBMENU" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_SUBMENU_DESC" /> <action name="language_translation.submenu" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_SUBMENU" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_SUBMENU_DESC" />
<action name="language.access" title="COM_COMPONENTBUILDER_LANGUAGES_ACCESS" description="COM_COMPONENTBUILDER_LANGUAGES_ACCESS_DESC" /> <action name="language.access" title="COM_COMPONENTBUILDER_LANGUAGES_ACCESS" description="COM_COMPONENTBUILDER_LANGUAGES_ACCESS_DESC" />
<action name="language.batch" title="COM_COMPONENTBUILDER_LANGUAGES_BATCH_USE" description="COM_COMPONENTBUILDER_LANGUAGES_BATCH_USE_DESC" /> <action name="language.batch" title="COM_COMPONENTBUILDER_LANGUAGES_BATCH_USE" description="COM_COMPONENTBUILDER_LANGUAGES_BATCH_USE_DESC" />
<action name="language.create" title="COM_COMPONENTBUILDER_LANGUAGES_CREATE" description="COM_COMPONENTBUILDER_LANGUAGES_CREATE_DESC" /> <action name="language.create" title="COM_COMPONENTBUILDER_LANGUAGES_CREATE" description="COM_COMPONENTBUILDER_LANGUAGES_CREATE_DESC" />
<action name="language.dashboard_list" title="COM_COMPONENTBUILDER_LANGUAGES_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_LANGUAGES_DASHBOARD_LIST_DESC" />
<action name="language.delete" title="COM_COMPONENTBUILDER_LANGUAGES_DELETE" description="COM_COMPONENTBUILDER_LANGUAGES_DELETE_DESC" /> <action name="language.delete" title="COM_COMPONENTBUILDER_LANGUAGES_DELETE" description="COM_COMPONENTBUILDER_LANGUAGES_DELETE_DESC" />
<action name="language.edit" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_DESC" /> <action name="language.edit" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_DESC" />
<action name="language.edit.own" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT_OWN" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_OWN_DESC" /> <action name="language.edit.own" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT_OWN" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_OWN_DESC" />
<action name="language.edit.state" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT_STATE" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_STATE_DESC" /> <action name="language.edit.state" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT_STATE" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_STATE_DESC" />
<action name="language.version" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT_VERSION" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_VERSION_DESC" /> <action name="language.version" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT_VERSION" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_VERSION_DESC" />
<action name="language.export" title="COM_COMPONENTBUILDER_LANGUAGES_EXPORT" description="COM_COMPONENTBUILDER_LANGUAGES_EXPORT_DESC" />
<action name="language.import" title="COM_COMPONENTBUILDER_LANGUAGES_IMPORT" description="COM_COMPONENTBUILDER_LANGUAGES_IMPORT_DESC" />
<action name="language.submenu" title="COM_COMPONENTBUILDER_LANGUAGES_SUBMENU" description="COM_COMPONENTBUILDER_LANGUAGES_SUBMENU_DESC" /> <action name="language.submenu" title="COM_COMPONENTBUILDER_LANGUAGES_SUBMENU" description="COM_COMPONENTBUILDER_LANGUAGES_SUBMENU_DESC" />
<action name="layout.get_snippets" title="COM_COMPONENTBUILDER_LAYOUT_GET_SNIPPETS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_LAYOUT_GET_SNIPPETS_BUTTON_ACCESS_DESC" /> <action name="layout.init" title="COM_COMPONENTBUILDER_LAYOUT_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_LAYOUT_INIT_BUTTON_ACCESS_DESC" />
<action name="layout.push" title="COM_COMPONENTBUILDER_LAYOUT_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_LAYOUT_PUSH_BUTTON_ACCESS_DESC" />
<action name="layout.reset" title="COM_COMPONENTBUILDER_LAYOUT_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_LAYOUT_RESET_BUTTON_ACCESS_DESC" />
<action name="layout.access" title="COM_COMPONENTBUILDER_LAYOUTS_ACCESS" description="COM_COMPONENTBUILDER_LAYOUTS_ACCESS_DESC" /> <action name="layout.access" title="COM_COMPONENTBUILDER_LAYOUTS_ACCESS" description="COM_COMPONENTBUILDER_LAYOUTS_ACCESS_DESC" />
<action name="layout.batch" title="COM_COMPONENTBUILDER_LAYOUTS_BATCH_USE" description="COM_COMPONENTBUILDER_LAYOUTS_BATCH_USE_DESC" /> <action name="layout.batch" title="COM_COMPONENTBUILDER_LAYOUTS_BATCH_USE" description="COM_COMPONENTBUILDER_LAYOUTS_BATCH_USE_DESC" />
<action name="layout.dashboard_list" title="COM_COMPONENTBUILDER_LAYOUTS_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_LAYOUTS_DASHBOARD_LIST_DESC" /> <action name="layout.dashboard_list" title="COM_COMPONENTBUILDER_LAYOUTS_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_LAYOUTS_DASHBOARD_LIST_DESC" />
<action name="layout.version" title="COM_COMPONENTBUILDER_LAYOUTS_EDIT_VERSION" description="COM_COMPONENTBUILDER_LAYOUTS_EDIT_VERSION_DESC" /> <action name="layout.version" title="COM_COMPONENTBUILDER_LAYOUTS_EDIT_VERSION" description="COM_COMPONENTBUILDER_LAYOUTS_EDIT_VERSION_DESC" />
<action name="layout.export" title="COM_COMPONENTBUILDER_LAYOUTS_EXPORT" description="COM_COMPONENTBUILDER_LAYOUTS_EXPORT_DESC" />
<action name="layout.import" title="COM_COMPONENTBUILDER_LAYOUTS_IMPORT" description="COM_COMPONENTBUILDER_LAYOUTS_IMPORT_DESC" />
<action name="layout.submenu" title="COM_COMPONENTBUILDER_LAYOUTS_SUBMENU" description="COM_COMPONENTBUILDER_LAYOUTS_SUBMENU_DESC" /> <action name="layout.submenu" title="COM_COMPONENTBUILDER_LAYOUTS_SUBMENU" description="COM_COMPONENTBUILDER_LAYOUTS_SUBMENU_DESC" />
<action name="library.access" title="COM_COMPONENTBUILDER_LIBRARIES_ACCESS" description="COM_COMPONENTBUILDER_LIBRARIES_ACCESS_DESC" /> <action name="library.access" title="COM_COMPONENTBUILDER_LIBRARIES_ACCESS" description="COM_COMPONENTBUILDER_LIBRARIES_ACCESS_DESC" />
<action name="library.batch" title="COM_COMPONENTBUILDER_LIBRARIES_BATCH_USE" description="COM_COMPONENTBUILDER_LIBRARIES_BATCH_USE_DESC" /> <action name="library.batch" title="COM_COMPONENTBUILDER_LIBRARIES_BATCH_USE" description="COM_COMPONENTBUILDER_LIBRARIES_BATCH_USE_DESC" />
@ -470,7 +478,12 @@
<action name="library_files_folders_urls.edit.state" title="COM_COMPONENTBUILDER_LIBRARIES_FILES_FOLDERS_URLS_EDIT_STATE" description="COM_COMPONENTBUILDER_LIBRARIES_FILES_FOLDERS_URLS_EDIT_STATE_DESC" /> <action name="library_files_folders_urls.edit.state" title="COM_COMPONENTBUILDER_LIBRARIES_FILES_FOLDERS_URLS_EDIT_STATE" description="COM_COMPONENTBUILDER_LIBRARIES_FILES_FOLDERS_URLS_EDIT_STATE_DESC" />
<action name="library_files_folders_urls.version" title="COM_COMPONENTBUILDER_LIBRARIES_FILES_FOLDERS_URLS_EDIT_VERSION" description="COM_COMPONENTBUILDER_LIBRARIES_FILES_FOLDERS_URLS_EDIT_VERSION_DESC" /> <action name="library_files_folders_urls.version" title="COM_COMPONENTBUILDER_LIBRARIES_FILES_FOLDERS_URLS_EDIT_VERSION" description="COM_COMPONENTBUILDER_LIBRARIES_FILES_FOLDERS_URLS_EDIT_VERSION_DESC" />
<action name="library.submenu" title="COM_COMPONENTBUILDER_LIBRARIES_SUBMENU" description="COM_COMPONENTBUILDER_LIBRARIES_SUBMENU_DESC" /> <action name="library.submenu" title="COM_COMPONENTBUILDER_LIBRARIES_SUBMENU" description="COM_COMPONENTBUILDER_LIBRARIES_SUBMENU_DESC" />
<action name="library.get_snippets" title="COM_COMPONENTBUILDER_LIBRARY_GET_SNIPPETS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_LIBRARY_GET_SNIPPETS_BUTTON_ACCESS_DESC" /> <action name="library.init" title="COM_COMPONENTBUILDER_LIBRARY_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_LIBRARY_INIT_BUTTON_ACCESS_DESC" />
<action name="library.push" title="COM_COMPONENTBUILDER_LIBRARY_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_LIBRARY_PUSH_BUTTON_ACCESS_DESC" />
<action name="library.reset" title="COM_COMPONENTBUILDER_LIBRARY_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_LIBRARY_RESET_BUTTON_ACCESS_DESC" />
<action name="placeholder.init" title="COM_COMPONENTBUILDER_PLACEHOLDER_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_PLACEHOLDER_INIT_BUTTON_ACCESS_DESC" />
<action name="placeholder.push" title="COM_COMPONENTBUILDER_PLACEHOLDER_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_PLACEHOLDER_PUSH_BUTTON_ACCESS_DESC" />
<action name="placeholder.reset" title="COM_COMPONENTBUILDER_PLACEHOLDER_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_PLACEHOLDER_RESET_BUTTON_ACCESS_DESC" />
<action name="placeholder.access" title="COM_COMPONENTBUILDER_PLACEHOLDERS_ACCESS" description="COM_COMPONENTBUILDER_PLACEHOLDERS_ACCESS_DESC" /> <action name="placeholder.access" title="COM_COMPONENTBUILDER_PLACEHOLDERS_ACCESS" description="COM_COMPONENTBUILDER_PLACEHOLDERS_ACCESS_DESC" />
<action name="placeholder.batch" title="COM_COMPONENTBUILDER_PLACEHOLDERS_BATCH_USE" description="COM_COMPONENTBUILDER_PLACEHOLDERS_BATCH_USE_DESC" /> <action name="placeholder.batch" title="COM_COMPONENTBUILDER_PLACEHOLDERS_BATCH_USE" description="COM_COMPONENTBUILDER_PLACEHOLDERS_BATCH_USE_DESC" />
<action name="placeholder.create" title="COM_COMPONENTBUILDER_PLACEHOLDERS_CREATE" description="COM_COMPONENTBUILDER_PLACEHOLDERS_CREATE_DESC" /> <action name="placeholder.create" title="COM_COMPONENTBUILDER_PLACEHOLDERS_CREATE" description="COM_COMPONENTBUILDER_PLACEHOLDERS_CREATE_DESC" />
@ -480,12 +493,10 @@
<action name="placeholder.edit.own" title="COM_COMPONENTBUILDER_PLACEHOLDERS_EDIT_OWN" description="COM_COMPONENTBUILDER_PLACEHOLDERS_EDIT_OWN_DESC" /> <action name="placeholder.edit.own" title="COM_COMPONENTBUILDER_PLACEHOLDERS_EDIT_OWN" description="COM_COMPONENTBUILDER_PLACEHOLDERS_EDIT_OWN_DESC" />
<action name="placeholder.edit.state" title="COM_COMPONENTBUILDER_PLACEHOLDERS_EDIT_STATE" description="COM_COMPONENTBUILDER_PLACEHOLDERS_EDIT_STATE_DESC" /> <action name="placeholder.edit.state" title="COM_COMPONENTBUILDER_PLACEHOLDERS_EDIT_STATE" description="COM_COMPONENTBUILDER_PLACEHOLDERS_EDIT_STATE_DESC" />
<action name="placeholder.version" title="COM_COMPONENTBUILDER_PLACEHOLDERS_EDIT_VERSION" description="COM_COMPONENTBUILDER_PLACEHOLDERS_EDIT_VERSION_DESC" /> <action name="placeholder.version" title="COM_COMPONENTBUILDER_PLACEHOLDERS_EDIT_VERSION" description="COM_COMPONENTBUILDER_PLACEHOLDERS_EDIT_VERSION_DESC" />
<action name="placeholder.export" title="COM_COMPONENTBUILDER_PLACEHOLDERS_EXPORT" description="COM_COMPONENTBUILDER_PLACEHOLDERS_EXPORT_DESC" />
<action name="placeholder.import" title="COM_COMPONENTBUILDER_PLACEHOLDERS_IMPORT" description="COM_COMPONENTBUILDER_PLACEHOLDERS_IMPORT_DESC" />
<action name="placeholder.submenu" title="COM_COMPONENTBUILDER_PLACEHOLDERS_SUBMENU" description="COM_COMPONENTBUILDER_PLACEHOLDERS_SUBMENU_DESC" /> <action name="placeholder.submenu" title="COM_COMPONENTBUILDER_PLACEHOLDERS_SUBMENU" description="COM_COMPONENTBUILDER_PLACEHOLDERS_SUBMENU_DESC" />
<action name="power.init" title="COM_COMPONENTBUILDER_POWER_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_POWER_INIT_BUTTON_ACCESS_DESC" /> <action name="power.init" title="COM_COMPONENTBUILDER_POWER_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_POWER_INIT_BUTTON_ACCESS_DESC" />
<action name="power.push" title="COM_COMPONENTBUILDER_POWER_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_POWER_PUSH_BUTTON_ACCESS_DESC" />
<action name="power.reset" title="COM_COMPONENTBUILDER_POWER_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_POWER_RESET_BUTTON_ACCESS_DESC" /> <action name="power.reset" title="COM_COMPONENTBUILDER_POWER_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_POWER_RESET_BUTTON_ACCESS_DESC" />
<action name="power.run_expansion" title="COM_COMPONENTBUILDER_POWER_RUN_EXPANSION_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_POWER_RUN_EXPANSION_BUTTON_ACCESS_DESC" />
<action name="power.access" title="COM_COMPONENTBUILDER_POWERS_ACCESS" description="COM_COMPONENTBUILDER_POWERS_ACCESS_DESC" /> <action name="power.access" title="COM_COMPONENTBUILDER_POWERS_ACCESS" description="COM_COMPONENTBUILDER_POWERS_ACCESS_DESC" />
<action name="power.batch" title="COM_COMPONENTBUILDER_POWERS_BATCH_USE" description="COM_COMPONENTBUILDER_POWERS_BATCH_USE_DESC" /> <action name="power.batch" title="COM_COMPONENTBUILDER_POWERS_BATCH_USE" description="COM_COMPONENTBUILDER_POWERS_BATCH_USE_DESC" />
<action name="power.create" title="COM_COMPONENTBUILDER_POWERS_CREATE" description="COM_COMPONENTBUILDER_POWERS_CREATE_DESC" /> <action name="power.create" title="COM_COMPONENTBUILDER_POWERS_CREATE" description="COM_COMPONENTBUILDER_POWERS_CREATE_DESC" />
@ -498,10 +509,26 @@
<action name="power.edit.state" title="COM_COMPONENTBUILDER_POWERS_EDIT_STATE" description="COM_COMPONENTBUILDER_POWERS_EDIT_STATE_DESC" /> <action name="power.edit.state" title="COM_COMPONENTBUILDER_POWERS_EDIT_STATE" description="COM_COMPONENTBUILDER_POWERS_EDIT_STATE_DESC" />
<action name="power.version" title="COM_COMPONENTBUILDER_POWERS_EDIT_VERSION" description="COM_COMPONENTBUILDER_POWERS_EDIT_VERSION_DESC" /> <action name="power.version" title="COM_COMPONENTBUILDER_POWERS_EDIT_VERSION" description="COM_COMPONENTBUILDER_POWERS_EDIT_VERSION_DESC" />
<action name="power.submenu" title="COM_COMPONENTBUILDER_POWERS_SUBMENU" description="COM_COMPONENTBUILDER_POWERS_SUBMENU_DESC" /> <action name="power.submenu" title="COM_COMPONENTBUILDER_POWERS_SUBMENU" description="COM_COMPONENTBUILDER_POWERS_SUBMENU_DESC" />
<action name="repository.access" title="COM_COMPONENTBUILDER_REPOSITORIES_ACCESS" description="COM_COMPONENTBUILDER_REPOSITORIES_ACCESS_DESC" />
<action name="repository.batch" title="COM_COMPONENTBUILDER_REPOSITORIES_BATCH_USE" description="COM_COMPONENTBUILDER_REPOSITORIES_BATCH_USE_DESC" />
<action name="repository.create" title="COM_COMPONENTBUILDER_REPOSITORIES_CREATE" description="COM_COMPONENTBUILDER_REPOSITORIES_CREATE_DESC" />
<action name="repository.dashboard_list" title="COM_COMPONENTBUILDER_REPOSITORIES_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_REPOSITORIES_DASHBOARD_LIST_DESC" />
<action name="repository.delete" title="COM_COMPONENTBUILDER_REPOSITORIES_DELETE" description="COM_COMPONENTBUILDER_REPOSITORIES_DELETE_DESC" />
<action name="repository.edit" title="COM_COMPONENTBUILDER_REPOSITORIES_EDIT" description="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_DESC" />
<action name="repository.edit.created_by" title="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_CREATED_BY" description="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_CREATED_BY_DESC" />
<action name="repository.edit.created" title="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_CREATED_DATE" description="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_CREATED_DATE_DESC" />
<action name="repository.edit.own" title="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_OWN" description="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_OWN_DESC" />
<action name="repository.edit.state" title="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_STATE" description="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_STATE_DESC" />
<action name="repository.version" title="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_VERSION" description="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_VERSION_DESC" />
<action name="repository.submenu" title="COM_COMPONENTBUILDER_REPOSITORIES_SUBMENU" description="COM_COMPONENTBUILDER_REPOSITORIES_SUBMENU_DESC" />
<action name="repository.init" title="COM_COMPONENTBUILDER_REPOSITORY_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_REPOSITORY_INIT_BUTTON_ACCESS_DESC" />
<action name="repository.push" title="COM_COMPONENTBUILDER_REPOSITORY_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_REPOSITORY_PUSH_BUTTON_ACCESS_DESC" />
<action name="repository.reset" title="COM_COMPONENTBUILDER_REPOSITORY_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_REPOSITORY_RESET_BUTTON_ACCESS_DESC" />
<action name="search.access" title="COM_COMPONENTBUILDER_SEARCH_ACCESS" description="COM_COMPONENTBUILDER_SEARCH_ACCESS_DESC" /> <action name="search.access" title="COM_COMPONENTBUILDER_SEARCH_ACCESS" description="COM_COMPONENTBUILDER_SEARCH_ACCESS_DESC" />
<action name="search.compiler" title="COM_COMPONENTBUILDER_SEARCH_COMPILER_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_SEARCH_COMPILER_BUTTON_ACCESS_DESC" /> <action name="search.compiler" title="COM_COMPONENTBUILDER_SEARCH_COMPILER_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_SEARCH_COMPILER_BUTTON_ACCESS_DESC" />
<action name="search.dashboard_list" title="COM_COMPONENTBUILDER_SEARCH_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_SEARCH_DASHBOARD_LIST_DESC" /> <action name="search.dashboard_list" title="COM_COMPONENTBUILDER_SEARCH_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_SEARCH_DASHBOARD_LIST_DESC" />
<action name="search.submenu" title="COM_COMPONENTBUILDER_SEARCH_SUBMENU" description="COM_COMPONENTBUILDER_SEARCH_SUBMENU_DESC" /> <action name="search.submenu" title="COM_COMPONENTBUILDER_SEARCH_SUBMENU" description="COM_COMPONENTBUILDER_SEARCH_SUBMENU_DESC" />
<action name="initialization_selection.access" title="COM_COMPONENTBUILDER_SELECTION_ACCESS" description="COM_COMPONENTBUILDER_SELECTION_ACCESS_DESC" />
<action name="server.access" title="COM_COMPONENTBUILDER_SERVERS_ACCESS" description="COM_COMPONENTBUILDER_SERVERS_ACCESS_DESC" /> <action name="server.access" title="COM_COMPONENTBUILDER_SERVERS_ACCESS" description="COM_COMPONENTBUILDER_SERVERS_ACCESS_DESC" />
<action name="server.batch" title="COM_COMPONENTBUILDER_SERVERS_BATCH_USE" description="COM_COMPONENTBUILDER_SERVERS_BATCH_USE_DESC" /> <action name="server.batch" title="COM_COMPONENTBUILDER_SERVERS_BATCH_USE" description="COM_COMPONENTBUILDER_SERVERS_BATCH_USE_DESC" />
<action name="server.create" title="COM_COMPONENTBUILDER_SERVERS_CREATE" description="COM_COMPONENTBUILDER_SERVERS_CREATE_DESC" /> <action name="server.create" title="COM_COMPONENTBUILDER_SERVERS_CREATE" description="COM_COMPONENTBUILDER_SERVERS_CREATE_DESC" />
@ -513,19 +540,18 @@
<action name="server.edit.own" title="COM_COMPONENTBUILDER_SERVERS_EDIT_OWN" description="COM_COMPONENTBUILDER_SERVERS_EDIT_OWN_DESC" /> <action name="server.edit.own" title="COM_COMPONENTBUILDER_SERVERS_EDIT_OWN" description="COM_COMPONENTBUILDER_SERVERS_EDIT_OWN_DESC" />
<action name="server.edit.state" title="COM_COMPONENTBUILDER_SERVERS_EDIT_STATE" description="COM_COMPONENTBUILDER_SERVERS_EDIT_STATE_DESC" /> <action name="server.edit.state" title="COM_COMPONENTBUILDER_SERVERS_EDIT_STATE" description="COM_COMPONENTBUILDER_SERVERS_EDIT_STATE_DESC" />
<action name="server.version" title="COM_COMPONENTBUILDER_SERVERS_EDIT_VERSION" description="COM_COMPONENTBUILDER_SERVERS_EDIT_VERSION_DESC" /> <action name="server.version" title="COM_COMPONENTBUILDER_SERVERS_EDIT_VERSION" description="COM_COMPONENTBUILDER_SERVERS_EDIT_VERSION_DESC" />
<action name="server.export" title="COM_COMPONENTBUILDER_SERVERS_EXPORT" description="COM_COMPONENTBUILDER_SERVERS_EXPORT_DESC" />
<action name="server.import" title="COM_COMPONENTBUILDER_SERVERS_IMPORT" description="COM_COMPONENTBUILDER_SERVERS_IMPORT_DESC" />
<action name="server.submenu" title="COM_COMPONENTBUILDER_SERVERS_SUBMENU" description="COM_COMPONENTBUILDER_SERVERS_SUBMENU_DESC" /> <action name="server.submenu" title="COM_COMPONENTBUILDER_SERVERS_SUBMENU" description="COM_COMPONENTBUILDER_SERVERS_SUBMENU_DESC" />
<action name="site_view.get_snippets" title="COM_COMPONENTBUILDER_SITE_VIEW_GET_SNIPPETS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_SITE_VIEW_GET_SNIPPETS_BUTTON_ACCESS_DESC" /> <action name="site_view.init" title="COM_COMPONENTBUILDER_SITE_VIEW_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_SITE_VIEW_INIT_BUTTON_ACCESS_DESC" />
<action name="site_view.push" title="COM_COMPONENTBUILDER_SITE_VIEW_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_SITE_VIEW_PUSH_BUTTON_ACCESS_DESC" />
<action name="site_view.reset" title="COM_COMPONENTBUILDER_SITE_VIEW_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_SITE_VIEW_RESET_BUTTON_ACCESS_DESC" />
<action name="site_view.access" title="COM_COMPONENTBUILDER_SITE_VIEWS_ACCESS" description="COM_COMPONENTBUILDER_SITE_VIEWS_ACCESS_DESC" /> <action name="site_view.access" title="COM_COMPONENTBUILDER_SITE_VIEWS_ACCESS" description="COM_COMPONENTBUILDER_SITE_VIEWS_ACCESS_DESC" />
<action name="site_view.batch" title="COM_COMPONENTBUILDER_SITE_VIEWS_BATCH_USE" description="COM_COMPONENTBUILDER_SITE_VIEWS_BATCH_USE_DESC" /> <action name="site_view.batch" title="COM_COMPONENTBUILDER_SITE_VIEWS_BATCH_USE" description="COM_COMPONENTBUILDER_SITE_VIEWS_BATCH_USE_DESC" />
<action name="site_view.dashboard_list" title="COM_COMPONENTBUILDER_SITE_VIEWS_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_SITE_VIEWS_DASHBOARD_LIST_DESC" /> <action name="site_view.dashboard_list" title="COM_COMPONENTBUILDER_SITE_VIEWS_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_SITE_VIEWS_DASHBOARD_LIST_DESC" />
<action name="site_view.version" title="COM_COMPONENTBUILDER_SITE_VIEWS_EDIT_VERSION" description="COM_COMPONENTBUILDER_SITE_VIEWS_EDIT_VERSION_DESC" /> <action name="site_view.version" title="COM_COMPONENTBUILDER_SITE_VIEWS_EDIT_VERSION" description="COM_COMPONENTBUILDER_SITE_VIEWS_EDIT_VERSION_DESC" />
<action name="site_view.export" title="COM_COMPONENTBUILDER_SITE_VIEWS_EXPORT" description="COM_COMPONENTBUILDER_SITE_VIEWS_EXPORT_DESC" />
<action name="site_view.import" title="COM_COMPONENTBUILDER_SITE_VIEWS_IMPORT" description="COM_COMPONENTBUILDER_SITE_VIEWS_IMPORT_DESC" />
<action name="site_view.submenu" title="COM_COMPONENTBUILDER_SITE_VIEWS_SUBMENU" description="COM_COMPONENTBUILDER_SITE_VIEWS_SUBMENU_DESC" /> <action name="site_view.submenu" title="COM_COMPONENTBUILDER_SITE_VIEWS_SUBMENU" description="COM_COMPONENTBUILDER_SITE_VIEWS_SUBMENU_DESC" />
<action name="snippet.get_snippets" title="COM_COMPONENTBUILDER_SNIPPET_GET_SNIPPETS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_SNIPPET_GET_SNIPPETS_BUTTON_ACCESS_DESC" /> <action name="snippet.init" title="COM_COMPONENTBUILDER_SNIPPET_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_SNIPPET_INIT_BUTTON_ACCESS_DESC" />
<action name="snippet.share_snippets" title="COM_COMPONENTBUILDER_SNIPPET_SHARE_SNIPPETS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_SNIPPET_SHARE_SNIPPETS_BUTTON_ACCESS_DESC" /> <action name="snippet.push" title="COM_COMPONENTBUILDER_SNIPPET_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_SNIPPET_PUSH_BUTTON_ACCESS_DESC" />
<action name="snippet.reset" title="COM_COMPONENTBUILDER_SNIPPET_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_SNIPPET_RESET_BUTTON_ACCESS_DESC" />
<action name="snippet_type.access" title="COM_COMPONENTBUILDER_SNIPPET_TYPES_ACCESS" description="COM_COMPONENTBUILDER_SNIPPET_TYPES_ACCESS_DESC" /> <action name="snippet_type.access" title="COM_COMPONENTBUILDER_SNIPPET_TYPES_ACCESS" description="COM_COMPONENTBUILDER_SNIPPET_TYPES_ACCESS_DESC" />
<action name="snippet_type.batch" title="COM_COMPONENTBUILDER_SNIPPET_TYPES_BATCH_USE" description="COM_COMPONENTBUILDER_SNIPPET_TYPES_BATCH_USE_DESC" /> <action name="snippet_type.batch" title="COM_COMPONENTBUILDER_SNIPPET_TYPES_BATCH_USE" description="COM_COMPONENTBUILDER_SNIPPET_TYPES_BATCH_USE_DESC" />
<action name="snippet_type.create" title="COM_COMPONENTBUILDER_SNIPPET_TYPES_CREATE" description="COM_COMPONENTBUILDER_SNIPPET_TYPES_CREATE_DESC" /> <action name="snippet_type.create" title="COM_COMPONENTBUILDER_SNIPPET_TYPES_CREATE" description="COM_COMPONENTBUILDER_SNIPPET_TYPES_CREATE_DESC" />
@ -538,19 +564,16 @@
<action name="snippet.batch" title="COM_COMPONENTBUILDER_SNIPPETS_BATCH_USE" description="COM_COMPONENTBUILDER_SNIPPETS_BATCH_USE_DESC" /> <action name="snippet.batch" title="COM_COMPONENTBUILDER_SNIPPETS_BATCH_USE" description="COM_COMPONENTBUILDER_SNIPPETS_BATCH_USE_DESC" />
<action name="snippet.dashboard_list" title="COM_COMPONENTBUILDER_SNIPPETS_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_SNIPPETS_DASHBOARD_LIST_DESC" /> <action name="snippet.dashboard_list" title="COM_COMPONENTBUILDER_SNIPPETS_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_SNIPPETS_DASHBOARD_LIST_DESC" />
<action name="snippet.version" title="COM_COMPONENTBUILDER_SNIPPETS_EDIT_VERSION" description="COM_COMPONENTBUILDER_SNIPPETS_EDIT_VERSION_DESC" /> <action name="snippet.version" title="COM_COMPONENTBUILDER_SNIPPETS_EDIT_VERSION" description="COM_COMPONENTBUILDER_SNIPPETS_EDIT_VERSION_DESC" />
<action name="snippet.export" title="COM_COMPONENTBUILDER_SNIPPETS_EXPORT" description="COM_COMPONENTBUILDER_SNIPPETS_EXPORT_DESC" />
<action name="snippet.import" title="COM_COMPONENTBUILDER_SNIPPETS_IMPORT" description="COM_COMPONENTBUILDER_SNIPPETS_IMPORT_DESC" />
<action name="snippet.submenu" title="COM_COMPONENTBUILDER_SNIPPETS_SUBMENU" description="COM_COMPONENTBUILDER_SNIPPETS_SUBMENU_DESC" /> <action name="snippet.submenu" title="COM_COMPONENTBUILDER_SNIPPETS_SUBMENU" description="COM_COMPONENTBUILDER_SNIPPETS_SUBMENU_DESC" />
<action name="template.get_snippets" title="COM_COMPONENTBUILDER_TEMPLATE_GET_SNIPPETS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_TEMPLATE_GET_SNIPPETS_BUTTON_ACCESS_DESC" /> <action name="template.init" title="COM_COMPONENTBUILDER_TEMPLATE_INIT_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_TEMPLATE_INIT_BUTTON_ACCESS_DESC" />
<action name="template.push" title="COM_COMPONENTBUILDER_TEMPLATE_PUSH_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_TEMPLATE_PUSH_BUTTON_ACCESS_DESC" />
<action name="template.reset" title="COM_COMPONENTBUILDER_TEMPLATE_RESET_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_TEMPLATE_RESET_BUTTON_ACCESS_DESC" />
<action name="template.access" title="COM_COMPONENTBUILDER_TEMPLATES_ACCESS" description="COM_COMPONENTBUILDER_TEMPLATES_ACCESS_DESC" /> <action name="template.access" title="COM_COMPONENTBUILDER_TEMPLATES_ACCESS" description="COM_COMPONENTBUILDER_TEMPLATES_ACCESS_DESC" />
<action name="template.batch" title="COM_COMPONENTBUILDER_TEMPLATES_BATCH_USE" description="COM_COMPONENTBUILDER_TEMPLATES_BATCH_USE_DESC" /> <action name="template.batch" title="COM_COMPONENTBUILDER_TEMPLATES_BATCH_USE" description="COM_COMPONENTBUILDER_TEMPLATES_BATCH_USE_DESC" />
<action name="template.dashboard_add" title="COM_COMPONENTBUILDER_TEMPLATES_DASHBOARD_ADD" description="COM_COMPONENTBUILDER_TEMPLATES_DASHBOARD_ADD_DESC" /> <action name="template.dashboard_add" title="COM_COMPONENTBUILDER_TEMPLATES_DASHBOARD_ADD" description="COM_COMPONENTBUILDER_TEMPLATES_DASHBOARD_ADD_DESC" />
<action name="template.dashboard_list" title="COM_COMPONENTBUILDER_TEMPLATES_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_TEMPLATES_DASHBOARD_LIST_DESC" /> <action name="template.dashboard_list" title="COM_COMPONENTBUILDER_TEMPLATES_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_TEMPLATES_DASHBOARD_LIST_DESC" />
<action name="template.version" title="COM_COMPONENTBUILDER_TEMPLATES_EDIT_VERSION" description="COM_COMPONENTBUILDER_TEMPLATES_EDIT_VERSION_DESC" /> <action name="template.version" title="COM_COMPONENTBUILDER_TEMPLATES_EDIT_VERSION" description="COM_COMPONENTBUILDER_TEMPLATES_EDIT_VERSION_DESC" />
<action name="template.export" title="COM_COMPONENTBUILDER_TEMPLATES_EXPORT" description="COM_COMPONENTBUILDER_TEMPLATES_EXPORT_DESC" />
<action name="template.import" title="COM_COMPONENTBUILDER_TEMPLATES_IMPORT" description="COM_COMPONENTBUILDER_TEMPLATES_IMPORT_DESC" />
<action name="template.submenu" title="COM_COMPONENTBUILDER_TEMPLATES_SUBMENU" description="COM_COMPONENTBUILDER_TEMPLATES_SUBMENU_DESC" /> <action name="template.submenu" title="COM_COMPONENTBUILDER_TEMPLATES_SUBMENU" description="COM_COMPONENTBUILDER_TEMPLATES_SUBMENU_DESC" />
<action name="validation_rule.run_expansion" title="COM_COMPONENTBUILDER_VALIDATION_RULE_RUN_EXPANSION_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_VALIDATION_RULE_RUN_EXPANSION_BUTTON_ACCESS_DESC" />
<action name="validation_rule.access" title="COM_COMPONENTBUILDER_VALIDATION_RULES_ACCESS" description="COM_COMPONENTBUILDER_VALIDATION_RULES_ACCESS_DESC" /> <action name="validation_rule.access" title="COM_COMPONENTBUILDER_VALIDATION_RULES_ACCESS" description="COM_COMPONENTBUILDER_VALIDATION_RULES_ACCESS_DESC" />
<action name="validation_rule.batch" title="COM_COMPONENTBUILDER_VALIDATION_RULES_BATCH_USE" description="COM_COMPONENTBUILDER_VALIDATION_RULES_BATCH_USE_DESC" /> <action name="validation_rule.batch" title="COM_COMPONENTBUILDER_VALIDATION_RULES_BATCH_USE" description="COM_COMPONENTBUILDER_VALIDATION_RULES_BATCH_USE_DESC" />
<action name="validation_rule.create" title="COM_COMPONENTBUILDER_VALIDATION_RULES_CREATE" description="COM_COMPONENTBUILDER_VALIDATION_RULES_CREATE_DESC" /> <action name="validation_rule.create" title="COM_COMPONENTBUILDER_VALIDATION_RULES_CREATE" description="COM_COMPONENTBUILDER_VALIDATION_RULES_CREATE_DESC" />
@ -560,8 +583,6 @@
<action name="validation_rule.edit.own" title="COM_COMPONENTBUILDER_VALIDATION_RULES_EDIT_OWN" description="COM_COMPONENTBUILDER_VALIDATION_RULES_EDIT_OWN_DESC" /> <action name="validation_rule.edit.own" title="COM_COMPONENTBUILDER_VALIDATION_RULES_EDIT_OWN" description="COM_COMPONENTBUILDER_VALIDATION_RULES_EDIT_OWN_DESC" />
<action name="validation_rule.edit.state" title="COM_COMPONENTBUILDER_VALIDATION_RULES_EDIT_STATE" description="COM_COMPONENTBUILDER_VALIDATION_RULES_EDIT_STATE_DESC" /> <action name="validation_rule.edit.state" title="COM_COMPONENTBUILDER_VALIDATION_RULES_EDIT_STATE" description="COM_COMPONENTBUILDER_VALIDATION_RULES_EDIT_STATE_DESC" />
<action name="validation_rule.version" title="COM_COMPONENTBUILDER_VALIDATION_RULES_EDIT_VERSION" description="COM_COMPONENTBUILDER_VALIDATION_RULES_EDIT_VERSION_DESC" /> <action name="validation_rule.version" title="COM_COMPONENTBUILDER_VALIDATION_RULES_EDIT_VERSION" description="COM_COMPONENTBUILDER_VALIDATION_RULES_EDIT_VERSION_DESC" />
<action name="validation_rule.export" title="COM_COMPONENTBUILDER_VALIDATION_RULES_EXPORT" description="COM_COMPONENTBUILDER_VALIDATION_RULES_EXPORT_DESC" />
<action name="validation_rule.import" title="COM_COMPONENTBUILDER_VALIDATION_RULES_IMPORT" description="COM_COMPONENTBUILDER_VALIDATION_RULES_IMPORT_DESC" />
<action name="validation_rule.submenu" title="COM_COMPONENTBUILDER_VALIDATION_RULES_SUBMENU" description="COM_COMPONENTBUILDER_VALIDATION_RULES_SUBMENU_DESC" /> <action name="validation_rule.submenu" title="COM_COMPONENTBUILDER_VALIDATION_RULES_SUBMENU" description="COM_COMPONENTBUILDER_VALIDATION_RULES_SUBMENU_DESC" />
</section> </section>
<section name="joomla_component"> <section name="joomla_component">
@ -597,6 +618,17 @@
<action name="joomla_plugin.access" title="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_ACCESS_DESC" /> <action name="joomla_plugin.access" title="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_ACCESS_DESC" />
<action name="joomla_plugin.version" title="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_EDIT_VERSION_DESC" /> <action name="joomla_plugin.version" title="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_PLUGINS_EDIT_VERSION_DESC" />
</section> </section>
<section name="joomla_power">
<action name="joomla_power.edit" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_DESC" />
<action name="joomla_power.edit.own" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_OWN" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_OWN_DESC" />
<action name="joomla_power.edit.state" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_STATE" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_STATE_DESC" />
<action name="joomla_power.edit.created_by" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_CREATED_BY" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_CREATED_BY_DESC" />
<action name="joomla_power.edit.created" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_CREATED_DATE" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_CREATED_DATE_DESC" />
<action name="joomla_power.create" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_CREATE" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_CREATE_DESC" />
<action name="joomla_power.delete" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_DELETE" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_DELETE_DESC" />
<action name="joomla_power.access" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_ACCESS_DESC" />
<action name="joomla_power.version" title="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_POWERS_EDIT_VERSION_DESC" />
</section>
<section name="power"> <section name="power">
<action name="power.edit" title="COM_COMPONENTBUILDER_POWERS_EDIT" description="COM_COMPONENTBUILDER_POWERS_EDIT_DESC" /> <action name="power.edit" title="COM_COMPONENTBUILDER_POWERS_EDIT" description="COM_COMPONENTBUILDER_POWERS_EDIT_DESC" />
<action name="power.edit.own" title="COM_COMPONENTBUILDER_POWERS_EDIT_OWN" description="COM_COMPONENTBUILDER_POWERS_EDIT_OWN_DESC" /> <action name="power.edit.own" title="COM_COMPONENTBUILDER_POWERS_EDIT_OWN" description="COM_COMPONENTBUILDER_POWERS_EDIT_OWN_DESC" />
@ -675,6 +707,17 @@
<action name="custom_code.access" title="COM_COMPONENTBUILDER_CUSTOM_CODES_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_CODES_ACCESS_DESC" /> <action name="custom_code.access" title="COM_COMPONENTBUILDER_CUSTOM_CODES_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_CODES_ACCESS_DESC" />
<action name="custom_code.version" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_VERSION" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_VERSION_DESC" /> <action name="custom_code.version" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_VERSION" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_VERSION_DESC" />
</section> </section>
<section name="class_extends">
<action name="class_extends.edit" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_DESC" />
<action name="class_extends.edit.own" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_OWN" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_OWN_DESC" />
<action name="class_extends.edit.state" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_STATE" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_STATE_DESC" />
<action name="class_extends.edit.created_by" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_CREATED_BY" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_CREATED_BY_DESC" />
<action name="class_extends.edit.created" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_CREATED_DATE" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_CREATED_DATE_DESC" />
<action name="class_extends.create" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_CREATE" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_CREATE_DESC" />
<action name="class_extends.delete" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_DELETE" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_DELETE_DESC" />
<action name="class_extends.access" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_ACCESS" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_ACCESS_DESC" />
<action name="class_extends.version" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_VERSION" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_VERSION_DESC" />
</section>
<section name="class_property"> <section name="class_property">
<action name="class_property.edit" title="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT" description="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT_DESC" /> <action name="class_property.edit" title="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT" description="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT_DESC" />
<action name="class_property.edit.own" title="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT_OWN" description="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT_OWN_DESC" /> <action name="class_property.edit.own" title="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT_OWN" description="COM_COMPONENTBUILDER_CLASS_PROPERTIES_EDIT_OWN_DESC" />
@ -780,6 +823,17 @@
<action name="server.access" title="COM_COMPONENTBUILDER_SERVERS_ACCESS" description="COM_COMPONENTBUILDER_SERVERS_ACCESS_DESC" /> <action name="server.access" title="COM_COMPONENTBUILDER_SERVERS_ACCESS" description="COM_COMPONENTBUILDER_SERVERS_ACCESS_DESC" />
<action name="server.version" title="COM_COMPONENTBUILDER_SERVERS_EDIT_VERSION" description="COM_COMPONENTBUILDER_SERVERS_EDIT_VERSION_DESC" /> <action name="server.version" title="COM_COMPONENTBUILDER_SERVERS_EDIT_VERSION" description="COM_COMPONENTBUILDER_SERVERS_EDIT_VERSION_DESC" />
</section> </section>
<section name="repository">
<action name="repository.edit" title="COM_COMPONENTBUILDER_REPOSITORIES_EDIT" description="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_DESC" />
<action name="repository.edit.own" title="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_OWN" description="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_OWN_DESC" />
<action name="repository.edit.state" title="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_STATE" description="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_STATE_DESC" />
<action name="repository.edit.created_by" title="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_CREATED_BY" description="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_CREATED_BY_DESC" />
<action name="repository.edit.created" title="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_CREATED_DATE" description="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_CREATED_DATE_DESC" />
<action name="repository.create" title="COM_COMPONENTBUILDER_REPOSITORIES_CREATE" description="COM_COMPONENTBUILDER_REPOSITORIES_CREATE_DESC" />
<action name="repository.delete" title="COM_COMPONENTBUILDER_REPOSITORIES_DELETE" description="COM_COMPONENTBUILDER_REPOSITORIES_DELETE_DESC" />
<action name="repository.access" title="COM_COMPONENTBUILDER_REPOSITORIES_ACCESS" description="COM_COMPONENTBUILDER_REPOSITORIES_ACCESS_DESC" />
<action name="repository.version" title="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_VERSION" description="COM_COMPONENTBUILDER_REPOSITORIES_EDIT_VERSION_DESC" />
</section>
<section name="help_document"> <section name="help_document">
<action name="help_document.edit" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_DESC" /> <action name="help_document.edit" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_DESC" />
<action name="help_document.edit.own" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_OWN" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_OWN_DESC" /> <action name="help_document.edit.own" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_OWN" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_OWN_DESC" />
@ -899,6 +953,17 @@
<action name="component_custom_admin_menus.access" title="COM_COMPONENTBUILDER_COMPONENTS_CUSTOM_ADMIN_MENUS_ACCESS" description="COM_COMPONENTBUILDER_COMPONENTS_CUSTOM_ADMIN_MENUS_ACCESS_DESC" /> <action name="component_custom_admin_menus.access" title="COM_COMPONENTBUILDER_COMPONENTS_CUSTOM_ADMIN_MENUS_ACCESS" description="COM_COMPONENTBUILDER_COMPONENTS_CUSTOM_ADMIN_MENUS_ACCESS_DESC" />
<action name="component_custom_admin_menus.version" title="COM_COMPONENTBUILDER_COMPONENTS_CUSTOM_ADMIN_MENUS_EDIT_VERSION" description="COM_COMPONENTBUILDER_COMPONENTS_CUSTOM_ADMIN_MENUS_EDIT_VERSION_DESC" /> <action name="component_custom_admin_menus.version" title="COM_COMPONENTBUILDER_COMPONENTS_CUSTOM_ADMIN_MENUS_EDIT_VERSION" description="COM_COMPONENTBUILDER_COMPONENTS_CUSTOM_ADMIN_MENUS_EDIT_VERSION_DESC" />
</section> </section>
<section name="component_router">
<action name="component_router.edit" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_DESC" />
<action name="component_router.edit.own" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_OWN" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_OWN_DESC" />
<action name="component_router.edit.state" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_STATE" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_STATE_DESC" />
<action name="component_router.edit.created_by" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_CREATED_BY" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_CREATED_BY_DESC" />
<action name="component_router.edit.created" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_CREATED_DATE" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_CREATED_DATE_DESC" />
<action name="component_router.create" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_CREATE" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_CREATE_DESC" />
<action name="component_router.delete" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_DELETE" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_DELETE_DESC" />
<action name="component_router.access" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_ACCESS" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_ACCESS_DESC" />
<action name="component_router.version" title="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_VERSION" description="COM_COMPONENTBUILDER_COMPONENTS_ROUTERS_EDIT_VERSION_DESC" />
</section>
<section name="component_config"> <section name="component_config">
<action name="component_config.edit" title="COM_COMPONENTBUILDER_COMPONENTS_CONFIG_EDIT" description="COM_COMPONENTBUILDER_COMPONENTS_CONFIG_EDIT_DESC" /> <action name="component_config.edit" title="COM_COMPONENTBUILDER_COMPONENTS_CONFIG_EDIT" description="COM_COMPONENTBUILDER_COMPONENTS_CONFIG_EDIT_DESC" />
<action name="component_config.edit.own" title="COM_COMPONENTBUILDER_COMPONENTS_CONFIG_EDIT_OWN" description="COM_COMPONENTBUILDER_COMPONENTS_CONFIG_EDIT_OWN_DESC" /> <action name="component_config.edit.own" title="COM_COMPONENTBUILDER_COMPONENTS_CONFIG_EDIT_OWN" description="COM_COMPONENTBUILDER_COMPONENTS_CONFIG_EDIT_OWN_DESC" />
@ -996,17 +1061,6 @@
<action name="library_files_folders_urls.access" title="COM_COMPONENTBUILDER_LIBRARIES_FILES_FOLDERS_URLS_ACCESS" description="COM_COMPONENTBUILDER_LIBRARIES_FILES_FOLDERS_URLS_ACCESS_DESC" /> <action name="library_files_folders_urls.access" title="COM_COMPONENTBUILDER_LIBRARIES_FILES_FOLDERS_URLS_ACCESS" description="COM_COMPONENTBUILDER_LIBRARIES_FILES_FOLDERS_URLS_ACCESS_DESC" />
<action name="library_files_folders_urls.version" title="COM_COMPONENTBUILDER_LIBRARIES_FILES_FOLDERS_URLS_EDIT_VERSION" description="COM_COMPONENTBUILDER_LIBRARIES_FILES_FOLDERS_URLS_EDIT_VERSION_DESC" /> <action name="library_files_folders_urls.version" title="COM_COMPONENTBUILDER_LIBRARIES_FILES_FOLDERS_URLS_EDIT_VERSION" description="COM_COMPONENTBUILDER_LIBRARIES_FILES_FOLDERS_URLS_EDIT_VERSION_DESC" />
</section> </section>
<section name="class_extends">
<action name="class_extends.edit" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_DESC" />
<action name="class_extends.edit.own" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_OWN" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_OWN_DESC" />
<action name="class_extends.edit.state" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_STATE" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_STATE_DESC" />
<action name="class_extends.edit.created_by" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_CREATED_BY" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_CREATED_BY_DESC" />
<action name="class_extends.edit.created" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_CREATED_DATE" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_CREATED_DATE_DESC" />
<action name="class_extends.create" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_CREATE" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_CREATE_DESC" />
<action name="class_extends.delete" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_DELETE" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_DELETE_DESC" />
<action name="class_extends.access" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_ACCESS" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_ACCESS_DESC" />
<action name="class_extends.version" title="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_VERSION" description="COM_COMPONENTBUILDER_CLASS_EXTENDINGS_EDIT_VERSION_DESC" />
</section>
<section name="joomla_module_updates"> <section name="joomla_module_updates">
<action name="joomla_module_updates.edit" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT_DESC" /> <action name="joomla_module_updates.edit" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT_DESC" />
<action name="joomla_module_updates.edit.own" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT_OWN" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT_OWN_DESC" /> <action name="joomla_module_updates.edit.own" title="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT_OWN" description="COM_COMPONENTBUILDER_JOOMLA_MODULES_UPDATES_EDIT_OWN_DESC" />

View File

@ -14,7 +14,7 @@
} }
.fieldMedium { width: 120px; } .fieldMedium { width: 120px; }
.fieldLarge { width: 320px; } .fieldLarge { width: 320px; }
.fieldMid { width: 80px; } .fieldMid { width: 89px; }
.fieldFull { width: 100%; } .fieldFull { width: 100%; }
.fieldSmall { width: 60px; } .fieldSmall { width: 74px; }
code { display: inline-block; margin: 3px;} code { display: inline-block; margin: 3px;}

View File

@ -10,10 +10,105 @@
/* CSS Document */ /* CSS Document */
html, body { html[data-bs-theme="light"] .main-card {
background-color: #fefcfe !important; background-color: #fefcfe;
} }
.jcb-sponsor-banner { .jcb-sponsor-banner {
-webkit-box-shadow: 0 0 7px 1px #f0f0f0; -webkit-box-shadow: 0 0 7px 1px #f0f0f0;
box-shadow: 0 0 7px 1px #f0f0f0; box-shadow: 0 0 7px 1px #f0f0f0;
} }
/* Spinning effect within the mastadon-display-block */
.mastadon-display-block .spinning i {
animation: spin 1s linear infinite;
}
.mastadon-display-block .enlarge-and-disappear {
animation: enlarge-fade-out 1s forwards;
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
@keyframes enlarge-fade-out {
0% {
transform: scale(1);
opacity: 1;
}
100% {
transform: scale(2);
opacity: 0;
}
}
/* Placeholder container scoped to mastadon-display-block */
.mastadon-display-block .placeholder {
display: flex;
flex-direction: column;
gap: 10px;
margin-bottom: 16px;
padding: 16px;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 4px;
}
.mastadon-display-block .placeholder-line {
height: 12px;
background-color: #f0f0f0;
border-radius: 4px;
animation: pulse 1.5s infinite;
}
.mastadon-display-block .placeholder-line:nth-child(1) {
width: 80%;
}
.mastadon-display-block .placeholder-line:nth-child(2) {
width: 60%;
}
.mastadon-display-block .placeholder-line:nth-child(3) {
width: 40%;
}
.mastadon-display-block .placeholder-circle {
width: 50px;
height: 50px;
background-color: #f0f0f0;
border-radius: 50%;
animation: pulse 1.5s infinite;
margin-top: 10px;
}
@keyframes pulse {
0% {
opacity: 1;
}
50% {
opacity: 0.5;
}
100% {
opacity: 1;
}
}
.mastadon-display-block .loading {
visibility: visible;
position: relative;
}
.social-icon-details {
min-height: 50px;
width: 100%;
padding: 5px;
box-sizing: border-box;
font-size: 10px;
text-align: right;
}

View File

@ -11,153 +11,153 @@
/* CSS Document */ /* CSS Document */
.dashboard-container { .dashboard-container {
margin-left: 10px; margin-left: 10px;
margin-top: 10px; margin-top: 10px;
width: 100%; width: 100%;
} }
.dashboard-container [class*="span"] { .dashboard-container [class*="span"] {
display: block; display: block;
float: none; float: none;
margin-left: 0; margin-left: 0;
width: auto; width: auto;
} }
.dashboard-container:before, .dashboard-container:after { .dashboard-container:before, .dashboard-container:after {
content: ""; content: "";
display: table; display: table;
} }
.dashboard-container:after { .dashboard-container:after {
clear: both; clear: both;
} }
.dashboard-container [class*="span"] { .dashboard-container [class*="span"] {
box-sizing: border-box; box-sizing: border-box;
display: block; display: block;
float: left; float: left;
min-height: 145px; min-height: 145px;
min-width: 96px; min-width: 96px;
width: 100%; width: 100%;
} }
.dashboard-container [class*="span"]:first-child { .dashboard-container [class*="span"]:first-child {
margin-left: 0; margin-left: 0;
} }
.dashboard-wraper { .dashboard-wraper {
background: none repeat scroll 0 0 hsl(0, 0%, 93%); background: none repeat scroll 0 0 hsl(0, 0%, 93%);
border-radius: 5px; border-radius: 5px;
float: left; float: left;
margin: 1%; margin: 1%;
padding: 3px; padding: 3px;
width: 17%; width: 17%;
min-height: 194px; min-height: 194px;
min-width: 96px; min-width: 96px;
} }
.dashboard-content a { .dashboard-content a {
background: linear-gradient(to bottom, hsl(0, 0%, 100%) 0%, hsl(0, 0%, 96%) 47%, hsl(0, 0%, 93%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0); background: linear-gradient(to bottom, hsl(0, 0%, 100%) 0%, hsl(0, 0%, 96%) 47%, hsl(0, 0%, 93%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0);
border: 1px solid hsl(0, 0%, 85%); border: 1px solid hsl(0, 0%, 85%);
border-radius: 4px; border-radius: 4px;
box-shadow: 0 0 3px hsla(0, 0%, 0%, 0.1) inset; box-shadow: 0 0 3px hsla(0, 0%, 0%, 0.1) inset;
color: hsl(0, 0%, 20%); color: hsl(0, 0%, 20%);
display: block; display: block;
min-height: 89px; min-height: 89px;
padding: 10px; padding: 10px;
text-align: center; text-align: center;
text-decoration: none; text-decoration: none;
} }
.dashboard-content a:hover { .dashboard-content a:hover {
background: linear-gradient(to bottom, hsl(0, 0%, 90%) 0%, hsl(0, 0%, 100%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0); background: linear-gradient(to bottom, hsl(0, 0%, 90%) 0%, hsl(0, 0%, 100%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0);
color: hsl(200, 100%, 30%); color: hsl(200, 100%, 30%);
text-decoration: none; text-decoration: none;
} }
.dashboard-title { .dashboard-title {
display: block; display: block;
padding-top: 5px; padding-top: 5px;
} }
.dashboard-info { .dashboard-info {
background: linear-gradient(to bottom, hsl(0, 0%, 100%) 0%, hsl(0, 0%, 96%) 47%, hsl(0, 0%, 93%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0); background: linear-gradient(to bottom, hsl(0, 0%, 100%) 0%, hsl(0, 0%, 96%) 47%, hsl(0, 0%, 93%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0);
border: 1px solid hsl(0, 0%, 85%); border: 1px solid hsl(0, 0%, 85%);
border-radius: 4px; border-radius: 4px;
box-shadow: 0 0 3px hsla(0, 0%, 0%, 0.1) inset; box-shadow: 0 0 3px hsla(0, 0%, 0%, 0.1) inset;
color: hsl(0, 0%, 20%); color: hsl(0, 0%, 20%);
display: block; display: block;
font-size: 12px; font-size: 12px;
padding: 10px; padding: 10px;
text-align: center; text-align: center;
} }
.dashboard-info span { .dashboard-info span {
display: block; display: block;
text-align: center; text-align: center;
} }
.dashboard-info img { .dashboard-info img {
margin: 0 auto; margin: 0 auto;
} }
.dashboard-table { .dashboard-table {
border-top: 1px solid hsl(0, 0%, 87%); border-top: 1px solid hsl(0, 0%, 87%);
margin-top: 5px; margin-top: 5px;
width: 100%; width: 100%;
} }
.dashboard-info h5 { .dashboard-info h5 {
font-size: 11px; font-size: 11px;
font-weight: bold; font-weight: bold;
} }
.dashboard-block { .dashboard-block {
background: linear-gradient(to bottom, hsl(0, 0%, 95%) 0%, hsl(0, 0%, 86%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0); background: linear-gradient(to bottom, hsl(0, 0%, 95%) 0%, hsl(0, 0%, 86%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0);
border: 1px solid hsl(0, 0%, 76%); border: 1px solid hsl(0, 0%, 76%);
border-radius: 3px; border-radius: 3px;
box-shadow: 0 1px 0 hsl(0, 0%, 98%) inset; box-shadow: 0 1px 0 hsl(0, 0%, 98%) inset;
margin-bottom: 20px; margin-bottom: 20px;
} }
.dashboard-block .dashboard-block-head { .dashboard-block .dashboard-block-head {
background: linear-gradient(to bottom, hsl(0, 0%, 95%) 0%, hsl(0, 0%, 86%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0); background: linear-gradient(to bottom, hsl(0, 0%, 95%) 0%, hsl(0, 0%, 86%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0);
border-bottom: 1px solid hsl(0, 0%, 76%); border-bottom: 1px solid hsl(0, 0%, 76%);
border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0;
box-shadow: 0 1px 0 hsl(0, 0%, 98%) inset, 0 0 3px hsl(0, 0%, 87%); box-shadow: 0 1px 0 hsl(0, 0%, 98%) inset, 0 0 3px hsl(0, 0%, 87%);
height: 40px; height: 40px;
position: relative; position: relative;
} }
.dashboard-block .dashboard-block-head h5 { .dashboard-block .dashboard-block-head h5 {
font-size: 12px; font-size: 12px;
margin: 0; margin: 0;
padding-left: 10px; padding-left: 10px;
padding-top: 11px; padding-top: 11px;
text-transform: uppercase; text-transform: uppercase;
} }
.dashboard-block .dashboard-block-content { .dashboard-block .dashboard-block-content {
background: none repeat scroll 0 0 hsl(0, 0%, 93%); background: none repeat scroll 0 0 hsl(0, 0%, 93%);
border-radius: 0 0 3px 3px; border-radius: 0 0 3px 3px;
} }
.dashboard-block .dashboard-block-box { .dashboard-block .dashboard-block-box {
background: none repeat scroll 0 0 hsl(0, 0%, 100%); background: none repeat scroll 0 0 hsl(0, 0%, 100%);
border-top: 1px solid hsl(0, 0%, 82%); border-top: 1px solid hsl(0, 0%, 82%);
box-shadow: 0 0 5px hsl(0, 0%, 87%) inset; box-shadow: 0 0 5px hsl(0, 0%, 87%) inset;
} }
.dashboard-block .dashboard-block-content .dashboard-block-box { .dashboard-block .dashboard-block-content .dashboard-block-box {
margin-top: 0 !important; margin-top: 0 !important;
} }
.dashboard-block .dashboard-block-content .dashboard-block-box .dashboard-block-table { .dashboard-block .dashboard-block-content .dashboard-block-box .dashboard-block-table {
margin-bottom: 0 !important; margin-bottom: 0 !important;
} }
.dashboard-block-table { .dashboard-block-table {
background-color: hsla(0, 0%, 0%, 0); background-color: hsla(0, 0%, 0%, 0);
border-collapse: collapse; border-collapse: collapse;
border-spacing: 0; border-spacing: 0;
margin-bottom: 20px; margin-bottom: 20px;
max-width: 100%; max-width: 100%;
width: 100%; width: 100%;
} }
.dashboard-block-table th, .dashboard-block-table td { .dashboard-block-table th, .dashboard-block-table td {
border-top: 1px solid hsl(0, 0%, 87%); border-top: 1px solid hsl(0, 0%, 87%);
line-height: 20px; line-height: 20px;
padding: 5px; padding: 5px;
text-align: left; text-align: left;
vertical-align: middle; vertical-align: middle;
} }
.dashboard-badge { .dashboard-badge {
background-color: hsl(0, 0%, 60%); background-color: hsl(0, 0%, 60%);
border-radius: 9px; border-radius: 9px;
color: hsl(0, 0%, 100%); color: hsl(0, 0%, 100%);
font-size: 11.844px; font-size: 11.844px;
font-weight: bold; font-weight: bold;
line-height: 14px; line-height: 14px;
padding: 1px 9px 2px; padding: 1px 9px 2px;
text-shadow: 0 -1px 0 hsla(0, 0%, 0%, 0.25); text-shadow: 0 -1px 0 hsla(0, 0%, 0%, 0.25);
vertical-align: baseline; vertical-align: baseline;
white-space: nowrap; white-space: nowrap;
} }

View File

@ -0,0 +1,23 @@
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
/* CSS Document */
html.dark .no-select,
html.dark .no-select td {
color: #515151;
cursor: not-allowed;
}
html.light .no-select,
html.light .no-select td {
color: #999;
cursor: not-allowed;
}

View File

@ -0,0 +1,13 @@
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
/* CSS Document */

View File

@ -0,0 +1,13 @@
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
/* CSS Document */

View File

@ -11,3 +11,31 @@
/* CSS Document */ /* CSS Document */
.namespace-code-container {
display: inline-block;
max-width: 300px; /* Limit visible width */
white-space: nowrap;
overflow-x: auto; /* Enable horizontal scrolling */
border: 1px solid #ccc;
padding: 5px;
font-family: monospace;
background-color: #f4f4f4;
cursor: pointer;
scrollbar-width: thin; /* Firefox scrollbar */
}
/* Style the scrollbar for WebKit browsers */
.namespace-code-container::-webkit-scrollbar {
height: 5px;
}
.namespace-code-container::-webkit-scrollbar-thumb {
background: #888;
border-radius: 10px;
}
/* Ensure normal text direction while scrolling */
.namespace-code-container {
direction: ltr;
text-align: left;
}

View File

@ -0,0 +1,13 @@
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
/* CSS Document */

View File

@ -0,0 +1,13 @@
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
/* CSS Document */

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

333
admin/assets/js/compiler.js Normal file
View File

@ -0,0 +1,333 @@
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
/* JS Document */
class MastodonFeed {
constructor(containerId, refreshButtonId) {
this.container = document.getElementById(containerId);
this.refreshButton = document.getElementById(refreshButtonId);
// Get settings from data attributes
this.mastodonInstance = this.container.dataset.instance;
this.accountId = this.container.dataset.accountId;
this.postCount = parseInt(this.container.dataset.postCount) || 5;
this.cacheKey = `mastodon-feed-cache-${this.accountId}`;
this.cacheExpiration = 24 * 60 * 60 * 1000; // 24 hours in milliseconds
// Initialize the feed
this.initFeed();
// Attach event listener for the refresh button
this.refreshButton.addEventListener("click", () => this.clearCacheAndReload());
}
async initFeed() {
const cachedData = this.getCachedData();
if (cachedData) {
this.renderFeed(cachedData);
} else {
await this.loadFeed();
}
}
getCachedData() {
const cache = localStorage.getItem(this.cacheKey);
if (!cache) return null;
const parsedCache = JSON.parse(cache);
const now = new Date().getTime();
if (now - parsedCache.timestamp > this.cacheExpiration) {
// Cache is expired
this.clearCache();
return null;
}
return parsedCache.data;
}
setCachedData(data) {
const cache = {
timestamp: new Date().getTime(),
data: data,
};
localStorage.setItem(this.cacheKey, JSON.stringify(cache));
}
clearCache() {
localStorage.removeItem(this.cacheKey);
}
async loadFeed() {
try {
const response = await fetch(`${this.mastodonInstance}/api/v1/accounts/${this.accountId}/statuses?limit=${this.postCount}`);
if (!response.ok) {
throw new Error(`Failed to fetch Mastodon feed: ${response.statusText}`);
}
const posts = await response.json();
this.setCachedData(posts); // Cache the data
this.renderFeed(posts);
} catch (error) {
console.error("Error loading Mastodon feed:", error);
this.container.innerHTML = `<div class="alert alert-danger">Error loading feed. Please try again later.</div>`;
}
}
renderFeed(posts) {
// Clear existing content
this.container.innerHTML = "";
posts.forEach(post => {
if (!post.content) return; // Ignore posts with no content
// Create post element
const listItem = document.createElement("div");
listItem.className = "card mb-3";
const postContent = document.createElement("div");
postContent.className = "card-body";
const user = post.account;
const avatar = user.avatar_static;
const displayName = user.display_name || user.username;
// User header
const header = document.createElement("div");
header.className = "d-flex align-items-center mb-2";
const avatarLink = document.createElement("a");
avatarLink.href = user.url;
// avatarLink.target = "_blank";
const avatarImg = document.createElement("img");
avatarImg.src = avatar;
avatarImg.alt = displayName;
avatarImg.className = "rounded-circle me-2";
avatarImg.style.width = "40px";
avatarLink.appendChild(avatarImg);
const userInfo = document.createElement("div");
const nameLink = document.createElement("a");
nameLink.href = user.url;
// nameLink.target = "_blank";
nameLink.className = "text-decoration-none fw-bold";
nameLink.textContent = displayName;
// The date
const dateStamp = this.intelligentDateFormat(post.created_at);
const username = document.createElement("div");
username.className = "text-muted small";
username.textContent = `@${user.username} (${dateStamp})`;
userInfo.appendChild(nameLink);
userInfo.appendChild(username);
header.appendChild(avatarLink);
header.appendChild(userInfo);
// Post content
const content = document.createElement("div");
content.innerHTML = post.content;
// Interactions
const interactions = document.createElement("div");
interactions.className = "btn-group btn-sm";
// View Post link
const viewPost = document.createElement("a");
viewPost.href = post.url;
// viewPost.target = "_blank";
viewPost.className = "btn btn-primary btn-sm";
viewPost.innerHTML = `View Post&nbsp;&nbsp;
&nbsp;&nbsp;<i class="icon-comments-2"></i>&nbsp;${post.replies_count}&nbsp;
&nbsp;&nbsp;<i class="icon-heart"></i>&nbsp;${post.favourites_count}&nbsp;
&nbsp;&nbsp;<i class="icon-loop"></i>&nbsp;${post.reblogs_count}`;
interactions.appendChild(viewPost);
// Join Me link
const joinLink = document.createElement("a");
joinLink.href = "https://joomla.social/invite/gzAvC48K";
// joinLink.target = "_blank";
joinLink.className = "btn btn-success btn-sm";
joinLink.textContent = "Join Me";
interactions.appendChild(joinLink);
// Assemble post
postContent.appendChild(header);
postContent.appendChild(content);
postContent.appendChild(interactions);
listItem.appendChild(postContent);
this.container.appendChild(listItem);
this.container.classList.remove('loading');
});
}
clearCacheAndReload() {
// Add spinning effect to the refresh button
this.refreshButton.classList.add('spinning');
// Show placeholder content
this.container.classList.add('loading');
this.container.innerHTML = this.generatePlaceholder();
// Clear cache and reload feed
this.clearCache();
// Wait for 3 seconds
setTimeout(() => {
// Enlarge and fade out the refresh button
this.refreshButton.classList.add('enlarge-and-disappear');
// After the animation, reset the button and content
setTimeout(() => {
this.refreshButton.classList.remove('spinning', 'enlarge-and-disappear');
this.refreshButton.style.display = '';
// Remove placeholder and restore actual content
this.loadFeed();
}, 1000); // Animation time for fade-out
}, 3000); // Spinning duration
}
generatePlaceholder() {
let placeholders = '';
for (let i = 0; i < this.postCount; i++) {
placeholders += `
<div class="placeholder">
<div class="placeholder-circle"></div>
<div class="placeholder-line"></div>
<div class="placeholder-line"></div>
<div class="placeholder-line"></div>
<div class="placeholder-line"></div>
</div>
`;
}
return placeholders;
}
intelligentDateFormat(isoDateString) {
const date = new Date(isoDateString);
const now = new Date();
// Helper function to determine if two dates are the same day
const isSameDay = (d1, d2) => d1.toDateString() === d2.toDateString();
// Calculate the difference in time and days
const diffTime = Math.abs(now - date);
const diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24));
if (isSameDay(date, now)) {
// If the date is today, show the time only
return date.toLocaleTimeString(undefined, { hour: 'numeric', minute: '2-digit', hour12: true });
} else if (diffDays < 7) {
// If it's within the last week, show the day name
return date.toLocaleDateString(undefined, { weekday: 'long', hour: 'numeric', minute: '2-digit', hour12: true });
} else if (diffDays < 30) {
// If it's within the last month, show the number of days ago
return `${diffDays} days ago`;
} else if (date.getFullYear() === now.getFullYear()) {
// If it's this year, show just the month and day
return date.toLocaleDateString(undefined, { month: 'short', day: 'numeric' });
} else {
// For older dates, show month, day, and year
return date.toLocaleDateString(undefined, { month: 'short', day: 'numeric', year: 'numeric' });
}
}
}
class IconWaveAnimator {
constructor(containerId, detailsId) {
this.details = document.getElementById(detailsId);
this.container = document.getElementById(containerId);
this.icons = this.container.querySelectorAll("i");
this.links = this.container.querySelectorAll("a");
this.init();
}
init() {
// set the icon hover events
this.setupHoverEvents();
// Random chance to do nothing (1 out of 10)
if (Math.random() < 0.1) return;
// Randomize the initial delay before starting
const initialDelay = Math.random() * 2000 + 2000; // 24 seconds
setTimeout(() => {
this.randomBehavior();
}, initialDelay);
// Occasionally trigger a second wave after 10 seconds
if (Math.random() > 0.5) {
setTimeout(() => {
this.mexicanWave(false); // Reverse wave
}, 10000);
}
}
mexicanWave(forward = true) {
let delay = 0;
const iconsArray = Array.from(this.icons);
(forward ? iconsArray : iconsArray.reverse()).forEach((icon) => {
setTimeout(() => {
icon.style.transition = "transform 0.3s ease-in-out";
icon.style.transform = "scale(1.3)";
setTimeout(() => {
icon.style.transform = "scale(1)";
}, 300);
}, delay);
delay += 150; // Stagger the effect for the wave
});
}
randomBehavior() {
const waveDirection = Math.random() > 0.5 ? "forward" : "backward";
const waveCount = Math.floor(Math.random() * 10) + 1; // 1 to 5 waves
const interval = Math.random() * 2000 + 3000; // 3 to 5 seconds
let executedCount = 0;
const intervalId = setInterval(() => {
if (executedCount >= waveCount) {
clearInterval(intervalId);
return;
}
this.mexicanWave(waveDirection === "forward");
executedCount++;
}, interval);
}
setupHoverEvents() {
this.links.forEach((link) => {
link.addEventListener("mouseenter", () => this.showDetails(link));
link.addEventListener("mouseleave", () => this.clearDetails());
});
}
showDetails(link) {
const description = link.dataset.description;
if (this.details && description) {
this.details.textContent = description;
}
}
clearDetails() {
if (this.details) {
this.details.textContent = "";
}
}
}

View File

@ -1,541 +0,0 @@
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
/* JS Document */
// start the moment the document is ready
jQuery(document).ready(function () {
// just get the available libraries
getLibraries(snippetsPath);
});
// add an ajax call tracker
var ajaxcall = null;
var fromLocal = false;
jQuery(document).ready(function(){
jQuery('body').on('click','.getreaction',function(){
// Ajax request
var btn = jQuery(this);
btn.prop('disabled', true);
setTimeout(function(){
btn.prop('disabled', false);
}, 3000);
var type = btn.data('type');
if ('getLibraries' === type) {
getLibraries(snippetsPath);
} else if ('getSnippets' === type) {
var name = btn.data('name');
getSnippets(snippetsPath, name);
} else if ('all' === type) {
var status = btn.data('status');
bulkSnippetGithub(status);
} else if ('bulk' === type) {
checkBulkSnippetGithub();
} else if ('get' === type) {
var path = btn.data('path');
var status = btn.data('status');
setSnippetGithub(path, status);
} else {
var path = btn.data('path');
getSnippetModal(path, type);
}
});
});
// load every thing once ready
jQuery(document).ajaxStop(function () {
if (0 === jQuery.active) {
//do something special
if ('snippets' === ajaxcall) {
setTimeout( function() {
jQuery('#snippets-github').html('<h1>'+Joomla.JText._('COM_COMPONENTBUILDER_JCB_COMMUNITY_SNIPPETS')+'</h1>');
jQuery('#snippets-display').show();
jQuery('#snippets-grid').trigger('display.uk.check');
jQuery('#loading').hide();
}, 1000);
}
}
});
// get the libraries
function getLibraries(path) {
var _paths = jQuery.jStorage.get('JCB-Snippets-Paths', null);
// always hide the snippets display
jQuery('#snippets-display').hide();
// always reset the grid
jQuery('#libraries-grid').html('');
// set the ajax scope
ajaxcall = 'libraries';
if (_paths) {
buildLibraries(_paths);
} else {
jQuery.get(path)
.success(function(paths) {
// load only this library paths
jQuery.jStorage.set('JCB-Snippets-Paths', paths, {TTL: expire});
buildLibraries(paths);
})
.error(function(jqXHR, textStatus, errorThrown) {
jQuery('#snippets-github').html(returnError);
});
}
}
// build the ibraries object
function buildLibraries(paths) {
var _temp = jQuery.jStorage.get('JCB-Libraries', null);
if (_temp) {
setLibraries(_temp);
} else {
var temp = {};
jQuery.each(paths.tree, function(key,value) {
if (value.path.match(".json$")) {
var libraryName = value.path.split(/ -(.+)/)[0];
libraryName = libraryName.trim()
temp[libraryName] = libraryName;
}
});
// load only this library paths
jQuery.jStorage.set('JCB-Libraries', temp, {TTL: expire});
setLibraries(temp);
}
}
// set the libraries
function setLibraries(names) {
// now load the library buttons
jQuery.each(names, function(value) {
setLibrary(value);
});
setTimeout( function() {
jQuery('#snippets-github').html('<h1>'+Joomla.JText._('COM_COMPONENTBUILDER_AVAILABLE_LIBRARIES')+'</h1>');
jQuery('#libraries-display').show();
jQuery('#libraries-grid').trigger('display.uk.check');
}, 1000);
}
// set the snippets
function setLibrary(name) {
// get useful ID
var keyID = getKeyID(name);
// build the library display
var html = '<div id="'+keyID+'-panel" class="uk-panel">';
html += '<div class="uk-panel uk-panel-box uk-width-1-1">';
html += '<h3 class="uk-panel-title">' + name + '</h3>';
html += '<hr />';
// set the data buttons
html += setLibraryButtons(name);
// close the box panel
html += '</div>';
html += '</div>';
// now we have the library
jQuery('#libraries-grid').append(html);
}
function setLibraryButtons(name) {
return '<button class="uk-button uk-button-small uk-button-success uk-width-1-1 getreaction" data-name="'+name+'" data-type="getSnippets" title="'+Joomla.JText._('COM_COMPONENTBUILDER_VIEW_DESCRIPTION_OF_COMMUNITY_VERSION')+'"><i class="uk-icon-thumb-tack"></i><span class="uk-hidden-small"> '+Joomla.JText._('COM_COMPONENTBUILDER_OPEN_LIBRARY_SNIPPETS')+'</span></button>';
}
// get the snippets
function getSnippets(path, libraryName) {
jQuery('#loading').show();
// get local values if set
var _paths = jQuery.jStorage.get('JCB-Snippets-Paths', null);
// always reset the grid
jQuery('#snippets-grid').html('');
// always hide libraries
jQuery('#libraries-display').hide();
// set the ajax scope
ajaxcall = 'snippets';
fromLocal = false;
if (_paths) {
setSnippets(_paths, libraryName);
jQuery('#snippets-github').html('<h1>'+Joomla.JText._('COM_COMPONENTBUILDER_JCB_COMMUNITY_SNIPPETS')+'</h1>');
} else {
jQuery.get(path)
.success(function(paths) {
// load only this library paths
jQuery.jStorage.set('JCB-Snippets-Paths', paths, {TTL: expire});
setSnippets(paths, libraryName);
})
.error(function(jqXHR, textStatus, errorThrown) {
jQuery('#snippets-github').html(returnError);
});
}
// only use if loading localy
if (fromLocal) {
jQuery('#snippets-display').show();
jQuery('#snippets-grid').trigger('display.uk.check');
jQuery('#loading').hide();
}
}
// set the snippets
function setSnippets(paths, libraryName) {
// set the ajax scope
ajaxcall = 'snippets';
jQuery.each(paths.tree, function(key,value) {
if (value.path.match(".json$") && value.path.match("^"+libraryName)) {
var _snippet = jQuery.jStorage.get(value.path, null);
if (_snippet) {
setSnippet(_snippet, value.path);
fromLocal = true;
} else {
jQuery.get(snippetPath+value.path)
.success(function(snippet) {
// convert the string to json.object
snippet = jQuery.parseJSON(snippet);
jQuery.jStorage.set(value.path, snippet, {TTL: expire});
setSnippet(snippet, value.path);
})
.error(function(jqXHR, textStatus, errorThrown) {
// we could do more
});
}
}
});
}
// set the snippets
function setSnippet(snippet, key) {
// get useful ID
var keyID = getKeyID(key);
// get the status
var status = getSnippetStatus(snippet, key);
// add to bulk updater
if ('equal' !== status) {
bulkItems[status].push(key);
}
// build the snippet display
var html = '<div id="'+keyID+'-panel" class="uk-panel" data-uk-filter="'+status+'" data-snippet-libraries="'+snippet.library+'" data-snippet-types="'+snippet.type+'" data-snippet-name="'+snippet.name+'">';
html += '<div class="uk-panel uk-panel-box uk-width-1-1">';
html += '<div class="uk-panel-badge uk-badge" ><a id="'+keyID+'-badge" href="#'+status+'-meaning" data-uk-offcanvas class="uk-text-uppercase uk-text-contrast"><i class="uk-icon-info"></i> '+status+'</a></div><br />';
html += '<h3 class="uk-panel-title">' + snippet.library+ ' - (' + snippet.type + ') ' + snippet.name + '</h3>';
html += snippet.heading + '<hr />';
// set the data buttons
html += setDataButtons(snippet, key, status);
// set the snippet ref button
html += setRefButtons(snippet, key, status, keyID);
// set the contributor buttons
html += setContributorButtons(snippet, key);
// close the box panel
html += '</div>';
html += '</div>';
// now we have the snippet
jQuery('#snippets-grid').append(html);
}
// set the snippet status
function getSnippetStatus(snippet, key) {
// check if JCB already has this snippet
if(local_snippets.hasOwnProperty(key)){
// first get local time stamp
var local_created = strtotime(local_snippets[key].created);
var local_modified = strtotime(local_snippets[key].modified);
// now get github time stamps
var created = strtotime(snippet.created);
var modified = strtotime(snippet.modified);
// work out the status
if (local_created == created) {
if (local_modified == modified) {
return 'equal';
} else if (local_modified > modified) {
return 'ahead';
} else if (local_modified < modified) {
return 'behind';
}
}
return 'diverged';
}
return 'new';
}
function setDataButtons(snippet, key, status) {
var html = '<div class="uk-button-group uk-width-1-1 uk-margin-small-bottom">';
html += '<button class="uk-button uk-button-small uk-button-success uk-width-1-3 getreaction" data-status="'+status+'" data-path="'+key+'" data-type="usage" title="'+Joomla.JText._('COM_COMPONENTBUILDER_VIEW_USAGE_OF_COMMUNITY_VERSION')+'"><i class="uk-icon-info"></i><span class="uk-hidden-small"> '+Joomla.JText._('COM_COMPONENTBUILDER_USAGE')+'</span></button>';
html += '<button class="uk-button uk-button-small uk-button-success uk-width-1-3 getreaction" data-status="'+status+'" data-path="'+key+'" data-type="description" title="'+Joomla.JText._('COM_COMPONENTBUILDER_VIEW_DESCRIPTION_OF_COMMUNITY_VERSION')+'"><i class="uk-icon-sticky-note-o"></i><span class="uk-hidden-small"> '+Joomla.JText._('COM_COMPONENTBUILDER_DESCRIPTION')+'</span></button>';
html += '<button class="uk-button uk-button-small uk-button-success uk-width-1-3 getreaction" data-status="'+status+'" data-path="'+key+'" data-type="snippet" title="'+Joomla.JText._('COM_COMPONENTBUILDER_VIEW_SNIPPET_OF_COMMUNITY_VERSION')+'"><i class="uk-icon-code"></i><span class="uk-hidden-small"> '+Joomla.JText._('COM_COMPONENTBUILDER_SNIPPET')+'</span></button>';
html += '</div>';
// return data buttons
return html;
}
function setRefButtons(snippet, key, status, keyID) {
var html = '<div><a class="uk-button uk-button-mini uk-button-success uk-margin-small-bottom uk-width-1-1" href="'+snippet.url+'" target="_blank" title="'+Joomla.JText._('COM_COMPONENTBUILDER_VIEW_SNIPPET_REFERENCE_URL')+'"><i class="uk-icon-external-link"></i> ' + snippet.name + '</a></div>';
// set the update button
html += '<div>';
if ('equal' !== status) {
if ('new' === status) {
var tooltip = Joomla.JText._('COM_COMPONENTBUILDER_GET_THE_SNIPPET_FROM_GITHUB_AND_INSTALL_IT_LOCALLY');
} else {
var tooltip = Joomla.JText._('COM_COMPONENTBUILDER_GET_THE_SNIPPET_FROM_GITHUB_AND_UPDATE_THE_LOCAL_VERSION');
}
html += '<button id="'+keyID+'-getbutton" class="uk-button uk-button-small uk-button-primary uk-width-1-1 uk-margin-small-bottom getreaction" data-status="'+status+'" data-path="'+key+'" data-type="get" title="'+tooltip+'"><i class="uk-icon-cloud-download"></i> '+Joomla.JText._('COM_COMPONENTBUILDER_GET_SNIPPET')+'</button>';
} else {
html += '<button class="uk-button uk-button-small uk-width-1-1 uk-margin-small-bottom" type="button" disabled title="'+Joomla.JText._('COM_COMPONENTBUILDER_NO_NEED_TO_GET_IT_SINCE_IT_IS_ALREADY_IN_SYNC_WITH_YOUR_LOCAL_VERSION')+'"><i class="uk-icon-check-square-o"></i> '+Joomla.JText._('COM_COMPONENTBUILDER_LOCAL_SNIPPET')+'</button>';
}
html += '</div>';
// return data buttons
return html;
}
function setContributorButtons(snippet, key) {
// set the contributor name
if (snippet.contributor_company) {
var contributor_name = snippet.contributor_company;
} else if (snippet.contributor_name) {
var contributor_name = snippet.contributor_name;
} else {
var contributor_name = Joomla.JText._('COM_COMPONENTBUILDER_JCB_COMMUNITY');
}
// set the contributor url
if (snippet.contributor_website) {
var contributor_url = snippet.contributor_website;
} else if (snippet.contributor_email) {
var contributor_url = 'mailto:'+snippet.contributor_email;
} else {
var contributor_url = 'https://github.com/vdm-io/Joomla-Component-Builder-Snippets';
}
var html = '<div class="uk-button-group uk-width-1-1">';
html += '<button class="uk-button uk-button-primary uk-width-1-10 uk-button-mini getreaction" data-type="contributor" data-path="'+key+'" title="'+Joomla.JText._('COM_COMPONENTBUILDER_VIEW_THE_CONTRIBUTOR_DETAILS')+'"><i class="uk-icon-user"></i></button>';
html += '<a class="uk-button uk-button-primary uk-width-5-10 uk-button-mini" href="'+contributor_url+'" target="_blank" title="'+Joomla.JText._('COM_COMPONENTBUILDER_LINK_TO_THE_CONTRIBUTOR')+'"><i class="uk-icon-external-link"></i> ' + contributor_name + '</a>';
html += '<a class="uk-button uk-button-primary uk-width-4-10 uk-button-mini" href="https://github.com/vdm-io/Joomla-Component-Builder-Snippets/blame/master/'+key+'" target="_blank" title="'+Joomla.JText._('COM_COMPONENTBUILDER_VIEW_WHO_CONTRIBUTED_TO_THIS_SNIPPET')+'"><i class="uk-icon-external-link"></i> '+Joomla.JText._('COM_COMPONENTBUILDER_VIEW_BLAME')+'</a>';
html += '</div>';
// return contributor buttons
return html;
}
// do a bulk update
function checkBulkSnippetGithub() {
// check if there is new items
if (bulkItems.new.length === 0) {
jQuery('#bulk-button-new').prop('disabled', true);
jQuery('#bulk-button-new').attr('title', Joomla.JText._('COM_COMPONENTBUILDER_THERE_ARE_NO_NEW_SNIPPETS_AT_THIS_TIME'));
jQuery('#bulk-notice-new').show();
}
// check if there is diverged items
if (bulkItems.diverged.length === 0) {
jQuery('#bulk-button-diverged').prop('disabled', true);
jQuery('#bulk-button-diverged').attr('title', Joomla.JText._('COM_COMPONENTBUILDER_THERE_ARE_NO_DIVERGED_SNIPPETS_AT_THIS_TIME'));
jQuery('#bulk-notice-diverged').show();
}
// check if there is ahead items
if (bulkItems.ahead.length === 0) {
jQuery('#bulk-button-ahead').prop('disabled', true);
jQuery('#bulk-button-ahead').attr('title', Joomla.JText._('COM_COMPONENTBUILDER_THERE_ARE_NO_AHEAD_SNIPPETS_AT_THIS_TIME'));
jQuery('#bulk-notice-ahead').show();
}
// check if there is behind items
if (bulkItems.behind.length === 0) {
jQuery('#bulk-button-behind').prop('disabled', true);
jQuery('#bulk-button-behind').attr('title', Joomla.JText._('COM_COMPONENTBUILDER_THERE_ARE_NO_OUT_OF_DATE_SNIPPETS_AT_THIS_TIME'));
jQuery('#bulk-notice-behind').show();
}
// check if all we should close the all button
if (bulkItems.behind.length === 0 && bulkItems.new.length === 0 && bulkItems.ahead.length === 0 && bulkItems.diverged.length === 0) {
jQuery('#bulk-button-all').prop('disabled', true);
jQuery('#bulk-button-all').attr('title', Joomla.JText._('COM_COMPONENTBUILDER_THERE_ARE_NO_SNIPPETS_TO_UPDATE_AT_THIS_TIME'));
jQuery('#bulk-notice-all').show();
}
}
// do a bulk update
function bulkSnippetGithub(status) {
// if all then trigger those with values
if ('all' === status) {
bulkSnippetGithub('behind');
bulkSnippetGithub('new');
bulkSnippetGithub('ahead');
bulkSnippetGithub('diverged');
} else if (bulkItems[status].length > 0) {
jQuery.each(bulkItems[status], function(i, key){
setTimeout(function(){
doBulkUpdate_server(key, status).done(function(result) {
if (result.message) {
// only show errors
if ('error' === result.status || 'warning' === result.status) {
UIkit.notify(result.message, {status: result.status});
}
// update local items
if ('success' === result.status) {
// get key ID
var keyID = getKeyID(key);
// update snippet if we can
updateSnippetDisplay(keyID, 'equal');
}
} else {
UIkit.notify(Joomla.JText._('COM_COMPONENTBUILDER_SNIPPET_COULD_NOT_BE_UPDATEDSAVED'), {status:'danger'});
}
});
}, 200);
});
// reset array
bulkItems[status].length = 0;
// update the buttons (since we only do the bulk update once)
checkBulkSnippetGithub();
}
}
function doBulkUpdate_server(path, status) {
// set the ajax scope
ajaxcall = null;
var getUrl = JRouter("index.php?option=com_componentbuilder&task=ajax.setSnippetGithub&format=json&raw=true");
if (token.length > 0 && path.length > 0 && status.length > 0) {
var request = token+'=1&path='+path+'&status='+status;
}
return jQuery.ajax({
type: 'POST',
url: getUrl,
dataType: 'json',
data: request,
jsonp: false
});
}
// set the snippet from gitHub
function setSnippetGithub(key, status) {
var message = getConfirmUpdate(status);
UIkit.modal.confirm(message, function(){
// will be executed on confirm.
setSnippetGithub_server(key, status).done(function(result) {
if (result.message) {
UIkit.notify(result.message, {status: result.status});
if ('success' === result.status) {
// get key ID
var keyID = getKeyID(key);
// update snippet if we can
updateSnippetDisplay(keyID, 'equal');
}
} else {
UIkit.notify(Joomla.JText._('COM_COMPONENTBUILDER_SNIPPET_COULD_NOT_BE_UPDATEDSAVED'), {status:'danger'});
}
});
});
}
function setSnippetGithub_server(path, status) {
// set the ajax scope
ajaxcall = null;
var getUrl = JRouter("index.php?option=com_componentbuilder&task=ajax.setSnippetGithub&format=json&raw=true");
if (token.length > 0 && path.length > 0 && status.length > 0) {
var request = token+'=1&path='+path+'&status='+status;
}
return jQuery.ajax({
type: 'POST',
url: getUrl,
dataType: 'json',
data: request,
jsonp: false
});
}
// update the snippet display
function updateSnippetDisplay(keyID, status) {
// update badge
jQuery('#'+keyID+'-badge').html('<i class="uk-icon-info"></i> ' +status);
jQuery('#'+keyID+'-badge').attr('href' , '#'+status+'-meaning');
// update button
if ('equal' === status) {
// update notice
jQuery('#'+keyID+'-getbutton').attr('title', Joomla.JText._('COM_COMPONENTBUILDER_NO_NEED_TO_GET_IT_SINCE_IT_IS_ALREADY_IN_SYNC_WITH_YOUR_LOCAL_VERSION'));
jQuery('#'+keyID+'-getbutton').prop('disabled', true);
jQuery('#'+keyID+'-getbutton').html('<i class="uk-icon-check-square-o"></i> ' + Joomla.JText._('COM_COMPONENTBUILDER_LOCAL_SNIPPET'));
// counter delay just incase
setTimeout(function(){
jQuery('#'+keyID+'-getbutton').prop('disabled', true);
}, 2000);
}
// update the data filter
jQuery('#'+keyID+'-panel').attr('data-uk-filter', status);
// tell the grid to update
jQuery('#snippets-grid').trigger('display.uk.check');
}
// set the modal
function getSnippetModal(key, type) {
// set the ajax scope
ajaxcall = 'snippets';
var _snippet = jQuery.jStorage.get(key, null);
if (_snippet) {
// show modal
showSnippetModal(_snippet, type);
} else {
jQuery.get('https://raw.githubusercontent.com/vdm-io/Joomla-Component-Builder-Snippets/master/'+key)
.success(function(snippet) {
// convert the string to json.object
snippet = jQuery.parseJSON(snippet);
jQuery.jStorage.set(key, snippet, {TTL: expire});
// show modal
showSnippetModal(snippet, type);
})
.error(function(jqXHR, textStatus, errorThrown) {
// we could do more
});
}
}
// show the modal
function showSnippetModal(snippet, type) {
var html = '<div class="uk-modal-dialog uk-modal-dialog-lightbox">';
html += '<a href="" class="uk-modal-close uk-close uk-close-alt"></a>';
html += '<h3>' + snippet.library + ' - (' + snippet.type + ') ' + snippet.name + '</h3>';
if ('contributor' === type) {
html += '<dl class="uk-description-list-line">';
html += '<dt><i class="uk-icon-institution"></i> '+Joomla.JText._('COM_COMPONENTBUILDER_COMPANY_NAME')+'</dt>';
html += '<dd>'+snippet.contributor_company+'</dd>';
html += '<dt><i class="uk-icon-user"></i> '+Joomla.JText._('COM_COMPONENTBUILDER_AUTHOR_NAME')+'</dt>';
html += '<dd>'+snippet.contributor_name+'</dd>';
html += '<dt><i class="uk-icon-envelope-o"></i> '+Joomla.JText._('COM_COMPONENTBUILDER_AUTHOR_EMAIL')+'</dt>';
html += '<dd>'+snippet.contributor_email+'</dd>';
html += '<dt><i class="uk-icon-laptop"></i> '+Joomla.JText._('COM_COMPONENTBUILDER_AUTHOR_WEBSITE')+'</dt>';
html += '<dd>'+snippet.contributor_website+'</dd>';
html += '</dl>';
} else {
html += '<br /><textarea class="uk-width-1-1" rows="15" readonly>'+snippet[type]+'</textarea>';
}
html += '<br /><small>C: ' + snippet.created + ' | M: ' + snippet.modified + '</small>';
html += '</div>';
// get current page position
var scroll = jQuery(window).scrollTop();
// add html to modal
var modal = UIkit.modal.blockUI(html, {center:true, bgclose:true}).on({
'hide.uk.modal': function(){
// scroll fix since the modal pops to the top of the page
jQuery(window).scrollTop(scroll);
}
});
// show modal
modal.show();
}
// get key ID
function getKeyID(key) {
// get useful ID
var keyID = key.replace('-', '');
keyID = keyID.replace('.json', '');
keyID = keyID.replace(/\s+/ig, '-');
keyID = keyID.replace(/\(/g, '');
keyID = keyID.replace(/\)/g, '');
// return the id build
return keyID;
}
// get key ID
function getKeyID(key) {
// get useful ID
var keyID = key.replace('-', '');
keyID = keyID.replace('.json', '');
keyID = keyID.replace(/\s+/ig, '-');
keyID = keyID.replace(/\(/g, '');
keyID = keyID.replace(/\)/g, '');
// return the id build
return keyID;
}

View File

@ -0,0 +1,413 @@
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
/* JS Document */
const memoryinitialization = [];
function setSessionMemory(key, values, merge = true) {
if (merge) {
values = mergeSessionMemory(key, values);
} else {
values = JSON.stringify(values);
}
if (typeof Storage !== "undefined") {
sessionStorage.setItem(key, values);
} else {
memoryinitialization[key] = values;
}
}
function mergeSessionMemory(key, values) {
const oldValues = getSessionMemory(key);
if (oldValues) {
values = { ...oldValues, ...values };
}
return JSON.stringify(values);
}
function getSessionMemory(key, defaultValue = null) {
if (typeof Storage !== "undefined") {
const localValue = sessionStorage.getItem(key);
if (isJsonString(localValue)) {
defaultValue = JSON.parse(localValue);
}
} else if (typeof memoryinitialization[key] !== "undefined") {
const localValue = memoryinitialization[key];
if (isJsonString(localValue)) {
defaultValue = JSON.parse(localValue);
}
}
return defaultValue;
}
function isJsonString(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
function getArrayFormat(items) {
// Check if items is an object and not an array
if (typeof items === 'object' && !Array.isArray(items)) {
return Object.values(items);
}
return items;
}
class InitializationManager {
#repoArea = document.getElementById('select-repo-area');
#powersArea = document.getElementById('select-powers-area');
#initButton = document.getElementById('init-selected-powers');
#backButton = document.getElementById('back-to-select-repo');
#loadingDiv = window.loadingDiv || null;
#buildTable = typeof buildPowerSelectionTable === 'function' ? buildPowerSelectionTable : null;
#drawTable = typeof drawPowerSelectionTable === 'function' ? drawPowerSelectionTable : null;
currentRepo = null;
currentArea = null;
constructor() {
this._bindRepoButtons();
this._bindInitSelectedPowers();
this._updateInitButtonState();
}
/** Getter for selected items using global window reference. */
get selectedItems() {
if (!Array.isArray(window.selectedPowerItems)) {
window.selectedPowerItems = [];
}
return window.selectedPowerItems;
}
/** Setter for selected items with sync to window and button state update. */
set selectedItems(items) {
window.selectedPowerItems = items;
this._updateInitButtonState();
}
/** Add items to selection if not already selected. */
addSelectedItems(data) {
if (!data || typeof data.length !== 'number') return;
const updated = [...this.selectedItems];
for (let i = 0; i < data.length; i++) {
const item = data[i];
if (!updated.some(existing => this.#isSameItem(existing, item))) {
updated.push(item);
}
}
this.selectedItems = updated;
}
/** Remove items from selection based on identity comparison. */
removeSelectedItems(data) {
if (!data || typeof data.length !== 'number') return;
const updated = this.selectedItems.filter(existing => {
for (let i = 0; i < data.length; i++) {
if (this.#isSameItem(existing, data[i])) {
return false;
}
}
return true;
});
this.selectedItems = updated;
}
/** Check if two items are the same using GUID. */
#isSameItem(a, b) {
return a?.guid && b?.guid && a.guid === b.guid;
}
/** Enable/disable the init button based on selection state. */
_updateInitButtonState() {
if (this.#initButton) {
this.#initButton.disabled = this.selectedItems.length === 0;
}
}
_bindRepoButtons() {
document.querySelectorAll('.select-repo-to-initialize').forEach(button => {
button.addEventListener('click', (e) => this._handleRepoClick(e));
});
}
_bindInitSelectedPowers() {
if (this.#initButton) {
this.#initButton.addEventListener('click', () => this._handleInitSelectedPowers());
}
if (this.#backButton) {
this.#backButton.addEventListener('click', () => this._handleBackToRepos());
}
}
_getInitFunctionName(area) {
const powers = [
'Joomla.Fieldtype',
'Joomla.Power',
'Repository',
'Power'
];
return powers.includes(area) ? 'initSelectedPowers' : 'initSelectedPackages';
}
async _handleRepoClick(event) {
const button = event.currentTarget;
const repo = button?.dataset?.repo;
const area = button?.dataset?.area;
if (!repo || !area) {
this._notify(Joomla.Text._("COM_COMPONENTBUILDER_MISSING_REPOSITORY_OR_AREA_DATA"), "danger");
return;
}
this._showLoading();
clearPowerSelectionTable();
const url = `${UrlAjax}getRepoIndex&repo=${encodeURIComponent(repo)}&area=${encodeURIComponent(area)}`;
try {
const response = await fetch(url);
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const data = await response.json();
if (data.success && data.index && this.#buildTable) {
const repoData = data.index[0];
const {
path = 'joomla/super-powers',
read_branch = 'master',
target,
base = 'https://git.vdm.dev'
} = repoData;
const repo_base = (target === 'github') ? 'https://github.com' : base;
const repo_path = (target === 'github') ? 'tree' : 'src/branch';
window.targetPowerRepoUrl = `${repo_base}/${path}/${repo_path}/${read_branch}/`;
this.#buildTable(repoData.index);
setTimeout(() => {
this._transitionTo(this.#repoArea, this.#powersArea);
this._hideLoading();
}, 500);
this.currentRepo = repoData.guid;
this.currentArea = area;
} else {
this._notify(data.message || Joomla.Text._("COM_COMPONENTBUILDER_FAILED_TO_RETRIEVE_REPOSITORY_INDEX"), "danger");
this._hideLoading();
}
} catch (error) {
console.error("Fetch error:", error);
this._hideLoading();
this._notify(Joomla.Text._("COM_COMPONENTBUILDER_NETWORK_OR_SERVER_ERROR_OCCURRED_WHILE_FETCHING_INDEX"), "danger");
}
}
_handleBackToRepos() {
this._transitionTo(this.#powersArea, this.#repoArea);
}
async _handleInitSelectedPowers() {
if (!Array.isArray(this.selectedItems) || this.selectedItems.length === 0) {
this._notify(Joomla.Text._("COM_COMPONENTBUILDER_NO_ITEMS_SELECTED"), "warning");
return;
}
this._showLoading();
const area = this.currentArea || 'error';
const repo = this.currentRepo || 'error';
const func = this._getInitFunctionName(area);
try {
// Convert selected items to form data
const formData = new FormData();
// Assuming Joomla expects `selected[]` for multiple values
for (const item of this.selectedItems) {
formData.append('selected[]', item.guid); // Only sending GUIDs
}
formData.append('area', area);
formData.append('repo', repo);
const response = await fetch(`${UrlAjax}${func}`, {
method: 'POST',
body: formData
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const data = await response.json();
if (!data.success) {
this._notify(data.message || Joomla.Text._("COM_COMPONENTBUILDER_FAILED_TO_INITIALIZE_SELECTED_POWERS"), "danger");
} else {
this._handleResultLog(data.result_log || {});
}
this._hideLoading();
this._transitionTo(this.#powersArea, this.#repoArea);
} catch (error) {
console.error("Submission error:", error);
this._notify(Joomla.Text._("COM_COMPONENTBUILDER_ERROR_OCCURRED_WHILE_INITIALIZING_POWERS"), "danger");
this._hideLoading();
this._transitionTo(this.#powersArea, this.#repoArea);
}
}
_handleResultLog(resultLog) {
const localGuids = this._normalizeGuids(resultLog.local);
const notFoundGuids = this._normalizeGuids(resultLog.not_found);
const addedGuids = this._normalizeGuids(resultLog.added);
if (localGuids.length > 0) {
this._notify(
this._generateResultMessage(localGuids, 'local'),
'info'
);
}
if (notFoundGuids.length > 0) {
this._notify(
this._generateResultMessage(notFoundGuids, 'not_found'),
'info'
);
}
if (addedGuids.length > 0) {
this._notify(
this._generateResultMessage(addedGuids, 'added'),
'success'
);
}
}
_normalizeGuids(value) {
if (!value) return [];
if (Array.isArray(value)) {
return value;
}
if (typeof value === 'object') {
return Object.keys(value);
}
return [];
}
_generateResultMessage(guids, type) {
const messages = {
local: Joomla.Text._('COM_COMPONENTBUILDER_THESE_ITEMS_WERE_ALREADY_PRESENT_LOCALLY_AND_WERE_NOT_INITIALIZED'),
not_found: Joomla.Text._('COM_COMPONENTBUILDER_THESE_ITEMS_COULD_NOT_BE_FOUND_IN_THE_REMOTE_REPOSITORY_AND_WERE_NOT_INITIALIZED'),
added: Joomla.Text._('COM_COMPONENTBUILDER_THESE_ITEMS_WERE_SUCCESSFULLY_INITIALIZED')
};
const names = [];
for (const guid of guids) {
const item = this.selectedItems.find(i => i.guid === guid);
if (item?.name) {
names.push(item.name);
}
}
if (names.length === 0) {
return null;
}
return `${messages[type]}\n<br>- ${names.join('\n<br>- ')}`;
}
_transitionTo(hideEl, showEl) {
if (hideEl && showEl) {
UIkit.util.ready(() => {
UIkit.util.removeClass(hideEl, 'uk-animation-slide-top-small');
UIkit.util.removeClass(showEl, 'uk-animation-slide-bottom-small');
UIkit.util.addClass(hideEl, 'uk-animation-slide-top-small');
setTimeout(() => {
hideEl.style.display = 'none';
showEl.style.display = '';
UIkit.util.addClass(showEl, 'uk-animation-slide-bottom-small');
if (this.#drawTable) this.#drawTable();
}, 300);
});
}
}
_showLoading() {
if (this.#loadingDiv) this.#loadingDiv.style.display = 'block';
}
_hideLoading() {
if (this.#loadingDiv) this.#loadingDiv.style.display = 'none';
}
_notify(message, type = 'info') {
const alertTypes = {
primary: 'alert-primary',
info: 'alert-info',
success: 'alert-success',
warning: 'alert-warning',
danger: 'alert-danger',
};
const alertClass = alertTypes[type] || alertTypes.primary;
let container = document.getElementById('alert-container');
if (!container) {
container = document.createElement('div');
container.id = 'alert-container';
container.className = 'position-fixed top-0 start-50 translate-middle-x p-3';
container.style.zIndex = '1060';
document.body.appendChild(container);
}
const alert = document.createElement('div');
alert.className = `alert ${alertClass} alert-dismissible fade show`;
alert.setAttribute('role', 'alert');
alert.innerHTML = `
${message}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
`;
container.appendChild(alert);
setTimeout(() => {
alert.classList.remove('show');
alert.classList.add('hide');
alert.addEventListener('transitionend', () => {
alert.remove();
});
}, 5000);
}
}

View File

@ -91,7 +91,7 @@ const doSearch = async (signal, tables) => {
if (response.ok) { if (response.ok) {
return response.json(); return response.json();
} else { } else {
UIkit.notify(Joomla.JText._('COM_COMPONENTBUILDER_THE_SEARCH_PROCESS_HAD_AN_ERROR_WITH_TABLE') + ' ' + tableName, {pos:'top-right', status:'danger'}); UIkit.notify(Joomla.Text._('COM_COMPONENTBUILDER_THE_SEARCH_PROCESS_HAD_AN_ERROR_WITH_TABLE') + ' ' + tableName, {pos:'top-right', status:'danger'});
} }
}).then((data) => { }).then((data) => {
if (typeof data.success !== 'undefined') { if (typeof data.success !== 'undefined') {
@ -116,11 +116,11 @@ const doSearch = async (signal, tables) => {
searchProgressBarObject.innerHTML = percent.toFixed(2) + '%'; searchProgressBarObject.innerHTML = percent.toFixed(2) + '%';
// when complete hide the progress bar // when complete hide the progress bar
if (progress == total) { if (progress == total) {
let total_field_line = ' ' + fieldCount + ' ' + Joomla.JText._('COM_COMPONENTBUILDER_FIELDS_THAT_HAD') + ' ' + lineCount + ' ' + Joomla.JText._('COM_COMPONENTBUILDER_LINES') + ' '; let total_field_line = ' ' + fieldCount + ' ' + Joomla.Text._('COM_COMPONENTBUILDER_FIELDS_THAT_HAD') + ' ' + lineCount + ' ' + Joomla.Text._('COM_COMPONENTBUILDER_LINES') + ' ';
if (progress == 1) { if (progress == 1) {
searchProgressBarObject.innerHTML = Joomla.JText._('COM_COMPONENTBUILDER_SEARCHING') + ' ' + tableName + total_field_line + Joomla.JText._('COM_COMPONENTBUILDER_AND_FINISHED_THE_SEARCH_IN') + ' ' + getSearchLenght() + ' ' + Joomla.JText._('COM_COMPONENTBUILDER_SECONDS'); searchProgressBarObject.innerHTML = Joomla.Text._('COM_COMPONENTBUILDER_SEARCHING') + ' ' + tableName + total_field_line + Joomla.Text._('COM_COMPONENTBUILDER_AND_FINISHED_THE_SEARCH_IN') + ' ' + getSearchLenght() + ' ' + Joomla.Text._('COM_COMPONENTBUILDER_SECONDS');
} else { } else {
searchProgressBarObject.innerHTML = Joomla.JText._('COM_COMPONENTBUILDER_SEARCHING') + ' ' + progress + ' ' + Joomla.JText._('COM_COMPONENTBUILDER_TABLES_WITH') + total_field_line + Joomla.JText._('COM_COMPONENTBUILDER_AND_FINISHED_THE_SEARCH_IN') + ' ' + getSearchLenght() + ' ' + Joomla.JText._('COM_COMPONENTBUILDER_SECONDS'); searchProgressBarObject.innerHTML = Joomla.Text._('COM_COMPONENTBUILDER_SEARCHING') + ' ' + progress + ' ' + Joomla.Text._('COM_COMPONENTBUILDER_TABLES_WITH') + total_field_line + Joomla.Text._('COM_COMPONENTBUILDER_AND_FINISHED_THE_SEARCH_IN') + ' ' + getSearchLenght() + ' ' + Joomla.Text._('COM_COMPONENTBUILDER_SECONDS');
} }
// show the search button // show the search button
startSearchButton.style.display = ''; startSearchButton.style.display = '';
@ -235,11 +235,11 @@ const replaceAllCheck = () => {
let searchValue = searchObject.value; let searchValue = searchObject.value;
let replaceValue = replaceObject.value; let replaceValue = replaceObject.value;
// load question // load question
let question = Joomla.JText._('COM_COMPONENTBUILDER_YOUR_ARE_ABOUT_TO_UPDATE_BALLB_VALUES_THAT_CAN_BE_FOUND_IN_THE_DATABASE') + '<br />' + let question = Joomla.Text._('COM_COMPONENTBUILDER_YOUR_ARE_ABOUT_TO_UPDATE_BALLB_VALUES_THAT_CAN_BE_FOUND_IN_THE_DATABASE') + '<br />' +
Joomla.JText._('COM_COMPONENTBUILDER_YOU_WILL_REPLACE') + ': [<span class="found_code">' + htmlentities(searchValue) + '</span>] ' + Joomla.Text._('COM_COMPONENTBUILDER_YOU_WILL_REPLACE') + ': [<span class="found_code">' + htmlentities(searchValue) + '</span>] ' +
Joomla.JText._('COM_COMPONENTBUILDER_WITH') + ': [<span class="found_code">' + htmlentities(replaceValue) + '</span>]<br />' + Joomla.Text._('COM_COMPONENTBUILDER_WITH') + ': [<span class="found_code">' + htmlentities(replaceValue) + '</span>]<br />' +
Joomla.JText._('COM_COMPONENTBUILDER_THIS_CAN_NOT_BE_UNDONE_BYOU_HAVE_BEEN_WARNEDB') + '<br /><br />' + Joomla.Text._('COM_COMPONENTBUILDER_THIS_CAN_NOT_BE_UNDONE_BYOU_HAVE_BEEN_WARNEDB') + '<br /><br />' +
Joomla.JText._('COM_COMPONENTBUILDER_ARE_YOU_THEREFORE_ABSOLUTELY_SURE_YOU_WANT_TO_CONTINUE'); Joomla.Text._('COM_COMPONENTBUILDER_ARE_YOU_THEREFORE_ABSOLUTELY_SURE_YOU_WANT_TO_CONTINUE');
// do check // do check
UIkit.modal.confirm(question, function () { UIkit.modal.confirm(question, function () {
@ -258,7 +258,7 @@ const replaceAllCheck = () => {
} else { } else {
replaceAll(controller_replace.signal, searchTables); replaceAll(controller_replace.signal, searchTables);
} }
}, {labels: { Ok: Joomla.JText._('COM_COMPONENTBUILDER_YES_UPDATE_ALL'), Cancel: Joomla.JText._('COM_COMPONENTBUILDER_NO') }}); }, {labels: { Ok: Joomla.Text._('COM_COMPONENTBUILDER_YES_UPDATE_ALL'), Cancel: Joomla.Text._('COM_COMPONENTBUILDER_NO') }});
}; };
/** /**
@ -321,7 +321,7 @@ const replaceAll = async (signal, tables) => {
if (response.ok) { if (response.ok) {
return response.json(); return response.json();
} else { } else {
UIkit.notify(Joomla.JText._('COM_COMPONENTBUILDER_THE_REPLACE_PROCESS_HAD_AN_ERROR_WITH_TABLE') + ' ' + tableName, {pos:'top-right', status:'danger'}); UIkit.notify(Joomla.Text._('COM_COMPONENTBUILDER_THE_REPLACE_PROCESS_HAD_AN_ERROR_WITH_TABLE') + ' ' + tableName, {pos:'top-right', status:'danger'});
} }
}).then((data) => { }).then((data) => {
if (typeof data.success !== 'undefined') { if (typeof data.success !== 'undefined') {
@ -343,22 +343,22 @@ const replaceAll = async (signal, tables) => {
// if not reqex we reverse the search for you so you can see the update was a success // if not reqex we reverse the search for you so you can see the update was a success
if (regexValue == 0) { if (regexValue == 0) {
// set the replace value as the search value // set the replace value as the search value
UIkit.modal.confirm(Joomla.JText._('COM_COMPONENTBUILDER_WOULD_YOU_LIKE_TO_DO_A_REVERSE_SEARCH'), function(){ UIkit.modal.confirm(Joomla.Text._('COM_COMPONENTBUILDER_WOULD_YOU_LIKE_TO_DO_A_REVERSE_SEARCH'), function(){
startNewSearch(replaceValue, searchValue, matchValue, wholeValue, regexValue, 2); startNewSearch(replaceValue, searchValue, matchValue, wholeValue, regexValue, 2);
}, function () { }, function () {
UIkit.modal.confirm(Joomla.JText._('COM_COMPONENTBUILDER_WOULD_YOU_LIKE_TO_REPEAT_THE_SAME_SEARCH'), function(){ UIkit.modal.confirm(Joomla.Text._('COM_COMPONENTBUILDER_WOULD_YOU_LIKE_TO_REPEAT_THE_SAME_SEARCH'), function(){
startSearch(); startSearch();
}, function () { }, function () {
clearSearch(); clearSearch();
}, {labels: { Ok: Joomla.JText._('COM_COMPONENTBUILDER_YES'), Cancel: Joomla.JText._('COM_COMPONENTBUILDER_NO') }}); }, {labels: { Ok: Joomla.Text._('COM_COMPONENTBUILDER_YES'), Cancel: Joomla.Text._('COM_COMPONENTBUILDER_NO') }});
}, {labels: { Ok: Joomla.JText._('COM_COMPONENTBUILDER_YES'), Cancel: Joomla.JText._('COM_COMPONENTBUILDER_NO') }}); }, {labels: { Ok: Joomla.Text._('COM_COMPONENTBUILDER_YES'), Cancel: Joomla.Text._('COM_COMPONENTBUILDER_NO') }});
} else { } else {
// else we search it again just to prove its changed // else we search it again just to prove its changed
UIkit.modal.confirm(Joomla.JText._('COM_COMPONENTBUILDER_WOULD_YOU_LIKE_TO_REPEAT_THE_SAME_SEARCH'), function(){ UIkit.modal.confirm(Joomla.Text._('COM_COMPONENTBUILDER_WOULD_YOU_LIKE_TO_REPEAT_THE_SAME_SEARCH'), function(){
startSearch(); startSearch();
}, function () { }, function () {
clearSearch(); clearSearch();
}, {labels: { Ok: Joomla.JText._('COM_COMPONENTBUILDER_YES'), Cancel: Joomla.JText._('COM_COMPONENTBUILDER_NO') }}); }, {labels: { Ok: Joomla.Text._('COM_COMPONENTBUILDER_YES'), Cancel: Joomla.Text._('COM_COMPONENTBUILDER_NO') }});
} }
}, 3000); }, 3000);
} }
@ -381,13 +381,13 @@ const replaceAll = async (signal, tables) => {
*/ */
const setValueCheck = (row, field, table) => { const setValueCheck = (row, field, table) => {
// load question // load question
let question = Joomla.JText._('COM_COMPONENTBUILDER_YOUR_ARE_ABOUT_TO_UPDATE_ROW') + ' (' + row + ') -> (' + field + ') ' + let question = Joomla.Text._('COM_COMPONENTBUILDER_YOUR_ARE_ABOUT_TO_UPDATE_ROW') + ' (' + row + ') -> (' + field + ') ' +
Joomla.JText._('COM_COMPONENTBUILDER_FIELD_IN_THE') + ' (' + table + ') ' + Joomla.JText._('COM_COMPONENTBUILDER_TABLE') + '.<br /><br />' + Joomla.Text._('COM_COMPONENTBUILDER_FIELD_IN_THE') + ' (' + table + ') ' + Joomla.Text._('COM_COMPONENTBUILDER_TABLE') + '.<br /><br />' +
Joomla.JText._('COM_COMPONENTBUILDER_THIS_CAN_NOT_BE_UNDONE_ARE_YOU_SURE_YOU_WANT_TO_CONTINUE'); Joomla.Text._('COM_COMPONENTBUILDER_THIS_CAN_NOT_BE_UNDONE_ARE_YOU_SURE_YOU_WANT_TO_CONTINUE');
// do check // do check
UIkit.modal.confirm(question, function () { UIkit.modal.confirm(question, function () {
setValue(row, field, table); setValue(row, field, table);
}, {labels: { Ok: Joomla.JText._('COM_COMPONENTBUILDER_YES'), Cancel: Joomla.JText._('COM_COMPONENTBUILDER_NO') }}); }, {labels: { Ok: Joomla.Text._('COM_COMPONENTBUILDER_YES'), Cancel: Joomla.Text._('COM_COMPONENTBUILDER_NO') }});
}; };
/** /**
@ -453,13 +453,14 @@ const addSelectedItem = async (value, table, row, field, line) => {
// show and set the save button // show and set the save button
buttonUpdateItemObject.style.display = ''; buttonUpdateItemObject.style.display = '';
buttonUpdateItemObject.setAttribute('onclick',"setValueCheck(" + row + ", '" + field + "', '" + table + "');"); buttonUpdateItemObject.setAttribute('onclick',"setValueCheck(" + row + ", '" + field + "', '" + table + "');");
// Get line info from current state.
// get top of the code line const line_info = editorObject.instance.state.doc.line(line);
let top = editorObject.charCoords({line: line, ch: 0}, "local").top; editorObject.instance.dispatch({
// scroll to the line // Set selection to that entire line.
editorObject.scrollTo(null, top - 12); selection: { head: line_info.from, anchor: line_info.to },
// select the line // Ensure the selection is shown in viewport
editorObject.setCursor(line - 1); scrollIntoView: true
});
} else { } else {
// no line so no data we can't save this data // no line so no data we can't save this data
buttonUpdateItemObject.setAttribute('onclick', ""); buttonUpdateItemObject.setAttribute('onclick', "");

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -34,9 +34,9 @@ class ###Component###Controller###SViews### extends AdminController
/** /**
* Proxy for getModel. * Proxy for getModel.
* @since 2.5 * @since 2.5
*/ */
public function getModel($name = '###SView###', $prefix = '###Component###Model', $config = array()) public function getModel($name = '###SView###', $prefix = '###Component###Model', $config = [])
{ {
$model = parent::getModel($name, $prefix, array('ignore_request' => true)); $model = parent::getModel($name, $prefix, array('ignore_request' => true));
@ -45,7 +45,7 @@ class ###Component###Controller###SViews### extends AdminController
public function dashboard() public function dashboard()
{ {
$this->setRedirect(JRoute::_('index.php?option=com_###component###', false)); $this->setRedirect(Route::_('index.php?option=com_###component###', false));
return; return;
}###CUSTOM_ADMIN_CUSTOM_BUTTONS_CONTROLLER### }###CUSTOM_ADMIN_CUSTOM_BUTTONS_CONTROLLER###
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -52,18 +52,18 @@ class ###Component###Model###View### extends AdminModel
* @param string $prefix A prefix for the table class name. Optional. * @param string $prefix A prefix for the table class name. Optional.
* @param array $config Configuration array for model. Optional. * @param array $config Configuration array for model. Optional.
* *
* @return JTable A database object * @return Table A database object
* *
* @since 1.6 * @since 1.6
*/ */
public function getTable($type = '###view###', $prefix = '###Component###Table', $config = array()) public function getTable($type = '###view###', $prefix = '###Component###Table', $config = [])
{ {
// add table path for when model gets used from other component // add table path for when model gets used from other component
$this->addTablePath(JPATH_ADMINISTRATOR . '/components/com_###component###/tables'); $this->addTablePath(JPATH_ADMINISTRATOR . '/components/com_###component###/tables');
// get instance of the table // get instance of the table
return JTable::getInstance($type, $prefix, $config); return Table::getInstance($type, $prefix, $config);
}###ADMIN_CUSTOM_BUTTONS_METHOD### }###ADMIN_CUSTOM_BUTTONS_METHOD###
/** /**
* Method to get a single record. * Method to get a single record.
* *
@ -108,7 +108,7 @@ class ###Component###Model###View### extends AdminModel
* *
* @since 1.6 * @since 1.6
*/ */
public function getForm($data = array(), $loadData = true, $options = array('control' => 'jform')) public function getForm($data = [], $loadData = true, $options = array('control' => 'jform'))
{ {
// set load data option // set load data option
$options['load_data'] = $loadData;###JMODELADMIN_GETFORM### $options['load_data'] = $loadData;###JMODELADMIN_GETFORM###
@ -117,13 +117,13 @@ class ###Component###Model###View### extends AdminModel
/** /**
* Method to get the script that have to be included on the form * Method to get the script that have to be included on the form
* *
* @return string script files * @return string script files
*/ */
public function getScript() public function getScript()
{ {
return 'media/com_###component###/js/###view###.js'; return 'media/com_###component###/js/###view###.js';
} }
/** /**
* Method to test whether a record can be deleted. * Method to test whether a record can be deleted.
* *
@ -149,24 +149,24 @@ class ###Component###Model###View### extends AdminModel
protected function canEditState($record) protected function canEditState($record)
{###JMODELADMIN_CANEDITSTATE### {###JMODELADMIN_CANEDITSTATE###
} }
/** /**
* Method override to check if you can edit an existing record. * Method override to check if you can edit an existing record.
* *
* @param array $data An array of input data. * @param array $data An array of input data.
* @param string $key The name of the key for the primary key. * @param string $key The name of the key for the primary key.
* *
* @return boolean * @return boolean
* @since 2.5 * @since 2.5
*/ */
protected function allowEdit($data = array(), $key = 'id') protected function allowEdit($data = [], $key = 'id')
{###JMODELADMIN_ALLOWEDIT### {###JMODELADMIN_ALLOWEDIT###
} }
/** /**
* Prepare and sanitise the table data prior to saving. * Prepare and sanitise the table data prior to saving.
* *
* @param JTable $table A JTable object. * @param Table $table A Table object.
* *
* @return void * @return void
* *
@ -174,19 +174,19 @@ class ###Component###Model###View### extends AdminModel
*/ */
protected function prepareTable($table) protected function prepareTable($table)
{###LICENSE_TABLE_LOCKED_CHECK### {###LICENSE_TABLE_LOCKED_CHECK###
$date = JFactory::getDate(); $date = Factory::getDate();
$user = JFactory::getUser(); $user = Factory::getUser();
if (isset($table->name)) if (isset($table->name))
{ {
$table->name = htmlspecialchars_decode($table->name, ENT_QUOTES); $table->name = htmlspecialchars_decode($table->name, ENT_QUOTES);
} }
if (isset($table->alias) && empty($table->alias)) if (isset($table->alias) && empty($table->alias))
{ {
$table->generateAlias(); $table->generateAlias();
} }
if (empty($table->id)) if (empty($table->id))
{ {
$table->created = $date->toSql(); $table->created = $date->toSql();
@ -198,7 +198,7 @@ class ###Component###Model###View### extends AdminModel
// Set ordering to the last item if not set // Set ordering to the last item if not set
if (empty($table->ordering)) if (empty($table->ordering))
{ {
$db = JFactory::getDbo(); $db = Factory::getDbo();
$query = $db->getQuery(true) $query = $db->getQuery(true)
->select('MAX(ordering)') ->select('MAX(ordering)')
->from($db->quoteName('#__###component###_###view###')); ->from($db->quoteName('#__###component###_###view###'));
@ -213,7 +213,7 @@ class ###Component###Model###View### extends AdminModel
$table->modified = $date->toSql(); $table->modified = $date->toSql();
$table->modified_by = $user->id; $table->modified_by = $user->id;
} }
if (!empty($table->id)) if (!empty($table->id))
{ {
// Increment the items version number. // Increment the items version number.
@ -228,10 +228,10 @@ class ###Component###Model###View### extends AdminModel
* *
* @since 1.6 * @since 1.6
*/ */
protected function loadFormData() protected function loadFormData()
{ {
// Check the session for previously entered form data. // Check the session for previously entered form data.
$data = JFactory::getApplication()->getUserState('com_###component###.edit.###view###.data', array()); $data = Factory::getApplication()->getUserState('com_###component###.edit.###view###.data', []);
if (empty($data)) if (empty($data))
{ {
@ -242,7 +242,7 @@ class ###Component###Model###View### extends AdminModel
return $data; return $data;
}###VALIDATIONFIX######UNIQUEFIELDS### }###VALIDATIONFIX######UNIQUEFIELDS###
/** /**
* Method to delete one or more records. * Method to delete one or more records.
* *
@ -258,7 +258,7 @@ class ###Component###Model###View### extends AdminModel
{ {
return false; return false;
}###JMODELADMIN_AFTER_DELETE### }###JMODELADMIN_AFTER_DELETE###
return true; return true;
} }
@ -278,10 +278,10 @@ class ###Component###Model###View### extends AdminModel
{ {
return false; return false;
}###JMODELADMIN_AFTER_PUBLISH### }###JMODELADMIN_AFTER_PUBLISH###
return true; return true;
} }
/** /**
* Method to perform batch operations on an item or a set of items. * Method to perform batch operations on an item or a set of items.
* *
@ -307,30 +307,30 @@ class ###Component###Model###View### extends AdminModel
if (empty($pks)) if (empty($pks))
{ {
$this->setError(JText::_('JGLOBAL_NO_ITEM_SELECTED')); $this->setError(Text::_('JGLOBAL_NO_ITEM_SELECTED'));
return false; return false;
} }
$done = false; $done = false;
// Set some needed variables. // Set some needed variables.
$this->user = JFactory::getUser(); $this->user = Factory::getUser();
$this->table = $this->getTable(); $this->table = $this->getTable();
$this->tableClassName = get_class($this->table); $this->tableClassName = get_class($this->table);
$this->contentType = new JUcmType; $this->contentType = new UCMType;
$this->type = $this->contentType->getTypeByTable($this->tableClassName); $this->type = $this->contentType->getTypeByTable($this->tableClassName);
$this->canDo = ###Component###Helper::getActions('###view###'); $this->canDo = ###Component###Helper::getActions('###view###');
$this->batchSet = true; $this->batchSet = true;
if (!$this->canDo->get('core.batch')) if (!$this->canDo->get('core.batch'))
{ {
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION')); $this->setError(Text::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false; return false;
} }
if ($this->type == false) if ($this->type == false)
{ {
$type = new JUcmType; $type = new UCMType;
$this->type = $type->getTypeByAlias($this->typeAlias); $this->type = $type->getTypeByAlias($this->typeAlias);
} }
@ -367,8 +367,7 @@ class ###Component###Model###View### extends AdminModel
if (!$done) if (!$done)
{ {
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION')); $this->setError(Text::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false; return false;
} }
@ -377,7 +376,7 @@ class ###Component###Model###View### extends AdminModel
return true; return true;
}###MODEL_BATCH_COPY######MODEL_BATCH_MOVE### }###MODEL_BATCH_COPY######MODEL_BATCH_MOVE###
/** /**
* Method to save the form data. * Method to save the form data.
* *
@ -389,34 +388,34 @@ class ###Component###Model###View### extends AdminModel
*/ */
public function save($data) public function save($data)
{ {
$input = JFactory::getApplication()->input; $input = Factory::getApplication()->input;
$filter = JFilterInput::getInstance(); $filter = InputFilter::getInstance();
// set the metadata to the Item Data // set the metadata to the Item Data
if (isset($data['metadata']) && isset($data['metadata']['author'])) if (isset($data['metadata']) && isset($data['metadata']['author']))
{ {
$data['metadata']['author'] = $filter->clean($data['metadata']['author'], 'TRIM'); $data['metadata']['author'] = $filter->clean($data['metadata']['author'], 'TRIM');
$metadata = new JRegistry; $metadata = new Registry;
$metadata->loadArray($data['metadata']); $metadata->loadArray($data['metadata']);
$data['metadata'] = (string) $metadata; $data['metadata'] = (string) $metadata;
}###CHECKBOX_SAVE######METHOD_ITEM_SAVE### }###CHECKBOX_SAVE######METHOD_ITEM_SAVE###
// Set the Params Items to data // Set the Params Items to data
if (isset($data['params']) && is_array($data['params'])) if (isset($data['params']) && is_array($data['params']))
{ {
$params = new JRegistry; $params = new Registry;
$params->loadArray($data['params']); $params->loadArray($data['params']);
$data['params'] = (string) $params; $data['params'] = (string) $params;
}###TITLEALIASFIX### }###TITLEALIASFIX###
if (parent::save($data)) if (parent::save($data))
{ {
return true; return true;
} }
return false; return false;
} }
/** /**
* Method to generate a unique value. * Method to generate a unique value.
* *
@ -427,9 +426,8 @@ class ###Component###Model###View### extends AdminModel
* *
* @since 3.0 * @since 3.0
*/ */
protected function generateUnique($field,$value) protected function generateUnique($field, $value)
{ {
// set field value unique // set field value unique
$table = $this->getTable(); $table = $this->getTable();

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -52,18 +52,18 @@ class ###Component###Model###View### extends AdminModel
* @param string $prefix A prefix for the table class name. Optional. * @param string $prefix A prefix for the table class name. Optional.
* @param array $config Configuration array for model. Optional. * @param array $config Configuration array for model. Optional.
* *
* @return JTable A database object * @return Table A database object
* *
* @since 1.6 * @since 1.6
*/ */
public function getTable($type = '###view###', $prefix = '###Component###Table', $config = array()) public function getTable($type = '###view###', $prefix = '###Component###Table', $config = [])
{ {
// add table path for when model gets used from other component // add table path for when model gets used from other component
$this->addTablePath(JPATH_ADMINISTRATOR . '/components/com_###component###/tables'); $this->addTablePath(JPATH_ADMINISTRATOR . '/components/com_###component###/tables');
// get instance of the table // get instance of the table
return JTable::getInstance($type, $prefix, $config); return Table::getInstance($type, $prefix, $config);
}###ADMIN_CUSTOM_BUTTONS_METHOD### }###ADMIN_CUSTOM_BUTTONS_METHOD###
/** /**
* Method to get a single record. * Method to get a single record.
* *
@ -108,7 +108,7 @@ class ###Component###Model###View### extends AdminModel
* *
* @since 1.6 * @since 1.6
*/ */
public function getForm($data = array(), $loadData = true, $options = array('control' => 'jform')) public function getForm($data = [], $loadData = true, $options = array('control' => 'jform'))
{ {
// set load data option // set load data option
$options['load_data'] = $loadData;###JMODELADMIN_GETFORM### $options['load_data'] = $loadData;###JMODELADMIN_GETFORM###
@ -117,13 +117,13 @@ class ###Component###Model###View### extends AdminModel
/** /**
* Method to get the script that have to be included on the form * Method to get the script that have to be included on the form
* *
* @return string script files * @return string script files
*/ */
public function getScript() public function getScript()
{ {
return 'media/com_###component###/js/###view###.js'; return 'media/com_###component###/js/###view###.js';
} }
/** /**
* Method to test whether a record can be deleted. * Method to test whether a record can be deleted.
* *
@ -149,24 +149,24 @@ class ###Component###Model###View### extends AdminModel
protected function canEditState($record) protected function canEditState($record)
{###JMODELADMIN_CANEDITSTATE### {###JMODELADMIN_CANEDITSTATE###
} }
/** /**
* Method override to check if you can edit an existing record. * Method override to check if you can edit an existing record.
* *
* @param array $data An array of input data. * @param array $data An array of input data.
* @param string $key The name of the key for the primary key. * @param string $key The name of the key for the primary key.
* *
* @return boolean * @return boolean
* @since 2.5 * @since 2.5
*/ */
protected function allowEdit($data = array(), $key = 'id') protected function allowEdit($data = [], $key = 'id')
{###JMODELADMIN_ALLOWEDIT### {###JMODELADMIN_ALLOWEDIT###
} }
/** /**
* Prepare and sanitise the table data prior to saving. * Prepare and sanitise the table data prior to saving.
* *
* @param JTable $table A JTable object. * @param Table $table A Table object.
* *
* @return void * @return void
* *
@ -174,19 +174,19 @@ class ###Component###Model###View### extends AdminModel
*/ */
protected function prepareTable($table) protected function prepareTable($table)
{###LICENSE_TABLE_LOCKED_CHECK### {###LICENSE_TABLE_LOCKED_CHECK###
$date = JFactory::getDate(); $date = Factory::getDate();
$user = JFactory::getUser(); $user = Factory::getUser();
if (isset($table->name)) if (isset($table->name))
{ {
$table->name = htmlspecialchars_decode($table->name, ENT_QUOTES); $table->name = htmlspecialchars_decode($table->name, ENT_QUOTES);
} }
if (isset($table->alias) && empty($table->alias)) if (isset($table->alias) && empty($table->alias))
{ {
$table->generateAlias(); $table->generateAlias();
} }
if (empty($table->id)) if (empty($table->id))
{ {
$table->created = $date->toSql(); $table->created = $date->toSql();
@ -198,7 +198,7 @@ class ###Component###Model###View### extends AdminModel
// Set ordering to the last item if not set // Set ordering to the last item if not set
if (empty($table->ordering)) if (empty($table->ordering))
{ {
$db = JFactory::getDbo(); $db = Factory::getDbo();
$query = $db->getQuery(true) $query = $db->getQuery(true)
->select('MAX(ordering)') ->select('MAX(ordering)')
->from($db->quoteName('#__###component###_###view###')); ->from($db->quoteName('#__###component###_###view###'));
@ -213,7 +213,7 @@ class ###Component###Model###View### extends AdminModel
$table->modified = $date->toSql(); $table->modified = $date->toSql();
$table->modified_by = $user->id; $table->modified_by = $user->id;
} }
if (!empty($table->id)) if (!empty($table->id))
{ {
// Increment the items version number. // Increment the items version number.
@ -228,10 +228,10 @@ class ###Component###Model###View### extends AdminModel
* *
* @since 1.6 * @since 1.6
*/ */
protected function loadFormData() protected function loadFormData()
{ {
// Check the session for previously entered form data. // Check the session for previously entered form data.
$data = JFactory::getApplication()->getUserState('com_###component###.edit.###view###.data', array()); $data = Factory::getApplication()->getUserState('com_###component###.edit.###view###.data', []);
if (empty($data)) if (empty($data))
{ {
@ -242,7 +242,7 @@ class ###Component###Model###View### extends AdminModel
return $data; return $data;
}###VALIDATIONFIX######UNIQUEFIELDS### }###VALIDATIONFIX######UNIQUEFIELDS###
/** /**
* Method to delete one or more records. * Method to delete one or more records.
* *
@ -258,7 +258,7 @@ class ###Component###Model###View### extends AdminModel
{ {
return false; return false;
}###JMODELADMIN_AFTER_DELETE### }###JMODELADMIN_AFTER_DELETE###
return true; return true;
} }
@ -278,10 +278,10 @@ class ###Component###Model###View### extends AdminModel
{ {
return false; return false;
}###JMODELADMIN_AFTER_PUBLISH### }###JMODELADMIN_AFTER_PUBLISH###
return true; return true;
} }
/** /**
* Method to perform batch operations on an item or a set of items. * Method to perform batch operations on an item or a set of items.
* *
@ -307,30 +307,30 @@ class ###Component###Model###View### extends AdminModel
if (empty($pks)) if (empty($pks))
{ {
$this->setError(JText::_('JGLOBAL_NO_ITEM_SELECTED')); $this->setError(Text::_('JGLOBAL_NO_ITEM_SELECTED'));
return false; return false;
} }
$done = false; $done = false;
// Set some needed variables. // Set some needed variables.
$this->user = JFactory::getUser(); $this->user = Factory::getUser();
$this->table = $this->getTable(); $this->table = $this->getTable();
$this->tableClassName = get_class($this->table); $this->tableClassName = get_class($this->table);
$this->contentType = new JUcmType; $this->contentType = new UCMType;
$this->type = $this->contentType->getTypeByTable($this->tableClassName); $this->type = $this->contentType->getTypeByTable($this->tableClassName);
$this->canDo = ###Component###Helper::getActions('###view###'); $this->canDo = ###Component###Helper::getActions('###view###');
$this->batchSet = true; $this->batchSet = true;
if (!$this->canDo->get('core.batch')) if (!$this->canDo->get('core.batch'))
{ {
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION')); $this->setError(Text::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false; return false;
} }
if ($this->type == false) if ($this->type == false)
{ {
$type = new JUcmType; $type = new UCMType;
$this->type = $type->getTypeByAlias($this->typeAlias); $this->type = $type->getTypeByAlias($this->typeAlias);
} }
@ -367,8 +367,7 @@ class ###Component###Model###View### extends AdminModel
if (!$done) if (!$done)
{ {
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION')); $this->setError(Text::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false; return false;
} }
@ -377,7 +376,7 @@ class ###Component###Model###View### extends AdminModel
return true; return true;
}###MODEL_BATCH_COPY######MODEL_BATCH_MOVE### }###MODEL_BATCH_COPY######MODEL_BATCH_MOVE###
/** /**
* Method to save the form data. * Method to save the form data.
* *
@ -389,34 +388,34 @@ class ###Component###Model###View### extends AdminModel
*/ */
public function save($data) public function save($data)
{ {
$input = JFactory::getApplication()->input; $input = Factory::getApplication()->input;
$filter = JFilterInput::getInstance(); $filter = InputFilter::getInstance();
// set the metadata to the Item Data // set the metadata to the Item Data
if (isset($data['metadata']) && isset($data['metadata']['author'])) if (isset($data['metadata']) && isset($data['metadata']['author']))
{ {
$data['metadata']['author'] = $filter->clean($data['metadata']['author'], 'TRIM'); $data['metadata']['author'] = $filter->clean($data['metadata']['author'], 'TRIM');
$metadata = new JRegistry; $metadata = new Registry;
$metadata->loadArray($data['metadata']); $metadata->loadArray($data['metadata']);
$data['metadata'] = (string) $metadata; $data['metadata'] = (string) $metadata;
}###CHECKBOX_SAVE######METHOD_ITEM_SAVE### }###CHECKBOX_SAVE######METHOD_ITEM_SAVE###
// Set the Params Items to data // Set the Params Items to data
if (isset($data['params']) && is_array($data['params'])) if (isset($data['params']) && is_array($data['params']))
{ {
$params = new JRegistry; $params = new Registry;
$params->loadArray($data['params']); $params->loadArray($data['params']);
$data['params'] = (string) $params; $data['params'] = (string) $params;
}###TITLEALIASFIX### }###TITLEALIASFIX###
if (parent::save($data)) if (parent::save($data))
{ {
return true; return true;
} }
return false; return false;
} }
/** /**
* Method to generate a unique value. * Method to generate a unique value.
* *
@ -427,9 +426,8 @@ class ###Component###Model###View### extends AdminModel
* *
* @since 3.0 * @since 3.0
*/ */
protected function generateUnique($field,$value) protected function generateUnique($field, $value)
{ {
// set field value unique // set field value unique
$table = $this->getTable(); $table = $this->getTable();

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -19,6 +19,8 @@ defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\MVC\Controller\BaseController; use Joomla\CMS\MVC\Controller\BaseController;
use Joomla\Utilities\ArrayHelper; use Joomla\Utilities\ArrayHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
/** /**
* General Controller of ###Component### component * General Controller of ###Component### component
@ -34,7 +36,7 @@ class ###Component###Controller extends BaseController
* *
* @since 3.0 * @since 3.0
*/ */
public function __construct($config = array()) public function __construct($config = [])
{ {
// set the default view // set the default view
$config['default_view'] = '###DASHBOARDVIEW###'; $config['default_view'] = '###DASHBOARDVIEW###';
@ -50,38 +52,38 @@ class ###Component###Controller extends BaseController
function display($cachable = false, $urlparams = false) function display($cachable = false, $urlparams = false)
{ {
// set default view if not set // set default view if not set
$view = $this->input->getCmd('view', '###DASHBOARDVIEW###'); $view = $this->input->getCmd('view', '###DASHBOARDVIEW###');
$data = $this->getViewRelation($view); $data = $this->getViewRelation($view);
$layout = $this->input->get('layout', null, 'WORD'); $layout = $this->input->get('layout', null, 'WORD');
$id = $this->input->getInt('id'); $id = $this->input->getInt('id');
// Check for edit form. // Check for edit form.
if(###Component###Helper::checkArray($data)) if(Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::check($data))
{ {
if ($data['edit'] && $layout == 'edit' && !$this->checkEditId('com_###component###.edit.'.$data['view'], $id)) if ($data['edit'] && $layout == 'edit' && !$this->checkEditId('com_###component###.edit.'.$data['view'], $id))
{ {
// Somehow the person just went to the form - we don't allow that. // Somehow the person just went to the form - we don't allow that.
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setError(Text::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id));
$this->setMessage($this->getError(), 'error'); $this->setMessage($this->getError(), 'error');
// check if item was opend from other then its own list view // check if item was opend from other then its own list view
$ref = $this->input->getCmd('ref', 0); $ref = $this->input->getCmd('ref', 0);
$refid = $this->input->getInt('refid', 0); $refid = $this->input->getInt('refid', 0);
// set redirect // set redirect
if ($refid > 0 && ###Component###Helper::checkString($ref)) if ($refid > 0 && Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($ref))
{ {
// redirect to item of ref // redirect to item of ref
$this->setRedirect(JRoute::_('index.php?option=com_###component###&view='.(string)$ref.'&layout=edit&id='.(int)$refid, false)); $this->setRedirect(Route::_('index.php?option=com_###component###&view='.(string)$ref.'&layout=edit&id='.(int)$refid, false));
} }
elseif (###Component###Helper::checkString($ref)) elseif (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($ref))
{ {
// redirect to ref // redirect to ref
$this->setRedirect(JRoute::_('index.php?option=com_###component###&view='.(string)$ref, false)); $this->setRedirect(Route::_('index.php?option=com_###component###&view='.(string)$ref, false));
} }
else else
{ {
// normal redirect back to the list view // normal redirect back to the list view
$this->setRedirect(JRoute::_('index.php?option=com_###component###&view='.$data['views'], false)); $this->setRedirect(Route::_('index.php?option=com_###component###&view='.$data['views'], false));
} }
return false; return false;
@ -94,7 +96,7 @@ class ###Component###Controller extends BaseController
protected function getViewRelation($view) protected function getViewRelation($view)
{ {
// check the we have a value // check the we have a value
if (###Component###Helper::checkString($view)) if (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($view))
{ {
// the view relationships // the view relationships
$views = array(###VIEWARRAY### $views = array(###VIEWARRAY###

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,7 +17,9 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access'); defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\MVC\Controller\BaseController; use Joomla\CMS\MVC\Controller\BaseController;
use Joomla\CMS\Session\Session;
use Joomla\Utilities\ArrayHelper; use Joomla\Utilities\ArrayHelper;
/** /**
@ -29,9 +31,9 @@ class ###Component###ControllerAjax extends BaseController
{ {
parent::__construct($config); parent::__construct($config);
// make sure all json stuff are set // make sure all json stuff are set
JFactory::getDocument()->setMimeEncoding( 'application/json' ); Factory::getDocument()->setMimeEncoding( 'application/json' );
// get the application // get the application
$app = JFactory::getApplication(); $app = Factory::getApplication();
$app->setHeader('Content-Disposition','attachment;filename="getajax.json"'); $app->setHeader('Content-Disposition','attachment;filename="getajax.json"');
$app->setHeader('Access-Control-Allow-Origin', '*'); $app->setHeader('Access-Control-Allow-Origin', '*');
// load the tasks ###REGISTER_AJAX_TASK### // load the tasks ###REGISTER_AJAX_TASK###
@ -40,16 +42,16 @@ class ###Component###ControllerAjax extends BaseController
public function ajax() public function ajax()
{ {
// get the user for later use // get the user for later use
$user = JFactory::getUser(); $user = Factory::getUser();
// get the input values // get the input values
$jinput = JFactory::getApplication()->input; $jinput = Factory::getApplication()->input;
// check if we should return raw // check if we should return raw
$returnRaw = $jinput->get('raw', false, 'BOOLEAN'); $returnRaw = $jinput->get('raw', false, 'BOOLEAN');
// return to a callback function // return to a callback function
$callback = $jinput->get('callback', null, 'CMD'); $callback = $jinput->get('callback', null, 'CMD');
// Check Token! // Check Token!
$token = JSession::getFormToken(); $token = Session::getFormToken();
$call_token = $jinput->get('token', 0, 'ALNUM'); $call_token = $jinput->get('token', 0, 'ALNUM');
if($jinput->get($token, 0, 'ALNUM') || $token === $call_token) if($jinput->get($token, 0, 'ALNUM') || $token === $call_token)
{ {
// get the task // get the task

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,7 +17,9 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access'); defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\MVC\Controller\BaseController; use Joomla\CMS\MVC\Controller\BaseController;
use Joomla\CMS\Session\Session;
use Joomla\Utilities\ArrayHelper; use Joomla\Utilities\ArrayHelper;
/** /**
@ -29,9 +31,9 @@ class ###Component###ControllerAjax extends BaseController
{ {
parent::__construct($config); parent::__construct($config);
// make sure all json stuff are set // make sure all json stuff are set
JFactory::getDocument()->setMimeEncoding( 'application/json' ); Factory::getDocument()->setMimeEncoding( 'application/json' );
// get the application // get the application
$app = JFactory::getApplication(); $app = Factory::getApplication();
$app->setHeader('Content-Disposition','attachment;filename="getajax.json"'); $app->setHeader('Content-Disposition','attachment;filename="getajax.json"');
$app->setHeader('Access-Control-Allow-Origin', '*'); $app->setHeader('Access-Control-Allow-Origin', '*');
// load the tasks ###REGISTER_SITE_AJAX_TASK### // load the tasks ###REGISTER_SITE_AJAX_TASK###
@ -40,16 +42,16 @@ class ###Component###ControllerAjax extends BaseController
public function ajax() public function ajax()
{ {
// get the user for later use // get the user for later use
$user = JFactory::getUser(); $user = Factory::getUser();
// get the input values // get the input values
$jinput = JFactory::getApplication()->input; $jinput = Factory::getApplication()->input;
// check if we should return raw // check if we should return raw
$returnRaw = $jinput->get('raw', false, 'BOOLEAN'); $returnRaw = $jinput->get('raw', false, 'BOOLEAN');
// return to a callback function // return to a callback function
$callback = $jinput->get('callback', null, 'CMD'); $callback = $jinput->get('callback', null, 'CMD');
// Check Token! // Check Token!
$token = JSession::getFormToken(); $token = Session::getFormToken();
$call_token = $jinput->get('token', 0, 'ALNUM'); $call_token = $jinput->get('token', 0, 'ALNUM');
if($jinput->get($token, 0, 'ALNUM') || $token === $call_token) if($jinput->get($token, 0, 'ALNUM') || $token === $call_token)
{ {
// get the task // get the task
@ -71,7 +73,7 @@ class ###Component###ControllerAjax extends BaseController
echo json_encode(false); echo json_encode(false);
} }
else else
{ {
echo "(".json_encode(false).");"; echo "(".json_encode(false).");";
} }
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,7 +17,10 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access'); defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\MVC\Controller\BaseController; use Joomla\CMS\MVC\Controller\BaseController;
use Joomla\CMS\Uri\Uri;
use Joomla\CMS\Session\Session;
use Joomla\Utilities\ArrayHelper; use Joomla\Utilities\ArrayHelper;
/** /**
@ -34,12 +37,12 @@ class ###Component###ControllerHelp extends BaseController
public function help() public function help()
{ {
$user = JFactory::getUser(); $user = Factory::getUser();
$jinput = JFactory::getApplication()->input; $jinput = Factory::getApplication()->input;
// Check Token! // Check Token!
$token = JSession::getFormToken(); $token = Session::getFormToken();
$call_token = $jinput->get('token', 0, 'ALNUM'); $call_token = $jinput->get('token', 0, 'ALNUM');
if($user->id != 0 && $token == $call_token) if($user->id != 0 && ($jinput->get($token, 0, 'ALNUM') || $token === $call_token))
{ {
$task = $this->getTask(); $task = $this->getTask();
switch($task){ switch($task){
@ -67,7 +70,7 @@ class ###Component###ControllerHelp extends BaseController
break; break;
} }
} }
else else
{ {
// stop execution gracefully // stop execution gracefully
jexit(); jexit();
@ -76,8 +79,8 @@ class ###Component###ControllerHelp extends BaseController
protected function getHelpDocumentText($id) protected function getHelpDocumentText($id)
{ {
$db = JFactory::getDbo(); $db = Factory::getDbo();
$query = $db->getQuery(true); $query = $db->getQuery(true);
$query->select(array('a.title','a.content')); $query->select(array('a.title','a.content'));
$query->from('#__###component###_help_document AS a'); $query->from('#__###component###_help_document AS a');
$query->where('a.id = '.(int) $id); $query->where('a.id = '.(int) $id);
@ -86,21 +89,21 @@ class ###Component###ControllerHelp extends BaseController
$db->execute(); $db->execute();
if($db->getNumRows()) if($db->getNumRows())
{ {
$text = array(); $text = [];
$document = $db->loadObject(); $document = $db->loadObject();
// fix image issue // fix image issue
$images['src="images'] = 'src="'.JURI::root().'images'; $images['src="images'] = 'src="'.Uri::root().'images';
$images["src='images"] = "src='".JURI::root()."images"; $images["src='images"] = "src='".Uri::root()."images";
$images['src="/images'] = 'src="'.JURI::root().'images'; $images['src="/images'] = 'src="'.Uri::root().'images';
$images["src='/images"] = "src='".JURI::root()."images"; $images["src='/images"] = "src='".Uri::root()."images";
// set document template // set document template
$text[] = "<!doctype html>"; $text[] = "<!doctype html>";
$text[] = '<html>'; $text[] = '<html>';
$text[] = "<head>"; $text[] = "<head>";
$text[] = '<meta charset="utf-8">'; $text[] = '<meta charset="utf-8">';
$text[] = "<title>".$document->title."</title>"; $text[] = "<title>".$document->title."</title>";
$text[] = '<link type="text/css" href="'.JURI::root().'media/com_###component###/uikit/css/uikit.gradient.min.css" rel="stylesheet"></link>'; $text[] = '<link type="text/css" href="'.Uri::root().'media/com_###component###/uikit/css/uikit.gradient.min.css" rel="stylesheet"></link>';
$text[] = '<script type="text/javascript" src="'.JURI::root().'media/com_###component###/uikit/js/uikit.min.js"></script>'; $text[] = '<script type="text/javascript" src="'.Uri::root().'media/com_###component###/uikit/js/uikit.min.js"></script>';
$text[] = "</head>"; $text[] = "</head>";
$text[] = '<body><br />'; $text[] = '<body><br />';
$text[] = '<div class="uk-container uk-container-center uk-grid-collapse">'; $text[] = '<div class="uk-container uk-container-center uk-grid-collapse">';

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,7 +17,10 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access'); defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\MVC\Controller\BaseController; use Joomla\CMS\MVC\Controller\BaseController;
use Joomla\CMS\Uri\Uri;
use Joomla\CMS\Session\Session;
use Joomla\Utilities\ArrayHelper; use Joomla\Utilities\ArrayHelper;
/** /**
@ -34,12 +37,12 @@ class ###Component###ControllerHelp extends BaseController
public function help() public function help()
{ {
$user = JFactory::getUser(); $user = Factory::getUser();
$jinput = JFactory::getApplication()->input; $jinput = Factory::getApplication()->input;
// Check Token! // Check Token!
$token = JSession::getFormToken(); $token = Session::getFormToken();
$call_token = $jinput->get('token', 0, 'ALNUM'); $call_token = $jinput->get('token', 0, 'ALNUM');
if($token == $call_token) if($user->id != 0 && ($jinput->get($token, 0, 'ALNUM') || $token === $call_token))
{ {
$task = $this->getTask(); $task = $this->getTask();
switch($task){ switch($task){
@ -76,8 +79,8 @@ class ###Component###ControllerHelp extends BaseController
protected function getHelpDocumentText($id) protected function getHelpDocumentText($id)
{ {
$db = JFactory::getDbo(); $db = Factory::getDbo();
$query = $db->getQuery(true); $query = $db->getQuery(true);
$query->select(array('a.title','a.content')); $query->select(array('a.title','a.content'));
$query->from('#__###component###_help_document AS a'); $query->from('#__###component###_help_document AS a');
$query->where('a.id = '.(int) $id); $query->where('a.id = '.(int) $id);
@ -87,21 +90,21 @@ class ###Component###ControllerHelp extends BaseController
$db->execute(); $db->execute();
if($db->getNumRows()) if($db->getNumRows())
{ {
$text = array(); $text = [];
$document = $db->loadObject(); $document = $db->loadObject();
// fix image issue // fix image issue
$images['src="images'] = 'src="'.JURI::root().'images'; $images['src="images'] = 'src="'.Uri::root().'images';
$images["src='images"] = "src='".JURI::root()."images"; $images["src='images"] = "src='".Uri::root()."images";
$images['src="/images'] = 'src="'.JURI::root().'images'; $images['src="/images'] = 'src="'.Uri::root().'images';
$images["src='/images"] = "src='".JURI::root()."images"; $images["src='/images"] = "src='".Uri::root()."images";
// set document template // set document template
$text[] = "<!doctype html>"; $text[] = "<!doctype html>";
$text[] = '<html>'; $text[] = '<html>';
$text[] = "<head>"; $text[] = "<head>";
$text[] = '<meta charset="utf-8">'; $text[] = '<meta charset="utf-8">';
$text[] = "<title>".$document->title."</title>"; $text[] = "<title>".$document->title."</title>";
$text[] = '<link type="text/css" href="'.JURI::root().'media/com_###component###/uikit/css/uikit.gradient.min.css" rel="stylesheet"></link>'; $text[] = '<link type="text/css" href="'.Uri::root().'media/com_###component###/uikit/css/uikit.gradient.min.css" rel="stylesheet"></link>';
$text[] = '<script type="text/javascript" src="'.JURI::root().'media/com_###component###/uikit/js/uikit.min.js"></script>'; $text[] = '<script type="text/javascript" src="'.Uri::root().'media/com_###component###/uikit/js/uikit.min.js"></script>';
$text[] = "</head>"; $text[] = "</head>";
$text[] = '<body><br />'; $text[] = '<body><br />';
$text[] = '<div class="uk-container uk-container-center uk-grid-collapse">'; $text[] = '<div class="uk-container uk-container-center uk-grid-collapse">';

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,8 +17,11 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access'); defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\MVC\Controller\BaseController; use Joomla\CMS\MVC\Controller\BaseController;
use Joomla\CMS\Router\Route;
use Joomla\Utilities\ArrayHelper; use Joomla\Utilities\ArrayHelper;
use Joomla\CMS\Language\Text;
/** /**
* ###Component### Component Base Controller * ###Component### Component Base Controller
@ -37,51 +40,51 @@ class ###Component###Controller extends BaseController
function display($cachable = false, $urlparams = false) function display($cachable = false, $urlparams = false)
{ {
// set default view if not set // set default view if not set
$view = $this->input->getCmd('view', '###SITE_DEFAULT_VIEW###'); $view = $this->input->getCmd('view', '###SITE_DEFAULT_VIEW###');
$this->input->set('view', $view); $this->input->set('view', $view);
$isEdit = $this->checkEditView($view); $isEdit = $this->checkEditView($view);
$layout = $this->input->get('layout', null, 'WORD'); $layout = $this->input->get('layout', null, 'WORD');
$id = $this->input->getInt('id'); $id = $this->input->getInt('id');
// $cachable = true; (TODO) working on a fix [gh-238](https://github.com/vdm-io/Joomla-Component-Builder/issues/238) // $cachable = true; (TODO) working on a fix [gh-238](https://github.com/vdm-io/Joomla-Component-Builder/issues/238)
// insure that the view is not cashable if edit view or if user is logged in // insure that the view is not cashable if edit view or if user is logged in
$user = JFactory::getUser(); $user = Factory::getUser();
if ($user->get('id') || $isEdit) if ($user->get('id') || $isEdit)
{ {
$cachable = false; $cachable = false;
} }
// Check for edit form. // Check for edit form.
if($isEdit) if($isEdit)
{ {
if ($layout == 'edit' && !$this->checkEditId('com_###component###.edit.'.$view, $id)) if ($layout == 'edit' && !$this->checkEditId('com_###component###.edit.'.$view, $id))
{ {
// Somehow the person just went to the form - we don't allow that. // Somehow the person just went to the form - we don't allow that.
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setError(Text::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id));
$this->setMessage($this->getError(), 'error'); $this->setMessage($this->getError(), 'error');
// check if item was opend from other then its own list view // check if item was opend from other then its own list view
$ref = $this->input->getCmd('ref', 0); $ref = $this->input->getCmd('ref', 0);
$refid = $this->input->getInt('refid', 0); $refid = $this->input->getInt('refid', 0);
// set redirect // set redirect
if ($refid > 0 && ###Component###Helper::checkString($ref)) if ($refid > 0 && Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($ref))
{ {
// redirect to item of ref // redirect to item of ref
$this->setRedirect(JRoute::_('index.php?option=com_###component###&view='.(string)$ref.'&layout=edit&id='.(int)$refid, false)); $this->setRedirect(Route::_('index.php?option=com_###component###&view='.(string)$ref.'&layout=edit&id='.(int)$refid, false));
} }
elseif (###Component###Helper::checkString($ref)) elseif (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($ref))
{ {
// redirect to ref // redirect to ref
$this->setRedirect(JRoute::_('index.php?option=com_###component###&view='.(string)$ref, false)); $this->setRedirect(Route::_('index.php?option=com_###component###&view='.(string)$ref, false));
} }
else else
{ {
// normal redirect back to the list default site view // normal redirect back to the list default site view
$this->setRedirect(JRoute::_('index.php?option=com_###component###&view=###SITE_DEFAULT_VIEW###', false)); $this->setRedirect(Route::_('index.php?option=com_###component###&view=###SITE_DEFAULT_VIEW###', false));
} }
return false; return false;
} }
} }
// we may need to make this more dynamic in the future. (TODO) // we may need to make this more dynamic in the future. (TODO)
$safeurlparams = array( $safeurlparams = array(
'catid' => 'INT', 'catid' => 'INT',
@ -102,9 +105,9 @@ class ###Component###Controller extends BaseController
'Itemid' => 'INT'); 'Itemid' => 'INT');
// should these not merge? // should these not merge?
if (###Component###Helper::checkArray($urlparams)) if (Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::check($urlparams))
{ {
$safeurlparams = ###Component###Helper::mergeArrays(array($urlparams, $safeurlparams)); $safeurlparams = Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::merge(array($urlparams, $safeurlparams));
} }
return parent::display($cachable, $safeurlparams); return parent::display($cachable, $safeurlparams);
@ -112,7 +115,7 @@ class ###Component###Controller extends BaseController
protected function checkEditView($view) protected function checkEditView($view)
{ {
if (###Component###Helper::checkString($view)) if (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($view))
{ {
$views = array(###SITE_EDIT_VIEW_ARRAY### $views = array(###SITE_EDIT_VIEW_ARRAY###
); );

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -31,7 +31,7 @@ class ###Component###Controller###SView### extends BaseController
public function dashboard() public function dashboard()
{ {
$this->setRedirect(JRoute::_('index.php?option=com_###component###', false)); $this->setRedirect(Route::_('index.php?option=com_###component###', false));
return; return;
}###CUSTOM_ADMIN_CUSTOM_BUTTONS_CONTROLLER### }###CUSTOM_ADMIN_CUSTOM_BUTTONS_CONTROLLER###
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -32,21 +32,21 @@ class ###Component###ControllerImport extends BaseController
public function import() public function import()
{ {
// Check for request forgeries // Check for request forgeries
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
$model = $this->getModel('import'); $model = $this->getModel('import');
if ($model->import()) if ($model->import())
{ {
$cache = JFactory::getCache('mod_menu'); $cache = Factory::getCache('mod_menu');
$cache->clean(); $cache->clean();
// TODO: Reset the users acl here as well to kill off any missing bits // TODO: Reset the users acl here as well to kill off any missing bits
} }
$app = JFactory::getApplication(); $app = Factory::getApplication();
$redirect_url = $app->getUserState('com_###component###.redirect_url'); $redirect_url = $app->getUserState('com_###component###.redirect_url');
if (empty($redirect_url)) if (empty($redirect_url))
{ {
$redirect_url = JRoute::_('index.php?option=com_###component###&view=import', false); $redirect_url = Route::_('index.php?option=com_###component###&view=import', false);
} }
else else
{ {

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -32,21 +32,21 @@ class ###Component###Controller###View### extends BaseController
public function import() public function import()
{ {
// Check for request forgeries // Check for request forgeries
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
$model = $this->getModel('###View###'); $model = $this->getModel('###View###');
if ($model->import()) if ($model->import())
{ {
$cache = JFactory::getCache('mod_menu'); $cache = Factory::getCache('mod_menu');
$cache->clean(); $cache->clean();
// TODO: Reset the users acl here as well to kill off any missing bits // TODO: Reset the users acl here as well to kill off any missing bits
} }
$app = JFactory::getApplication(); $app = Factory::getApplication();
$redirect_url = $app->getUserState('com_###component###.redirect_url'); $redirect_url = $app->getUserState('com_###component###.redirect_url');
if (empty($redirect_url)) if (empty($redirect_url))
{ {
$redirect_url = JRoute::_('index.php?option=com_###component###&view=###view###', false); $redirect_url = Route::_('index.php?option=com_###component###&view=###view###', false);
} }
else else
{ {

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -27,8 +27,8 @@ class ###Component###ModelImport extends BaseDatabaseModel
// set uploading values // set uploading values
protected $use_streams = false; protected $use_streams = false;
protected $allow_unsafe = false; protected $allow_unsafe = false;
protected $safeFileOptions = array(); protected $safeFileOptions = [];
/** /**
* @var object JTable object * @var object JTable object
*/ */
@ -45,13 +45,13 @@ class ###Component###ModelImport extends BaseDatabaseModel
* @var string * @var string
*/ */
protected $_context = 'com_###component###.import'; protected $_context = 'com_###component###.import';
/** /**
* Import Settings * Import Settings
*/ */
protected $getType = NULL; protected $getType = NULL;
protected $dataType = NULL; protected $dataType = NULL;
/** /**
* Method to auto-populate the model state. * Method to auto-populate the model state.
* *
@ -62,7 +62,7 @@ class ###Component###ModelImport extends BaseDatabaseModel
*/ */
protected function populateState() protected function populateState()
{ {
$app = JFactory::getApplication('administrator'); $app = Factory::getApplication('administrator');
$this->setState('message', $app->getUserState('com_###component###.message')); $this->setState('message', $app->getUserState('com_###component###.message'));
$app->setUserState('com_###component###.message', ''); $app->setUserState('com_###component###.message', '');
@ -82,14 +82,14 @@ class ###Component###ModelImport extends BaseDatabaseModel
public function import() public function import()
{ {
$this->setState('action', 'import'); $this->setState('action', 'import');
$app = JFactory::getApplication(); $app = Factory::getApplication();
$session = JFactory::getSession(); $session = Factory::getSession();
$package = null; $package = null;
$continue = false; $continue = false;
// get import type // get import type
$this->getType = $app->input->getString('gettype', NULL); $this->getType = $app->input->getString('gettype', NULL);
// get import type // get import type
$this->dataType = $session->get('dataType_VDM_IMPORTINTO', NULL); $this->dataType = $session->get('dataType_VDM_IMPORTINTO', NULL);
if ($package === null) if ($package === null)
{ {
@ -110,9 +110,9 @@ class ###Component###ModelImport extends BaseDatabaseModel
break; break;
case 'continue': case 'continue':
$continue = true; $continue = true;
$package = $session->get('package', null); $package = $session->get('package', null);
$package = json_decode($package, true); $package = json_decode($package, true);
// clear session // clear session
$session->clear('package'); $session->clear('package');
$session->clear('dataType'); $session->clear('dataType');
@ -120,7 +120,7 @@ class ###Component###ModelImport extends BaseDatabaseModel
break; break;
default: default:
$app->setUserState('com_###component###.message', JText::_('COM_###COMPONENT###_IMPORT_NO_IMPORT_TYPE_FOUND')); $app->setUserState('com_###component###.message', Text::_('COM_###COMPONENT###_IMPORT_NO_IMPORT_TYPE_FOUND'));
return false; return false;
break; break;
@ -134,10 +134,10 @@ class ###Component###ModelImport extends BaseDatabaseModel
$this->remove($package['packagename']); $this->remove($package['packagename']);
} }
$app->setUserState('com_###component###.message', JText::_('COM_###COMPONENT###_IMPORT_UNABLE_TO_FIND_IMPORT_PACKAGE')); $app->setUserState('com_###component###.message', Text::_('COM_###COMPONENT###_IMPORT_UNABLE_TO_FIND_IMPORT_PACKAGE'));
return false; return false;
} }
// first link data to table headers // first link data to table headers
if(!$continue){ if(!$continue){
$package = json_encode($package); $package = json_encode($package);
@ -146,13 +146,13 @@ class ###Component###ModelImport extends BaseDatabaseModel
$session->set('hasPackage', true); $session->set('hasPackage', true);
return true; return true;
} }
// set the data // set the data
$headerList = json_decode($session->get($this->dataType.'_VDM_IMPORTHEADERS', false), true); $headerList = json_decode($session->get($this->dataType.'_VDM_IMPORTHEADERS', false), true);
if (!$this->setData($package,$this->dataType,$headerList)) if (!$this->setData($package,$this->dataType,$headerList))
{ {
// There was an error importing the package // There was an error importing the package
$msg = JText::_('COM_###COMPONENT###_IMPORT_ERROR'); $msg = Text::_('COM_###COMPONENT###_IMPORT_ERROR');
$back = $session->get('backto_VDM_IMPORT', NULL); $back = $session->get('backto_VDM_IMPORT', NULL);
if ($back) if ($back)
{ {
@ -164,12 +164,12 @@ class ###Component###ModelImport extends BaseDatabaseModel
else else
{ {
// Package imported sucessfully // Package imported sucessfully
$msg = JText::sprintf('COM_###COMPONENT###_IMPORT_SUCCESS', $package['packagename']); $msg = Text::sprintf('COM_###COMPONENT###_IMPORT_SUCCESS', $package['packagename']);
$back = $session->get('backto_VDM_IMPORT', NULL); $back = $session->get('backto_VDM_IMPORT', NULL);
if ($back) if ($back)
{ {
$app->setUserState('com_###component###.redirect_url', 'index.php?option=com_###component###&view='.$back); $app->setUserState('com_###component###.redirect_url', 'index.php?option=com_###component###&view='.$back);
$session->clear('backto_VDM_IMPORT'); $session->clear('backto_VDM_IMPORT');
} }
$result = true; $result = true;
} }
@ -180,7 +180,7 @@ class ###Component###ModelImport extends BaseDatabaseModel
// remove file after import // remove file after import
$this->remove($package['packagename']); $this->remove($package['packagename']);
$session->clear($this->getType.'_VDM_IMPORTHEADERS'); $session->clear($this->getType.'_VDM_IMPORTHEADERS');
return $result; return $result;
} }
@ -190,48 +190,47 @@ class ###Component###ModelImport extends BaseDatabaseModel
* @return spreadsheet definition or false on failure * @return spreadsheet definition or false on failure
*/ */
protected function _getPackageFromUpload() protected function _getPackageFromUpload()
{ {
// Get the uploaded file information // Get the uploaded file information
$app = JFactory::getApplication(); $app = Factory::getApplication();
$input = $app->input; $input = $app->input;
// Do not change the filter type 'raw'. We need this to let files containing PHP code to upload. See JInputFiles::get. // Do not change the filter type 'raw'. We need this to let files containing PHP code to upload. See JInputFiles::get.
$userfile = $input->files->get('import_package', null, 'raw'); $userfile = $input->files->get('import_package', null, 'raw');
// Make sure that file uploads are enabled in php // Make sure that file uploads are enabled in php
if (!(bool) ini_get('file_uploads')) if (!(bool) ini_get('file_uploads'))
{ {
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_WARNIMPORTFILE'), 'warning'); $app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_WARNIMPORTFILE'), 'warning');
return false; return false;
} }
// If there is no uploaded file, we have a problem... // If there is no uploaded file, we have a problem...
if (!is_array($userfile)) if (!is_array($userfile))
{ {
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_NO_FILE_SELECTED'), 'warning'); $app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_NO_FILE_SELECTED'), 'warning');
return false; return false;
} }
// Check if there was a problem uploading the file. // Check if there was a problem uploading the file.
if ($userfile['error'] || $userfile['size'] < 1) if ($userfile['error'] || $userfile['size'] < 1)
{ {
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_WARNIMPORTUPLOADERROR'), 'warning'); $app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_WARNIMPORTUPLOADERROR'), 'warning');
return false; return false;
} }
// Build the appropriate paths // Build the appropriate paths
$config = JFactory::getConfig(); $config = Factory::getConfig();
$tmp_dest = $config->get('tmp_path') . '/' . $userfile['name']; $tmp_dest = $config->get('tmp_path') . '/' . $userfile['name'];
$tmp_src = $userfile['tmp_name']; $tmp_src = $userfile['tmp_name'];
// Move uploaded file // Move uploaded file
jimport('joomla.filesystem.file');
$p_file = File::upload($tmp_src, $tmp_dest, $this->use_streams, $this->allow_unsafe, $this->safeFileOptions); $p_file = File::upload($tmp_src, $tmp_dest, $this->use_streams, $this->allow_unsafe, $this->safeFileOptions);
// Was the package downloaded? // Was the package downloaded?
if (!$p_file) if (!$p_file)
{ {
$session = JFactory::getSession(); $session = Factory::getSession();
$session->clear('package'); $session->clear('package');
$session->clear('dataType'); $session->clear('dataType');
$session->clear('hasPackage'); $session->clear('hasPackage');
@ -253,16 +252,16 @@ class ###Component###ModelImport extends BaseDatabaseModel
*/ */
protected function _getPackageFromFolder() protected function _getPackageFromFolder()
{ {
$app = JFactory::getApplication(); $app = Factory::getApplication();
$input = $app->input; $input = $app->input;
// Get the path to the package to import // Get the path to the package to import
$p_dir = $input->getString('import_directory'); $p_dir = $input->getString('import_directory');
$p_dir = JPath::clean($p_dir); $p_dir = Path::clean($p_dir);
// Did you give us a valid path? // Did you give us a valid path?
if (!file_exists($p_dir)) if (!file_exists($p_dir))
{ {
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_PLEASE_ENTER_A_PACKAGE_DIRECTORY'), 'warning'); $app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_PLEASE_ENTER_A_PACKAGE_DIRECTORY'), 'warning');
return false; return false;
} }
@ -272,17 +271,17 @@ class ###Component###ModelImport extends BaseDatabaseModel
// Did you give us a valid package? // Did you give us a valid package?
if (!$type) if (!$type)
{ {
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_PATH_DOES_NOT_HAVE_A_VALID_PACKAGE'), 'warning'); $app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_PATH_DOES_NOT_HAVE_A_VALID_PACKAGE'), 'warning');
} }
// check the extention // check the extention
if(!$this->checkExtension($p_dir)) if(!$this->checkExtension($p_dir))
{ {
// set error message // set error message
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning'); $app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning');
return false; return false;
} }
$package['packagename'] = null; $package['packagename'] = null;
$package['dir'] = $p_dir; $package['dir'] = $p_dir;
$package['type'] = $type; $package['type'] = $type;
@ -298,26 +297,26 @@ class ###Component###ModelImport extends BaseDatabaseModel
*/ */
protected function _getPackageFromUrl() protected function _getPackageFromUrl()
{ {
$app = JFactory::getApplication(); $app = Factory::getApplication();
$input = $app->input; $input = $app->input;
// Get the URL of the package to import // Get the URL of the package to import
$url = $input->getString('import_url'); $url = $input->getString('import_url');
// Did you give us a URL? // Did you give us a URL?
if (!$url) if (!$url)
{ {
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_ENTER_A_URL'), 'warning'); $app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_ENTER_A_URL'), 'warning');
return false; return false;
} }
// Download the package at the URL given // Download the package at the URL given
$p_file = JInstallerHelper::downloadPackage($url); $p_file = InstallerHelper::downloadPackage($url);
// Was the package downloaded? // Was the package downloaded?
if (!$p_file) if (!$p_file)
{ {
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_INVALID_URL'), 'warning'); $app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_INVALID_URL'), 'warning');
return false; return false;
} }
@ -326,7 +325,7 @@ class ###Component###ModelImport extends BaseDatabaseModel
return $package; return $package;
} }
/** /**
* Check a file and verifies it as a spreadsheet file * Check a file and verifies it as a spreadsheet file
* Supports .csv .xlsx .xls and .ods * Supports .csv .xlsx .xls and .ods
@ -338,29 +337,29 @@ class ###Component###ModelImport extends BaseDatabaseModel
*/ */
protected function check($archivename) protected function check($archivename)
{ {
$app = JFactory::getApplication(); $app = Factory::getApplication();
// Clean the name // Clean the name
$archivename = JPath::clean($archivename); $archivename = Path::clean($archivename);
// check the extention // check the extention
if(!$this->checkExtension($archivename)) if(!$this->checkExtension($archivename))
{ {
// Cleanup the import files // Cleanup the import files
$this->remove($archivename); $this->remove($archivename);
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning'); $app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning');
return false; return false;
} }
$config = JFactory::getConfig(); $config = Factory::getConfig();
// set Package Name // set Package Name
$check['packagename'] = $archivename; $check['packagename'] = $archivename;
// set directory // set directory
$check['dir'] = $config->get('tmp_path'). '/' .$archivename; $check['dir'] = $config->get('tmp_path'). '/' .$archivename;
// set type // set type
$check['type'] = $this->getType; $check['type'] = $this->getType;
return $check; return $check;
}###IMPORT_EXT_METHOD### }###IMPORT_EXT_METHOD###
@ -375,8 +374,8 @@ class ###Component###ModelImport extends BaseDatabaseModel
protected function remove($package) protected function remove($package)
{ {
jimport('joomla.filesystem.file'); jimport('joomla.filesystem.file');
$config = JFactory::getConfig(); $config = Factory::getConfig();
$package = $config->get('tmp_path'). '/' .$package; $package = $config->get('tmp_path'). '/' .$package;
// Is the package file a valid file? // Is the package file a valid file?
@ -384,23 +383,23 @@ class ###Component###ModelImport extends BaseDatabaseModel
{ {
File::delete($package); File::delete($package);
} }
elseif (is_file(JPath::clean($package))) elseif (is_file(Path::clean($package)))
{ {
// It might also be just a base filename // It might also be just a base filename
File::delete(JPath::clean($package)); File::delete(Path::clean($package));
} }
}###IMPORT_SETDATA_METHOD######IMPORT_SAVE_METHOD### }###IMPORT_SETDATA_METHOD######IMPORT_SAVE_METHOD###
protected function getAlias($name,$type = false) protected function getAlias($name,$type = false)
{ {
// sanitize the name to an alias // sanitize the name to an alias
if (JFactory::getConfig()->get('unicodeslugs') == 1) if (Factory::getConfig()->get('unicodeslugs') == 1)
{ {
$alias = JFilterOutput::stringURLUnicodeSlug($name); $alias = OutputFilter::stringURLUnicodeSlug($name);
} }
else else
{ {
$alias = JFilterOutput::stringURLSafe($name); $alias = OutputFilter::stringURLSafe($name);
} }
// must be a uniqe alias // must be a uniqe alias
if ($type) if ($type)
@ -409,7 +408,7 @@ class ###Component###ModelImport extends BaseDatabaseModel
} }
return $alias; return $alias;
} }
/** /**
* Method to generate a uniqe value. * Method to generate a uniqe value.
* *
@ -424,16 +423,16 @@ class ###Component###ModelImport extends BaseDatabaseModel
// insure the filed is always uniqe // insure the filed is always uniqe
while (isset($this->uniqeValueArray[$type][$field][$value])) while (isset($this->uniqeValueArray[$type][$field][$value]))
{ {
$value = JString::increment($value, 'dash'); $value = StringHelper::increment($value, 'dash');
} }
$this->uniqeValueArray[$type][$field][$value] = $value; $this->uniqeValueArray[$type][$field][$value] = $value;
return $value; return $value;
} }
protected function getAliasesUsed($table) protected function getAliasesUsed($table)
{ {
// Get a db connection. // Get a db connection.
$db = JFactory::getDbo(); $db = Factory::getDbo();
// first we check if there is a alias column // first we check if there is a alias column
$columns = $db->getTableColumns('#__###component###_'.$table); $columns = $db->getTableColumns('#__###component###_'.$table);
if(isset($columns['alias'])){ if(isset($columns['alias'])){

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -27,8 +27,8 @@ class ###Component###Model###View### extends BaseDatabaseModel
// set uploading values // set uploading values
protected $use_streams = false; protected $use_streams = false;
protected $allow_unsafe = false; protected $allow_unsafe = false;
protected $safeFileOptions = array(); protected $safeFileOptions = [];
/** /**
* @var object JTable object * @var object JTable object
*/ */
@ -45,13 +45,13 @@ class ###Component###Model###View### extends BaseDatabaseModel
* @var string * @var string
*/ */
protected $_context = 'com_###component###.###view###'; protected $_context = 'com_###component###.###view###';
/** /**
* Import Settings * Import Settings
*/ */
protected $getType = NULL; protected $getType = NULL;
protected $dataType = NULL; protected $dataType = NULL;
/** /**
* Method to auto-populate the model state. * Method to auto-populate the model state.
* *
@ -62,7 +62,7 @@ class ###Component###Model###View### extends BaseDatabaseModel
*/ */
protected function populateState() protected function populateState()
{ {
$app = JFactory::getApplication('administrator'); $app = Factory::getApplication('administrator');
$this->setState('message', $app->getUserState('com_###component###.message')); $this->setState('message', $app->getUserState('com_###component###.message'));
$app->setUserState('com_###component###.message', ''); $app->setUserState('com_###component###.message', '');
@ -72,7 +72,7 @@ class ###Component###Model###View### extends BaseDatabaseModel
$this->setState('import.directory', $path); $this->setState('import.directory', $path);
parent::populateState(); parent::populateState();
} }
###IMPORT_METHOD_CUSTOM### ###IMPORT_METHOD_CUSTOM###
/** /**
* Works out an importation spreadsheet from a HTTP upload * Works out an importation spreadsheet from a HTTP upload
@ -80,37 +80,37 @@ class ###Component###Model###View### extends BaseDatabaseModel
* @return spreadsheet definition or false on failure * @return spreadsheet definition or false on failure
*/ */
protected function _getPackageFromUpload() protected function _getPackageFromUpload()
{ {
// Get the uploaded file information // Get the uploaded file information
$app = JFactory::getApplication(); $app = Factory::getApplication();
$input = $app->input; $input = $app->input;
// Do not change the filter type 'raw'. We need this to let files containing PHP code to upload. See JInputFiles::get. // Do not change the filter type 'raw'. We need this to let files containing PHP code to upload. See JInputFiles::get.
$userfile = $input->files->get('import_package', null, 'raw'); $userfile = $input->files->get('import_package', null, 'raw');
// Make sure that file uploads are enabled in php // Make sure that file uploads are enabled in php
if (!(bool) ini_get('file_uploads')) if (!(bool) ini_get('file_uploads'))
{ {
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_WARNIMPORTFILE'), 'warning'); $app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_WARNIMPORTFILE'), 'warning');
return false; return false;
} }
// If there is no uploaded file, we have a problem... // If there is no uploaded file, we have a problem...
if (!is_array($userfile)) if (!is_array($userfile))
{ {
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_NO_FILE_SELECTED'), 'warning'); $app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_NO_FILE_SELECTED'), 'warning');
return false; return false;
} }
// Check if there was a problem uploading the file. // Check if there was a problem uploading the file.
if ($userfile['error'] || $userfile['size'] < 1) if ($userfile['error'] || $userfile['size'] < 1)
{ {
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_WARNIMPORTUPLOADERROR'), 'warning'); $app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_WARNIMPORTUPLOADERROR'), 'warning');
return false; return false;
} }
// Build the appropriate paths // Build the appropriate paths
$config = JFactory::getConfig(); $config = Factory::getConfig();
$tmp_dest = $config->get('tmp_path') . '/' . $userfile['name']; $tmp_dest = $config->get('tmp_path') . '/' . $userfile['name'];
$tmp_src = $userfile['tmp_name']; $tmp_src = $userfile['tmp_name'];
@ -120,7 +120,7 @@ class ###Component###Model###View### extends BaseDatabaseModel
// Was the package downloaded? // Was the package downloaded?
if (!$p_file) if (!$p_file)
{ {
$session = JFactory::getSession(); $session = Factory::getSession();
$session->clear('package'); $session->clear('package');
$session->clear('dataType'); $session->clear('dataType');
$session->clear('hasPackage'); $session->clear('hasPackage');
@ -142,16 +142,16 @@ class ###Component###Model###View### extends BaseDatabaseModel
*/ */
protected function _getPackageFromFolder() protected function _getPackageFromFolder()
{ {
$app = JFactory::getApplication(); $app = Factory::getApplication();
$input = $app->input; $input = $app->input;
// Get the path to the package to import // Get the path to the package to import
$p_dir = $input->getString('import_directory'); $p_dir = $input->getString('import_directory');
$p_dir = JPath::clean($p_dir); $p_dir = Path::clean($p_dir);
// Did you give us a valid path? // Did you give us a valid path?
if (!file_exists($p_dir)) if (!file_exists($p_dir))
{ {
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_PLEASE_ENTER_A_PACKAGE_DIRECTORY'), 'warning'); $app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_PLEASE_ENTER_A_PACKAGE_DIRECTORY'), 'warning');
return false; return false;
} }
@ -161,17 +161,17 @@ class ###Component###Model###View### extends BaseDatabaseModel
// Did you give us a valid package? // Did you give us a valid package?
if (!$type) if (!$type)
{ {
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_PATH_DOES_NOT_HAVE_A_VALID_PACKAGE'), 'warning'); $app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_PATH_DOES_NOT_HAVE_A_VALID_PACKAGE'), 'warning');
} }
// check the extention // check the extention
if(!$this->checkExtension($p_dir)) if(!$this->checkExtension($p_dir))
{ {
// set error message // set error message
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning'); $app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning');
return false; return false;
} }
$package['packagename'] = null; $package['packagename'] = null;
$package['dir'] = $p_dir; $package['dir'] = $p_dir;
$package['type'] = $type; $package['type'] = $type;
@ -187,7 +187,7 @@ class ###Component###Model###View### extends BaseDatabaseModel
*/ */
protected function _getPackageFromUrl() protected function _getPackageFromUrl()
{ {
$app = JFactory::getApplication(); $app = Factory::getApplication();
$input = $app->input; $input = $app->input;
// Get the URL of the package to import // Get the URL of the package to import
@ -196,17 +196,17 @@ class ###Component###Model###View### extends BaseDatabaseModel
// Did you give us a URL? // Did you give us a URL?
if (!$url) if (!$url)
{ {
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_ENTER_A_URL'), 'warning'); $app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_ENTER_A_URL'), 'warning');
return false; return false;
} }
// Download the package at the URL given // Download the package at the URL given
$p_file = JInstallerHelper::downloadPackage($url); $p_file = InstallerHelper::downloadPackage($url);
// Was the package downloaded? // Was the package downloaded?
if (!$p_file) if (!$p_file)
{ {
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_INVALID_URL'), 'warning'); $app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_INVALID_URL'), 'warning');
return false; return false;
} }
@ -215,7 +215,7 @@ class ###Component###Model###View### extends BaseDatabaseModel
return $package; return $package;
} }
/** /**
* Check a file and verifies it as a spreadsheet file * Check a file and verifies it as a spreadsheet file
* Supports .csv .xlsx .xls and .ods * Supports .csv .xlsx .xls and .ods
@ -227,29 +227,29 @@ class ###Component###Model###View### extends BaseDatabaseModel
*/ */
protected function check($archivename) protected function check($archivename)
{ {
$app = JFactory::getApplication(); $app = Factory::getApplication();
// Clean the name // Clean the name
$archivename = JPath::clean($archivename); $archivename = Path::clean($archivename);
// check the extention // check the extention
if(!$this->checkExtension($archivename)) if(!$this->checkExtension($archivename))
{ {
// Cleanup the import files // Cleanup the import files
$this->remove($archivename); $this->remove($archivename);
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning'); $app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning');
return false; return false;
} }
$config = JFactory::getConfig(); $config = Factory::getConfig();
// set Package Name // set Package Name
$check['packagename'] = $archivename; $check['packagename'] = $archivename;
// set directory // set directory
$check['dir'] = $config->get('tmp_path'). '/' .$archivename; $check['dir'] = $config->get('tmp_path'). '/' .$archivename;
// set type // set type
$check['type'] = $this->getType; $check['type'] = $this->getType;
return $check; return $check;
} }
###IMPORT_EXT_METHOD### ###IMPORT_EXT_METHOD###
@ -264,9 +264,7 @@ class ###Component###Model###View### extends BaseDatabaseModel
*/ */
protected function remove($package) protected function remove($package)
{ {
jimport('joomla.filesystem.file'); $config = Factory::getConfig();
$config = JFactory::getConfig();
$package = $config->get('tmp_path'). '/' .$package; $package = $config->get('tmp_path'). '/' .$package;
// Is the package file a valid file? // Is the package file a valid file?
@ -274,10 +272,10 @@ class ###Component###Model###View### extends BaseDatabaseModel
{ {
File::delete($package); File::delete($package);
} }
elseif (is_file(JPath::clean($package))) elseif (is_file(Path::clean($package)))
{ {
// It might also be just a base filename // It might also be just a base filename
File::delete(JPath::clean($package)); File::delete(Path::clean($package));
} }
} }
###IMPORT_SETDATA_METHOD### ###IMPORT_SETDATA_METHOD###
@ -286,13 +284,13 @@ class ###Component###Model###View### extends BaseDatabaseModel
protected function getAlias($name,$type = false) protected function getAlias($name,$type = false)
{ {
// sanitize the name to an alias // sanitize the name to an alias
if (JFactory::getConfig()->get('unicodeslugs') == 1) if (Factory::getConfig()->get('unicodeslugs') == 1)
{ {
$alias = JFilterOutput::stringURLUnicodeSlug($name); $alias = OutputFilter::stringURLUnicodeSlug($name);
} }
else else
{ {
$alias = JFilterOutput::stringURLSafe($name); $alias = OutputFilter::stringURLSafe($name);
} }
// must be a uniqe alias // must be a uniqe alias
if ($type) if ($type)
@ -301,7 +299,7 @@ class ###Component###Model###View### extends BaseDatabaseModel
} }
return $alias; return $alias;
} }
/** /**
* Method to generate a uniqe value. * Method to generate a uniqe value.
* *
@ -316,16 +314,16 @@ class ###Component###Model###View### extends BaseDatabaseModel
// insure the filed is always uniqe // insure the filed is always uniqe
while (isset($this->uniqeValueArray[$type][$field][$value])) while (isset($this->uniqeValueArray[$type][$field][$value]))
{ {
$value = JString::increment($value, 'dash'); $value = StringHelper::increment($value, 'dash');
} }
$this->uniqeValueArray[$type][$field][$value] = $value; $this->uniqeValueArray[$type][$field][$value] = $value;
return $value; return $value;
} }
protected function getAliasesUsed($table) protected function getAliasesUsed($table)
{ {
// Get a db connection. // Get a db connection.
$db = JFactory::getDbo(); $db = Factory::getDbo();
// first we check if there is a alias column // first we check if there is a alias column
$columns = $db->getTableColumns('#__###component###_'.$table); $columns = $db->getTableColumns('#__###component###_'.$table);
if(isset($columns['alias'])){ if(isset($columns['alias'])){

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -22,7 +22,7 @@ defined('_JEXEC') or die('Restricted access');
/** /**
* ###Component### View class * ###Component### View class
*/ */
class ###Component###View###Component### extends JViewLegacy class ###Component###View###Component### extends HtmlView
{ {
/** /**
* View display method * View display method
@ -31,15 +31,15 @@ class ###Component###View###Component### extends JViewLegacy
function display($tpl = null) function display($tpl = null)
{ {
// Assign data to the view // Assign data to the view
$this->icons = $this->get('Icons'); $this->icons = $this->get('Icons');
$this->contributors = ###Component###Helper::getContributors();###DASH_GET_CUSTOM_DATA### $this->contributors = ###Component###Helper::getContributors();###DASH_GET_CUSTOM_DATA###
// get the manifest details of the component // get the manifest details of the component
$this->manifest = ###Component###Helper::manifest(); $this->manifest = ###Component###Helper::manifest();
// Set the toolbar // Set the toolbar
$this->addToolBar(); $this->addToolBar();
// Check for errors. // Check for errors.
if (count($errors = $this->get('Errors'))) if (count($errors = $this->get('Errors')))
{ {
@ -59,18 +59,18 @@ class ###Component###View###Component### extends JViewLegacy
protected function addToolBar() protected function addToolBar()
{ {
$canDo = ###Component###Helper::getActions('###component###'); $canDo = ###Component###Helper::getActions('###component###');
JToolBarHelper::title(JText::_('COM_###COMPONENT###_DASHBOARD'), 'grid-2'); ToolbarHelper::title(Text::_('COM_###COMPONENT###_DASHBOARD'), 'grid-2');
// set help url for this view if found // set help url for this view if found
$this->help_url = ###Component###Helper::getHelpUrl('###component###'); $this->help_url = ###Component###Helper::getHelpUrl('###component###');
if (###Component###Helper::checkString($this->help_url)) if (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($this->help_url))
{ {
JToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url); ToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url);
} }
if ($canDo->get('core.admin') || $canDo->get('core.options')) if ($canDo->get('core.admin') || $canDo->get('core.options'))
{ {
JToolBarHelper::preferences('com_###component###'); ToolbarHelper::preferences('com_###component###');
} }
} }
@ -81,15 +81,17 @@ class ###Component###View###Component### extends JViewLegacy
*/ */
protected function setDocument() protected function setDocument()
{ {
$document = JFactory::getDocument(); if (!isset($this->document))
{
// add dashboard style sheets $this->document = Factory::getDocument();
$document->addStyleSheet(JURI::root() . "administrator/components/com_###component###/assets/css/dashboard.css"); }
// set page title // set page title
$document->setTitle(JText::_('COM_###COMPONENT###_DASHBOARD')); $this->document->setTitle(Text::_('COM_###COMPONENT###_DASHBOARD'));
// add manifest to page JavaScript // add manifest to page JavaScript
$document->addScriptDeclaration("var manifest = jQuery.parseJSON('" . json_encode($this->manifest) . "');", "text/javascript"); $this->document->addScriptDeclaration("var manifest = jQuery.parseJSON('" . json_encode($this->manifest) . "');", "text/javascript");
// add dashboard style sheets
Html::_('stylesheet', "administrator/components/com_###component###/assets/css/dashboard.css", ['version' => 'auto']);
} }
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -40,13 +40,13 @@ class ###Component###Controller###View### extends FormController
* *
* @since 1.6 * @since 1.6
*/ */
public function __construct($config = array()) public function __construct($config = [])
{ {
$this->view_list = '###Views###'; // safeguard for setting the return view listing to the main view. $this->view_list = '###Views###'; // safeguard for setting the return view listing to the main view.
parent::__construct($config); parent::__construct($config);
}###ADMIN_CUSTOM_BUTTONS_CONTROLLER### }###ADMIN_CUSTOM_BUTTONS_CONTROLLER###
/** /**
* Method override to check if you can add a new record. * Method override to check if you can add a new record.
* *
* @param array $data An array of input data. * @param array $data An array of input data.
@ -55,7 +55,7 @@ class ###Component###Controller###View### extends FormController
* *
* @since 1.6 * @since 1.6
*/ */
protected function allowAdd($data = array()) protected function allowAdd($data = [])
{###JCONTROLLERFORM_ALLOWADD### {###JCONTROLLERFORM_ALLOWADD###
} }
@ -69,7 +69,7 @@ class ###Component###Controller###View### extends FormController
* *
* @since 1.6 * @since 1.6
*/ */
protected function allowEdit($data = array(), $key = 'id') protected function allowEdit($data = [], $key = 'id')
{###JCONTROLLERFORM_ALLOWEDIT### {###JCONTROLLERFORM_ALLOWEDIT###
} }
@ -94,12 +94,12 @@ class ###Component###Controller###View### extends FormController
// set the referral options // set the referral options
if ($refid && $ref) if ($refid && $ref)
{ {
$append = '&ref=' . (string)$ref . '&refid='. (int)$refid . $append; $append = '&ref=' . (string) $ref . '&refid='. (int) $refid . $append;
} }
elseif ($ref) elseif ($ref)
{ {
$append = '&ref='. (string)$ref . $append; $append = '&ref='. (string) $ref . $append;
} }
return $append; return $append;
@ -116,13 +116,13 @@ class ###Component###Controller###View### extends FormController
*/ */
public function batch($model = null) public function batch($model = null)
{ {
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
// Set the model // Set the model
$model = $this->getModel('###View###', '', array()); $model = $this->getModel('###View###', '', []);
// Preset the redirect // Preset the redirect
$this->setRedirect(JRoute::_('index.php?option=com_###component###&view=###views###' . $this->getRedirectToListAppend(), false)); $this->setRedirect(Route::_('index.php?option=com_###component###&view=###views###' . $this->getRedirectToListAppend(), false));
return parent::batch($model); return parent::batch($model);
} }
@ -147,13 +147,13 @@ class ###Component###Controller###View### extends FormController
$cancel = parent::cancel($key); $cancel = parent::cancel($key);
if (!is_null($return) && JUri::isInternal(base64_decode($return))) if (!is_null($return) && Uri::isInternal(base64_decode($return)))
{ {
$redirect = base64_decode($return); $redirect = base64_decode($return);
// Redirect to the return value. // Redirect to the return value.
$this->setRedirect( $this->setRedirect(
JRoute::_( Route::_(
$redirect, false $redirect, false
) )
); );
@ -164,7 +164,7 @@ class ###Component###Controller###View### extends FormController
// Redirect to the item screen. // Redirect to the item screen.
$this->setRedirect( $this->setRedirect(
JRoute::_( Route::_(
'index.php?option=' . $this->option . $redirect, false 'index.php?option=' . $this->option . $redirect, false
) )
); );
@ -175,7 +175,7 @@ class ###Component###Controller###View### extends FormController
// Redirect to the list screen. // Redirect to the list screen.
$this->setRedirect( $this->setRedirect(
JRoute::_( Route::_(
'index.php?option=' . $this->option . $redirect, false 'index.php?option=' . $this->option . $redirect, false
) )
); );
@ -201,7 +201,7 @@ class ###Component###Controller###View### extends FormController
// Check if there is a return value // Check if there is a return value
$return = $this->input->get('return', null, 'base64'); $return = $this->input->get('return', null, 'base64');
$canReturn = (!is_null($return) && JUri::isInternal(base64_decode($return))); $canReturn = (!is_null($return) && Uri::isInternal(base64_decode($return)));
if ($this->ref || $this->refid || $canReturn) if ($this->ref || $this->refid || $canReturn)
{ {
@ -219,29 +219,29 @@ class ###Component###Controller###View### extends FormController
// Redirect to the return value. // Redirect to the return value.
$this->setRedirect( $this->setRedirect(
JRoute::_( Route::_(
$redirect, false $redirect, false
) )
); );
} }
elseif ($this->refid && $this->ref) elseif ($this->refid && $this->ref)
{ {
$redirect = '&view=' . (string)$this->ref . '&layout=edit&id=' . (int)$this->refid; $redirect = '&view=' . (string) $this->ref . '&layout=edit&id=' . (int) $this->refid;
// Redirect to the item screen. // Redirect to the item screen.
$this->setRedirect( $this->setRedirect(
JRoute::_( Route::_(
'index.php?option=' . $this->option . $redirect, false 'index.php?option=' . $this->option . $redirect, false
) )
); );
} }
elseif ($this->ref) elseif ($this->ref)
{ {
$redirect = '&view=' . (string)$this->ref; $redirect = '&view=' . (string) $this->ref;
// Redirect to the list screen. // Redirect to the list screen.
$this->setRedirect( $this->setRedirect(
JRoute::_( Route::_(
'index.php?option=' . $this->option . $redirect, false 'index.php?option=' . $this->option . $redirect, false
) )
); );
@ -253,15 +253,14 @@ class ###Component###Controller###View### extends FormController
* Function that allows child controller access to model data * Function that allows child controller access to model data
* after the data has been saved. * after the data has been saved.
* *
* @param JModel &$model The data model object. * @param BaseDatabaseModel &$model The data model object.
* @param array $validData The validated data. * @param array $validData The validated data.
* *
* @return void * @return void
* *
* @since 11.1 * @since 11.1
*/ */
protected function postSaveHook(JModelLegacy $model, $validData = array()) protected function postSaveHook(BaseDatabaseModel $model, $validData = [])
{###POSTSAVEHOOK### {###POSTSAVEHOOK###
} }
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -33,7 +33,7 @@ class ###Component###Controller###SView### extends FormController
*/ */
protected $task; protected $task;
public function __construct($config = array()) public function __construct($config = [])
{ {
$this->view_list = '###SITE_DEFAULT_VIEW###'; // safeguard for setting the return view listing to the default site view. $this->view_list = '###SITE_DEFAULT_VIEW###'; // safeguard for setting the return view listing to the default site view.
parent::__construct($config); parent::__construct($config);
@ -51,13 +51,13 @@ class ###Component###Controller###SView### extends FormController
* *
* @since 12.2 * @since 12.2
*/ */
protected function allowEdit($data = array(), $key = 'id') protected function allowEdit($data = [], $key = 'id')
{ {
// to insure no other tampering // to insure no other tampering
return false; return false;
} }
/** /**
* Method override to check if you can add a new record. * Method override to check if you can add a new record.
* *
* @param array $data An array of input data. * @param array $data An array of input data.
@ -66,7 +66,7 @@ class ###Component###Controller###SView### extends FormController
* *
* @since 1.6 * @since 1.6
*/ */
protected function allowAdd($data = array()) protected function allowAdd($data = [])
{ {
// to insure no other tampering // to insure no other tampering
return false; return false;
@ -94,14 +94,14 @@ class ###Component###Controller###SView### extends FormController
* Function that allows child controller access to model data * Function that allows child controller access to model data
* after the data has been saved. * after the data has been saved.
* *
* @param JModelLegacy $model The data model object. * @param BaseDatabaseModel &$model The data model object.
* @param array $validData The validated data. * @param array $validData The validated data.
* *
* @return void * @return void
* *
* @since 12.2 * @since 11.1
*/ */
protected function postSaveHook(JModelLegacy $model, $validData = array()) protected function postSaveHook(BaseDatabaseModel $model, $validData = [])
{ {
} }
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -40,13 +40,13 @@ class ###Component###Controller###View### extends FormController
* *
* @since 1.6 * @since 1.6
*/ */
public function __construct($config = array()) public function __construct($config = [])
{ {
$this->view_list = '###SITE_DEFAULT_VIEW###'; // safeguard for setting the return view listing to the default site view. $this->view_list = '###SITE_DEFAULT_VIEW###'; // safeguard for setting the return view listing to the default site view.
parent::__construct($config); parent::__construct($config);
}###ADMIN_CUSTOM_BUTTONS_CONTROLLER### }###ADMIN_CUSTOM_BUTTONS_CONTROLLER###
/** /**
* Method override to check if you can add a new record. * Method override to check if you can add a new record.
* *
* @param array $data An array of input data. * @param array $data An array of input data.
@ -55,7 +55,7 @@ class ###Component###Controller###View### extends FormController
* *
* @since 1.6 * @since 1.6
*/ */
protected function allowAdd($data = array()) protected function allowAdd($data = [])
{###JCONTROLLERFORM_ALLOWADD### {###JCONTROLLERFORM_ALLOWADD###
} }
@ -69,7 +69,7 @@ class ###Component###Controller###View### extends FormController
* *
* @since 1.6 * @since 1.6
*/ */
protected function allowEdit($data = array(), $key = 'id') protected function allowEdit($data = [], $key = 'id')
{###JCONTROLLERFORM_ALLOWEDIT### {###JCONTROLLERFORM_ALLOWEDIT###
} }
@ -94,12 +94,12 @@ class ###Component###Controller###View### extends FormController
// set the referral options // set the referral options
if ($refid && $ref) if ($refid && $ref)
{ {
$append = '&ref=' . (string)$ref . '&refid='. (int)$refid . $append; $append = '&ref=' . (string) $ref . '&refid='. (int) $refid . $append;
} }
elseif ($ref) elseif ($ref)
{ {
$append = '&ref='. (string)$ref . $append; $append = '&ref='. (string) $ref . $append;
} }
return $append; return $append;
@ -116,13 +116,13 @@ class ###Component###Controller###View### extends FormController
*/ */
public function batch($model = null) public function batch($model = null)
{ {
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
// Set the model // Set the model
$model = $this->getModel('###View###', '', array()); $model = $this->getModel('###View###', '', []);
// Preset the redirect // Preset the redirect
$this->setRedirect(JRoute::_('index.php?option=com_###component###&view=###views###' . $this->getRedirectToListAppend(), false)); $this->setRedirect(Route::_('index.php?option=com_###component###&view=###views###' . $this->getRedirectToListAppend(), false));
return parent::batch($model); return parent::batch($model);
} }
@ -147,35 +147,35 @@ class ###Component###Controller###View### extends FormController
$cancel = parent::cancel($key); $cancel = parent::cancel($key);
if (!is_null($return) && JUri::isInternal(base64_decode($return))) if (!is_null($return) && Uri::isInternal(base64_decode($return)))
{ {
$redirect = base64_decode($return); $redirect = base64_decode($return);
// Redirect to the return value. // Redirect to the return value.
$this->setRedirect( $this->setRedirect(
JRoute::_( Route::_(
$redirect, false $redirect, false
) )
); );
} }
elseif ($this->refid && $this->ref) elseif ($this->refid && $this->ref)
{ {
$redirect = '&view=' . (string)$this->ref . '&layout=edit&id=' . (int)$this->refid; $redirect = '&view=' . (string) $this->ref . '&layout=edit&id=' . (int) $this->refid;
// Redirect to the item screen. // Redirect to the item screen.
$this->setRedirect( $this->setRedirect(
JRoute::_( Route::_(
'index.php?option=' . $this->option . $redirect, false 'index.php?option=' . $this->option . $redirect, false
) )
); );
} }
elseif ($this->ref) elseif ($this->ref)
{ {
$redirect = '&view=' . (string)$this->ref; $redirect = '&view=' . (string) $this->ref;
// Redirect to the list screen. // Redirect to the list screen.
$this->setRedirect( $this->setRedirect(
JRoute::_( Route::_(
'index.php?option=' . $this->option . $redirect, false 'index.php?option=' . $this->option . $redirect, false
) )
); );
@ -201,7 +201,7 @@ class ###Component###Controller###View### extends FormController
// Check if there is a return value // Check if there is a return value
$return = $this->input->get('return', null, 'base64'); $return = $this->input->get('return', null, 'base64');
$canReturn = (!is_null($return) && JUri::isInternal(base64_decode($return))); $canReturn = (!is_null($return) && Uri::isInternal(base64_decode($return)));
if ($this->ref || $this->refid || $canReturn) if ($this->ref || $this->refid || $canReturn)
{ {
@ -219,29 +219,29 @@ class ###Component###Controller###View### extends FormController
// Redirect to the return value. // Redirect to the return value.
$this->setRedirect( $this->setRedirect(
JRoute::_( Route::_(
$redirect, false $redirect, false
) )
); );
} }
elseif ($this->refid && $this->ref) elseif ($this->refid && $this->ref)
{ {
$redirect = '&view=' . (string)$this->ref . '&layout=edit&id=' . (int)$this->refid; $redirect = '&view=' . (string) $this->ref . '&layout=edit&id=' . (int) $this->refid;
// Redirect to the item screen. // Redirect to the item screen.
$this->setRedirect( $this->setRedirect(
JRoute::_( Route::_(
'index.php?option=' . $this->option . $redirect, false 'index.php?option=' . $this->option . $redirect, false
) )
); );
} }
elseif ($this->ref) elseif ($this->ref)
{ {
$redirect = '&view=' . (string)$this->ref; $redirect = '&view=' . (string) $this->ref;
// Redirect to the list screen. // Redirect to the list screen.
$this->setRedirect( $this->setRedirect(
JRoute::_( Route::_(
'index.php?option=' . $this->option . $redirect, false 'index.php?option=' . $this->option . $redirect, false
) )
); );
@ -253,14 +253,14 @@ class ###Component###Controller###View### extends FormController
* Function that allows child controller access to model data * Function that allows child controller access to model data
* after the data has been saved. * after the data has been saved.
* *
* @param JModel &$model The data model object. * @param BaseDatabaseModel &$model The data model object.
* @param array $validData The validated data. * @param array $validData The validated data.
* *
* @return void * @return void
* *
* @since 11.1 * @since 11.1
*/ */
protected function postSaveHook(JModelLegacy $model, $validData = array()) protected function postSaveHook(BaseDatabaseModel $model, $validData = [])
{###POSTSAVEHOOK### {###POSTSAVEHOOK###
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -15,7 +15,9 @@ defined('_JEXEC') or die('Restricted access');
###BOM### ###BOM###
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access');###ADMIN_POWER_HELPER### defined('_JEXEC') or die('Restricted access');
###POWER_AUTOLOADER###
###ADMIN_HELPER_CLASS_HEADER### ###ADMIN_HELPER_CLASS_HEADER###
@ -29,7 +31,7 @@ abstract class ###Component###Helper
* *
* @var array * @var array
*/ */
protected static $composer = array(); protected static $composer = [];
/** /**
* The Main Active Language * The Main Active Language
@ -80,7 +82,7 @@ abstract class ###Component###Helper
// check if set // check if set
if (!Super___91004529_94a9_4590_b842_e7c6b624ecf5___Power::check(self::$JVersion)) if (!Super___91004529_94a9_4590_b842_e7c6b624ecf5___Power::check(self::$JVersion))
{ {
self::$JVersion = new JVersion(); self::$JVersion = new Version();
} }
return self::$JVersion; return self::$JVersion;
} }
@ -91,18 +93,18 @@ abstract class ###Component###Helper
public static function getContributors() public static function getContributors()
{ {
// get params // get params
$params = JComponentHelper::getParams('com_###component###'); $params = ComponentHelper::getParams('com_###component###');
// start contributors array // start contributors array
$contributors = array(); $contributors = [];
// get all Contributors (max 20) // get all Contributors (max 20)
$searchArray = range('0','20'); $searchArray = range('0','20');
foreach($searchArray as $nr) foreach($searchArray as $nr)
{ {
if ((NULL !== $params->get("showContributor".$nr)) && ($params->get("showContributor".$nr) == 1 || $params->get("showContributor".$nr) == 3)) if ((NULL !== $params->get("showContributor".$nr)) && ($params->get("showContributor".$nr) == 1 || $params->get("showContributor".$nr) == 3))
{ {
// set link based of selected option // set link based of selected option
if($params->get("useContributor".$nr) == 1) if($params->get("useContributor".$nr) == 1)
{ {
$link_front = '<a href="mailto:'.$params->get("emailContributor".$nr).'" target="_blank">'; $link_front = '<a href="mailto:'.$params->get("emailContributor".$nr).'" target="_blank">';
$link_back = '</a>'; $link_back = '</a>';
} }
@ -116,8 +118,8 @@ abstract class ###Component###Helper
$link_front = ''; $link_front = '';
$link_back = ''; $link_back = '';
} }
$contributors[$nr]['title'] = Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html($params->get("titleContributor".$nr)); $contributors[$nr]['title'] = Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html($params->get("titleContributor".$nr));
$contributors[$nr]['name'] = $link_front.Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html($params->get("nameContributor".$nr)).$link_back; $contributors[$nr]['name'] = $link_front.Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html($params->get("nameContributor".$nr)).$link_back;
} }
} }
return $contributors; return $contributors;
@ -129,7 +131,7 @@ abstract class ###Component###Helper
public static function addSubmenu($submenu) public static function addSubmenu($submenu)
{ {
// load user for access menus // load user for access menus
$user = JFactory::getUser(); $user = Factory::getUser();
// load the submenus to sidebar // load the submenus to sidebar
###SUBMENU### ###SUBMENU###
}###HELPER_CREATEUSER######HELPER_UIKIT######HELPER_EXEL### }###HELPER_CREATEUSER######HELPER_UIKIT######HELPER_EXEL###
@ -211,7 +213,7 @@ abstract class ###Component###Helper
{ {
$type = 'item'; $type = 'item';
} }
$db = JFactory::getDbo(); $db = Factory::getDbo();
$query = $db->getQuery(true); $query = $db->getQuery(true);
$query->select(array('a.published')); $query->select(array('a.published'));
$query->from('#__###component###_'.$type.' AS a'); $query->from('#__###component###_'.$type.' AS a');
@ -229,7 +231,7 @@ abstract class ###Component###Helper
public static function getGroupName($id) public static function getGroupName($id)
{ {
$db = JFactory::getDBO(); $db = Factory::getDBO();
$query = $db->getQuery(true); $query = $db->getQuery(true);
$query->select(array('a.title')); $query->select(array('a.title'));
$query->from('#__usergroups AS a'); $query->from('#__usergroups AS a');
@ -238,7 +240,7 @@ abstract class ###Component###Helper
$db->execute(); $db->execute();
$found = $db->getNumRows(); $found = $db->getNumRows();
if($found) if($found)
{ {
return $db->loadResult(); return $db->loadResult();
} }
return $id; return $id;
@ -254,7 +256,7 @@ abstract class ###Component###Helper
* @param string $component The target component * @param string $component The target component
* @param object $user The user whose permissions we are loading * @param object $user The user whose permissions we are loading
* *
* @return object The JObject of permission/authorised actions * @return object The CMSObject of permission/authorised actions
* *
*/ */
public static function getActions($view, &$record = null, $views = null, $target = null, $component = '###component###', $user = 'null') public static function getActions($view, &$record = null, $views = null, $target = null, $component = '###component###', $user = 'null')
@ -263,22 +265,22 @@ abstract class ###Component###Helper
if (!Super___91004529_94a9_4590_b842_e7c6b624ecf5___Power::check($user)) if (!Super___91004529_94a9_4590_b842_e7c6b624ecf5___Power::check($user))
{ {
// get the user object // get the user object
$user = JFactory::getUser(); $user = Factory::getUser();
} }
// load the JObject // load the CMSObject
$result = new JObject; $result = new CMSObject;
// make view name safe (just incase) // make view name safe (just incase)
$view = Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe($view); $view = Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe($view);
if (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($views)) if (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($views))
{ {
$views = Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe($views); $views = Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe($views);
} }
// get all actions from component // get all actions from component
$actions = JAccess::getActionsFromFile( $actions = Access::getActionsFromFile(
JPATH_ADMINISTRATOR . '/components/com_' . $component . '/access.xml', JPATH_ADMINISTRATOR . '/components/com_' . $component . '/access.xml',
"/access/section[@name='component']/" "/access/section[@name='component']/"
); );
// if non found then return empty JObject // if non found then return empty CMSObject
if (empty($actions)) if (empty($actions))
{ {
return $result; return $result;
@ -445,14 +447,14 @@ abstract class ###Component###Helper
/** /**
* Get any component's model * Get any component's model
*/ */
public static function getModel($name, $path = JPATH_COMPONENT_ADMINISTRATOR, $Component = '###Component###', $config = array()) public static function getModel($name, $path = JPATH_COMPONENT_ADMINISTRATOR, $Component = '###Component###', $config = [])
{ {
// fix the name // fix the name
$name = Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe($name); $name = Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe($name);
// full path to models // full path to models
$fullPathModels = $path . '/models'; $fullPathModels = $path . '/models';
// load the model file // load the model file
JModelLegacy::addIncludePath($fullPathModels, $Component . 'Model'); BaseDatabaseModel::addIncludePath($fullPathModels, $Component . 'Model');
// make sure the table path is loaded // make sure the table path is loaded
if (!isset($config['table_path']) || !Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($config['table_path'])) if (!isset($config['table_path']) || !Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($config['table_path']))
{ {
@ -460,7 +462,7 @@ abstract class ###Component###Helper
$config['table_path'] = JPATH_ADMINISTRATOR . '/components/com_' . strtolower($Component) . '/tables'; $config['table_path'] = JPATH_ADMINISTRATOR . '/components/com_' . strtolower($Component) . '/tables';
} }
// get instance // get instance
$model = JModelLegacy::getInstance($name, $Component . 'Model', $config); $model = BaseDatabaseModel::getInstance($name, $Component . 'Model', $config);
// if model not found (strange) // if model not found (strange)
if ($model == false) if ($model == false)
{ {
@ -495,14 +497,14 @@ abstract class ###Component###Helper
*/ */
public static function setAsset($id, $table, $inherit = true) public static function setAsset($id, $table, $inherit = true)
{ {
$parent = JTable::getInstance('Asset'); $parent = Table::getInstance('Asset');
$parent->loadByName('com_###component###'); $parent->loadByName('com_###component###');
$parentId = $parent->id; $parentId = $parent->id;
$name = 'com_###component###.'.$table.'.'.$id; $name = 'com_###component###.'.$table.'.'.$id;
$title = ''; $title = '';
$asset = JTable::getInstance('Asset'); $asset = Table::getInstance('Asset');
$asset->loadByName($name); $asset->loadByName($name);
// Check for an error. // Check for an error.
@ -526,14 +528,14 @@ abstract class ###Component###Helper
$asset->title = $title; $asset->title = $title;
// get the default asset rules // get the default asset rules
$rules = self::getDefaultAssetRules('com_###component###', $table, $inherit); $rules = self::getDefaultAssetRules('com_###component###', $table, $inherit);
if ($rules instanceof JAccessRules) if ($rules instanceof AccessRules)
{ {
$asset->rules = (string) $rules; $asset->rules = (string) $rules;
} }
if (!$asset->check() || !$asset->store()) if (!$asset->check() || !$asset->store())
{ {
JFactory::getApplication()->enqueueMessage($asset->getError(), 'warning'); Factory::getApplication()->enqueueMessage($asset->getError(), 'warning');
return false; return false;
} }
else else
@ -546,7 +548,7 @@ abstract class ###Component###Helper
$object->asset_id = (int) $asset->id; $object->asset_id = (int) $asset->id;
// Update their asset_id to link to the asset table. // Update their asset_id to link to the asset table.
return JFactory::getDbo()->updateObject('#__###component###_'.$table, $object, 'id'); return Factory::getDbo()->updateObject('#__###component###_'.$table, $object, 'id');
} }
} }
return false; return false;
@ -563,7 +565,7 @@ abstract class ###Component###Helper
if (!$inherit) if (!$inherit)
{ {
// Need to find the asset id by the name of the component. // Need to find the asset id by the name of the component.
$db = JFactory::getDbo(); $db = Factory::getDbo();
$query = $db->getQuery(true) $query = $db->getQuery(true)
->select($db->quoteName('id')) ->select($db->quoteName('id'))
->from($db->quoteName('#__assets')) ->from($db->quoteName('#__assets'))
@ -578,8 +580,8 @@ abstract class ###Component###Helper
} }
} }
// get asset rules // get asset rules
$result = JAccess::getAssetRules($assetId); $result = Access::getAssetRules($assetId);
if ($result instanceof JAccessRules) if ($result instanceof AccessRules)
{ {
$_result = (string) $result; $_result = (string) $result;
$_result = json_decode($_result); $_result = json_decode($_result);
@ -594,7 +596,7 @@ abstract class ###Component###Helper
elseif ($inherit) elseif ($inherit)
{ {
// clear the value since we inherit // clear the value since we inherit
$rule = array(); $rule = [];
} }
} }
// check if there are any view values remaining // check if there are any view values remaining
@ -602,8 +604,8 @@ abstract class ###Component###Helper
{ {
$_result = json_encode($_result); $_result = json_encode($_result);
$_result = array($_result); $_result = array($_result);
// Instantiate and return the JAccessRules object for the asset rules. // Instantiate and return the AccessRules object for the asset rules.
$rules = new JAccessRules($_result); $rules = new AccessRules($_result);
// return filtered rules // return filtered rules
return $rules; return $rules;
} }
@ -648,7 +650,7 @@ abstract class ###Component###Helper
* @return null * @return null
* @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::attributes($xml, $attributes); * @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::attributes($xml, $attributes);
*/ */
public static function xmlAddAttributes(&$xml, $attributes = array()) public static function xmlAddAttributes(&$xml, $attributes = [])
{ {
Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::attributes($xml, $attributes); Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::attributes($xml, $attributes);
} }
@ -662,7 +664,7 @@ abstract class ###Component###Helper
* @return void * @return void
* @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::options($xml, $options); * @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::options($xml, $options);
*/ */
public static function xmlAddOptions(&$xml, $options = array()) public static function xmlAddOptions(&$xml, $options = [])
{ {
Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::options($xml, $options); Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::options($xml, $options);
} }
@ -733,7 +735,7 @@ abstract class ###Component###Helper
/** /**
* Check if have an json string * Check if have an json string
* *
* @input string The json string to check * @input string The json string to check
* *
* @returns bool true on success * @returns bool true on success
* @deprecated 3.3 Use Super___4b225c51_d293_48e4_b3f6_5136cf5c3f18___Power::check($string); * @deprecated 3.3 Use Super___4b225c51_d293_48e4_b3f6_5136cf5c3f18___Power::check($string);
@ -746,7 +748,7 @@ abstract class ###Component###Helper
/** /**
* Check if have an object with a length * Check if have an object with a length
* *
* @input object The object to check * @input object The object to check
* *
* @returns bool true on success * @returns bool true on success
* @deprecated 3.3 Use Super___91004529_94a9_4590_b842_e7c6b624ecf5___Power::check($object); * @deprecated 3.3 Use Super___91004529_94a9_4590_b842_e7c6b624ecf5___Power::check($object);
@ -759,7 +761,7 @@ abstract class ###Component###Helper
/** /**
* Check if have an array with a length * Check if have an array with a length
* *
* @input array The array to check * @input array The array to check
* *
* @returns bool/int number of items in array on success * @returns bool/int number of items in array on success
* @deprecated 3.3 Use Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::check($array, $removeEmptyString); * @deprecated 3.3 Use Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::check($array, $removeEmptyString);
@ -772,7 +774,7 @@ abstract class ###Component###Helper
/** /**
* Check if have a string with a length * Check if have a string with a length
* *
* @input string The string to check * @input string The string to check
* *
* @returns bool true on success * @returns bool true on success
* @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($string); * @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($string);
@ -792,7 +794,7 @@ abstract class ###Component###Helper
{ {
// If example.com is down, then probably the whole internet is down, since IANA maintains the domain. Right? // If example.com is down, then probably the whole internet is down, since IANA maintains the domain. Right?
$connected = @fsockopen("www.example.com", 80); $connected = @fsockopen("www.example.com", 80);
// website, port (try 80 or 443) // website, port (try 80 or 443)
if ($connected) if ($connected)
{ {
//action when connected //action when connected
@ -810,7 +812,7 @@ abstract class ###Component###Helper
/** /**
* Merge an array of array's * Merge an array of array's
* *
* @input array The arrays you would like to merge * @input array The arrays you would like to merge
* *
* @returns array on success * @returns array on success
* @deprecated 3.3 Use Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::merge($arrays); * @deprecated 3.3 Use Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::merge($arrays);
@ -829,7 +831,7 @@ abstract class ###Component###Helper
/** /**
* Shorten a string * Shorten a string
* *
* @input string The you would like to shorten * @input string The you would like to shorten
* *
* @returns string on success * @returns string on success
* @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::shorten(...); * @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::shorten(...);
@ -842,7 +844,7 @@ abstract class ###Component###Helper
/** /**
* Making strings safe (various ways) * Making strings safe (various ways)
* *
* @input string The you would like to make safe * @input string The you would like to make safe
* *
* @returns string on success * @returns string on success
* @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe(...); * @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe(...);
@ -861,7 +863,7 @@ abstract class ###Component###Helper
/** /**
* Convert none English strings to code usable string * Convert none English strings to code usable string
* *
* @input an string * @input an string
* *
* @returns a string * @returns a string
* @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::transliterate($string); * @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::transliterate($string);
@ -874,7 +876,7 @@ abstract class ###Component###Helper
/** /**
* make sure a string is HTML save * make sure a string is HTML save
* *
* @input an html string * @input an html string
* *
* @returns a string * @returns a string
* @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html(...); * @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html(...);
@ -892,7 +894,7 @@ abstract class ###Component###Helper
/** /**
* Convert all int in a string to an English word string * Convert all int in a string to an English word string
* *
* @input an string with numbers * @input an string with numbers
* *
* @returns a string * @returns a string
* @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::numbers($string); * @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::numbers($string);
@ -906,7 +908,7 @@ abstract class ###Component###Helper
* Convert an integer into an English word string * Convert an integer into an English word string
* Thanks to Tom Nicholson <http://php.net/manual/en/function.strval.php#41988> * Thanks to Tom Nicholson <http://php.net/manual/en/function.strval.php#41988>
* *
* @input an int * @input an int
* @returns a string * @returns a string
* @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::number($x); * @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::number($x);
*/ */

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -28,7 +28,7 @@ class ###Component######View###Categories extends JCategories
* @param array $options Array of options * @param array $options Array of options
* *
*/ */
public function __construct($options = array()) public function __construct($options = [])
{ {
$options['table'] = '#__###component###_###view###'; $options['table'] = '#__###component###_###view###';
$options['extension'] = 'com_###component###.###view###'; $options['extension'] = 'com_###component###.###view###';

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,6 +17,11 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access'); defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Mail\Mail;
use Joomla\Registry\Registry;
/** /**
* ###Component### component email helper * ###Component### component email helper
*/ */
@ -27,28 +32,28 @@ abstract class ###Component###Email
* *
* @var activeRecipient (array) * @var activeRecipient (array)
*/ */
public static $active = array(); public static $active = [];
/** /**
* Configuraiton object * Configuraiton object
* *
* @var JConfig * @var Registry
*/ */
public static $config = null; public static ?Registry $config = null;
/** /**
* Mailer object * Mailer object
* *
* @var JMail * @var Mail
*/ */
public static $mailer = null; public static ?Mail $mailer = null;
/** /**
* Custom Headers * Custom Headers
* *
* @var array * @var array
*/ */
protected static $header = array(); protected static array $header = [];
/** /**
* Get a configuration object * Get a configuration object
@ -58,7 +63,7 @@ abstract class ###Component###Email
{ {
if (!self::$config) if (!self::$config)
{ {
self::$config = JComponentHelper::getParams('com_###component###'); self::$config = ComponentHelper::getParams('com_###component###');
} }
return self::$config; return self::$config;
@ -97,7 +102,7 @@ abstract class ###Component###Email
* @static * @static
* @access public * @access public
*/ */
public static function validateAddress($address, $patternselect = null) public static function validateAddress($address, $patternselect = null): bool
{ {
return self::getMailerInstance()->validateAddress($address, $patternselect); return self::getMailerInstance()->validateAddress($address, $patternselect);
} }
@ -105,13 +110,13 @@ abstract class ###Component###Email
/** /**
* Get a mailer object. * Get a mailer object.
* *
* Returns the global {@link JMail} object, only creating it if it doesn't already exist. * Returns the global {@link Mail} object, only creating it if it doesn't already exist.
* *
* @return JMail object * @return Mail object
* *
* @see JMail * @see Mail
*/ */
public static function getMailer() public static function getMailer(): Mail
{ {
if (!self::$mailer) if (!self::$mailer)
{ {
@ -126,58 +131,58 @@ abstract class ###Component###Email
/** /**
* Create a mailer object * Create a mailer object
* *
* @return JMail object * @return Mail object
* *
* @see JMail * @see Mail
*/ */
protected static function createMailer() protected static function createMailer(): Mail
{ {
// set component params // set component params
$conf = self::getConfig(); $conf = self::getConfig();
// now load the mailer // now load the mailer
$mailer = $conf->get('mailer', 'global'); $mailer = $conf->get('mailer', 'global');
// Create a JMail object // Create a Mail object
$mail = JMail::getInstance(); $mail = Mail::getInstance();
// check if set to global // check if set to global
if ('global' == $mailer) if ('global' == $mailer)
{ {
// get the global details // get the global details
$globalConf = JFactory::getConfig(); $globalConf = Factory::getConfig();
$mailer = $globalConf->get('mailer'); $mailer = $globalConf->get('mailer');
$smtpauth = ($globalConf->get('smtpauth') == 0) ? null : 1; $smtpauth = ($globalConf->get('smtpauth') == 0) ? null : 1;
$smtpuser = $globalConf->get('smtpuser'); $smtpuser = $globalConf->get('smtpuser');
$smtppass = $globalConf->get('smtppass'); $smtppass = $globalConf->get('smtppass');
$smtphost = $globalConf->get('smtphost'); $smtphost = $globalConf->get('smtphost');
$smtpsecure = $globalConf->get('smtpsecure'); $smtpsecure = $globalConf->get('smtpsecure');
$smtpport = $globalConf->get('smtpport'); $smtpport = $globalConf->get('smtpport');
$sendmail = $globalConf->get('sendmail'); $sendmail = $globalConf->get('sendmail');
$mailfrom = $globalConf->get('mailfrom'); $mailfrom = $globalConf->get('mailfrom');
$fromname = $globalConf->get('fromname'); $fromname = $globalConf->get('fromname');
$replyto = $globalConf->get('replyto'); $replyto = $globalConf->get('replyto');
$replytoname = $globalConf->get('replytoname'); $replytoname = $globalConf->get('replytoname');
} }
else else
{ {
$smtpauth = ($conf->get('smtpauth') == 0) ? null : 1; $smtpauth = ($conf->get('smtpauth') == 0) ? null : 1;
$smtpuser = $conf->get('smtpuser'); $smtpuser = $conf->get('smtpuser');
$smtppass = $conf->get('smtppass'); $smtppass = $conf->get('smtppass');
$smtphost = $conf->get('smtphost'); $smtphost = $conf->get('smtphost');
$smtpsecure = $conf->get('smtpsecure'); $smtpsecure = $conf->get('smtpsecure');
$smtpport = $conf->get('smtpport'); $smtpport = $conf->get('smtpport');
$sendmail = $conf->get('sendmail'); $sendmail = $conf->get('sendmail');
$mailfrom = $conf->get('emailfrom'); $mailfrom = $conf->get('emailfrom');
$fromname = $conf->get('fromname'); $fromname = $conf->get('fromname');
$replyto = $conf->get('replyto'); $replyto = $conf->get('replyto');
$replytoname = $conf->get('replytoname'); $replytoname = $conf->get('replytoname');
} }
// Set global sender // Set global sender
$mail->setSender(array($mailfrom, $fromname)); $mail->setSender(array($mailfrom, $fromname));
// set the global reply-to if found // set the global reply-to if found
if ($replyto && $replytoname) if ($replyto && $replytoname)
{ {
@ -226,25 +231,25 @@ abstract class ###Component###Email
*/ */
public static function send($recipient, $subject, $body, $textonly, $mode = 0, $bounce_email = null, $idsession = null, $mailreply = null, $replyname = null , $mailfrom = null, $fromname = null, $cc = null, $bcc = null, $attachment = null, $embeded = null , $embeds = null) public static function send($recipient, $subject, $body, $textonly, $mode = 0, $bounce_email = null, $idsession = null, $mailreply = null, $replyname = null , $mailfrom = null, $fromname = null, $cc = null, $bcc = null, $attachment = null, $embeded = null , $embeds = null)
{ {
// Get a JMail instance // Get a Mail instance
$mail = self::getMailer(); $mail = self::getMailer();
// set component params // set component params
$conf = self::getConfig(); $conf = self::getConfig();
// set if we have override // set if we have override
if ($mailfrom && $fromname) if ($mailfrom && $fromname)
{ {
$mail->setSender(array($mailfrom, $fromname)); $mail->setSender(array($mailfrom, $fromname));
} }
// load the bounce email as sender if set // load the bounce email as sender if set
if (!is_null($bounce_email)) if (!is_null($bounce_email))
{ {
$mail->Sender = $bounce_email; $mail->Sender = $bounce_email;
} }
// Add tag to email to identify it // Add tag to email to identify it
if (!is_null($idsession)) if (!is_null($idsession))
{ {
$mail->addCustomHeader('X-VDMmethodID:'.$idsession); $mail->addCustomHeader('X-VDMmethodID:'.$idsession);
@ -262,7 +267,7 @@ abstract class ###Component###Email
// set the subject & Body // set the subject & Body
$mail->setSubject($subject); $mail->setSubject($subject);
$mail->setBody($body); $mail->setBody($body);
// Are we sending the email as HTML? // Are we sending the email as HTML?
if ($mode) if ($mode)
{ {
@ -273,7 +278,7 @@ abstract class ###Component###Email
//embed images //embed images
if ($embeded) if ($embeded)
{ {
if(###Component###Helper::checkArray($embeds)) if(Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::check($embeds))
{ {
foreach($embeds as $embed) foreach($embeds as $embed)
{ {
@ -308,21 +313,21 @@ abstract class ###Component###Email
{ {
if (!empty($conf->get('dkim_domain')) && !empty($conf->get('dkim_selector')) && !empty($conf->get('dkim_private')) && !empty($conf->get('dkim_public'))) if (!empty($conf->get('dkim_domain')) && !empty($conf->get('dkim_selector')) && !empty($conf->get('dkim_private')) && !empty($conf->get('dkim_public')))
{ {
$mail->DKIM_domain = $conf->get('dkim_domain'); $mail->DKIM_domain = $conf->get('dkim_domain');
$mail->DKIM_selector = $conf->get('dkim_selector'); $mail->DKIM_selector = $conf->get('dkim_selector');
$mail->DKIM_identity = $conf->get('dkim_identity'); $mail->DKIM_identity = $conf->get('dkim_identity');
$mail->DKIM_passphrase = $conf->get('dkim_passphrase'); $mail->DKIM_passphrase = $conf->get('dkim_passphrase');
$tmp = tempnam(sys_get_temp_dir(), 'VDM'); $tmp = tempnam(sys_get_temp_dir(), 'VDM');
$h = fopen($tmp, 'w'); $h = fopen($tmp, 'w');
fwrite($h, $conf->get('dkim_private')); fwrite($h, $conf->get('dkim_private'));
fclose($h); fclose($h);
$mail->DKIM_private = $tmp; $mail->DKIM_private = $tmp;
} }
} }
$sendmail = $mail->Send(); $sendmail = $mail->Send();
if ($conf->get('enable_dkim') && !empty($conf->get('dkim_domain')) && !empty($conf->get('dkim_selector')) && !empty($conf->get('dkim_private')) && !empty($conf->get('dkim_public'))) if ($conf->get('enable_dkim') && !empty($conf->get('dkim_domain')) && !empty($conf->get('dkim_selector')) && !empty($conf->get('dkim_private')) && !empty($conf->get('dkim_public')))
{ {
@unlink($tmp); @unlink($tmp);
@ -351,7 +356,7 @@ abstract class ###Component###Email
/** /**
* Set html text (in a row) and subject (as title) to a email table. * Set html text (in a row) and subject (as title) to a email table.
* do not use <p> instead use <br /> * do not use <p> instead use <br />
* in your html that you pass to this method * in your html that you pass to this method
* since it is a table row it does not * since it is a table row it does not
* work well with paragraphs * work well with paragraphs
* *
@ -360,7 +365,7 @@ abstract class ###Component###Email
*/ */
public static function setBasicBody($html, $subject) public static function setBasicBody($html, $subject)
{ {
$body = array(); $body = [];
$body[] = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"; $body[] = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">";
$body[] = "<html xmlns=\"http://www.w3.org/1999/xhtml\">"; $body[] = "<html xmlns=\"http://www.w3.org/1999/xhtml\">";
$body[] = "<head>"; $body[] = "<head>";
@ -397,7 +402,7 @@ abstract class ###Component###Email
/** /**
* Set html text (in a row) and subject (as title) to a email table. * Set html text (in a row) and subject (as title) to a email table.
* do not use <p> instead use <br /> * do not use <p> instead use <br />
* in your html that you pass to this method * in your html that you pass to this method
* since it is a table row it does not * since it is a table row it does not
* work well with paragraphs * work well with paragraphs
* *
@ -406,7 +411,7 @@ abstract class ###Component###Email
*/ */
public static function setTableBody($html, $subject) public static function setTableBody($html, $subject)
{ {
$body = array(); $body = [];
$body[] = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"; $body[] = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">";
$body[] = "<html xmlns=\"http://www.w3.org/1999/xhtml\">"; $body[] = "<html xmlns=\"http://www.w3.org/1999/xhtml\">";
$body[] = "<head>"; $body[] = "<head>";

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -15,7 +15,9 @@ defined('_JEXEC') or die('Restricted access');
###BOM### ###BOM###
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access');###SITE_POWER_HELPER### defined('_JEXEC') or die('Restricted access');
###SITE_POWER_AUTOLOADER###
###SITE_HELPER_CLASS_HEADER### ###SITE_HELPER_CLASS_HEADER###
@ -29,7 +31,7 @@ abstract class ###Component###Helper
* *
* @var array * @var array
*/ */
protected static $composer = array(); protected static $composer = [];
/** /**
* The Main Active Language * The Main Active Language
@ -99,7 +101,7 @@ abstract class ###Component###Helper
// check if set // check if set
if (!Super___91004529_94a9_4590_b842_e7c6b624ecf5___Power::check(self::$JVersion)) if (!Super___91004529_94a9_4590_b842_e7c6b624ecf5___Power::check(self::$JVersion))
{ {
self::$JVersion = new JVersion(); self::$JVersion = new Version();
} }
return self::$JVersion; return self::$JVersion;
} }
@ -110,9 +112,9 @@ abstract class ###Component###Helper
public static function getContributors() public static function getContributors()
{ {
// get params // get params
$params = JComponentHelper::getParams('com_###component###'); $params = ComponentHelper::getParams('com_###component###');
// start contributors array // start contributors array
$contributors = array(); $contributors = [];
// get all Contributors (max 20) // get all Contributors (max 20)
$searchArray = range('0','20'); $searchArray = range('0','20');
foreach($searchArray as $nr) foreach($searchArray as $nr)
@ -121,22 +123,22 @@ abstract class ###Component###Helper
{ {
// set link based of selected option // set link based of selected option
if($params->get("useContributor".$nr) == 1) if($params->get("useContributor".$nr) == 1)
{ {
$link_front = '<a href="mailto:'.$params->get("emailContributor".$nr).'" target="_blank">'; $link_front = '<a href="mailto:'.$params->get("emailContributor".$nr).'" target="_blank">';
$link_back = '</a>'; $link_back = '</a>';
} }
elseif($params->get("useContributor".$nr) == 2) elseif($params->get("useContributor".$nr) == 2)
{ {
$link_front = '<a href="'.$params->get("linkContributor".$nr).'" target="_blank">'; $link_front = '<a href="'.$params->get("linkContributor".$nr).'" target="_blank">';
$link_back = '</a>'; $link_back = '</a>';
} }
else else
{ {
$link_front = ''; $link_front = '';
$link_back = ''; $link_back = '';
} }
$contributors[$nr]['title'] = Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html($params->get("titleContributor".$nr)); $contributors[$nr]['title'] = Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html($params->get("titleContributor".$nr));
$contributors[$nr]['name'] = $link_front.Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html($params->get("nameContributor".$nr)).$link_back; $contributors[$nr]['name'] = $link_front.Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html($params->get("nameContributor".$nr)).$link_back;
} }
} }
return $contributors; return $contributors;
@ -145,14 +147,14 @@ abstract class ###Component###Helper
/** /**
* Get any component's model * Get any component's model
*/ */
public static function getModel($name, $path = JPATH_COMPONENT_SITE, $Component = '###Component###', $config = array()) public static function getModel($name, $path = JPATH_COMPONENT_SITE, $Component = '###Component###', $config = [])
{ {
// fix the name // fix the name
$name = Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe($name); $name = Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe($name);
// full path to models // full path to models
$fullPathModels = $path . '/models'; $fullPathModels = $path . '/models';
// load the model file // load the model file
JModelLegacy::addIncludePath($fullPathModels, $Component . 'Model'); BaseDatabaseModel::addIncludePath($fullPathModels, $Component . 'Model');
// make sure the table path is loaded // make sure the table path is loaded
if (!isset($config['table_path']) || !Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($config['table_path'])) if (!isset($config['table_path']) || !Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($config['table_path']))
{ {
@ -160,7 +162,7 @@ abstract class ###Component###Helper
$config['table_path'] = JPATH_ADMINISTRATOR . '/components/com_' . strtolower($Component) . '/tables'; $config['table_path'] = JPATH_ADMINISTRATOR . '/components/com_' . strtolower($Component) . '/tables';
} }
// get instance // get instance
$model = JModelLegacy::getInstance($name, $Component . 'Model', $config); $model = BaseDatabaseModel::getInstance($name, $Component . 'Model', $config);
// if model not found (strange) // if model not found (strange)
if ($model == false) if ($model == false)
{ {
@ -195,14 +197,14 @@ abstract class ###Component###Helper
*/ */
public static function setAsset($id, $table, $inherit = true) public static function setAsset($id, $table, $inherit = true)
{ {
$parent = JTable::getInstance('Asset'); $parent = Table::getInstance('Asset');
$parent->loadByName('com_###component###'); $parent->loadByName('com_###component###');
$parentId = $parent->id; $parentId = $parent->id;
$name = 'com_###component###.'.$table.'.'.$id; $name = 'com_###component###.'.$table.'.'.$id;
$title = ''; $title = '';
$asset = JTable::getInstance('Asset'); $asset = Table::getInstance('Asset');
$asset->loadByName($name); $asset->loadByName($name);
// Check for an error. // Check for an error.
@ -226,14 +228,14 @@ abstract class ###Component###Helper
$asset->title = $title; $asset->title = $title;
// get the default asset rules // get the default asset rules
$rules = self::getDefaultAssetRules('com_###component###', $table, $inherit); $rules = self::getDefaultAssetRules('com_###component###', $table, $inherit);
if ($rules instanceof JAccessRules) if ($rules instanceof AccessRules)
{ {
$asset->rules = (string) $rules; $asset->rules = (string) $rules;
} }
if (!$asset->check() || !$asset->store()) if (!$asset->check() || !$asset->store())
{ {
JFactory::getApplication()->enqueueMessage($asset->getError(), 'warning'); Factory::getApplication()->enqueueMessage($asset->getError(), 'warning');
return false; return false;
} }
else else
@ -246,7 +248,7 @@ abstract class ###Component###Helper
$object->asset_id = (int) $asset->id; $object->asset_id = (int) $asset->id;
// Update their asset_id to link to the asset table. // Update their asset_id to link to the asset table.
return JFactory::getDbo()->updateObject('#__###component###_'.$table, $object, 'id'); return Factory::getDbo()->updateObject('#__###component###_'.$table, $object, 'id');
} }
} }
return false; return false;
@ -263,7 +265,7 @@ abstract class ###Component###Helper
if (!$inherit) if (!$inherit)
{ {
// Need to find the asset id by the name of the component. // Need to find the asset id by the name of the component.
$db = JFactory::getDbo(); $db = Factory::getDbo();
$query = $db->getQuery(true) $query = $db->getQuery(true)
->select($db->quoteName('id')) ->select($db->quoteName('id'))
->from($db->quoteName('#__assets')) ->from($db->quoteName('#__assets'))
@ -278,8 +280,8 @@ abstract class ###Component###Helper
} }
} }
// get asset rules // get asset rules
$result = JAccess::getAssetRules($assetId); $result = Access::getAssetRules($assetId);
if ($result instanceof JAccessRules) if ($result instanceof AccessRules)
{ {
$_result = (string) $result; $_result = (string) $result;
$_result = json_decode($_result); $_result = json_decode($_result);
@ -294,7 +296,7 @@ abstract class ###Component###Helper
elseif ($inherit) elseif ($inherit)
{ {
// clear the value since we inherit // clear the value since we inherit
$rule = array(); $rule = [];
} }
} }
// check if there are any view values remaining // check if there are any view values remaining
@ -302,8 +304,8 @@ abstract class ###Component###Helper
{ {
$_result = json_encode($_result); $_result = json_encode($_result);
$_result = array($_result); $_result = array($_result);
// Instantiate and return the JAccessRules object for the asset rules. // Instantiate and return the AccessRules object for the asset rules.
$rules = new JAccessRules($_result); $rules = new AccessRules($_result);
// return filtered rules // return filtered rules
return $rules; return $rules;
} }
@ -348,7 +350,7 @@ abstract class ###Component###Helper
* @return null * @return null
* @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::attributes($xml, $attributes); * @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::attributes($xml, $attributes);
*/ */
public static function xmlAddAttributes(&$xml, $attributes = array()) public static function xmlAddAttributes(&$xml, $attributes = [])
{ {
Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::attributes($xml, $attributes); Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::attributes($xml, $attributes);
} }
@ -362,7 +364,7 @@ abstract class ###Component###Helper
* @return void * @return void
* @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::options($xml, $options); * @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::options($xml, $options);
*/ */
public static function xmlAddOptions(&$xml, $options = array()) public static function xmlAddOptions(&$xml, $options = [])
{ {
Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::options($xml, $options); Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::options($xml, $options);
} }
@ -488,7 +490,7 @@ abstract class ###Component###Helper
{ {
$type = 'item'; $type = 'item';
} }
$db = JFactory::getDbo(); $db = Factory::getDbo();
$query = $db->getQuery(true); $query = $db->getQuery(true);
$query->select(array('a.published')); $query->select(array('a.published'));
$query->from('#__###component###_'.$type.' AS a'); $query->from('#__###component###_'.$type.' AS a');
@ -506,7 +508,7 @@ abstract class ###Component###Helper
public static function getGroupName($id) public static function getGroupName($id)
{ {
$db = JFactory::getDBO(); $db = Factory::getDBO();
$query = $db->getQuery(true); $query = $db->getQuery(true);
$query->select(array('a.title')); $query->select(array('a.title'));
$query->from('#__usergroups AS a'); $query->from('#__usergroups AS a');
@ -531,7 +533,7 @@ abstract class ###Component###Helper
* @param string $component The target component * @param string $component The target component
* @param object $user The user whose permissions we are loading * @param object $user The user whose permissions we are loading
* *
* @return object The JObject of permission/authorised actions * @return object The CMSObject of permission/authorised actions
* *
*/ */
public static function getActions($view, &$record = null, $views = null, $target = null, $component = '###component###', $user = 'null') public static function getActions($view, &$record = null, $views = null, $target = null, $component = '###component###', $user = 'null')
@ -540,22 +542,22 @@ abstract class ###Component###Helper
if (!Super___91004529_94a9_4590_b842_e7c6b624ecf5___Power::check($user)) if (!Super___91004529_94a9_4590_b842_e7c6b624ecf5___Power::check($user))
{ {
// get the user object // get the user object
$user = JFactory::getUser(); $user = Factory::getUser();
} }
// load the JObject // load the CMSObject
$result = new JObject; $result = new CMSObject;
// make view name safe (just incase) // make view name safe (just incase)
$view = Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe($view); $view = Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe($view);
if (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($views)) if (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($views))
{ {
$views = Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe($views); $views = Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe($views);
} }
// get all actions from component // get all actions from component
$actions = JAccess::getActionsFromFile( $actions = Access::getActionsFromFile(
JPATH_ADMINISTRATOR . '/components/com_' . $component . '/access.xml', JPATH_ADMINISTRATOR . '/components/com_' . $component . '/access.xml',
"/access/section[@name='component']/" "/access/section[@name='component']/"
); );
// if non found then return empty JObject // if non found then return empty CMSObject
if (empty($actions)) if (empty($actions))
{ {
return $result; return $result;
@ -722,7 +724,7 @@ abstract class ###Component###Helper
/** /**
* Check if have an json string * Check if have an json string
* *
* @input string The json string to check * @input string The json string to check
* *
* @returns bool true on success * @returns bool true on success
* @deprecated 3.3 Use Super___4b225c51_d293_48e4_b3f6_5136cf5c3f18___Power::check($string); * @deprecated 3.3 Use Super___4b225c51_d293_48e4_b3f6_5136cf5c3f18___Power::check($string);
@ -735,7 +737,7 @@ abstract class ###Component###Helper
/** /**
* Check if have an object with a length * Check if have an object with a length
* *
* @input object The object to check * @input object The object to check
* *
* @returns bool true on success * @returns bool true on success
* @deprecated 3.3 Use Super___91004529_94a9_4590_b842_e7c6b624ecf5___Power::check($object); * @deprecated 3.3 Use Super___91004529_94a9_4590_b842_e7c6b624ecf5___Power::check($object);
@ -748,7 +750,7 @@ abstract class ###Component###Helper
/** /**
* Check if have an array with a length * Check if have an array with a length
* *
* @input array The array to check * @input array The array to check
* *
* @returns bool/int number of items in array on success * @returns bool/int number of items in array on success
* @deprecated 3.3 Use Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::check($array, $removeEmptyString); * @deprecated 3.3 Use Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::check($array, $removeEmptyString);
@ -761,7 +763,7 @@ abstract class ###Component###Helper
/** /**
* Check if have a string with a length * Check if have a string with a length
* *
* @input string The string to check * @input string The string to check
* *
* @returns bool true on success * @returns bool true on success
* @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($string); * @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($string);
@ -781,7 +783,7 @@ abstract class ###Component###Helper
{ {
// If example.com is down, then probably the whole internet is down, since IANA maintains the domain. Right? // If example.com is down, then probably the whole internet is down, since IANA maintains the domain. Right?
$connected = @fsockopen("www.example.com", 80); $connected = @fsockopen("www.example.com", 80);
// website, port (try 80 or 443) // website, port (try 80 or 443)
if ($connected) if ($connected)
{ {
//action when connected //action when connected
@ -799,7 +801,7 @@ abstract class ###Component###Helper
/** /**
* Merge an array of array's * Merge an array of array's
* *
* @input array The arrays you would like to merge * @input array The arrays you would like to merge
* *
* @returns array on success * @returns array on success
* @deprecated 3.3 Use Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::merge($arrays); * @deprecated 3.3 Use Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::merge($arrays);
@ -818,7 +820,7 @@ abstract class ###Component###Helper
/** /**
* Shorten a string * Shorten a string
* *
* @input string The you would like to shorten * @input string The you would like to shorten
* *
* @returns string on success * @returns string on success
* @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::shorten(...); * @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::shorten(...);
@ -831,7 +833,7 @@ abstract class ###Component###Helper
/** /**
* Making strings safe (various ways) * Making strings safe (various ways)
* *
* @input string The you would like to make safe * @input string The you would like to make safe
* *
* @returns string on success * @returns string on success
* @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe(...); * @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe(...);
@ -850,7 +852,7 @@ abstract class ###Component###Helper
/** /**
* Convert none English strings to code usable string * Convert none English strings to code usable string
* *
* @input an string * @input an string
* *
* @returns a string * @returns a string
* @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::transliterate($string); * @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::transliterate($string);
@ -863,7 +865,7 @@ abstract class ###Component###Helper
/** /**
* make sure a string is HTML save * make sure a string is HTML save
* *
* @input an html string * @input an html string
* *
* @returns a string * @returns a string
* @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html(...); * @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html(...);
@ -881,7 +883,7 @@ abstract class ###Component###Helper
/** /**
* Convert all int in a string to an English word string * Convert all int in a string to an English word string
* *
* @input an string with numbers * @input an string with numbers
* *
* @returns a string * @returns a string
* @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::numbers($string); * @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::numbers($string);
@ -895,7 +897,7 @@ abstract class ###Component###Helper
* Convert an integer into an English word string * Convert an integer into an English word string
* Thanks to Tom Nicholson <http://php.net/manual/en/function.strval.php#41988> * Thanks to Tom Nicholson <http://php.net/manual/en/function.strval.php#41988>
* *
* @input an int * @input an int
* @returns a string * @returns a string
* @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::number($x); * @deprecated 3.3 Use Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::number($x);
*/ */

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -15,9 +15,9 @@ defined('_JEXEC') or die('Restricted access');
###BOM### ###BOM###
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access'); ###LICENSE_LOCKED_DEFINED######CUSTOM_ADMIN_GET_MODULE_JIMPORT### defined('_JEXEC') or die('Restricted access'); ###LICENSE_LOCKED_DEFINED###
###CUSTOM_ADMIN_VIEW_HTML_HEADER### ###CUSTOM_ADMIN_VIEW_HTML_HEADER######CUSTOM_ADMIN_GET_MODULE_JIMPORT###
/** /**
* ###Component### Html View class for the ###SView### * ###Component### Html View class for the ###SView###
@ -28,13 +28,16 @@ class ###Component###View###SView### extends HtmlView
function display($tpl = null) function display($tpl = null)
{ {
// get component params // get component params
$this->params = JComponentHelper::getParams('com_###component###'); $this->params = ComponentHelper::getParams('com_###component###');
// get the application // get the application
$this->app = JFactory::getApplication(); $this->app = Factory::getApplication();
// get the user object // get the user object
$this->user = JFactory::getUser(); $this->user = Factory::getUser();
// get global action permissions // get global action permissions
$this->canDo = ###Component###Helper::getActions('###sview###');###CUSTOM_ADMIN_DIPLAY_METHOD### $this->canDo = ###Component###Helper::getActions('###sview###');###CUSTOM_ADMIN_DIPLAY_METHOD###
// Display the template
parent::display($tpl);
}###CUSTOM_ADMIN_EXTRA_DIPLAY_METHODS### }###CUSTOM_ADMIN_EXTRA_DIPLAY_METHODS###
/** /**
@ -43,7 +46,7 @@ class ###Component###View###SView### extends HtmlView
protected function setDocument() protected function setDocument()
{###CUSTOM_ADMIN_LIBRARIES_LOADER######CUSTOM_ADMIN_DOCUMENT_METADATA######CUSTOM_ADMIN_UIKIT_LOADER######CUSTOM_ADMIN_GOOGLECHART_LOADER######CUSTOM_ADMIN_FOOTABLE_LOADER######CUSTOM_ADMIN_DOCUMENT_CUSTOM_PHP### {###CUSTOM_ADMIN_LIBRARIES_LOADER######CUSTOM_ADMIN_DOCUMENT_METADATA######CUSTOM_ADMIN_UIKIT_LOADER######CUSTOM_ADMIN_GOOGLECHART_LOADER######CUSTOM_ADMIN_FOOTABLE_LOADER######CUSTOM_ADMIN_DOCUMENT_CUSTOM_PHP###
// add the document default css file // add the document default css file
JHtml::_('stylesheet', 'administrator/components/com_###component###/assets/css/###sview###.css', ['version' => 'auto']);###CUSTOM_ADMIN_DOCUMENT_CUSTOM_CSS######CUSTOM_ADMIN_DOCUMENT_CUSTOM_JS### Html::_('stylesheet', 'administrator/components/com_###component###/assets/css/###sview###.css', ['version' => 'auto']);###CUSTOM_ADMIN_DOCUMENT_CUSTOM_CSS######CUSTOM_ADMIN_DOCUMENT_CUSTOM_JS###
} }
/** /**
@ -59,22 +62,22 @@ class ###Component###View###SView### extends HtmlView
// Check for empty title and add view name if param is set // Check for empty title and add view name if param is set
if (empty($title)) if (empty($title))
{ {
$title = JText::_('COM_###COMPONENT###_###SVIEW###'); $title = Text::_('COM_###COMPONENT###_###SVIEW###');
} }
// add title to the page // add title to the page
JToolbarHelper::title($title,'###ICOMOON###');###CUSTOM_ADMIN_CUSTOM_BUTTONS### ToolbarHelper::title($title,'###ICOMOON###');###CUSTOM_ADMIN_CUSTOM_BUTTONS###
// set help url for this view if found // set help url for this view if found
$this->help_url = ###Component###Helper::getHelpUrl('###sviews###'); $this->help_url = ###Component###Helper::getHelpUrl('###sviews###');
if (###Component###Helper::checkString($this->help_url)) if (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($this->help_url))
{ {
JToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url); ToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url);
} }
// add the options comp button // add the options comp button
if ($this->canDo->get('core.admin') || $this->canDo->get('core.options')) if ($this->canDo->get('core.admin') || $this->canDo->get('core.options'))
{ {
JToolBarHelper::preferences('com_###component###'); ToolbarHelper::preferences('com_###component###');
} }
}###CUSTOM_ADMIN_GET_MODULE### }###CUSTOM_ADMIN_GET_MODULE###
@ -88,7 +91,17 @@ class ###Component###View###SView### extends HtmlView
public function escape($var) public function escape($var)
{ {
// use the helper htmlEscape method instead. // use the helper htmlEscape method instead.
return ###Component###Helper::htmlEscape($var, $this->_charset); return Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html($var, $this->_charset);
}
/**
* Get the Document (helper method toward Joomla 4 and 5)
*/
public function getDocument()
{
$this->document ??= JFactory::getDocument();
return $this->document;
} }
} }
?> ?>

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -31,7 +31,7 @@ class ###Component###View###View### extends HtmlView
public function display($tpl = null) public function display($tpl = null)
{ {
// set params // set params
$this->params = JComponentHelper::getParams('com_###component###'); $this->params = ComponentHelper::getParams('com_###component###');
// Assign the variables // Assign the variables
$this->form = $this->get('Form'); $this->form = $this->get('Form');
$this->item = $this->get('Item'); $this->item = $this->get('Item');
@ -40,7 +40,7 @@ class ###Component###View###View### extends HtmlView
// get action permissions // get action permissions
$this->canDo = ###Component###Helper::getActions('###view###', $this->item); $this->canDo = ###Component###Helper::getActions('###view###', $this->item);
// get input // get input
$jinput = JFactory::getApplication()->input; $jinput = Factory::getApplication()->input;
$this->ref = $jinput->get('ref', 0, 'word'); $this->ref = $jinput->get('ref', 0, 'word');
$this->refid = $jinput->get('refid', 0, 'int'); $this->refid = $jinput->get('refid', 0, 'int');
$return = $jinput->get('return', null, 'base64'); $return = $jinput->get('return', null, 'base64');
@ -65,18 +65,18 @@ class ###Component###View###View### extends HtmlView
// Set the toolbar // Set the toolbar
$this->addToolBar(); $this->addToolBar();
// Check for errors. // Check for errors.
if (count($errors = $this->get('Errors'))) if (count($errors = $this->get('Errors')))
{ {
throw new Exception(implode("\n", $errors), 500); throw new Exception(implode("\n", $errors), 500);
} }
// Display the template
parent::display($tpl);
// Set the document // Set the document
$this->setDocument(); $this->setDocument();
// Display the template
parent::display($tpl);
} }
@ -99,11 +99,11 @@ class ###Component###View###View### extends HtmlView
{ {
if(strlen($var) > 30) if(strlen($var) > 30)
{ {
// use the helper htmlEscape method instead and shorten the string // use the helper htmlEscape method instead and shorten the string
return ###Component###Helper::htmlEscape($var, $this->_charset, true, 30); return Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html($var, $this->_charset, true, 30);
} }
// use the helper htmlEscape method instead. // use the helper htmlEscape method instead.
return ###Component###Helper::htmlEscape($var, $this->_charset); return Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html($var, $this->_charset);
} }
/** /**
@ -113,15 +113,26 @@ class ###Component###View###View### extends HtmlView
*/ */
protected function setDocument() protected function setDocument()
{ {
// Load Core
Html::_('behavior.core');
// Load jQuery
Html::_('jquery.framework');
$isNew = ($this->item->id < 1); $isNew = ($this->item->id < 1);
if (!isset($this->document)) $this->getDocument()->setTitle(Text::_($isNew ? 'COM_###COMPONENT###_###VIEW###_NEW' : 'COM_###COMPONENT###_###VIEW###_EDIT'));
{ Html::_('stylesheet', "administrator/components/com_###component###/assets/css/###view###.css", ['version' => 'auto']);###AJAXTOKE######LINKEDVIEWTABLESCRIPTS###
$this->document = JFactory::getDocument(); Html::_('script', $this->script, ['version' => 'auto']);
} Html::_('script', "administrator/components/com_###component###/views/###view###/submitbutton.js", ['version' => 'auto']);###DOCUMENT_CUSTOM_PHP###
$this->document->setTitle(JText::_($isNew ? 'COM_###COMPONENT###_###VIEW###_NEW' : 'COM_###COMPONENT###_###VIEW###_EDIT')); Text::script('view not acceptable. Error');
$this->document->addStyleSheet(JURI::root() . "administrator/components/com_###component###/assets/css/###view###.css", (###Component###Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/css');###AJAXTOKE######LINKEDVIEWTABLESCRIPTS### }
$this->document->addScript(JURI::root() . $this->script, (###Component###Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/javascript');
$this->document->addScript(JURI::root() . "administrator/components/com_###component###/views/###view###/submitbutton.js", (###Component###Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/javascript'); ###DOCUMENT_CUSTOM_PHP### /**
JText::script('view not acceptable. Error'); * Get the Document (helper method toward Joomla 4 and 5)
*/
public function getDocument()
{
$this->document ??= JFactory::getDocument();
return $this->document;
} }
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -31,7 +31,7 @@ class ###Component###View###View### extends HtmlView
public function display($tpl = null) public function display($tpl = null)
{ {
// set params // set params
$this->params = JComponentHelper::getParams('com_###component###'); $this->params = ComponentHelper::getParams('com_###component###');
// Assign the variables // Assign the variables
$this->form = $this->get('Form'); $this->form = $this->get('Form');
$this->item = $this->get('Item'); $this->item = $this->get('Item');
@ -40,7 +40,7 @@ class ###Component###View###View### extends HtmlView
// get action permissions // get action permissions
$this->canDo = ###Component###Helper::getActions('###view###', $this->item); $this->canDo = ###Component###Helper::getActions('###view###', $this->item);
// get input // get input
$jinput = JFactory::getApplication()->input; $jinput = Factory::getApplication()->input;
$this->ref = $jinput->get('ref', 0, 'word'); $this->ref = $jinput->get('ref', 0, 'word');
$this->refid = $jinput->get('refid', 0, 'int'); $this->refid = $jinput->get('refid', 0, 'int');
$return = $jinput->get('return', null, 'base64'); $return = $jinput->get('return', null, 'base64');
@ -65,18 +65,18 @@ class ###Component###View###View### extends HtmlView
// Set the toolbar // Set the toolbar
$this->addToolBar(); $this->addToolBar();
// Check for errors. // Check for errors.
if (count($errors = $this->get('Errors'))) if (count($errors = $this->get('Errors')))
{ {
throw new Exception(implode("\n", $errors), 500); throw new Exception(implode("\n", $errors), 500);
} }
// Display the template
parent::display($tpl);
// Set the document // Set the document
$this->setDocument(); $this->setDocument();
// Display the template
parent::display($tpl);
} }
@ -86,7 +86,7 @@ class ###Component###View###View### extends HtmlView
protected function addToolBar() protected function addToolBar()
{###ADDTOOLBAR### {###ADDTOOLBAR###
// now initiate the toolbar // now initiate the toolbar
$this->toolbar = JToolbar::getInstance(); $this->toolbar = Toolbar::getInstance();
} }
/** /**
@ -100,11 +100,11 @@ class ###Component###View###View### extends HtmlView
{ {
if(strlen($var) > 30) if(strlen($var) > 30)
{ {
// use the helper htmlEscape method instead and shorten the string // use the helper htmlEscape method instead and shorten the string
return ###Component###Helper::htmlEscape($var, $this->_charset, true, 30); return Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html($var, $this->_charset, true, 30);
} }
// use the helper htmlEscape method instead. // use the helper htmlEscape method instead.
return ###Component###Helper::htmlEscape($var, $this->_charset); return Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html($var, $this->_charset);
} }
/** /**
@ -114,12 +114,13 @@ class ###Component###View###View### extends HtmlView
*/ */
protected function setDocument() protected function setDocument()
{ {
// Load Core
Html::_('behavior.core');
// Load jQuery
Html::_('jquery.framework');
$isNew = ($this->item->id < 1); $isNew = ($this->item->id < 1);
if (!isset($this->document)) $this->getDocument()->setTitle(Text::_($isNew ? 'COM_###COMPONENT###_###VIEW###_NEW' : 'COM_###COMPONENT###_###VIEW###_EDIT'));
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_($isNew ? 'COM_###COMPONENT###_###VIEW###_NEW' : 'COM_###COMPONENT###_###VIEW###_EDIT'));
// only add the ISIS template css & js if needed (default is 1 = true) // only add the ISIS template css & js if needed (default is 1 = true)
// you can override this in the global component options // you can override this in the global component options
// just add a (radio yes/no field) with a name called add_isis_template // just add a (radio yes/no field) with a name called add_isis_template
@ -127,14 +128,24 @@ class ###Component###View###View### extends HtmlView
if ($this->params->get('add_isis_template', 1)) if ($this->params->get('add_isis_template', 1))
{ {
// we need this to fix the form display (TODO) // we need this to fix the form display (TODO)
$this->document->addStyleSheet(JURI::root() . "administrator/templates/isis/css/template.css", (###Component###Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/css'); Html::_('stylesheet', "administrator/templates/isis/css/template.css", ['version' => 'auto']);
$this->document->addScript(JURI::root() . "administrator/templates/isis/js/template.js", (###Component###Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/javascript'); Html::_('script', "administrator/templates/isis/js/template.js", ['version' => 'auto']);
} }
// the default style of this view // the default style of this view
$this->document->addStyleSheet(JURI::root()."components/com_###component###/assets/css/###view###.css", (###Component###Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/css');###AJAXTOKE######LINKEDVIEWTABLESCRIPTS### Html::_('stylesheet', "components/com_###component###/assets/css/###view###.css", ['version' => 'auto']);###AJAXTOKE######LINKEDVIEWTABLESCRIPTS###
// default javascript of this view // default javascript of this view
$this->document->addScript(JURI::root(). $this->script, (###Component###Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/javascript'); Html::_('script', $this->script, ['version' => 'auto']);
$this->document->addScript(JURI::root(). "components/com_###component###/views/###view###/submitbutton.js", (###Component###Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/javascript'); ###DOCUMENT_CUSTOM_PHP### Html::_('script', "components/com_###component###/views/###view###/submitbutton.js", ['version' => 'auto']);###DOCUMENT_CUSTOM_PHP###
JText::script('view not acceptable. Error'); Text::script('view not acceptable. Error');
}
/**
* Get the Document (helper method toward Joomla 4 and 5)
*/
public function getDocument()
{
$this->document ??= JFactory::getDocument();
return $this->document;
} }
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,7 +17,10 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED### defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED###
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\MVC\View\HtmlView; use Joomla\CMS\MVC\View\HtmlView;
use Joomla\CMS\Toolbar\ToolbarHelper;
/** /**
* ###Component### Import Html View * ###Component### Import Html View
@ -31,7 +34,7 @@ class ###Component###ViewImport extends HtmlView
protected $dataType; protected $dataType;
public function display($tpl = null) public function display($tpl = null)
{ {
if ($this->getLayout() !== 'modal') if ($this->getLayout() !== 'modal')
{ {
// Include helper submenu // Include helper submenu
@ -44,7 +47,7 @@ class ###Component###ViewImport extends HtmlView
$this->paths = &$paths; $this->paths = &$paths;
$this->state = &$state; $this->state = &$state;
// get global action permissions // get global action permissions
$this->canDo = ###Component###Helper::getActions('import'); $this->canDo = ###Component###Helper::getActions('import');
// We don't need toolbar in the modal window. // We don't need toolbar in the modal window.
@ -55,18 +58,18 @@ class ###Component###ViewImport extends HtmlView
} }
// get the session object // get the session object
$session = JFactory::getSession(); $session = Factory::getSession();
// check if it has package // check if it has package
$this->hasPackage = $session->get('hasPackage', false); $this->hasPackage = $session->get('hasPackage', false);
$this->dataType = $session->get('dataType', false); $this->dataType = $session->get('dataType', false);
if($this->hasPackage && $this->dataType) if($this->hasPackage && $this->dataType)
{ {
$this->headerList = json_decode($session->get($this->dataType.'_VDM_IMPORTHEADERS', false),true); $this->headerList = json_decode($session->get($this->dataType.'_VDM_IMPORTHEADERS', false),true);
$this->headers = ###Component###Helper::getFileHeaders($this->dataType); $this->headers = ###Component###Helper::getFileHeaders($this->dataType);
// clear the data type // clear the data type
$session->clear('dataType'); $session->clear('dataType');
} }
// Check for errors. // Check for errors.
if (count($errors = $this->get('Errors'))) if (count($errors = $this->get('Errors')))
{ {
@ -82,19 +85,19 @@ class ###Component###ViewImport extends HtmlView
*/ */
protected function addToolBar() protected function addToolBar()
{ {
JToolBarHelper::title(JText::_('COM_###COMPONENT###_IMPORT_TITLE'), 'upload'); ToolbarHelper::title(Text::_('COM_###COMPONENT###_IMPORT_TITLE'), 'upload');
JHtmlSidebar::setAction('index.php?option=com_###component###&view=import'); JHtmlSidebar::setAction('index.php?option=com_###component###&view=import');
if ($this->canDo->get('core.admin') || $this->canDo->get('core.options')) if ($this->canDo->get('core.admin') || $this->canDo->get('core.options'))
{ {
JToolBarHelper::preferences('com_###component###'); ToolbarHelper::preferences('com_###component###');
} }
// set help url for this view if found // set help url for this view if found
$this->help_url = ###Component###Helper::getHelpUrl('import'); $this->help_url = ###Component###Helper::getHelpUrl('import');
if (###Component###Helper::checkString($this->help_url)) if (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($this->help_url))
{ {
JToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url); ToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url);
} }
} }
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,7 +17,13 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED### defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED###
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Form\FormHelper;
use Joomla\CMS\MVC\View\HtmlView; use Joomla\CMS\MVC\View\HtmlView;
use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\HTML\HTMLHelper as Html;
/** /**
* ###Component### ###View### Html View * ###Component### ###View### Html View
@ -30,19 +36,19 @@ class ###Component###View###View### extends HtmlView
*/ */
protected function addToolBar() protected function addToolBar()
{ {
JToolBarHelper::title(JText::_('COM_###COMPONENT###_IMPORT_TITLE'), 'upload'); ToolbarHelper::title(Text::_('COM_###COMPONENT###_IMPORT_TITLE'), 'upload');
JHtmlSidebar::setAction('index.php?option=com_###component###&view=###view###'); JHtmlSidebar::setAction('index.php?option=com_###component###&view=###view###');
if ($this->canDo->get('core.admin') || $this->canDo->get('core.options')) if ($this->canDo->get('core.admin') || $this->canDo->get('core.options'))
{ {
JToolBarHelper::preferences('com_###component###'); ToolbarHelper::preferences('com_###component###');
} }
// set help url for this view if found // set help url for this view if found
$this->help_url = ###Component###Helper::getHelpUrl('###view###'); $this->help_url = ###Component###Helper::getHelpUrl('###view###');
if (###Component###Helper::checkString($this->help_url)) if (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($this->help_url))
{ {
JToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url); ToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url);
} }
} }
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -40,10 +40,10 @@ class ###Component###View###Views### extends HtmlView
$this->items = $this->get('Items'); $this->items = $this->get('Items');
$this->pagination = $this->get('Pagination'); $this->pagination = $this->get('Pagination');
$this->state = $this->get('State'); $this->state = $this->get('State');
$this->user = JFactory::getUser();###ADMIN_DIPLAY_METHOD### $this->user = Factory::getUser();###ADMIN_DIPLAY_METHOD###
$this->saveOrder = $this->listOrder == 'a.ordering'; $this->saveOrder = $this->listOrder == 'a.ordering';
// set the return here value // set the return here value
$this->return_here = urlencode(base64_encode((string) JUri::getInstance())); $this->return_here = urlencode(base64_encode((string) Uri::getInstance()));
// get global action permissions // get global action permissions
$this->canDo = ###Component###Helper::getActions('###view###');###JVIEWLISTCANDO### $this->canDo = ###Component###Helper::getActions('###view###');###JVIEWLISTCANDO###
@ -58,18 +58,18 @@ class ###Component###View###Views### extends HtmlView
$this->batchDisplay = JHtmlBatch_::render(); $this->batchDisplay = JHtmlBatch_::render();
} }
} }
// Check for errors. // Check for errors.
if (count($errors = $this->get('Errors'))) if (count($errors = $this->get('Errors')))
{ {
throw new Exception(implode("\n", $errors), 500); throw new Exception(implode("\n", $errors), 500);
} }
// Display the template
parent::display($tpl);
// Set the document // Set the document
$this->setDocument(); $this->setDocument();
// Display the template
parent::display($tpl);
} }
/** /**
@ -77,32 +77,32 @@ class ###Component###View###Views### extends HtmlView
*/ */
protected function addToolBar() protected function addToolBar()
{ {
JToolBarHelper::title(JText::_('COM_###COMPONENT###_###VIEWS###'), '###ICOMOON###');
JHtmlSidebar::setAction('index.php?option=com_###component###&view=###views###'); JHtmlSidebar::setAction('index.php?option=com_###component###&view=###views###');
JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields'); ToolbarHelper::title(Text::_('COM_###COMPONENT###_###VIEWS###'), '###ICOMOON###');
FormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields');
if ($this->canCreate) if ($this->canCreate)
{ {
JToolBarHelper::addNew('###view###.add'); ToolbarHelper::addNew('###view###.add');
} }
// Only load if there are items // Only load if there are items
if (###Component###Helper::checkArray($this->items)) if (Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::check($this->items))
{ {
if ($this->canEdit) if ($this->canEdit)
{ {
JToolBarHelper::editList('###view###.edit'); ToolbarHelper::editList('###view###.edit');
} }
if ($this->canState) if ($this->canState)
{ {
JToolBarHelper::publishList('###views###.publish'); ToolbarHelper::publishList('###views###.publish');
JToolBarHelper::unpublishList('###views###.unpublish'); ToolbarHelper::unpublishList('###views###.unpublish');
JToolBarHelper::archiveList('###views###.archive'); ToolbarHelper::archiveList('###views###.archive');
if ($this->canDo->get('core.admin')) if ($this->canDo->get('core.admin'))
{ {
JToolBarHelper::checkin('###views###.checkin'); ToolbarHelper::checkin('###views###.checkin');
} }
} }
@ -110,11 +110,11 @@ class ###Component###View###Views### extends HtmlView
if ($this->canBatch && $this->canCreate && $this->canEdit && $this->canState) if ($this->canBatch && $this->canCreate && $this->canEdit && $this->canState)
{ {
// Get the toolbar object instance // Get the toolbar object instance
$bar = JToolBar::getInstance('toolbar'); $bar = Toolbar::getInstance('toolbar');
// set the batch button name // set the batch button name
$title = JText::_('JTOOLBAR_BATCH'); $title = Text::_('JTOOLBAR_BATCH');
// Instantiate a new JLayoutFile instance and render the batch button // Instantiate a new JLayoutFile instance and render the batch button
$layout = new JLayoutFile('joomla.toolbar.batch'); $layout = new FileLayout('joomla.toolbar.batch');
// add the button to the page // add the button to the page
$dhtml = $layout->render(array('title' => $title)); $dhtml = $layout->render(array('title' => $title));
$bar->appendButton('Custom', $dhtml, 'batch'); $bar->appendButton('Custom', $dhtml, 'batch');
@ -122,25 +122,25 @@ class ###Component###View###Views### extends HtmlView
if ($this->state->get('filter.published') == -2 && ($this->canState && $this->canDelete)) if ($this->state->get('filter.published') == -2 && ($this->canState && $this->canDelete))
{ {
JToolbarHelper::deleteList('', '###views###.delete', 'JTOOLBAR_EMPTY_TRASH'); ToolbarHelper::deleteList('', '###views###.delete', 'JTOOLBAR_EMPTY_TRASH');
} }
elseif ($this->canState && $this->canDelete) elseif ($this->canState && $this->canDelete)
{ {
JToolbarHelper::trash('###views###.trash'); ToolbarHelper::trash('###views###.trash');
}###EXPORTBUTTON### }###EXPORTBUTTON###
}###ADMIN_CUSTOM_FUNCTION_ONLY_BUTTONS_LIST######IMPORTBUTTON### }###ADMIN_CUSTOM_FUNCTION_ONLY_BUTTONS_LIST######IMPORTBUTTON###
// set help url for this view if found // set help url for this view if found
$this->help_url = ###Component###Helper::getHelpUrl('###views###'); $this->help_url = ###Component###Helper::getHelpUrl('###views###');
if (###Component###Helper::checkString($this->help_url)) if (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($this->help_url))
{ {
JToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url); ToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url);
} }
// add the options comp button // add the options comp button
if ($this->canDo->get('core.admin') || $this->canDo->get('core.options')) if ($this->canDo->get('core.admin') || $this->canDo->get('core.options'))
{ {
JToolBarHelper::preferences('com_###component###'); ToolbarHelper::preferences('com_###component###');
}###FILTERFIELDDISPLAYHELPER######BATCHDISPLAYHELPER### }###FILTERFIELDDISPLAYHELPER######BATCHDISPLAYHELPER###
} }
@ -151,12 +151,17 @@ class ###Component###View###Views### extends HtmlView
*/ */
protected function setDocument() protected function setDocument()
{ {
// Load Core
Html::_('behavior.core');
// Load jQuery
Html::_('jquery.framework');
if (!isset($this->document)) if (!isset($this->document))
{ {
$this->document = JFactory::getDocument(); $this->document = Factory::getDocument();
} }
$this->document->setTitle(JText::_('COM_###COMPONENT###_###VIEWS###')); $this->document->setTitle(Text::_('COM_###COMPONENT###_###VIEWS###'));
$this->document->addStyleSheet(JURI::root() . "administrator/components/com_###component###/assets/css/###views###.css", (###Component###Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/css');###ADMIN_ADD_JAVASCRIPT_FILE### Html::_('stylesheet', "administrator/components/com_###component###/assets/css/###views###.css", ['version' => 'auto']);###ADMIN_ADD_JAVASCRIPT_FILE###
} }
/** /**
@ -171,19 +176,29 @@ class ###Component###View###Views### extends HtmlView
if(strlen($var) > 50) if(strlen($var) > 50)
{ {
// use the helper htmlEscape method instead and shorten the string // use the helper htmlEscape method instead and shorten the string
return ###Component###Helper::htmlEscape($var, $this->_charset, true); return Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html($var, $this->_charset, true);
} }
// use the helper htmlEscape method instead. // use the helper htmlEscape method instead.
return ###Component###Helper::htmlEscape($var, $this->_charset); return Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html($var, $this->_charset);
} }
/** /**
* Returns an array of fields the table can be sorted by * 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 * @return array Array containing the field name to sort by as the key and display text as value
*/ */
protected function getSortFields() protected function getSortFields()
{ {
###SORTFIELDS### ###SORTFIELDS###
}
/**
* Get the Document (helper method toward Joomla 4 and 5)
*/
public function getDocument()
{
$this->document ??= JFactory::getDocument();
return $this->document;
}###FILTERFUNCTIONS### }###FILTERFUNCTIONS###
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -15,9 +15,9 @@ defined('_JEXEC') or die('Restricted access');
###BOM### ###BOM###
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED######CUSTOM_ADMIN_GET_MODULE_JIMPORT### defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED###
###CUSTOM_ADMIN_VIEWS_HTML_HEADER### ###CUSTOM_ADMIN_VIEWS_HTML_HEADER######CUSTOM_ADMIN_GET_MODULE_JIMPORT###
/** /**
* ###Component### Html View class for the ###SViews### * ###Component### Html View class for the ###SViews###
@ -28,13 +28,16 @@ class ###Component###View###SViews### extends HtmlView
function display($tpl = null) function display($tpl = null)
{ {
// get component params // get component params
$this->params = JComponentHelper::getParams('com_###component###'); $this->params = ComponentHelper::getParams('com_###component###');
// get the application // get the application
$this->app = JFactory::getApplication(); $this->app = Factory::getApplication();
// get the user object // get the user object
$this->user = JFactory::getUser(); $this->user = Factory::getUser();
// get global action permissions // get global action permissions
$this->canDo = ###Component###Helper::getActions('###sview###');###CUSTOM_ADMIN_DIPLAY_METHOD### $this->canDo = ###Component###Helper::getActions('###sview###');###CUSTOM_ADMIN_DIPLAY_METHOD###
// Display the template
parent::display($tpl);
}###CUSTOM_ADMIN_EXTRA_DIPLAY_METHODS### }###CUSTOM_ADMIN_EXTRA_DIPLAY_METHODS###
/** /**
@ -43,7 +46,7 @@ class ###Component###View###SViews### extends HtmlView
protected function setDocument() protected function setDocument()
{###CUSTOM_ADMIN_LIBRARIES_LOADER######CUSTOM_ADMIN_UIKIT_LOADER######CUSTOM_ADMIN_GOOGLECHART_LOADER######CUSTOM_ADMIN_FOOTABLE_LOADER######CUSTOM_ADMIN_DOCUMENT_CUSTOM_PHP### {###CUSTOM_ADMIN_LIBRARIES_LOADER######CUSTOM_ADMIN_UIKIT_LOADER######CUSTOM_ADMIN_GOOGLECHART_LOADER######CUSTOM_ADMIN_FOOTABLE_LOADER######CUSTOM_ADMIN_DOCUMENT_CUSTOM_PHP###
// add the document default css file // add the document default css file
JHtml::_('stylesheet', 'administrator/components/com_###component###/assets/css/###sviews###.css', ['version' => 'auto']);###CUSTOM_ADMIN_DOCUMENT_CUSTOM_CSS######CUSTOM_ADMIN_DOCUMENT_CUSTOM_JS### Html::_('stylesheet', 'administrator/components/com_###component###/assets/css/###sviews###.css', ['version' => 'auto']);###CUSTOM_ADMIN_DOCUMENT_CUSTOM_CSS######CUSTOM_ADMIN_DOCUMENT_CUSTOM_JS###
} }
/** /**
@ -52,19 +55,19 @@ class ###Component###View###SViews### extends HtmlView
protected function addToolBar() protected function addToolBar()
{###HIDEMAINMENU### {###HIDEMAINMENU###
// add title to the page // add title to the page
JToolbarHelper::title(JText::_('COM_###COMPONENT###_###SVIEWS###'),'###ICOMOON###');###CUSTOM_ADMIN_CUSTOM_BUTTONS### ToolbarHelper::title(Text::_('COM_###COMPONENT###_###SVIEWS###'),'###ICOMOON###');###CUSTOM_ADMIN_CUSTOM_BUTTONS###
// set help url for this view if found // set help url for this view if found
$this->help_url = ###Component###Helper::getHelpUrl('###sviews###'); $this->help_url = ###Component###Helper::getHelpUrl('###sviews###');
if (###Component###Helper::checkString($this->help_url)) if (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($this->help_url))
{ {
JToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url); ToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url);
} }
// add the options comp button // add the options comp button
if ($this->canDo->get('core.admin') || $this->canDo->get('core.options')) if ($this->canDo->get('core.admin') || $this->canDo->get('core.options'))
{ {
JToolBarHelper::preferences('com_###component###'); ToolbarHelper::preferences('com_###component###');
} }
}###CUSTOM_ADMIN_GET_MODULE### }###CUSTOM_ADMIN_GET_MODULE###
@ -78,6 +81,16 @@ class ###Component###View###SViews### extends HtmlView
public function escape($var) public function escape($var)
{ {
// use the helper htmlEscape method instead. // use the helper htmlEscape method instead.
return ###Component###Helper::htmlEscape($var, $this->_charset); return Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html($var, $this->_charset);
}
/**
* Get the Document (helper method toward Joomla 4 and 5)
*/
public function getDocument()
{
$this->document ??= JFactory::getDocument();
return $this->document;
} }
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -15,9 +15,9 @@ defined('_JEXEC') or die('Restricted access');
###BOM### ###BOM###
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED######SITE_GET_MODULE_JIMPORT### defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED###
###SITE_VIEWS_HTML_HEADER### ###SITE_VIEWS_HTML_HEADER######SITE_GET_MODULE_JIMPORT###
/** /**
* ###Component### Html View class for the ###SViews### * ###Component### Html View class for the ###SViews###
@ -26,13 +26,16 @@ class ###Component###View###SViews### extends HtmlView
{ {
// Overwriting JView display method // Overwriting JView display method
function display($tpl = null) function display($tpl = null)
{ {
// get combined params of both component and menu // get combined params of both component and menu
$this->app = JFactory::getApplication(); $this->app = Factory::getApplication();
$this->params = $this->app->getParams(); $this->params = $this->app->getParams();
$this->menu = $this->app->getMenu()->getActive(); $this->menu = $this->app->getMenu()->getActive();
// get the user object // get the user object
$this->user = JFactory::getUser();###SITE_DIPLAY_METHOD### $this->user = Factory::getUser();###SITE_DIPLAY_METHOD###
// Display the template
parent::display($tpl);
}###SITE_EXTRA_DIPLAY_METHODS### }###SITE_EXTRA_DIPLAY_METHODS###
/** /**
@ -41,7 +44,7 @@ class ###Component###View###SViews### extends HtmlView
protected function _prepareDocument() protected function _prepareDocument()
{###SITE_LIBRARIES_LOADER######SITE_UIKIT_LOADER######SITE_GOOGLECHART_LOADER######SITE_FOOTABLE_LOADER######SITE_DOCUMENT_METADATA######SITE_DOCUMENT_CUSTOM_PHP### {###SITE_LIBRARIES_LOADER######SITE_UIKIT_LOADER######SITE_GOOGLECHART_LOADER######SITE_FOOTABLE_LOADER######SITE_DOCUMENT_METADATA######SITE_DOCUMENT_CUSTOM_PHP###
// add the document default css file // add the document default css file
JHtml::_('stylesheet', 'components/com_###component###/assets/css/###sview###.css', ['version' => 'auto']);###SITE_DOCUMENT_CUSTOM_CSS######SITE_DOCUMENT_CUSTOM_JS######SITE_JAVASCRIPT_FOR_BUTTONS### Html::_('stylesheet', 'components/com_###component###/assets/css/###sview###.css', ['version' => 'auto']);###SITE_DOCUMENT_CUSTOM_CSS######SITE_DOCUMENT_CUSTOM_JS######SITE_JAVASCRIPT_FOR_BUTTONS###
} }
/** /**
@ -49,15 +52,15 @@ class ###Component###View###SViews### extends HtmlView
*/ */
protected function addToolBar() protected function addToolBar()
{###SITE_CUSTOM_BUTTONS### {###SITE_CUSTOM_BUTTONS###
// set help url for this view if found // set help url for this view if found
$this->help_url = ###Component###Helper::getHelpUrl('###sviews###'); $this->help_url = ###Component###Helper::getHelpUrl('###sviews###');
if (###Component###Helper::checkString($this->help_url)) if (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($this->help_url))
{ {
JToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url); ToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url);
} }
// now initiate the toolbar // now initiate the toolbar
$this->toolbar = JToolbar::getInstance(); $this->toolbar = Toolbar::getInstance();
}###SITE_GET_MODULE### }###SITE_GET_MODULE###
/** /**
@ -70,6 +73,16 @@ class ###Component###View###SViews### extends HtmlView
public function escape($var, $sorten = false, $length = 40) public function escape($var, $sorten = false, $length = 40)
{ {
// use the helper htmlEscape method instead. // use the helper htmlEscape method instead.
return ###Component###Helper::htmlEscape($var, $this->_charset, $sorten, $length); return Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html($var, $this->_charset, $sorten, $length);
}
/**
* Get the Document (helper method toward Joomla 4 and 5)
*/
public function getDocument()
{
$this->document ??= JFactory::getDocument();
return $this->document;
} }
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -15,9 +15,9 @@ defined('_JEXEC') or die('Restricted access');
###BOM### ###BOM###
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED######SITE_GET_MODULE_JIMPORT### defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED###
###SITE_VIEW_HTML_HEADER### ###SITE_VIEW_HTML_HEADER######SITE_GET_MODULE_JIMPORT###
/** /**
* ###Component### Html View class for the ###SView### * ###Component### Html View class for the ###SView###
@ -26,22 +26,25 @@ class ###Component###View###SView### extends HtmlView
{ {
// Overwriting JView display method // Overwriting JView display method
function display($tpl = null) function display($tpl = null)
{ {
// get combined params of both component and menu // get combined params of both component and menu
$this->app = JFactory::getApplication(); $this->app = Factory::getApplication();
$this->params = $this->app->getParams(); $this->params = $this->app->getParams();
$this->menu = $this->app->getMenu()->getActive(); $this->menu = $this->app->getMenu()->getActive();
// get the user object // get the user object
$this->user = JFactory::getUser();###SITE_DIPLAY_METHOD### $this->user = Factory::getUser();###SITE_DIPLAY_METHOD###
// Display the template
parent::display($tpl);
}###SITE_EXTRA_DIPLAY_METHODS### }###SITE_EXTRA_DIPLAY_METHODS###
/** /**
* Prepares the document * Prepares the document
*/ */
protected function _prepareDocument() protected function _prepareDocument()
{###SITE_LIBRARIES_LOADER######SITE_UIKIT_LOADER######SITE_GOOGLECHART_LOADER######SITE_FOOTABLE_LOADER######SITE_DOCUMENT_METADATA######SITE_DOCUMENT_CUSTOM_PHP### {###SITE_LIBRARIES_LOADER######SITE_UIKIT_LOADER######SITE_GOOGLECHART_LOADER######SITE_FOOTABLE_LOADER######SITE_DOCUMENT_METADATA######SITE_DOCUMENT_CUSTOM_PHP###
// add the document default css file // add the document default css file
JHtml::_('stylesheet', 'components/com_###component###/assets/css/###sview###.css', ['version' => 'auto']);###SITE_DOCUMENT_CUSTOM_CSS######SITE_DOCUMENT_CUSTOM_JS######SITE_JAVASCRIPT_FOR_BUTTONS### Html::_('stylesheet', 'components/com_###component###/assets/css/###sview###.css', ['version' => 'auto']);###SITE_DOCUMENT_CUSTOM_CSS######SITE_DOCUMENT_CUSTOM_JS######SITE_JAVASCRIPT_FOR_BUTTONS###
} }
/** /**
@ -52,12 +55,12 @@ class ###Component###View###SView### extends HtmlView
// set help url for this view if found // set help url for this view if found
$this->help_url = ###Component###Helper::getHelpUrl('###sview###'); $this->help_url = ###Component###Helper::getHelpUrl('###sview###');
if (###Component###Helper::checkString($this->help_url)) if (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($this->help_url))
{ {
JToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url); ToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url);
} }
// now initiate the toolbar // now initiate the toolbar
$this->toolbar = JToolbar::getInstance(); $this->toolbar = Toolbar::getInstance();
}###SITE_GET_MODULE### }###SITE_GET_MODULE###
/** /**
@ -70,6 +73,16 @@ class ###Component###View###SView### extends HtmlView
public function escape($var, $sorten = false, $length = 40) public function escape($var, $sorten = false, $length = 40)
{ {
// use the helper htmlEscape method instead. // use the helper htmlEscape method instead.
return ###Component###Helper::htmlEscape($var, $this->_charset, $sorten, $length); return Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::html($var, $this->_charset, $sorten, $length);
}
/**
* Get the Document (helper method toward Joomla 4 and 5)
*/
public function getDocument()
{
$this->document ??= JFactory::getDocument();
return $this->document;
} }
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -31,7 +31,7 @@ class ###Component###Model###SView### extends ItemModel
*/ */
protected $_context = 'com_###component###.###sview###'; protected $_context = 'com_###component###.###sview###';
/** /**
* Model user data. * Model user data.
* *
* @var strings * @var strings
@ -61,7 +61,7 @@ class ###Component###Model###SView### extends ItemModel
*/ */
protected function populateState() protected function populateState()
{ {
$this->app = JFactory::getApplication(); $this->app = Factory::getApplication();
$this->input = $this->app->input; $this->input = $this->app->input;
// Get the item main id // Get the item main id
$id = $this->input->getInt('id', null); $id = $this->input->getInt('id', null);
@ -80,12 +80,12 @@ class ###Component###Model###SView### extends ItemModel
*/ */
public function getItem($pk = null) public function getItem($pk = null)
{ {
$this->user = JFactory::getUser(); $this->user = Factory::getUser();
// check if this user has permission to access item // check if this user has permission to access item
if (!$this->user->authorise('###sview###.access', 'com_###component###')) if (!$this->user->authorise('###sview###.access', 'com_###component###'))
{ {
$app = JFactory::getApplication(); $app = Factory::getApplication();
$app->enqueueMessage(JText::_('Not authorised!'), 'error'); $app->enqueueMessage(Text::_('Not authorised!'), 'error');
// redirect away if not a correct to cPanel/default view // redirect away if not a correct to cPanel/default view
$app->redirect('index.php?option=com_###component###'); $app->redirect('index.php?option=com_###component###');
return false; return false;
@ -98,10 +98,10 @@ class ###Component###Model###SView### extends ItemModel
$this->initSet = true; $this->initSet = true;
$pk = (!empty($pk)) ? $pk : (int) $this->getState('###sview###.id');###CUSTOM_ADMIN_BEFORE_GET_ITEM### $pk = (!empty($pk)) ? $pk : (int) $this->getState('###sview###.id');###CUSTOM_ADMIN_BEFORE_GET_ITEM###
if ($this->_item === null) if ($this->_item === null)
{ {
$this->_item = array(); $this->_item = [];
}###LICENSE_LOCKED_CHECK### }###LICENSE_LOCKED_CHECK###
if (!isset($this->_item[$pk])) if (!isset($this->_item[$pk]))
@ -114,7 +114,7 @@ class ###Component###Model###SView### extends ItemModel
if ($e->getCode() == 404) if ($e->getCode() == 404)
{ {
// Need to go thru the error handler to allow Redirect to work. // Need to go thru the error handler to allow Redirect to work.
JError::raiseWarning(404, $e->getMessage()); JError::raiseError(404, $e->getMessage());
} }
else else
{ {

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -61,7 +61,7 @@ class ###Component###Model###SView### extends ItemModel
*/ */
protected function populateState() protected function populateState()
{ {
$this->app = JFactory::getApplication(); $this->app = Factory::getApplication();
$this->input = $this->app->input; $this->input = $this->app->input;
// Get the itme main id // Get the itme main id
$id = $this->input->getInt('id', null); $id = $this->input->getInt('id', null);
@ -82,7 +82,7 @@ class ###Component###Model###SView### extends ItemModel
*/ */
public function getItem($pk = null) public function getItem($pk = null)
{ {
$this->user = JFactory::getUser();###USER_PERMISSION_CHECK_ACCESS### $this->user = Factory::getUser();###USER_PERMISSION_CHECK_ACCESS###
$this->userId = $this->user->get('id'); $this->userId = $this->user->get('id');
$this->guest = $this->user->get('guest'); $this->guest = $this->user->get('guest');
$this->groups = $this->user->get('groups'); $this->groups = $this->user->get('groups');
@ -91,10 +91,10 @@ class ###Component###Model###SView### extends ItemModel
$this->initSet = true; $this->initSet = true;
$pk = (!empty($pk)) ? $pk : (int) $this->getState('###sview###.id');###SITE_BEFORE_GET_ITEM### $pk = (!empty($pk)) ? $pk : (int) $this->getState('###sview###.id');###SITE_BEFORE_GET_ITEM###
if ($this->_item === null) if ($this->_item === null)
{ {
$this->_item = array(); $this->_item = [];
}###LICENSE_LOCKED_CHECK### }###LICENSE_LOCKED_CHECK###
if (!isset($this->_item[$pk])) if (!isset($this->_item[$pk]))
@ -107,7 +107,7 @@ class ###Component###Model###SView### extends ItemModel
if ($e->getCode() == 404) if ($e->getCode() == 404)
{ {
// Need to go thru the error handler to allow Redirect to work. // Need to go thru the error handler to allow Redirect to work.
JError::raiseWarning(404, $e->getMessage()); JError::raiseError(404, $e->getMessage());
} }
else else
{ {

View File

@ -1,697 +0,0 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
###BOM###
// No direct access to this file
defined('_JEXEC') or die('Restricted access');###ADMIN_POWER_HELPER###
###ADMIN_HELPER_CLASS_HEADER###
/**
* ###Component### component helper.
*/
abstract class ###Component###Helper
{
/**
* Adding the utilities trait to this class
*
* @deprecated 4.0 - Check the trait methods for details, a legacy implementation
*/
use Utilities;
/**
* get the Component Code Name
*/
public static $ComponentCodeName = '###component###';
/**
* Composer Switch
*
* @var array
*/
protected static $composer = array();###ADMIN_GLOBAL_EVENT_HELPER######CUSTOM_HELPER_SCRIPT######BOTH_CUSTOM_HELPER_SCRIPT###
/**
* Load the Composer Vendors
*/
public static function composerAutoload($target)
{
// insure we load the composer vendor only once
if (!isset(self::$composer[$target]))
{
// get the function name
$functionName = self::safeString('compose' . $target);
// check if method exist
if (method_exists(__CLASS__, $functionName))
{
return self::{$functionName}();
}
return false;
}
return self::$composer[$target];
}
/**
* Load the Component xml manifest.
*/
public static function manifest()
{
$manifestUrl = JPATH_ADMINISTRATOR."/components/com_###component###/###component###.xml";
return simplexml_load_file($manifestUrl);
}
/**
* Joomla version object
*/
protected static $JVersion;
/**
* set/get Joomla version
*/
public static function jVersion()
{
// check if set
if (!self::checkObject(self::$JVersion))
{
self::$JVersion = new JVersion();
}
return self::$JVersion;
}
/**
* Load the Contributors details.
*/
public static function getContributors()
{
// get params
$params = JComponentHelper::getParams('com_###component###');
// start contributors array
$contributors = array();
// get all Contributors (max 20)
$searchArray = range('0','20');
foreach($searchArray as $nr)
{
if ((NULL !== $params->get("showContributor".$nr)) && ($params->get("showContributor".$nr) == 1 || $params->get("showContributor".$nr) == 3))
{
// set link based of selected option
if($params->get("useContributor".$nr) == 1)
{
$link_front = '<a href="mailto:'.$params->get("emailContributor".$nr).'" target="_blank">';
$link_back = '</a>';
}
elseif($params->get("useContributor".$nr) == 2)
{
$link_front = '<a href="'.$params->get("linkContributor".$nr).'" target="_blank">';
$link_back = '</a>';
}
else
{
$link_front = '';
$link_back = '';
}
$contributors[$nr]['title'] = self::htmlEscape($params->get("titleContributor".$nr));
$contributors[$nr]['name'] = $link_front.self::htmlEscape($params->get("nameContributor".$nr)).$link_back;
}
}
return $contributors;
}###HELP###
/**
* Configure the Linkbar.
*/
public static function addSubmenu($submenu)
{
// load user for access menus
$user = JFactory::getUser();
// load the submenus to sidebar
###SUBMENU###
}###HELPER_CREATEUSER######HELPER_UIKIT######HELPER_EXEL###
public static function isPublished($id,$type)
{
if ($type == 'raw')
{
$type = 'item';
}
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select(array('a.published'));
$query->from('#__###component###_'.$type.' AS a');
$query->where('a.id = '. (int) $id);
$query->where('a.published = 1');
$db->setQuery($query);
$db->execute();
$found = $db->getNumRows();
if($found)
{
return true;
}
return false;
}
public static function getGroupName($id)
{
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select(array('a.title'));
$query->from('#__usergroups AS a');
$query->where('a.id = '. (int) $id);
$db->setQuery($query);
$db->execute();
$found = $db->getNumRows();
if($found)
{
return $db->loadResult();
}
return $id;
}
/**
* Get the action permissions
*
* @param string $view The related view name
* @param int $record The item to act upon
* @param string $views The related list view name
* @param mixed $target Only get this permission (like edit, create, delete)
* @param string $component The target component
* @param object $user The user whose permissions we are loading
*
* @return object The JObject of permission/authorised actions
*
*/
public static function getActions($view, &$record = null, $views = null, $target = null, $component = '###component###', $user = 'null')
{
// load the user if not given
if (!self::checkObject($user))
{
// get the user object
$user = JFactory::getUser();
}
// load the JObject
$result = new JObject;
// make view name safe (just incase)
$view = self::safeString($view);
if (self::checkString($views))
{
$views = self::safeString($views);
}
// get all actions from component
$actions = JAccess::getActionsFromFile(
JPATH_ADMINISTRATOR . '/components/com_' . $component . '/access.xml',
"/access/section[@name='component']/"
);
// if non found then return empty JObject
if (empty($actions))
{
return $result;
}
// get created by if not found
if (self::checkObject($record) && !isset($record->created_by) && isset($record->id))
{
$record->created_by = self::getVar($view, $record->id, 'id', 'created_by', '=', $component);
}
// set actions only set in component settings
$componentActions = array('core.admin', 'core.manage', 'core.options', 'core.export');
// check if we have a target
$checkTarget = false;
if ($target)
{
// convert to an array
if (self::checkString($target))
{
$target = array($target);
}
// check if we are good to go
if (self::checkArray($target))
{
$checkTarget = true;
}
}
// loop the actions and set the permissions
foreach ($actions as $action)
{
// check target action filter
if ($checkTarget && self::filterActions($view, $action->name, $target))
{
continue;
}
// set to use component default
$fallback = true;
// reset permission per/action
$permission = false;
$catpermission = false;
// set area
$area = 'comp';
// check if the record has an ID and the action is item related (not a component action)
if (self::checkObject($record) && isset($record->id) && $record->id > 0 && !in_array($action->name, $componentActions) &&
(strpos($action->name, 'core.') !== false || strpos($action->name, $view . '.') !== false))
{
// we are in item
$area = 'item';
// The record has been set. Check the record permissions.
$permission = $user->authorise($action->name, 'com_' . $component . '.' . $view . '.' . (int) $record->id);
// if no permission found, check edit own
if (!$permission)
{
// With edit, if the created_by matches current user then dig deeper.
if (($action->name === 'core.edit' || $action->name === $view . '.edit') && $record->created_by > 0 && ($record->created_by == $user->id))
{
// the correct target
$coreCheck = (array) explode('.', $action->name);
// check that we have both local and global access
if ($user->authorise($coreCheck[0] . '.edit.own', 'com_' . $component . '.' . $view . '.' . (int) $record->id) &&
$user->authorise($coreCheck[0] . '.edit.own', 'com_' . $component))
{
// allow edit
$result->set($action->name, true);
// set not to use global default
// because we already validated it
$fallback = false;
}
else
{
// do not allow edit
$result->set($action->name, false);
$fallback = false;
}
}
}
elseif (self::checkString($views) && isset($record->catid) && $record->catid > 0)
{
// we are in item
$area = 'category';
// set the core check
$coreCheck = explode('.', $action->name);
$core = $coreCheck[0];
// make sure we use the core. action check for the categories
if (strpos($action->name, $view) !== false && strpos($action->name, 'core.') === false )
{
$coreCheck[0] = 'core';
$categoryCheck = implode('.', $coreCheck);
}
else
{
$categoryCheck = $action->name;
}
// The record has a category. Check the category permissions.
$catpermission = $user->authorise($categoryCheck, 'com_' . $component . '.' . $views . '.category.' . (int) $record->catid);
if (!$catpermission && !is_null($catpermission))
{
// With edit, if the created_by matches current user then dig deeper.
if (($action->name === 'core.edit' || $action->name === $view . '.edit') && $record->created_by > 0 && ($record->created_by == $user->id))
{
// check that we have both local and global access
if ($user->authorise('core.edit.own', 'com_' . $component . '.' . $views . '.category.' . (int) $record->catid) &&
$user->authorise($core . '.edit.own', 'com_' . $component))
{
// allow edit
$result->set($action->name, true);
// set not to use global default
// because we already validated it
$fallback = false;
}
else
{
// do not allow edit
$result->set($action->name, false);
$fallback = false;
}
}
}
}
}
// if allowed then fallback on component global settings
if ($fallback)
{
// if item/category blocks access then don't fall back on global
if ((($area === 'item') && !$permission) || (($area === 'category') && !$catpermission))
{
// do not allow
$result->set($action->name, false);
}
// Finally remember the global settings have the final say. (even if item allow)
// The local item permissions can block, but it can't open and override of global permissions.
// Since items are created by users and global permissions is set by system admin.
else
{
$result->set($action->name, $user->authorise($action->name, 'com_' . $component));
}
}
}
return $result;
}
/**
* Filter the action permissions
*
* @param string $action The action to check
* @param array $targets The array of target actions
*
* @return boolean true if action should be filtered out
*
*/
protected static function filterActions(&$view, &$action, &$targets)
{
foreach ($targets as $target)
{
if (strpos($action, $view . '.' . $target) !== false ||
strpos($action, 'core.' . $target) !== false)
{
return false;
break;
}
}
return true;
}
/**
* Get any component's model
*/
public static function getModel($name, $path = JPATH_COMPONENT_ADMINISTRATOR, $Component = '###Component###', $config = array())
{
// fix the name
$name = self::safeString($name);
// full path to models
$fullPathModels = $path . '/models';
// load the model file
JModelLegacy::addIncludePath($fullPathModels, $Component . 'Model');
// make sure the table path is loaded
if (!isset($config['table_path']) || !self::checkString($config['table_path']))
{
// This is the JCB default path to tables in Joomla 3.x
$config['table_path'] = JPATH_ADMINISTRATOR . '/components/com_' . strtolower($Component) . '/tables';
}
// get instance
$model = JModelLegacy::getInstance($name, $Component . 'Model', $config);
// if model not found (strange)
if ($model == false)
{
jimport('joomla.filesystem.file');
// get file path
$filePath = $path . '/' . $name . '.php';
$fullPathModel = $fullPathModels . '/' . $name . '.php';
// check if it exists
if (File::exists($filePath))
{
// get the file
require_once $filePath;
}
elseif (File::exists($fullPathModel))
{
// get the file
require_once $fullPathModel;
}
// build class names
$modelClass = $Component . 'Model' . $name;
if (class_exists($modelClass))
{
// initialize the model
return new $modelClass($config);
}
}
return $model;
}
/**
* Add to asset Table
*/
public static function setAsset($id, $table, $inherit = true)
{
$parent = JTable::getInstance('Asset');
$parent->loadByName('com_###component###');
$parentId = $parent->id;
$name = 'com_###component###.'.$table.'.'.$id;
$title = '';
$asset = JTable::getInstance('Asset');
$asset->loadByName($name);
// Check for an error.
$error = $asset->getError();
if ($error)
{
return false;
}
else
{
// Specify how a new or moved node asset is inserted into the tree.
if ($asset->parent_id != $parentId)
{
$asset->setLocation($parentId, 'last-child');
}
// Prepare the asset to be stored.
$asset->parent_id = $parentId;
$asset->name = $name;
$asset->title = $title;
// get the default asset rules
$rules = self::getDefaultAssetRules('com_###component###', $table, $inherit);
if ($rules instanceof JAccessRules)
{
$asset->rules = (string) $rules;
}
if (!$asset->check() || !$asset->store())
{
JFactory::getApplication()->enqueueMessage($asset->getError(), 'warning');
return false;
}
else
{
// Create an asset_id or heal one that is corrupted.
$object = new stdClass();
// Must be a valid primary key value.
$object->id = $id;
$object->asset_id = (int) $asset->id;
// Update their asset_id to link to the asset table.
return JFactory::getDbo()->updateObject('#__###component###_'.$table, $object, 'id');
}
}
return false;
}
/**
* Gets the default asset Rules for a component/view.
*/
protected static function getDefaultAssetRules($component, $view, $inherit = true)
{
// if new or inherited
$assetId = 0;
// Only get the actual item rules if not inheriting
if (!$inherit)
{
// 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();
// check that there is a value
if ($db->getNumRows())
{
// asset already set so use saved rules
$assetId = (int) $db->loadResult();
}
}
// get asset rules
$result = JAccess::getAssetRules($assetId);
if ($result instanceof JAccessRules)
{
$_result = (string) $result;
$_result = json_decode($_result);
foreach ($_result as $name => &$rule)
{
$v = explode('.', $name);
if ($view !== $v[0])
{
// remove since it is not part of this view
unset($_result->$name);
}
elseif ($inherit)
{
// clear the value since we inherit
$rule = array();
}
}
// check if there are any view values remaining
if (count((array) $_result))
{
$_result = json_encode($_result);
$_result = array($_result);
// Instantiate and return the JAccessRules object for the asset rules.
$rules = new JAccessRules($_result);
// return filtered rules
return $rules;
}
}
return $result;
}
/**
* xmlAppend
*
* @param SimpleXMLElement $xml The XML element reference in which to inject a comment
* @param mixed $node A SimpleXMLElement node to append to the XML element reference, or a stdClass object containing a comment attribute to be injected before the XML node and a fieldXML attribute containing a SimpleXMLElement
*
* @return void
* @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::append($xml, $node);
*/
public static function xmlAppend(&$xml, $node)
{
Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::append($xml, $node);
}
/**
* xmlComment
*
* @param SimpleXMLElement $xml The XML element reference in which to inject a comment
* @param string $comment The comment to inject
*
* @return void
* @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::comment($xml, $comment);
*/
public static function xmlComment(&$xml, $comment)
{
Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::comment($xml, $comment);
}
/**
* xmlAddAttributes
*
* @param SimpleXMLElement $xml The XML element reference in which to inject a comment
* @param array $attributes The attributes to apply to the XML element
*
* @return null
* @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::attributes($xml, $attributes);
*/
public static function xmlAddAttributes(&$xml, $attributes = array())
{
Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::attributes($xml, $attributes);
}
/**
* xmlAddOptions
*
* @param SimpleXMLElement $xml The XML element reference in which to inject a comment
* @param array $options The options to apply to the XML element
*
* @return void
* @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::options($xml, $options);
*/
public static function xmlAddOptions(&$xml, $options = array())
{
Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::options($xml, $options);
}
/**
* get the field object
*
* @param array $attributes The array of attributes
* @param string $default The default of the field
* @param array $options The options to apply to the XML element
*
* @return object
* @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::field($attributes, $default, $options);
*/
public static function getFieldObject(&$attributes, $default = '', $options = null)
{
return Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::field($attributes, $default, $options);
}
/**
* get the field xml
*
* @param array $attributes The array of attributes
* @param array $options The options to apply to the XML element
*
* @return object
* @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::xml($attributes, $options);
*/
public static function getFieldXML(&$attributes, $options = null)
{
return Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::xml($attributes, $options);
}
/**
* Render Bool Button
*
* @param array $args All the args for the button
* 0) name
* 1) additional (options class) // not used at this time
* 2) default
* 3) yes (name)
* 4) no (name)
*
* @return string The input html of the button
*
*/
public static function renderBoolButton()
{
$args = func_get_args();
// check if there is additional button class
$additional = isset($args[1]) ? (string) $args[1] : ''; // not used at this time
// button attributes
$buttonAttributes = array(
'type' => 'radio',
'name' => isset($args[0]) ? self::htmlEscape($args[0]) : 'bool_button',
'label' => isset($args[0]) ? self::safeString(self::htmlEscape($args[0]), 'Ww') : 'Bool Button', // not seen anyway
'class' => 'btn-group',
'filter' => 'INT',
'default' => isset($args[2]) ? (int) $args[2] : 0);
// set the button options
$buttonOptions = array(
'1' => isset($args[3]) ? self::htmlEscape($args[3]) : 'JYES',
'0' => isset($args[4]) ? self::htmlEscape($args[4]) : 'JNO');
// return the input
return self::getFieldObject($buttonAttributes, $buttonAttributes['default'], $buttonOptions)->input;
}
/**
* Check if we are connected
* Thanks https://stackoverflow.com/a/4860432/1429677
*
* @returns bool true on success
*/
public static function isConnected()
{
// If example.com is down, then probably the whole internet is down, since IANA maintains the domain. Right?
$connected = @fsockopen("www.example.com", 80);
// website, port (try 80 or 443)
if ($connected)
{
//action when connected
$is_conn = true;
fclose($connected);
}
else
{
//action in connection failure
$is_conn = false;
}
return $is_conn;
}
// typo sorry!
public static function sorten($string, $length = 40, $addTip = true)
{
return self::shorten($string, $length, $addTip);
}###HELPER_LICENSE_LOCK######GET_CRYPT_KEY###
}

View File

@ -1,686 +0,0 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
###BOM###
// No direct access to this file
defined('_JEXEC') or die('Restricted access');###SITE_POWER_HELPER###
###SITE_HELPER_CLASS_HEADER###
/**
* ###Component### component helper
*/
abstract class ###Component###Helper
{
/**
* Adding the utilities trait to this class
*
* @deprecated 4.0 - Check the trait methods for details, a legacy implementation
*/
use Utilities;
/**
* get the Component Code Name
*/
public static $ComponentCodeName = '###component###';
/**
* Composer Switch
*
* @var array
*/
protected static $composer = array();###SITE_GLOBAL_EVENT_HELPER######SITE_CUSTOM_HELPER_SCRIPT######BOTH_CUSTOM_HELPER_SCRIPT###
/**
* Load the Composer Vendors
*/
public static function composerAutoload($target)
{
// insure we load the composer vendor only once
if (!isset(self::$composer[$target]))
{
// get the function name
$functionName = self::safeString('compose' . $target);
// check if method exist
if (method_exists(__CLASS__, $functionName))
{
return self::{$functionName}();
}
return false;
}
return self::$composer[$target];
}
/**
* Load the Component xml manifest.
*/
public static function manifest()
{
$manifestUrl = JPATH_ADMINISTRATOR."/components/com_###component###/###component###.xml";
return simplexml_load_file($manifestUrl);
}
/**
* Joomla version object
*/
protected static $JVersion;
/**
* set/get Joomla version
*/
public static function jVersion()
{
// check if set
if (!self::checkObject(self::$JVersion))
{
self::$JVersion = new JVersion();
}
return self::$JVersion;
}
/**
* Load the Contributors details.
*/
public static function getContributors()
{
// get params
$params = JComponentHelper::getParams('com_###component###');
// start contributors array
$contributors = array();
// get all Contributors (max 20)
$searchArray = range('0','20');
foreach($searchArray as $nr)
{
if ((NULL !== $params->get("showContributor".$nr)) && ($params->get("showContributor".$nr) == 2 || $params->get("showContributor".$nr) == 3))
{
// set link based of selected option
if($params->get("useContributor".$nr) == 1)
{
$link_front = '<a href="mailto:'.$params->get("emailContributor".$nr).'" target="_blank">';
$link_back = '</a>';
}
elseif($params->get("useContributor".$nr) == 2)
{
$link_front = '<a href="'.$params->get("linkContributor".$nr).'" target="_blank">';
$link_back = '</a>';
}
else
{
$link_front = '';
$link_back = '';
}
$contributors[$nr]['title'] = self::htmlEscape($params->get("titleContributor".$nr));
$contributors[$nr]['name'] = $link_front.self::htmlEscape($params->get("nameContributor".$nr)).$link_back;
}
}
return $contributors;
}###HELP_SITE###
/**
* Get any component's model
*/
public static function getModel($name, $path = JPATH_COMPONENT_SITE, $Component = '###Component###', $config = array())
{
// fix the name
$name = self::safeString($name);
// full path to models
$fullPathModels = $path . '/models';
// load the model file
JModelLegacy::addIncludePath($fullPathModels, $Component . 'Model');
// make sure the table path is loaded
if (!isset($config['table_path']) || !self::checkString($config['table_path']))
{
// This is the JCB default path to tables in Joomla 3.x
$config['table_path'] = JPATH_ADMINISTRATOR . '/components/com_' . strtolower($Component) . '/tables';
}
// get instance
$model = JModelLegacy::getInstance($name, $Component . 'Model', $config);
// if model not found (strange)
if ($model == false)
{
jimport('joomla.filesystem.file');
// get file path
$filePath = $path . '/' . $name . '.php';
$fullPathModel = $fullPathModels . '/' . $name . '.php';
// check if it exists
if (File::exists($filePath))
{
// get the file
require_once $filePath;
}
elseif (File::exists($fullPathModel))
{
// get the file
require_once $fullPathModel;
}
// build class names
$modelClass = $Component . 'Model' . $name;
if (class_exists($modelClass))
{
// initialize the model
return new $modelClass($config);
}
}
return $model;
}
/**
* Add to asset Table
*/
public static function setAsset($id, $table, $inherit = true)
{
$parent = JTable::getInstance('Asset');
$parent->loadByName('com_###component###');
$parentId = $parent->id;
$name = 'com_###component###.'.$table.'.'.$id;
$title = '';
$asset = JTable::getInstance('Asset');
$asset->loadByName($name);
// Check for an error.
$error = $asset->getError();
if ($error)
{
return false;
}
else
{
// Specify how a new or moved node asset is inserted into the tree.
if ($asset->parent_id != $parentId)
{
$asset->setLocation($parentId, 'last-child');
}
// Prepare the asset to be stored.
$asset->parent_id = $parentId;
$asset->name = $name;
$asset->title = $title;
// get the default asset rules
$rules = self::getDefaultAssetRules('com_###component###', $table, $inherit);
if ($rules instanceof JAccessRules)
{
$asset->rules = (string) $rules;
}
if (!$asset->check() || !$asset->store())
{
JFactory::getApplication()->enqueueMessage($asset->getError(), 'warning');
return false;
}
else
{
// Create an asset_id or heal one that is corrupted.
$object = new stdClass();
// Must be a valid primary key value.
$object->id = $id;
$object->asset_id = (int) $asset->id;
// Update their asset_id to link to the asset table.
return JFactory::getDbo()->updateObject('#__###component###_'.$table, $object, 'id');
}
}
return false;
}
/**
* Gets the default asset Rules for a component/view.
*/
protected static function getDefaultAssetRules($component, $view, $inherit = true)
{
// if new or inherited
$assetId = 0;
// Only get the actual item rules if not inheriting
if (!$inherit)
{
// 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();
// check that there is a value
if ($db->getNumRows())
{
// asset already set so use saved rules
$assetId = (int) $db->loadResult();
}
}
// get asset rules
$result = JAccess::getAssetRules($assetId);
if ($result instanceof JAccessRules)
{
$_result = (string) $result;
$_result = json_decode($_result);
foreach ($_result as $name => &$rule)
{
$v = explode('.', $name);
if ($view !== $v[0])
{
// remove since it is not part of this view
unset($_result->$name);
}
elseif ($inherit)
{
// clear the value since we inherit
$rule = array();
}
}
// check if there are any view values remaining
if (count((array) $_result))
{
$_result = json_encode($_result);
$_result = array($_result);
// Instantiate and return the JAccessRules object for the asset rules.
$rules = new JAccessRules($_result);
// return filtered rules
return $rules;
}
}
return $result;
}
/**
* xmlAppend
*
* @param SimpleXMLElement $xml The XML element reference in which to inject a comment
* @param mixed $node A SimpleXMLElement node to append to the XML element reference, or a stdClass object containing a comment attribute to be injected before the XML node and a fieldXML attribute containing a SimpleXMLElement
*
* @return void
* @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::append($xml, $node);
*/
public static function xmlAppend(&$xml, $node)
{
Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::append($xml, $node);
}
/**
* xmlComment
*
* @param SimpleXMLElement $xml The XML element reference in which to inject a comment
* @param string $comment The comment to inject
*
* @return void
* @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::comment($xml, $comment);
*/
public static function xmlComment(&$xml, $comment)
{
Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::comment($xml, $comment);
}
/**
* xmlAddAttributes
*
* @param SimpleXMLElement $xml The XML element reference in which to inject a comment
* @param array $attributes The attributes to apply to the XML element
*
* @return void
* @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::attributes($xml, $attributes);
*/
public static function xmlAddAttributes(&$xml, $attributes = array())
{
Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::attributes($xml, $attributes);
}
/**
* xmlAddOptions
*
* @param SimpleXMLElement $xml The XML element reference in which to inject a comment
* @param array $options The options to apply to the XML element
*
* @return void
* @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::options($xml, $options);
*/
public static function xmlAddOptions(&$xml, $options = array())
{
Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::options($xml, $options);
}
/**
* get the field object
*
* @param array $attributes The array of attributes
* @param string $default The default of the field
* @param array $options The options to apply to the XML element
*
* @return object
* @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::field($attributes, $default, $options);
*/
public static function getFieldObject(&$attributes, $default = '', $options = null)
{
return Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::field($attributes, $default, $options);
}
/**
* get the field xml
*
* @param array $attributes The array of attributes
* @param array $options The options to apply to the XML element
*
* @return object
* @deprecated 3.3 Use Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::xml($attributes, $options);
*/
public static function getFieldXML(&$attributes, $options = null)
{
return Super___1198aecf_84c6_45d2_aea8_d531aa4afdfa___Power::xml($attributes, $options);
}
/**
* Render Bool Button
*
* @param array $args All the args for the button
* 0) name
* 1) additional (options class) // not used at this time
* 2) default
* 3) yes (name)
* 4) no (name)
*
* @return string The input html of the button
*
*/
public static function renderBoolButton()
{
$args = func_get_args();
// check if there is additional button class
$additional = isset($args[1]) ? (string) $args[1] : ''; // not used at this time
// button attributes
$buttonAttributes = array(
'type' => 'radio',
'name' => isset($args[0]) ? self::htmlEscape($args[0]) : 'bool_button',
'label' => isset($args[0]) ? self::safeString(self::htmlEscape($args[0]), 'Ww') : 'Bool Button', // not seen anyway
'class' => 'btn-group',
'filter' => 'INT',
'default' => isset($args[2]) ? (int) $args[2] : 0);
// set the button options
$buttonOptions = array(
'1' => isset($args[3]) ? self::htmlEscape($args[3]) : 'JYES',
'0' => isset($args[4]) ? self::htmlEscape($args[4]) : 'JNO');
// return the input
return self::getFieldObject($buttonAttributes, $buttonAttributes['default'], $buttonOptions)->input;
}###HELPER_UIKIT######HELPER_CREATEUSER###
public static function isPublished($id,$type)
{
if ($type == 'raw')
{
$type = 'item';
}
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select(array('a.published'));
$query->from('#__###component###_'.$type.' AS a');
$query->where('a.id = '. (int) $id);
$query->where('a.published = 1');
$db->setQuery($query);
$db->execute();
$found = $db->getNumRows();
if($found)
{
return true;
}
return false;
}
public static function getGroupName($id)
{
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select(array('a.title'));
$query->from('#__usergroups AS a');
$query->where('a.id = '. (int) $id);
$db->setQuery($query);
$db->execute();
$found = $db->getNumRows();
if($found)
{
return $db->loadResult();
}
return $id;
}
/**
* Get the action permissions
*
* @param string $view The related view name
* @param int $record The item to act upon
* @param string $views The related list view name
* @param mixed $target Only get this permission (like edit, create, delete)
* @param string $component The target component
* @param object $user The user whose permissions we are loading
*
* @return object The JObject of permission/authorised actions
*
*/
public static function getActions($view, &$record = null, $views = null, $target = null, $component = '###component###', $user = 'null')
{
// load the user if not given
if (!self::checkObject($user))
{
// get the user object
$user = JFactory::getUser();
}
// load the JObject
$result = new JObject;
// make view name safe (just incase)
$view = self::safeString($view);
if (self::checkString($views))
{
$views = self::safeString($views);
}
// get all actions from component
$actions = JAccess::getActionsFromFile(
JPATH_ADMINISTRATOR . '/components/com_' . $component . '/access.xml',
"/access/section[@name='component']/"
);
// if non found then return empty JObject
if (empty($actions))
{
return $result;
}
// get created by if not found
if (self::checkObject($record) && !isset($record->created_by) && isset($record->id))
{
$record->created_by = self::getVar($view, $record->id, 'id', 'created_by', '=', $component);
}
// set actions only set in component settings
$componentActions = array('core.admin', 'core.manage', 'core.options', 'core.export');
// check if we have a target
$checkTarget = false;
if ($target)
{
// convert to an array
if (self::checkString($target))
{
$target = array($target);
}
// check if we are good to go
if (self::checkArray($target))
{
$checkTarget = true;
}
}
// loop the actions and set the permissions
foreach ($actions as $action)
{
// check target action filter
if ($checkTarget && self::filterActions($view, $action->name, $target))
{
continue;
}
// set to use component default
$fallback = true;
// reset permission per/action
$permission = false;
$catpermission = false;
// set area
$area = 'comp';
// check if the record has an ID and the action is item related (not a component action)
if (self::checkObject($record) && isset($record->id) && $record->id > 0 && !in_array($action->name, $componentActions) &&
(strpos($action->name, 'core.') !== false || strpos($action->name, $view . '.') !== false))
{
// we are in item
$area = 'item';
// The record has been set. Check the record permissions.
$permission = $user->authorise($action->name, 'com_' . $component . '.' . $view . '.' . (int) $record->id);
// if no permission found, check edit own
if (!$permission)
{
// With edit, if the created_by matches current user then dig deeper.
if (($action->name === 'core.edit' || $action->name === $view . '.edit') && $record->created_by > 0 && ($record->created_by == $user->id))
{
// the correct target
$coreCheck = (array) explode('.', $action->name);
// check that we have both local and global access
if ($user->authorise($coreCheck[0] . '.edit.own', 'com_' . $component . '.' . $view . '.' . (int) $record->id) &&
$user->authorise($coreCheck[0] . '.edit.own', 'com_' . $component))
{
// allow edit
$result->set($action->name, true);
// set not to use global default
// because we already validated it
$fallback = false;
}
else
{
// do not allow edit
$result->set($action->name, false);
$fallback = false;
}
}
}
elseif (self::checkString($views) && isset($record->catid) && $record->catid > 0)
{
// we are in item
$area = 'category';
// set the core check
$coreCheck = explode('.', $action->name);
$core = $coreCheck[0];
// make sure we use the core. action check for the categories
if (strpos($action->name, $view) !== false && strpos($action->name, 'core.') === false )
{
$coreCheck[0] = 'core';
$categoryCheck = implode('.', $coreCheck);
}
else
{
$categoryCheck = $action->name;
}
// The record has a category. Check the category permissions.
$catpermission = $user->authorise($categoryCheck, 'com_' . $component . '.' . $views . '.category.' . (int) $record->catid);
if (!$catpermission && !is_null($catpermission))
{
// With edit, if the created_by matches current user then dig deeper.
if (($action->name === 'core.edit' || $action->name === $view . '.edit') && $record->created_by > 0 && ($record->created_by == $user->id))
{
// check that we have both local and global access
if ($user->authorise('core.edit.own', 'com_' . $component . '.' . $views . '.category.' . (int) $record->catid) &&
$user->authorise($core . '.edit.own', 'com_' . $component))
{
// allow edit
$result->set($action->name, true);
// set not to use global default
// because we already validated it
$fallback = false;
}
else
{
// do not allow edit
$result->set($action->name, false);
$fallback = false;
}
}
}
}
}
// if allowed then fallback on component global settings
if ($fallback)
{
// if item/category blocks access then don't fall back on global
if ((($area === 'item') && !$permission) || (($area === 'category') && !$catpermission))
{
// do not allow
$result->set($action->name, false);
}
// Finally remember the global settings have the final say. (even if item allow)
// The local item permissions can block, but it can't open and override of global permissions.
// Since items are created by users and global permissions is set by system admin.
else
{
$result->set($action->name, $user->authorise($action->name, 'com_' . $component));
}
}
}
return $result;
}
/**
* Filter the action permissions
*
* @param string $action The action to check
* @param array $targets The array of target actions
*
* @return boolean true if action should be filtered out
*
*/
protected static function filterActions(&$view, &$action, &$targets)
{
foreach ($targets as $target)
{
if (strpos($action, $view . '.' . $target) !== false ||
strpos($action, 'core.' . $target) !== false)
{
return false;
break;
}
}
return true;
}
/**
* Check if we are connected
* Thanks https://stackoverflow.com/a/4860432/1429677
*
* @returns bool true on success
*/
public static function isConnected()
{
// If example.com is down, then probably the whole internet is down, since IANA maintains the domain. Right?
$connected = @fsockopen("www.example.com", 80);
// website, port (try 80 or 443)
if ($connected)
{
//action when connected
$is_conn = true;
fclose($connected);
}
else
{
//action in connection failure
$is_conn = false;
}
return $is_conn;
}
// typo sorry!
public static function sorten($string, $length = 40, $addTip = true)
{
return self::shorten($string, $length, $addTip);
}###HELPER_SITE_LICENSE_LOCK######GET_CRYPT_KEY###
}

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,6 +17,10 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access'); defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\HTML\HTMLHelper as Html;
// import the list field type // import the list field type
jimport('joomla.form.helper'); jimport('joomla.form.helper');
JFormHelper::loadFieldClass('checkboxes'); JFormHelper::loadFieldClass('checkboxes');
@ -29,14 +33,14 @@ class ###JPREFIX###FormField###Type### extends JFormFieldCheckboxes
/** /**
* The ###type### field type. * The ###type### field type.
* *
* @var string * @var string
*/ */
public $type = '###type###'; public $type = '###type###';
/** /**
* Method to get a list of options for a list input. * Method to get a list of options for a list input.
* *
* @return array An array of JHtml options. * @return array An array of Html options.
*/ */
protected function getOptions() protected function getOptions()
{ {

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,7 +17,7 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access'); defined('_JEXEC') or die('Restricted access');
###JFORM_TYPE_HEADER### ###FORM_CUSTOM_FIELD_HEADER###
/** /**
* ###Type### Form Field class for the ###Component### component * ###Type### Form Field class for the ###Component### component
@ -27,7 +27,7 @@ class ###JPREFIX###FormField###Type### extends JFormField###JFORM_EXTENDS###
/** /**
* The ###type### field type. * The ###type### field type.
* *
* @var string * @var string
*/ */
public $type = '###type###';###JFORM_TYPE_PHP### public $type = '###type###';###FORM_CUSTOM_FIELD_PHP###
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,6 +17,10 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access'); defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\HTML\HTMLHelper as Html;
// import the list field type // import the list field type
jimport('joomla.form.helper'); jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list'); JFormHelper::loadFieldClass('list');
@ -29,14 +33,14 @@ class ###JPREFIX###FormField###Type### extends JFormFieldList
/** /**
* The ###type### field type. * The ###type### field type.
* *
* @var string * @var string
*/ */
public $type = '###type###';###ADD_BUTTON### public $type = '###type###';###ADD_BUTTON###
/** /**
* Method to get a list of options for a list input. * Method to get a list of options for a list input.
* *
* @return array An array of JHtml options. * @return array An array of Html options.
*/ */
protected function getOptions() protected function getOptions()
{ {

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,6 +17,10 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access'); defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\HTML\HTMLHelper as Html;
// import the list field type // import the list field type
jimport('joomla.form.helper'); jimport('joomla.form.helper');
JFormHelper::loadFieldClass('radio'); JFormHelper::loadFieldClass('radio');
@ -29,14 +33,14 @@ class ###JPREFIX###FormField###Type### extends JFormFieldRadio
/** /**
* The ###type### field type. * The ###type### field type.
* *
* @var string * @var string
*/ */
public $type = '###type###'; public $type = '###type###';
/** /**
* Method to get a list of options for a list input. * Method to get a list of options for a list input.
* *
* @return array An array of JHtml options. * @return array An array of Html options.
*/ */
protected function getOptions() protected function getOptions()
{ {

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,6 +17,10 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access'); defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\HTML\HTMLHelper as Html;
// import the list field type // import the list field type
jimport('joomla.form.helper'); jimport('joomla.form.helper');
JFormHelper::loadFieldClass('user'); JFormHelper::loadFieldClass('user');
@ -29,7 +33,7 @@ class ###JPREFIX###FormField###Type### extends JFormFieldUser
/** /**
* The ###type### field type. * The ###type### field type.
* *
* @var string * @var string
*/ */
public $type = '###type###'; public $type = '###type###';

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,9 +17,12 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('JPATH_PLATFORM') or die; defined('JPATH_PLATFORM') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Form\Form; use Joomla\CMS\Form\Form;
use Joomla\CMS\Form\FormRule; use Joomla\CMS\Form\FormRule;
use Joomla\Registry\Registry; use Joomla\Registry\Registry;
use Joomla\CMS\HTML\HTMLHelper as Html;
/** /**
* Form Rule (###Name###) class for the Joomla Platform. * Form Rule (###Name###) class for the Joomla Platform.

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -24,10 +24,10 @@ defined('_JEXEC') or die('Restricted access');
*/ */
class ###Component###Model###Views### extends ListModel class ###Component###Model###Views### extends ListModel
{ {
public function __construct($config = array()) public function __construct($config = [])
{ {
if (empty($config['filter_fields'])) if (empty($config['filter_fields']))
{ {
$config['filter_fields'] = array( $config['filter_fields'] = array(
###FILTER_FIELDS### ###FILTER_FIELDS###
); );
@ -49,7 +49,7 @@ class ###Component###Model###Views### extends ListModel
*/ */
protected function populateState($ordering = null, $direction = null) protected function populateState($ordering = null, $direction = null)
{ {
$app = JFactory::getApplication(); $app = Factory::getApplication();
// Adjust the context to support modal layouts. // Adjust the context to support modal layouts.
if ($layout = $app->input->get('layout')) if ($layout = $app->input->get('layout'))
@ -60,7 +60,7 @@ class ###Component###Model###Views### extends ListModel
// List state information. // List state information.
parent::populateState($ordering, $direction); parent::populateState($ordering, $direction);
} }
/** /**
* Method to get an array of data items. * Method to get an array of data items.
* *
@ -70,21 +70,21 @@ class ###Component###Model###Views### extends ListModel
{###LICENSE_LOCKED_CHECK######CHECKINCALL### {###LICENSE_LOCKED_CHECK######CHECKINCALL###
// load parent items // load parent items
$items = parent::getItems();###GET_ITEMS_METHOD_STRING_FIX######SELECTIONTRANSLATIONFIX######GET_ITEMS_METHOD_AFTER_ALL### $items = parent::getItems();###GET_ITEMS_METHOD_STRING_FIX######SELECTIONTRANSLATIONFIX######GET_ITEMS_METHOD_AFTER_ALL###
// return items // return items
return $items; return $items;
}###SELECTIONTRANSLATIONFIXFUNC### }###SELECTIONTRANSLATIONFIXFUNC###
/** /**
* Method to build an SQL query to load the list data. * Method to build an SQL query to load the list data.
* *
* @return string An SQL query * @return string An SQL query
*/ */
protected function getListQuery() protected function getListQuery()
{###LICENSE_LOCKED_CHECK### {###LICENSE_LOCKED_CHECK###
###LISTQUERY### ###LISTQUERY###
}###MODELEXPORTMETHOD######LICENSE_LOCKED_SET_BOOL### }###MODELEXPORTMETHOD######LICENSE_LOCKED_SET_BOOL###
/** /**
* Method to get a store id based on model configuration state. * Method to get a store id based on model configuration state.
* *

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -25,12 +25,12 @@ defined('_JEXEC') or die('Restricted access');
class ###Component###ModelAjax extends ListModel class ###Component###ModelAjax extends ListModel
{ {
protected $app_params; protected $app_params;
public function __construct() public function __construct()
{ {
parent::__construct(); parent::__construct();
// get params // get params
$this->app_params = JComponentHelper::getParams('com_###component###'); $this->app_params = ComponentHelper::getParams('com_###component###');
}###AJAX_MODEL_METHODS### }###AJAX_MODEL_METHODS###
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -30,7 +30,7 @@ class ###Component###ModelAjax extends ListModel
{ {
parent::__construct(); parent::__construct();
// get params // get params
$this->app_params = JComponentHelper::getParams('com_###component###'); $this->app_params = ComponentHelper::getParams('com_###component###');
}###AJAX_SITE_MODEL_METHODS### }###AJAX_SITE_MODEL_METHODS###
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -27,9 +27,9 @@ class ###Component###Model###Component### extends ListModel
public function getIcons() public function getIcons()
{ {
// load user for access menus // load user for access menus
$user = JFactory::getUser(); $user = Factory::getUser();
// reset icon array // reset icon array
$icons = array(); $icons = [];
// view groups array // view groups array
$viewGroups = array( $viewGroups = array(
'main' => array(###DASHBOARDICONS###) 'main' => array(###DASHBOARDICONS###)
@ -38,7 +38,7 @@ class ###Component###Model###Component### extends ListModel
foreach($viewGroups as $group => $views) foreach($viewGroups as $group => $views)
{ {
$i = 0; $i = 0;
if (###Component###Helper::checkArray($views)) if (Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::check($views))
{ {
foreach($views as $view) foreach($views as $view)
{ {
@ -50,11 +50,11 @@ class ###Component###Model###Component### extends ListModel
if (count($dwd) == 3) if (count($dwd) == 3)
{ {
list($type, $name, $url) = $dwd; list($type, $name, $url) = $dwd;
$viewName = $name; $viewName = $name;
$alt = $name; $alt = $name;
$url = $url; $url = $url;
$image = $name . '.' . $type; $image = $name . '.' . $type;
$name = 'COM_###COMPONENT###_DASHBOARD_' . ###Component###Helper::safeString($name,'U'); $name = 'COM_###COMPONENT###_DASHBOARD_' . Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe($name,'U');
} }
} }
// internal views // internal views
@ -76,11 +76,11 @@ class ###Component###Model###Component### extends ListModel
switch($action) switch($action)
{ {
case 'add': case 'add':
$url = 'index.php?option=com_###component###&view=' . $name . '&layout=edit'; $url = 'index.php?option=com_###component###&view=' . $name . '&layout=edit';
$image = $name . '_' . $action. '.' . $type; $image = $name . '_' . $action. '.' . $type;
$alt = $name . '&nbsp;' . $action; $alt = $name . '&nbsp;' . $action;
$name = 'COM_###COMPONENT###_DASHBOARD_'.###Component###Helper::safeString($name,'U').'_ADD'; $name = 'COM_###COMPONENT###_DASHBOARD_'.Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe($name,'U').'_ADD';
$add = true; $add = true;
break; break;
default: default:
// check for new convention (more stable) // check for new convention (more stable)
@ -93,34 +93,34 @@ class ###Component###Model###Component### extends ListModel
{ {
$extension = 'com_###component###.' . $name; $extension = 'com_###component###.' . $name;
} }
$url = 'index.php?option=com_categories&view=categories&extension=' . $extension; $url = 'index.php?option=com_categories&view=categories&extension=' . $extension;
$image = $name . '_' . $action . '.' . $type; $image = $name . '_' . $action . '.' . $type;
$alt = $viewName . '&nbsp;' . $action; $alt = $viewName . '&nbsp;' . $action;
$name = 'COM_###COMPONENT###_DASHBOARD_' . ###Component###Helper::safeString($name,'U') . '_' . ###Component###Helper::safeString($action,'U'); $name = 'COM_###COMPONENT###_DASHBOARD_' . Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe($name,'U') . '_' . Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe($action,'U');
break; break;
} }
} }
else else
{ {
$viewName = $name; $viewName = $name;
$alt = $name; $alt = $name;
$url = 'index.php?option=com_###component###&view=' . $name; $url = 'index.php?option=com_###component###&view=' . $name;
$image = $name . '.' . $type; $image = $name . '.' . $type;
$name = 'COM_###COMPONENT###_DASHBOARD_' . ###Component###Helper::safeString($name,'U'); $name = 'COM_###COMPONENT###_DASHBOARD_' . Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::safe($name,'U');
$hover = false; $hover = false;
} }
} }
else else
{ {
$viewName = $view; $viewName = $view;
$alt = $view; $alt = $view;
$url = 'index.php?option=com_###component###&view=' . $view; $url = 'index.php?option=com_###component###&view=' . $view;
$image = $view . '.png'; $image = $view . '.png';
$name = ucwords($view).'<br /><br />'; $name = ucwords($view).'<br /><br />';
$hover = false; $hover = false;
} }
// first make sure the view access is set // first make sure the view access is set
if (###Component###Helper::checkArray($viewAccess)) if (Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::check($viewAccess))
{ {
// setup some defaults // setup some defaults
$dashboard_add = false; $dashboard_add = false;
@ -128,11 +128,11 @@ class ###Component###Model###Component### extends ListModel
$accessTo = ''; $accessTo = '';
$accessAdd = ''; $accessAdd = '';
// access checking start // access checking start
$accessCreate = (isset($viewAccess[$viewName.'.create'])) ? ###Component###Helper::checkString($viewAccess[$viewName.'.create']):false; $accessCreate = (isset($viewAccess[$viewName.'.create'])) ? Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($viewAccess[$viewName.'.create']):false;
$accessAccess = (isset($viewAccess[$viewName.'.access'])) ? ###Component###Helper::checkString($viewAccess[$viewName.'.access']):false; $accessAccess = (isset($viewAccess[$viewName.'.access'])) ? Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($viewAccess[$viewName.'.access']):false;
// set main controllers // set main controllers
$accessDashboard_add = (isset($viewAccess[$viewName.'.dashboard_add'])) ? ###Component###Helper::checkString($viewAccess[$viewName.'.dashboard_add']):false; $accessDashboard_add = (isset($viewAccess[$viewName.'.dashboard_add'])) ? Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($viewAccess[$viewName.'.dashboard_add']):false;
$accessDashboard_list = (isset($viewAccess[$viewName.'.dashboard_list'])) ? ###Component###Helper::checkString($viewAccess[$viewName.'.dashboard_list']):false; $accessDashboard_list = (isset($viewAccess[$viewName.'.dashboard_list'])) ? Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($viewAccess[$viewName.'.dashboard_list']):false;
// check for adding access // check for adding access
if ($add && $accessCreate) if ($add && $accessCreate)
{ {
@ -150,64 +150,64 @@ class ###Component###Model###Component### extends ListModel
// set main access controllers // set main access controllers
if ($accessDashboard_add) if ($accessDashboard_add)
{ {
$dashboard_add = $user->authorise($viewAccess[$viewName.'.dashboard_add'], 'com_###component###'); $dashboard_add = $user->authorise($viewAccess[$viewName.'.dashboard_add'], 'com_###component###');
} }
if ($accessDashboard_list) if ($accessDashboard_list)
{ {
$dashboard_list = $user->authorise($viewAccess[$viewName.'.dashboard_list'], 'com_###component###'); $dashboard_list = $user->authorise($viewAccess[$viewName.'.dashboard_list'], 'com_###component###');
} }
if (###Component###Helper::checkString($accessAdd) && ###Component###Helper::checkString($accessTo)) if (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($accessAdd) && Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($accessTo))
{ {
// check access // check access
if($user->authorise($accessAdd, 'com_###component###') && $user->authorise($accessTo, 'com_###component###') && $dashboard_add) if($user->authorise($accessAdd, 'com_###component###') && $user->authorise($accessTo, 'com_###component###') && $dashboard_add)
{ {
$icons[$group][$i] = new StdClass; $icons[$group][$i] = new StdClass;
$icons[$group][$i]->url = $url; $icons[$group][$i]->url = $url;
$icons[$group][$i]->name = $name; $icons[$group][$i]->name = $name;
$icons[$group][$i]->image = $image; $icons[$group][$i]->image = $image;
$icons[$group][$i]->alt = $alt; $icons[$group][$i]->alt = $alt;
} }
} }
elseif (###Component###Helper::checkString($accessTo)) elseif (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($accessTo))
{ {
// check access // check access
if($user->authorise($accessTo, 'com_###component###') && $dashboard_list) if($user->authorise($accessTo, 'com_###component###') && $dashboard_list)
{ {
$icons[$group][$i] = new StdClass; $icons[$group][$i] = new StdClass;
$icons[$group][$i]->url = $url; $icons[$group][$i]->url = $url;
$icons[$group][$i]->name = $name; $icons[$group][$i]->name = $name;
$icons[$group][$i]->image = $image; $icons[$group][$i]->image = $image;
$icons[$group][$i]->alt = $alt; $icons[$group][$i]->alt = $alt;
} }
} }
elseif (###Component###Helper::checkString($accessAdd)) elseif (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($accessAdd))
{ {
// check access // check access
if($user->authorise($accessAdd, 'com_###component###') && $dashboard_add) if($user->authorise($accessAdd, 'com_###component###') && $dashboard_add)
{ {
$icons[$group][$i] = new StdClass; $icons[$group][$i] = new StdClass;
$icons[$group][$i]->url = $url; $icons[$group][$i]->url = $url;
$icons[$group][$i]->name = $name; $icons[$group][$i]->name = $name;
$icons[$group][$i]->image = $image; $icons[$group][$i]->image = $image;
$icons[$group][$i]->alt = $alt; $icons[$group][$i]->alt = $alt;
} }
} }
else else
{ {
$icons[$group][$i] = new StdClass; $icons[$group][$i] = new StdClass;
$icons[$group][$i]->url = $url; $icons[$group][$i]->url = $url;
$icons[$group][$i]->name = $name; $icons[$group][$i]->name = $name;
$icons[$group][$i]->image = $image; $icons[$group][$i]->image = $image;
$icons[$group][$i]->alt = $alt; $icons[$group][$i]->alt = $alt;
} }
} }
else else
{ {
$icons[$group][$i] = new StdClass; $icons[$group][$i] = new StdClass;
$icons[$group][$i]->url = $url; $icons[$group][$i]->url = $url;
$icons[$group][$i]->name = $name; $icons[$group][$i]->name = $name;
$icons[$group][$i]->image = $image; $icons[$group][$i]->image = $image;
$icons[$group][$i]->alt = $alt; $icons[$group][$i]->alt = $alt;
} }
$i++; $i++;
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -46,15 +46,15 @@ class ###Component###Model###SViews### extends ListModel
protected function getListQuery() protected function getListQuery()
{ {
// Get the current user for authorisation checks // Get the current user for authorisation checks
$this->user = JFactory::getUser(); $this->user = Factory::getUser();
$this->userId = $this->user->get('id'); $this->userId = $this->user->get('id');
$this->guest = $this->user->get('guest'); $this->guest = $this->user->get('guest');
$this->groups = $this->user->get('groups'); $this->groups = $this->user->get('groups');
$this->authorisedGroups = $this->user->getAuthorisedGroups(); $this->authorisedGroups = $this->user->getAuthorisedGroups();
$this->levels = $this->user->getAuthorisedViewLevels(); $this->levels = $this->user->getAuthorisedViewLevels();
$this->app = JFactory::getApplication(); $this->app = Factory::getApplication();
$this->input = $this->app->input; $this->input = $this->app->input;
$this->initSet = true; ###CUSTOM_ADMIN_GET_LIST_QUERY### $this->initSet = true;###CUSTOM_ADMIN_GET_LIST_QUERY###
} }
/** /**
@ -64,12 +64,12 @@ class ###Component###Model###SViews### extends ListModel
*/ */
public function getItems() public function getItems()
{ {
$user = JFactory::getUser(); $user = Factory::getUser();
// check if this user has permission to access items // check if this user has permission to access items
if (!$user->authorise('###sviews###.access', 'com_###component###')) if (!$user->authorise('###sviews###.access', 'com_###component###'))
{ {
$app = JFactory::getApplication(); $app = Factory::getApplication();
$app->enqueueMessage(JText::_('Not authorised!'), 'error'); $app->enqueueMessage(Text::_('Not authorised!'), 'error');
// redirect away if not a correct (TODO for now we go to default view) // redirect away if not a correct (TODO for now we go to default view)
$app->redirect('index.php?option=com_###component###'); $app->redirect('index.php?option=com_###component###');
return false; return false;
@ -78,7 +78,7 @@ class ###Component###Model###SViews### extends ListModel
$items = parent::getItems(); $items = parent::getItems();
// Get the global params // Get the global params
$globalParams = JComponentHelper::getParams('com_###component###', true);###CUSTOM_ADMIN_GET_ITEMS######CUSTOM_ADMIN_AFTER_GET_ITEMS### $globalParams = ComponentHelper::getParams('com_###component###', true);###CUSTOM_ADMIN_GET_ITEMS######CUSTOM_ADMIN_AFTER_GET_ITEMS###
// return items // return items
return $items; return $items;

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -46,13 +46,13 @@ class ###Component###Model###SViews### extends ListModel
protected function getListQuery() protected function getListQuery()
{ {
// Get the current user for authorisation checks // Get the current user for authorisation checks
$this->user = JFactory::getUser(); $this->user = Factory::getUser();
$this->userId = $this->user->get('id'); $this->userId = $this->user->get('id');
$this->guest = $this->user->get('guest'); $this->guest = $this->user->get('guest');
$this->groups = $this->user->get('groups'); $this->groups = $this->user->get('groups');
$this->authorisedGroups = $this->user->getAuthorisedGroups(); $this->authorisedGroups = $this->user->getAuthorisedGroups();
$this->levels = $this->user->getAuthorisedViewLevels(); $this->levels = $this->user->getAuthorisedViewLevels();
$this->app = JFactory::getApplication(); $this->app = Factory::getApplication();
$this->input = $this->app->input; $this->input = $this->app->input;
$this->initSet = true; ###SITE_GET_LIST_QUERY### $this->initSet = true; ###SITE_GET_LIST_QUERY###
} }
@ -64,12 +64,12 @@ class ###Component###Model###SViews### extends ListModel
*/ */
public function getItems() public function getItems()
{ {
$user = JFactory::getUser();###USER_PERMISSION_CHECK_ACCESS######LICENSE_LOCKED_CHECK######SITE_BEFORE_GET_ITEMS### $user = Factory::getUser();###USER_PERMISSION_CHECK_ACCESS######LICENSE_LOCKED_CHECK######SITE_BEFORE_GET_ITEMS###
// load parent items // load parent items
$items = parent::getItems(); $items = parent::getItems();
// Get the global params // Get the global params
$globalParams = JComponentHelper::getParams('com_###component###', true);###SITE_GET_ITEMS######SITE_AFTER_GET_ITEMS### $globalParams = ComponentHelper::getParams('com_###component###', true);###SITE_GET_ITEMS######SITE_AFTER_GET_ITEMS###
// return items // return items
return $items; return $items;

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,10 +17,17 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access'); defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\Table\Table; use Joomla\CMS\Table\Table;
use Joomla\CMS\Access\Access as AccessRules;
use Joomla\CMS\Access\Rules;
use Joomla\Registry\Registry; use Joomla\Registry\Registry;
use Joomla\String\StringHelper; use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper; use Joomla\Utilities\ArrayHelper;
use Joomla\CMS\String\PunycodeHelper;
use Joomla\CMS\Table\Observer\Tags as TableObserverTags;
use Joomla\CMS\Table\Observer\ContentHistory as TableObserverContenthistory;
use Joomla\CMS\Application\ApplicationHelper;
/** /**
* ###Views### Table class * ###Views### Table class
@ -34,60 +41,60 @@ class ###Component###Table###View### extends Table
* @since 3.3 * @since 3.3
*/ */
protected $_jsonEncode = array('params', 'metadata'); protected $_jsonEncode = array('params', 'metadata');
/** /**
* Constructor * Constructor
* *
* @param object Database connector object * @param object Database connector object
*/ */
function __construct(&$db) function __construct(&$db)
{ {
parent::__construct('#__###component###_###view###', 'id', $db);###JTABLECONSTRUCTOR######LICENSE_LOCKED_CHECK### parent::__construct('#__###component###_###view###', 'id', $db);###JTABLECONSTRUCTOR######LICENSE_LOCKED_CHECK###
} }
public function bind($array, $ignore = '') public function bind($array, $ignore = '')
{ {
if (isset($array['params']) && is_array($array['params'])) if (isset($array['params']) && is_array($array['params']))
{ {
$registry = new JRegistry; $registry = new Registry;
$registry->loadArray($array['params']); $registry->loadArray($array['params']);
$array['params'] = (string) $registry; $array['params'] = (string) $registry;
} }
if (isset($array['metadata']) && is_array($array['metadata'])) if (isset($array['metadata']) && is_array($array['metadata']))
{ {
$registry = new JRegistry; $registry = new Registry;
$registry->loadArray($array['metadata']); $registry->loadArray($array['metadata']);
$array['metadata'] = (string) $registry; $array['metadata'] = (string) $registry;
} }
// Bind the rules. // Bind the rules.
if (isset($array['rules']) && is_array($array['rules'])) if (isset($array['rules']) && is_array($array['rules']))
{ {
$rules = new JAccessRules($array['rules']); $rules = new AccessRules($array['rules']);
$this->setRules($rules); $this->setRules($rules);
} }
return parent::bind($array, $ignore); return parent::bind($array, $ignore);
} }
/** /**
* Overload the store method for the ###View### table. * Overload the store method for the ###View### table.
* *
* @param boolean Toggle whether null values should be updated. * @param boolean Toggle whether null values should be updated.
* @return boolean True on success, false on failure. * @return boolean True on success, false on failure.
* @since 1.6 * @since 1.6
*/ */
public function store($updateNulls = false) public function store($updateNulls = false)
{ {
$date = JFactory::getDate(); $date = Factory::getDate();
$user = JFactory::getUser(); $user = Factory::getUser();
if ($this->id) if ($this->id)
{ {
// Existing item // Existing item
$this->modified = $date->toSql(); $this->modified = $date->toSql();
$this->modified_by = $user->get('id'); $this->modified_by = $user->get('id');
} }
else else
{ {
@ -102,33 +109,38 @@ class ###Component###Table###View### extends Table
$this->created_by = $user->get('id'); $this->created_by = $user->get('id');
} }
} }
if (isset($this->alias)) if (isset($this->alias))
{ {
// Verify that the alias is unique // Verify that the alias is unique
$table = JTable::getInstance('###view###', '###Component###Table'); $table = Table::getInstance('###view###', '###Component###Table');
if ($table->load(array('alias' => $this->alias###JTABLEALIASCATEGORY###)) && ($table->id != $this->id || $this->id == 0)) if ($table->load(array('alias' => $this->alias###JTABLEALIASCATEGORY###)) && ($table->id != $this->id || $this->id == 0))
{ {
$this->setError(JText::_('COM_###COMPONENT###_###VIEW###_ERROR_UNIQUE_ALIAS')); $this->setError(Text::_('COM_###COMPONENT###_###VIEW###_ERROR_UNIQUE_ALIAS'));
if ($table->published === -2)
{
$this->setError(Text::_('COM_###COMPONENT###_###VIEW###_ERROR_UNIQUE_ALIAS_TRASHED'));
}
return false; return false;
} }
} }
if (isset($this->url)) if (isset($this->url))
{ {
// Convert IDN urls to punycode // Convert IDN urls to punycode
$this->url = JStringPunycode::urlToPunycode($this->url); $this->url = PunycodeHelper::urlToPunycode($this->url);
} }
if (isset($this->website)) if (isset($this->website))
{ {
// Convert IDN urls to punycode // Convert IDN urls to punycode
$this->website = JStringPunycode::urlToPunycode($this->website); $this->website = PunycodeHelper::urlToPunycode($this->website);
} }
return parent::store($updateNulls); return parent::store($updateNulls);
} }
/** /**
* Overloaded check method to ensure data integrity. * Overloaded check method to ensure data integrity.
* *
@ -140,20 +152,20 @@ class ###Component###Table###View### extends Table
{ {
// Generate a valid alias // Generate a valid alias
$this->generateAlias(); $this->generateAlias();
$table = JTable::getInstance('###view###', '###component###Table'); $table = Table::getInstance('###view###', '###component###Table');
while ($table->load(array('alias' => $this->alias)) && ($table->id != $this->id || $this->id == 0)) while ($table->load(array('alias' => $this->alias)) && ($table->id != $this->id || $this->id == 0))
{ {
$this->alias = StringHelper::increment($this->alias, 'dash'); $this->alias = StringHelper::increment($this->alias, 'dash');
} }
} }
/* /*
* Clean up keywords -- eliminate extra spaces between phrases * Clean up keywords -- eliminate extra spaces between phrases
* and cr (\r) and lf (\n) characters from string. * and cr (\r) and lf (\n) characters from string.
* Only process if not empty. * Only process if not empty.
*/ */
if (!empty($this->metakey)) if (!empty($this->metakey))
{ {
// Array of characters to remove. // Array of characters to remove.
@ -164,7 +176,7 @@ class ###Component###Table###View### extends Table
// Create array using commas as delimiter. // Create array using commas as delimiter.
$keys = explode(',', $after_clean); $keys = explode(',', $after_clean);
$clean_keys = array(); $clean_keys = [];
foreach ($keys as $key) foreach ($keys as $key)
{ {
@ -187,13 +199,13 @@ class ###Component###Table###View### extends Table
$this->metadesc = StringHelper::str_ireplace($bad_characters, "", $this->metadesc); $this->metadesc = StringHelper::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 we don't have any access rules set at this point just use an empty AccessRules class
if (!$this->getRules()) if (!$this->getRules())
{ {
$rules = $this->getDefaultAssetValues('com_###component###.###view###.'.$this->id); $rules = $this->getDefaultAssetValues('com_###component###.###view###.'.$this->id);
$this->setRules($rules); $this->setRules($rules);
} }
// Set ordering // Set ordering
if ($this->published < 0) if ($this->published < 0)
{ {
@ -209,12 +221,12 @@ class ###Component###Table###View### extends Table
* *
* @param $string $component The component asset name to search for * @param $string $component The component asset name to search for
* *
* @return JAccessRules The JAccessRules object for the asset * @return AccessRules The AccessRules object for the asset
*/ */
protected function getDefaultAssetValues($component, $try = true) protected function getDefaultAssetValues($component, $try = true)
{ {
// Need to find the asset id by the name of the component. // Need to find the asset id by the name of the component.
$db = JFactory::getDbo(); $db = Factory::getDbo();
$query = $db->getQuery(true) $query = $db->getQuery(true)
->select($db->quoteName('id')) ->select($db->quoteName('id'))
->from($db->quoteName('#__assets')) ->from($db->quoteName('#__assets'))
@ -225,14 +237,14 @@ class ###Component###Table###View### extends Table
{ {
// asset already set so use saved rules // asset already set so use saved rules
$assetId = (int) $db->loadResult(); $assetId = (int) $db->loadResult();
return JAccess::getAssetRules($assetId); // (TODO) instead of keeping inherited Allowed it becomes Allowed. return AccessRules::getAssetRules($assetId); // (TODO) instead of keeping inherited Allowed it becomes Allowed.
} }
// try again // try again
elseif ($try) elseif ($try)
{ {
$try = explode('.',$component); $try = explode('.',$component);
$result = $this->getDefaultAssetValues($try[0], false); $result = $this->getDefaultAssetValues($try[0], false);
if ($result instanceof JAccessRules) if ($result instanceof AccessRules)
{ {
if (isset($try[1])) if (isset($try[1]))
{ {
@ -249,7 +261,7 @@ class ###Component###Table###View### extends Table
else else
{ {
// clear the value since we inherit // clear the value since we inherit
$rule = array(); $rule = [];
} }
} }
// check if there are any view values remaining // check if there are any view values remaining
@ -257,8 +269,8 @@ class ###Component###Table###View### extends Table
{ {
$_result = json_encode($_result); $_result = json_encode($_result);
$_result = array($_result); $_result = array($_result);
// Instantiate and return the JAccessRules object for the asset rules. // Instantiate and return the AccessRules object for the asset rules.
$rules = new JAccessRules; $rules = new AccessRules;
$rules->mergeCollection($_result); $rules->mergeCollection($_result);
return $rules; return $rules;
@ -267,7 +279,7 @@ class ###Component###Table###View### extends Table
return $result; return $result;
} }
} }
return JAccess::getAssetRules(0); return AccessRules::getAssetRules(0);
} }
/** /**
@ -275,8 +287,8 @@ class ###Component###Table###View### extends Table
* The default name is in the form 'table_name.id' * The default name is in the form 'table_name.id'
* where id is the value of the primary key of the table. * where id is the value of the primary key of the table.
* *
* @return string * @return string
* @since 2.5 * @since 2.5
*/ */
protected function _getAssetName() protected function _getAssetName()
{ {
@ -287,8 +299,8 @@ class ###Component###Table###View### extends Table
/** /**
* Method to return the title to use for the asset table. * Method to return the title to use for the asset table.
* *
* @return string * @return string
* @since 2.5 * @since 2.5
*/ */
protected function _getAssetTitle() protected function _getAssetTitle()
{ {
@ -302,12 +314,12 @@ class ###Component###Table###View### extends Table
/** /**
* Get the parent asset id for the record * Get the parent asset id for the record
* *
* @return int * @return int
* @since 2.5 * @since 2.5
*/ */
protected function _getAssetParentId(JTable $table = NULL, $id = NULL) protected function _getAssetParentId(?Table $table = null, $id = null)
{ {
$asset = JTable::getInstance('Asset'); $asset = Table::getInstance('Asset');
$asset->loadByName('com_###component###'); $asset->loadByName('com_###component###');
return $asset->id; return $asset->id;

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,6 +17,9 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access'); defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\Session\Session;
/** /**
* ###Component### Ajax Controller * ###Component### Ajax Controller
*/ */
@ -26,19 +29,19 @@ class ###Component###ControllerAjax extends JControllerLegacy
{ {
parent::__construct($config); parent::__construct($config);
// make sure all json stuff are set // make sure all json stuff are set
JFactory::getDocument()->setMimeEncoding( 'application/json' ); Factory::getDocument()->setMimeEncoding( 'application/json' );
JFactory::getApplication()->setHeader('Content-Disposition','attachment;filename="getajax.json"'); Factory::getApplication()->setHeader('Content-Disposition','attachment;filename="getajax.json"');
JFactory::getApplication()->setHeader("Access-Control-Allow-Origin", "*"); Factory::getApplication()->setHeader("Access-Control-Allow-Origin", "*");
// load the tasks // load the tasks
$this->registerTask('fieldRequired', 'ajax'); $this->registerTask('fieldRequired', 'ajax');
} }
public function ajax() public function ajax()
{ {
$user = JFactory::getUser(); $user = Factory::getUser();
$jinput = JFactory::getApplication()->input; $jinput = Factory::getApplication()->input;
// Check Token! // Check Token!
$token = JSession::getFormToken(); $token = Session::getFormToken();
$call_token = $jinput->get('token', 0, 'ALNUM'); $call_token = $jinput->get('token', 0, 'ALNUM');
if($user->id != 0 && $token == $call_token) if($user->id != 0 && $token == $call_token)
{ {
@ -50,8 +53,8 @@ class ###Component###ControllerAjax extends JControllerLegacy
$name = $jinput->get('name', NULL, 'WORD'); $name = $jinput->get('name', NULL, 'WORD');
$form = $jinput->get('form', NULL, 'WORD'); $form = $jinput->get('form', NULL, 'WORD');
$status = $jinput->get('status', NULL, 'INT'); $status = $jinput->get('status', NULL, 'INT');
if (###Component###Helper::checkString($name) && ###Component###Helper::checkString($form)) if (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($name) && Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($form))
{ {
$result = $this->getModel('ajax')->setFieldRequired($name,$form,$status); $result = $this->getModel('ajax')->setFieldRequired($name,$form,$status);
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,27 +17,32 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access'); defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\MVC\Model\ListModel;
use Joomla\CMS\Component\ComponentHelper;
/** /**
* ###Component### Ajax Model * ###Component### Ajax Model
*/ */
class ###Component###ModelAjax extends JModelList class ###Component###ModelAjax extends ListModel
{ {
protected $app_params; protected $app_params;
public function __construct() public function __construct()
{ {
parent::__construct(); parent::__construct();
// get params // get params
$this->app_params = JComponentHelper::getParams('com_###component###'); $this->app_params = ComponentHelper::getParams('com_###component###');
} }
public function setFieldRequired($name,$form,$status) public function setFieldRequired($name,$form,$status)
{ {
// get the session // get the session
$session = JFactory::getSession(); $session = Factory::getSession();
// get this forms set fields // get this forms set fields
$fields = $session->get($form.'_requiredFieldFix'); $fields = $session->get($form.'_requiredFieldFix');
if(###Component###Helper::checkArray($fields)) if(Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::check($fields))
{ {
if ($status == 1) if ($status == 1)
{ {
@ -45,7 +50,7 @@ class ###Component###ModelAjax extends JModelList
$fields = array_unique($fields); $fields = array_unique($fields);
} }
else else
{ {
// remove from array // remove from array
if(($key = array_search($name, $fields)) !== false) if(($key = array_search($name, $fields)) !== false)
{ {
@ -61,7 +66,7 @@ class ###Component###ModelAjax extends JModelList
} }
} }
// load the remaining values to session // load the remaining values to session
if(###Component###Helper::checkArray($fields)) if(Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::check($fields))
{ {
$session->set($form.'_requiredFieldFix', $fields); $session->set($form.'_requiredFieldFix', $fields);
} }

View File

@ -0,0 +1,18 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
###BOM###
// No direct access to this file
defined('_JEXEC') or die;###ADMIN_POWER_HELPER###

View File

@ -0,0 +1,18 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
###BOM###
// No direct access to this file
defined('_JEXEC') or die;###SITE_POWER_HELPER###

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -30,7 +30,7 @@ abstract class JHtmlBatch_
* @var array * @var array
* @since 3.0 * @since 3.0
*/ */
protected static $ListSelection = array(); protected static $ListSelection = [];
/** /**
* Render the batch selection options. * Render the batch selection options.

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,6 +17,7 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('JPATH_BASE') or die; defined('JPATH_BASE') or die;
use Joomla\CMS\Language\Text;
JHtmlBehavior::core(); JHtmlBehavior::core();
$divWrapper = range(1,120,2); $divWrapper = range(1,120,2);
$counter = 0; $counter = 0;
@ -24,8 +25,8 @@ $counter = 0;
<?php if ($displayData->ListSelection) : ?> <?php if ($displayData->ListSelection) : ?>
<div class="row-fluid"> <div class="row-fluid">
<?php foreach ($displayData->ListSelection as $ListSelection) : ?> <?php foreach ($displayData->ListSelection as $ListSelection) : ?>
<div class="control-group span6"> <div class="control-group span6">
<div class="controls"> <div class="controls">
<label for="<?php echo $ListSelection['name']; ?>" class="element-invisible"><?php echo $ListSelection['label']; ?></label> <label for="<?php echo $ListSelection['name']; ?>" class="element-invisible"><?php echo $ListSelection['label']; ?></label>
<select name="<?php echo $ListSelection['name']; ?>" id="<?php echo $ListSelection['name']; ?>" class="span12 small"> <select name="<?php echo $ListSelection['name']; ?>" id="<?php echo $ListSelection['name']; ?>" class="span12 small">
<?php if (!$ListSelection['noDefault']) : ?> <?php if (!$ListSelection['noDefault']) : ?>
@ -33,21 +34,21 @@ $counter = 0;
<?php endif; ?> <?php endif; ?>
<?php echo $ListSelection['options']; ?> <?php echo $ListSelection['options']; ?>
</select> </select>
</div> </div>
</div> </div>
<?php if (in_array($counter,$divWrapper)) : ?> <?php if (in_array($counter,$divWrapper)) : ?>
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<?php endif; ?> <?php endif; ?>
<?php $counter++; ?> <?php $counter++; ?>
<?php endforeach; ?> <?php endforeach; ?>
</div> </div>
<div class="control-group radio" id="batch-move-copy"> <div class="control-group radio" id="batch-move-copy">
<div class="controls"> <div class="controls">
<label class="radio" id="batch[move_copy]c-lbl" for="batch[move_copy]c"> <label class="radio" id="batch[move_copy]c-lbl" for="batch[move_copy]c">
<input type="radio" value="c" id="batch[move_copy]c" name="batch[move_copy]"><?php echo JText::_('Copy'); ?></label> <input type="radio" value="c" id="batch[move_copy]c" name="batch[move_copy]"><?php echo Text::_('Copy'); ?></label>
<label class="radio" id="batch[move_copy]m-lbl" for="batch[move_copy]m"> <label class="radio" id="batch[move_copy]m-lbl" for="batch[move_copy]m">
<input type="radio" checked="checked" value="m" id="batch[move_copy]m" name="batch[move_copy]"><?php echo JText::_('Update'); ?></label> <input type="radio" checked="checked" value="m" id="batch[move_copy]m" name="batch[move_copy]"><?php echo Text::_('Update'); ?></label>
</div> </div>
</div> </div>
<?php endif; ?> <?php endif; ?>

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -15,30 +15,31 @@ defined('_JEXEC') or die('Restricted access');
###BOM### ###BOM###
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access');###ADMIN_POWER_HELPER### defined('_JEXEC') or die('Restricted access');
###POWER_AUTOLOADER###
###ADMIN_COMPONENT_HEADER### ###ADMIN_COMPONENT_HEADER###
// Access check. // Access check.
if (!JFactory::getUser()->authorise('core.manage', 'com_###component###')) if (!Factory::getUser()->authorise('core.manage', 'com_###component###'))
{ {
throw new JAccessExceptionNotallowed(JText::_('JERROR_ALERTNOAUTHOR'), 403); throw new NotAllowed(Text::_('JERROR_ALERTNOAUTHOR'), 403);
}; }
// Add CSS file for all pages // Add CSS file for all pages
$document = JFactory::getDocument(); Html::_('stylesheet', 'components/com_###component###/assets/css/admin.css', ['version' => 'auto']);
$document->addStyleSheet('components/com_###component###/assets/css/admin.css'); Html::_('script', 'components/com_###component###/assets/js/admin.js', ['version' => 'auto']);
$document->addScript('components/com_###component###/assets/js/admin.js');
// require helper files // require helper files
JLoader::register('###Component###Helper', __DIR__ . '/helpers/###component###.php');###HELPER_EMAIL### JLoader::register('###Component###Helper', __DIR__ . '/helpers/###component###.php');###HELPER_EMAIL###
JLoader::register('JHtmlBatch_', __DIR__ . '/helpers/html/batch_.php');###LICENSE_LOCKED_INT######ADMIN_GLOBAL_EVENT### JLoader::register('JHtmlBatch_', __DIR__ . '/helpers/html/batch_.php');###LICENSE_LOCKED_INT######ADMIN_GLOBAL_EVENT###
// Get an instance of the controller prefixed by ###Component### // Get an instance of the controller prefixed by ###Component###
$controller = JControllerLegacy::getInstance('###Component###'); $controller = BaseController::getInstance('###Component###');
// Perform the Request task // Perform the Request task
$controller->execute(JFactory::getApplication()->input->get('task')); $controller->execute(Factory::getApplication()->input->get('task'));
// Redirect if set by the controller // Redirect if set by the controller
$controller->redirect(); $controller->redirect();

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -15,24 +15,25 @@ defined('_JEXEC') or die('Restricted access');
###BOM### ###BOM###
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access');###ADMIN_POWER_HELPER### defined('_JEXEC') or die('Restricted access');
###SITE_POWER_AUTOLOADER###
###SITE_COMPONENT_HEADER### ###SITE_COMPONENT_HEADER###
// Set the component css/js // Set the component css/js
$document = JFactory::getDocument(); Html::_('stylesheet', 'components/com_###component###/assets/css/site.css', ['version' => 'auto']);
$document->addStyleSheet('components/com_###component###/assets/css/site.css'); Html::_('script', 'components/com_###component###/assets/js/site.js', ['version' => 'auto']);
$document->addScript('components/com_###component###/assets/js/site.js');
// Require helper files // Require helper files
JLoader::register('###Component###Helper', __DIR__ . '/helpers/###component###.php');###HELPER_EMAIL### JLoader::register('###Component###Helper', __DIR__ . '/helpers/###component###.php');###HELPER_EMAIL###
JLoader::register('###Component###HelperRoute', __DIR__ . '/helpers/route.php');###LICENSE_LOCKED_INT######SITE_GLOBAL_EVENT### JLoader::register('###Component###HelperRoute', __DIR__ . '/helpers/route.php');###LICENSE_LOCKED_INT######SITE_GLOBAL_EVENT###
// Get an instance of the controller prefixed by ###Component### // Get an instance of the controller prefixed by ###Component###
$controller = JControllerLegacy::getInstance('###Component###'); $controller = BaseController::getInstance('###Component###');
// Perform the request task // Perform the request task
$controller->execute(JFactory::getApplication()->input->get('task')); $controller->execute(Factory::getApplication()->input->get('task'));
// Redirect if set by the controller // Redirect if set by the controller
$controller->redirect(); $controller->redirect();

View File

@ -3,153 +3,153 @@
/* CSS Document */ /* CSS Document */
.dashboard-container { .dashboard-container {
margin-left: 10px; margin-left: 10px;
margin-top: 10px; margin-top: 10px;
width: 100%; width: 100%;
} }
.dashboard-container [class*="span"] { .dashboard-container [class*="span"] {
display: block; display: block;
float: none; float: none;
margin-left: 0; margin-left: 0;
width: auto; width: auto;
} }
.dashboard-container:before, .dashboard-container:after { .dashboard-container:before, .dashboard-container:after {
content: ""; content: "";
display: table; display: table;
} }
.dashboard-container:after { .dashboard-container:after {
clear: both; clear: both;
} }
.dashboard-container [class*="span"] { .dashboard-container [class*="span"] {
box-sizing: border-box; box-sizing: border-box;
display: block; display: block;
float: left; float: left;
min-height: 145px; min-height: 145px;
min-width: 96px; min-width: 96px;
width: 100%; width: 100%;
} }
.dashboard-container [class*="span"]:first-child { .dashboard-container [class*="span"]:first-child {
margin-left: 0; margin-left: 0;
} }
.dashboard-wraper { .dashboard-wraper {
background: none repeat scroll 0 0 hsl(0, 0%, 93%); background: none repeat scroll 0 0 hsl(0, 0%, 93%);
border-radius: 5px; border-radius: 5px;
float: left; float: left;
margin: 1%; margin: 1%;
padding: 3px; padding: 3px;
width: 17%; width: 17%;
min-height: 194px; min-height: 194px;
min-width: 96px; min-width: 96px;
} }
.dashboard-content a { .dashboard-content a {
background: linear-gradient(to bottom, hsl(0, 0%, 100%) 0%, hsl(0, 0%, 96%) 47%, hsl(0, 0%, 93%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0); background: linear-gradient(to bottom, hsl(0, 0%, 100%) 0%, hsl(0, 0%, 96%) 47%, hsl(0, 0%, 93%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0);
border: 1px solid hsl(0, 0%, 85%); border: 1px solid hsl(0, 0%, 85%);
border-radius: 4px; border-radius: 4px;
box-shadow: 0 0 3px hsla(0, 0%, 0%, 0.1) inset; box-shadow: 0 0 3px hsla(0, 0%, 0%, 0.1) inset;
color: hsl(0, 0%, 20%); color: hsl(0, 0%, 20%);
display: block; display: block;
min-height: 89px; min-height: 89px;
padding: 10px; padding: 10px;
text-align: center; text-align: center;
text-decoration: none; text-decoration: none;
} }
.dashboard-content a:hover { .dashboard-content a:hover {
background: linear-gradient(to bottom, hsl(0, 0%, 90%) 0%, hsl(0, 0%, 100%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0); background: linear-gradient(to bottom, hsl(0, 0%, 90%) 0%, hsl(0, 0%, 100%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0);
color: hsl(200, 100%, 30%); color: hsl(200, 100%, 30%);
text-decoration: none; text-decoration: none;
} }
.dashboard-title { .dashboard-title {
display: block; display: block;
padding-top: 5px; padding-top: 5px;
} }
.dashboard-info { .dashboard-info {
background: linear-gradient(to bottom, hsl(0, 0%, 100%) 0%, hsl(0, 0%, 96%) 47%, hsl(0, 0%, 93%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0); background: linear-gradient(to bottom, hsl(0, 0%, 100%) 0%, hsl(0, 0%, 96%) 47%, hsl(0, 0%, 93%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0);
border: 1px solid hsl(0, 0%, 85%); border: 1px solid hsl(0, 0%, 85%);
border-radius: 4px; border-radius: 4px;
box-shadow: 0 0 3px hsla(0, 0%, 0%, 0.1) inset; box-shadow: 0 0 3px hsla(0, 0%, 0%, 0.1) inset;
color: hsl(0, 0%, 20%); color: hsl(0, 0%, 20%);
display: block; display: block;
font-size: 12px; font-size: 12px;
padding: 10px; padding: 10px;
text-align: center; text-align: center;
} }
.dashboard-info span { .dashboard-info span {
display: block; display: block;
text-align: center; text-align: center;
} }
.dashboard-info img { .dashboard-info img {
margin: 0 auto; margin: 0 auto;
} }
.dashboard-table { .dashboard-table {
border-top: 1px solid hsl(0, 0%, 87%); border-top: 1px solid hsl(0, 0%, 87%);
margin-top: 5px; margin-top: 5px;
width: 100%; width: 100%;
} }
.dashboard-info h5 { .dashboard-info h5 {
font-size: 11px; font-size: 11px;
font-weight: bold; font-weight: bold;
} }
.dashboard-block { .dashboard-block {
background: linear-gradient(to bottom, hsl(0, 0%, 95%) 0%, hsl(0, 0%, 86%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0); background: linear-gradient(to bottom, hsl(0, 0%, 95%) 0%, hsl(0, 0%, 86%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0);
border: 1px solid hsl(0, 0%, 76%); border: 1px solid hsl(0, 0%, 76%);
border-radius: 3px; border-radius: 3px;
box-shadow: 0 1px 0 hsl(0, 0%, 98%) inset; box-shadow: 0 1px 0 hsl(0, 0%, 98%) inset;
margin-bottom: 20px; margin-bottom: 20px;
} }
.dashboard-block .dashboard-block-head { .dashboard-block .dashboard-block-head {
background: linear-gradient(to bottom, hsl(0, 0%, 95%) 0%, hsl(0, 0%, 86%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0); background: linear-gradient(to bottom, hsl(0, 0%, 95%) 0%, hsl(0, 0%, 86%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0);
border-bottom: 1px solid hsl(0, 0%, 76%); border-bottom: 1px solid hsl(0, 0%, 76%);
border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0;
box-shadow: 0 1px 0 hsl(0, 0%, 98%) inset, 0 0 3px hsl(0, 0%, 87%); box-shadow: 0 1px 0 hsl(0, 0%, 98%) inset, 0 0 3px hsl(0, 0%, 87%);
height: 40px; height: 40px;
position: relative; position: relative;
} }
.dashboard-block .dashboard-block-head h5 { .dashboard-block .dashboard-block-head h5 {
font-size: 12px; font-size: 12px;
margin: 0; margin: 0;
padding-left: 10px; padding-left: 10px;
padding-top: 11px; padding-top: 11px;
text-transform: uppercase; text-transform: uppercase;
} }
.dashboard-block .dashboard-block-content { .dashboard-block .dashboard-block-content {
background: none repeat scroll 0 0 hsl(0, 0%, 93%); background: none repeat scroll 0 0 hsl(0, 0%, 93%);
border-radius: 0 0 3px 3px; border-radius: 0 0 3px 3px;
} }
.dashboard-block .dashboard-block-box { .dashboard-block .dashboard-block-box {
background: none repeat scroll 0 0 hsl(0, 0%, 100%); background: none repeat scroll 0 0 hsl(0, 0%, 100%);
border-top: 1px solid hsl(0, 0%, 82%); border-top: 1px solid hsl(0, 0%, 82%);
box-shadow: 0 0 5px hsl(0, 0%, 87%) inset; box-shadow: 0 0 5px hsl(0, 0%, 87%) inset;
} }
.dashboard-block .dashboard-block-content .dashboard-block-box { .dashboard-block .dashboard-block-content .dashboard-block-box {
margin-top: 0 !important; margin-top: 0 !important;
} }
.dashboard-block .dashboard-block-content .dashboard-block-box .dashboard-block-table { .dashboard-block .dashboard-block-content .dashboard-block-box .dashboard-block-table {
margin-bottom: 0 !important; margin-bottom: 0 !important;
} }
.dashboard-block-table { .dashboard-block-table {
background-color: hsla(0, 0%, 0%, 0); background-color: hsla(0, 0%, 0%, 0);
border-collapse: collapse; border-collapse: collapse;
border-spacing: 0; border-spacing: 0;
margin-bottom: 20px; margin-bottom: 20px;
max-width: 100%; max-width: 100%;
width: 100%; width: 100%;
} }
.dashboard-block-table th, .dashboard-block-table td { .dashboard-block-table th, .dashboard-block-table td {
border-top: 1px solid hsl(0, 0%, 87%); border-top: 1px solid hsl(0, 0%, 87%);
line-height: 20px; line-height: 20px;
padding: 5px; padding: 5px;
text-align: left; text-align: left;
vertical-align: middle; vertical-align: middle;
} }
.dashboard-badge { .dashboard-badge {
background-color: hsl(0, 0%, 60%); background-color: hsl(0, 0%, 60%);
border-radius: 9px; border-radius: 9px;
color: hsl(0, 0%, 100%); color: hsl(0, 0%, 100%);
font-size: 11.844px; font-size: 11.844px;
font-weight: bold; font-weight: bold;
line-height: 14px; line-height: 14px;
padding: 1px 9px 2px; padding: 1px 9px 2px;
text-shadow: 0 -1px 0 hsla(0, 0%, 0%, 0.25); text-shadow: 0 -1px 0 hsla(0, 0%, 0%, 0.25);
vertical-align: baseline; vertical-align: baseline;
white-space: nowrap; white-space: nowrap;
} }

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -18,10 +18,11 @@ defined('_JEXEC') or die('Restricted access');
defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED### defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED###
###ADMIN_VIEWS_HEADER### ###ADMIN_VIEWS_HEADER###
if ($this->saveOrder) if ($this->saveOrder)
{ {
$saveOrderingUrl = 'index.php?option=com_###component###&task=###views###.saveOrderAjax&tmpl=component'; $saveOrderingUrl = 'index.php?option=com_###component###&task=###views###.saveOrderAjax&tmpl=component';
JHtml::_('sortablelist.sortable', '###view###List', 'adminForm', strtolower($this->listDirn), $saveOrderingUrl); Html::_('sortablelist.sortable', '###view###List', 'adminForm', strtolower($this->listDirn), $saveOrderingUrl);
} }
?> ?>
###VIEWS_DEFAULT_BODY######VIEWS_FOOTER_SCRIPT### ###VIEWS_DEFAULT_BODY######VIEWS_FOOTER_SCRIPT###

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,7 +17,10 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED### defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED###
use Joomla\CMS\Language\Text;
use Joomla\CMS\HTML\HTMLHelper as Html;
?> ?>
<p><?php echo JText::_('COM_###COMPONENT###_###VIEWS###_BATCH_TIP'); ?></p> <p><?php echo Text::_('COM_###COMPONENT###_###VIEWS###_BATCH_TIP'); ?></p>
<?php echo $this->batchDisplay; ?> <?php echo $this->batchDisplay; ?>

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,12 +17,14 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED### defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED###
use Joomla\CMS\Language\Text;
?> ?>
<!-- clear the batch values if cancel --> <!-- clear the batch values if cancel -->
<button class="btn" type="button" onclick="###BATCH_ONCLICK_CANCEL_SCRIPT###" data-dismiss="modal"> <button class="btn" type="button" onclick="###BATCH_ONCLICK_CANCEL_SCRIPT###" data-dismiss="modal">
<?php echo JText::_('JCANCEL'); ?> <?php echo Text::_('JCANCEL'); ?>
</button> </button>
<!-- post the batch values if process --> <!-- post the batch values if process -->
<button class="btn btn-success" type="submit" onclick="Joomla.submitbutton('###view###.batch');"> <button class="btn btn-success" type="submit" onclick="Joomla.submitbutton('###view###.batch');">
<?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> <?php echo Text::_('JGLOBAL_BATCH_PROCESS'); ?>
</button> </button>

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -17,6 +17,10 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED### defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED###
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\HTML\HTMLHelper as Html;
$edit = "index.php?option=com_###component###&view=###views###&task=###view###.edit"; $edit = "index.php?option=com_###component###&view=###views###&task=###view###.edit";
?> ?>

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -18,11 +18,11 @@ defined('_JEXEC') or die('Restricted access');
defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED### defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED###
###CUSTOM_ADMIN_VIEW_HEADER######CUSTOM_ADMIN_CODE_BODY### ###CUSTOM_ADMIN_VIEW_HEADER######CUSTOM_ADMIN_CODE_BODY###
?> ?>
<?php if ($this->canDo->get('###sview###.access')): ?>###CUSTOM_ADMIN_SUBMITBUTTON_SCRIPT### <?php if ($this->canDo->get('###sview###.access')): ?>###CUSTOM_ADMIN_SUBMITBUTTON_SCRIPT###
<?php $urlId = (isset($this->item->id)) ? '&id='. (int) $this->item->id : ''; ?> <?php $urlId = (isset($this->item->id)) ? '&id='. (int) $this->item->id : ''; ?>
###CUSTOM_ADMIN_TOP_FORM######CUSTOM_ADMIN_BODY######CUSTOM_ADMIN_BOTTOM_FORM### ###CUSTOM_ADMIN_TOP_FORM######CUSTOM_ADMIN_BODY######CUSTOM_ADMIN_BOTTOM_FORM###
<?php else: ?> <?php else: ?>
<h1><?php echo JText::_('COM_###COMPONENT###_NO_ACCESS_GRANTED'); ?></h1> <h1><?php echo Text::_('COM_###COMPONENT###_NO_ACCESS_GRANTED'); ?></h1>
<?php endif; ?> <?php endif; ?>

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
@ -15,6 +15,10 @@ defined('_JEXEC') or die('Restricted access');
###BOM### ###BOM###
// No direct access to this file // No direct access to this file
defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED######CUSTOM_ADMIN_TEMPLATE_CODE_BODY### defined('_JEXEC') or die('Restricted access');###LICENSE_LOCKED_DEFINED###
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
use Joomla\CMS\HTML\HTMLHelper as Html;###CUSTOM_ADMIN_TEMPLATE_CODE_BODY###
?>###CUSTOM_ADMIN_TEMPLATE_BODY### ?>###CUSTOM_ADMIN_TEMPLATE_BODY###

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder * @package Joomla.Component.Builder
* *
* @created 30th April, 2015 * @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @author Llewellyn van der Merwe <https://dev.vdm.io>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */

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