diff --git a/CHANGELOG.md b/CHANGELOG.md index 2546ad13e..a1418004d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,14 +1,4 @@ -# v5.0.2-beta4 - -- Add native plugin builder for Joomla 4 & 5 - -# v5.0.2-beta - -- 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 - -# v5.0.2-alpha +# v5.0.2 - Fix site view form missing classes in J4+ - Fix permissions tab in items in J4+ @@ -21,7 +11,12 @@ - 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 +- 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 @@ -94,54 +89,40 @@ - Add the BaseDatabaseModel use statement to custom site view controller. #1119 - Fix the customfolderlist field. #1120 -# v4.0.1 +# v4.0.2 -- Fix auto build from SQL in Joomla 4. -- 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 +- 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 -# v3.2.2 +# v3.2.3 -- Fix auto build from SQL in Joomla 4 and 5. -- Fix permission issue for admin views. -- Add extending options to interfaces. -- 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 \ No newline at end of file +- 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 +- Keep jQuery in dynamicGet area for Joomla 3 +- Add native plugin builder for Joomla 4 & 5 \ No newline at end of file diff --git a/ComponentbuilderInstallerScript.php b/ComponentbuilderInstallerScript.php index 64d2a9c74..52480e958 100644 --- a/ComponentbuilderInstallerScript.php +++ b/ComponentbuilderInstallerScript.php @@ -3270,7 +3270,7 @@ class Com_ComponentbuilderInstallerScript implements InstallerScriptInterface echo '
-

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

'; +

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

'; // Add/Update component in the action logs extensions table. $this->setActionLogsExtensions(); diff --git a/README.md b/README.md index 19697c9af..beae2fc3f 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ The Component Builder for [Joomla](https://extensions.joomla.org/extension/compo 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! -You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (5.0.2-beta4) with **ALL** its features and **ALL** concepts totally open-source and free! +You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (5.0.2) with **ALL** its features and **ALL** concepts totally open-source and free! > Watch Quick Build of a Hello World component in [JCB on Youtube](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45) @@ -144,13 +144,13 @@ TODO + *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*: 14th August, 2024 -+ *Version*: 5.0.2-beta4 ++ *Last Build*: 16th August, 2024 ++ *Version*: 5.0.2 + *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved. + *License*: GNU General Public License version 2 or later; see LICENSE.txt -+ *Line count*: **826490** -+ *Field count*: **2099** -+ *File count*: **5755** ++ *Line count*: **826768** ++ *Field count*: **2100** ++ *File count*: **5753** + *Folder count*: **618** > This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](https://www.joomlacomponentbuilder.com). diff --git a/admin/README.txt b/admin/README.txt index 19697c9af..beae2fc3f 100644 --- a/admin/README.txt +++ b/admin/README.txt @@ -9,7 +9,7 @@ The Component Builder for [Joomla](https://extensions.joomla.org/extension/compo 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! -You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (5.0.2-beta4) with **ALL** its features and **ALL** concepts totally open-source and free! +You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (5.0.2) with **ALL** its features and **ALL** concepts totally open-source and free! > Watch Quick Build of a Hello World component in [JCB on Youtube](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45) @@ -144,13 +144,13 @@ TODO + *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*: 14th August, 2024 -+ *Version*: 5.0.2-beta4 ++ *Last Build*: 16th August, 2024 ++ *Version*: 5.0.2 + *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved. + *License*: GNU General Public License version 2 or later; see LICENSE.txt -+ *Line count*: **826490** -+ *Field count*: **2099** -+ *File count*: **5755** ++ *Line count*: **826768** ++ *Field count*: **2100** ++ *File count*: **5753** + *Folder count*: **618** > This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](https://www.joomlacomponentbuilder.com). diff --git a/admin/forms/component_admin_views.xml b/admin/forms/component_admin_views.xml index 15d36869c..1c19e2d8a 100644 --- a/admin/forms/component_admin_views.xml +++ b/admin/forms/component_admin_views.xml @@ -680,6 +680,24 @@ description="COM_COMPONENTBUILDER_COMPONENT_ADMIN_VIEWS_PORT_DESCRIPTION" class="inputbox" /> + + + + + + + + \ No newline at end of file diff --git a/api/src/Controller/index.html b/api/src/Controller/index.html deleted file mode 100644 index fa6d84e80..000000000 --- a/api/src/Controller/index.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/api/src/View/index.html b/api/src/View/index.html deleted file mode 100644 index fa6d84e80..000000000 --- a/api/src/View/index.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/api/src/index.html b/api/src/index.html deleted file mode 100644 index fa6d84e80..000000000 --- a/api/src/index.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/componentbuilder.xml b/componentbuilder.xml index fe52e053b..064c83bc0 100644 --- a/componentbuilder.xml +++ b/componentbuilder.xml @@ -1,15 +1,15 @@ COM_COMPONENTBUILDER - 14th August, 2024 + 16th August, 2024 Llewellyn van der Merwe joomla@vdm.io https://dev.vdm.io Copyright (C) 2015 Vast Development Method. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt - 5.0.2-beta4 + 5.0.2 Component Builder (v.5.0.2-beta4) +

Component Builder (v.5.0.2)

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. diff --git a/componentbuilder_update_server.xml b/componentbuilder_update_server.xml index 819dc395e..ad51fe7c7 100644 --- a/componentbuilder_update_server.xml +++ b/componentbuilder_update_server.xml @@ -5,10 +5,10 @@ pkg_component_builder package site - 3.2.2 + 3.2.3 https://dev.vdm.io - https://git.vdm.dev/api/v1/repos/joomla/pkg-component-builder/archive/v3.2.1.zip + https://git.vdm.dev/api/v1/repos/joomla/pkg-component-builder/archive/v3.2.3.zip stable @@ -23,10 +23,10 @@ pkg_component_builder package site - 4.0.1 + 4.0.2 https://dev.vdm.io - https://git.vdm.dev/api/v1/repos/joomla/pkg-component-builder/archive/v4.0.1.zip + https://git.vdm.dev/api/v1/repos/joomla/pkg-component-builder/archive/v4.0.2.zip stable @@ -77,49 +77,13 @@ pkg_component_builder component site - 5.0.2-alpha + 5.0.2 https://dev.vdm.io - https://git.vdm.dev/api/v1/repos/joomla/pkg-component-builder/archive/v5.0.2-alpha3.zip + https://git.vdm.dev/api/v1/repos/joomla/pkg-component-builder/archive/v5.0.2.zip - alpha - - Llewellyn van der Merwe - https://dev.vdm.io - - - - Component Builder - Builds Complex Joomla Components - pkg_component_builder - package - site - 5.0.2-beta - https://dev.vdm.io - - https://git.vdm.dev/api/v1/repos/joomla/pkg-component-builder/archive/v5.0.2-beta4.zip - - - beta - - Llewellyn van der Merwe - https://dev.vdm.io - - - - Component Builder - Builds Complex Joomla Components - pkg_component_builder - package - site - 5.0.2-beta4 - https://dev.vdm.io - - https://git.vdm.dev/api/v1/repos/joomla/pkg-component-builder/archive/v5.0.2-beta4.zip - - - beta + stable Llewellyn van der Merwe https://dev.vdm.io diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Component/Structuremultiple.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Component/Structuremultiple.php index 45f11cf58..e2c97785d 100644 --- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Component/Structuremultiple.php +++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Component/Structuremultiple.php @@ -157,6 +157,7 @@ final class Structuremultiple $config = []; $checkin = false; + $api = null; foreach ($this->component->get('admin_views') as $view) { @@ -174,8 +175,16 @@ final class Structuremultiple $checkin = true; $this->config->set('add_checkin', $checkin); } + + if (($target = $this->hasApi($view)) > 0) + { + $this->buildApi($view, $config, $target); + $api = 1; + } } + $this->config->set('add_api', $api); + return true; } @@ -265,6 +274,25 @@ final class Structuremultiple return true; } + /** + * Check if the view has an API + * + * @param array $view + * + * @return int + * @since 5.0.2 + */ + private function hasApi(array $view): int + { + // only for Joomla 4 and above + if ($this->config->get('joomla_version', 3) < 4 || !isset($view['add_api'])) + { + return 0; + } + + return (int) $view['add_api']; + } + /** * Check if the view is a valid view * @@ -333,6 +361,35 @@ final class Structuremultiple } } + /** + * Build the api + * + * @param array $view + * @param array $config + * @param int $targetArea + * + * @return void + * @since 5.0.2 + */ + private function buildApi(array $view, array $config, int $targetArea) + { + $settings = $view['settings']; + + // build the api + if ($settings->name_single != 'null' && $targetArea !== 1) + { + $target = ['api' => $settings->name_single]; + $this->structure->build($target, 'single', false, $config); + } + + // build the list view + if ($settings->name_list != 'null' && $targetArea !== 3) + { + $target = ['api' => $settings->name_list]; + $this->structure->build($target, 'list', false, $config); + } + } + /** * Build the custom view * diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Helper/Compiler.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Helper/Compiler.php index 9a3ef856a..5dff677e0 100644 --- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Helper/Compiler.php +++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Helper/Compiler.php @@ -132,6 +132,12 @@ class Compiler extends Infusion ); CFactory::_('Utilities.File')->write($xmlPath, $componentXML); } + // remove API + if (CFactory::_('Config')->get('add_api') === null) + { + // first remove the files and folders + CFactory::_('Utilities.Folder')->remove(CFactory::_('Utilities.Paths')->component_path . '/api'); + } // Trigger Event: jcb_ce_onBeforeUpdateFiles CFactory::_('Event')->trigger( diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Helper/Infusion.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Helper/Infusion.php index f28a1c4a8..c3c165371 100644 --- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Helper/Infusion.php +++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Helper/Infusion.php @@ -668,6 +668,7 @@ class Infusion extends Interpretation $nameSingleCode ) ); + // ADMIN_VIEW_MODEL_HEADER <<>> add the header details for the model CFactory::_('Compiler.Builder.Content.Multi')->set($nameSingleCode . '|ADMIN_VIEW_MODEL_HEADER', CFactory::_('Header')->get( @@ -687,6 +688,22 @@ class Infusion extends Interpretation ) ); + // API_VIEW_CONTROLLER_HEADER <<>> add the header details for the controller + CFactory::_('Compiler.Builder.Content.Multi')->set($nameSingleCode . '|API_VIEW_CONTROLLER_HEADER', + CFactory::_('Header')->get( + 'api.view.controller', + $nameSingleCode + ) + ); + + // API_VIEW_JSON_HEADER <<>> add the header details for the controller + CFactory::_('Compiler.Builder.Content.Multi')->set($nameSingleCode . '|API_VIEW_JSON_HEADER', + CFactory::_('Header')->get( + 'api.view.json', + $nameSingleCode + ) + ); + // JQUERY <<>> CFactory::_('Compiler.Builder.Content.Multi')->set($nameSingleCode . '|JQUERY', $this->setJquery( @@ -1028,6 +1045,20 @@ class Infusion extends Interpretation ) ); + // API_VIEWS_CONTROLLER_HEADER <<>> add the header details for the controller + CFactory::_('Compiler.Builder.Content.Multi')->set($nameListCode . '|API_VIEWS_CONTROLLER_HEADER', + CFactory::_('Header')->get( + 'api.views.controller', $nameListCode + ) + ); + + // API_VIEWS_JSON_HEADER <<>> add the header details for the controller + CFactory::_('Compiler.Builder.Content.Multi')->set($nameListCode . '|API_VIEWS_JSON_HEADER', + CFactory::_('Header')->get( + 'api.views.json', $nameListCode + ) + ); + // JQUERY <<>> CFactory::_('Compiler.Builder.Content.Multi')->set($nameListCode . '|JQUERY', $this->setJquery( diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/JoomlaFive/Header.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/JoomlaFive/Header.php index a574ddd36..58576bb7c 100644 --- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/JoomlaFive/Header.php +++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/JoomlaFive/Header.php @@ -565,6 +565,20 @@ final class Header implements HeaderInterface $headers[] = 'use Joomla\DI\Container;'; break; + case 'api.view.controller': + case 'api.views.controller': + $headers = []; + $headers[] = 'use Joomla\CMS\Factory;'; + $headers[] = 'use Joomla\CMS\MVC\Controller\ApiController;'; + break; + + case 'api.view.json': + case 'api.views.json': + $headers = []; + $headers[] = 'use Joomla\CMS\Factory;'; + $headers[] = 'use Joomla\CMS\MVC\View\JsonApiView as BaseApiView;'; + break; + default: break; } diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/JoomlaFour/Header.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/JoomlaFour/Header.php index 42e8d5c3c..5c24e8f90 100644 --- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/JoomlaFour/Header.php +++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/JoomlaFour/Header.php @@ -565,6 +565,20 @@ final class Header implements HeaderInterface $headers[] = 'use Joomla\DI\Container;'; break; + case 'api.view.controller': + case 'api.views.controller': + $headers = []; + $headers[] = 'use Joomla\CMS\Factory;'; + $headers[] = 'use Joomla\CMS\MVC\Controller\ApiController;'; + break; + + case 'api.view.json': + case 'api.views.json': + $headers = []; + $headers[] = 'use Joomla\CMS\Factory;'; + $headers[] = 'use Joomla\CMS\MVC\View\JsonApiView as BaseApiView;'; + break; + default: break; }