Component Builder (v.3.2.3-beta4)
+ Component Builder (v.3.2.3)
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 ddc6be6b1..9b292b4dd 100644
--- a/componentbuilder_update_server.xml
+++ b/componentbuilder_update_server.xml
@@ -166,49 +166,13 @@
pkg_component_builder
package
site
- 3.2.3-alpha
+ 3.2.3
https://dev.vdm.io
- https://git.vdm.dev/api/v1/repos/joomla/pkg-component-builder/archive/v3.2.3-alpha3.zip
+ https://git.vdm.dev/api/v1/repos/joomla/pkg-component-builder/archive/v3.2.3.zip
- alpha
-
- Llewellyn van der Merwe
- https://dev.vdm.io
-
-
-
- Component Builder
- Builds Complex Joomla Components
- pkg_component_builder
- package
- site
- 3.2.3-beta
- https://dev.vdm.io
-
- https://git.vdm.dev/api/v1/repos/joomla/pkg-component-builder/archive/v3.2.3-beta4.zip
-
-
- beta
-
- Llewellyn van der Merwe
- https://dev.vdm.io
-
-
-
- Component Builder
- Builds Complex Joomla Components
- pkg_component_builder
- package
- site
- 3.2.3-beta4
- https://dev.vdm.io
-
- https://git.vdm.dev/api/v1/repos/joomla/pkg-component-builder/archive/v3.2.3-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 6dc5f2592..2c31fff2e 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 ae449d815..c71a30684 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;
}
diff --git a/script.php b/script.php
index ad8aa09cb..3e33e2aad 100644
--- a/script.php
+++ b/script.php
@@ -10001,7 +10001,7 @@ class Com_ComponentbuilderInstallerScript
echo '
-
Upgrade to Version 3.2.3-beta4 Was Successful! Let us know if anything is not working as expected.
';
+ Upgrade to Version 3.2.3 Was Successful! Let us know if anything is not working as expected.
';
// Set db if not set already.
if (!isset($db))