diff --git a/componentbuildercomponentheaderstabs.xml b/componentbuildercomponentheaderstabs.xml
index 9410b38..f473671 100644
--- a/componentbuildercomponentheaderstabs.xml
+++ b/componentbuildercomponentheaderstabs.xml
@@ -1,13 +1,14 @@
PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS
- 27th July, 2024
+ 14th 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
- 3.0.0
+ 4.0.0
+ VDM\Plugin\Content\ComponentbuilderComponentHeadersTabs
PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_XML_DESCRIPTION
@@ -15,15 +16,18 @@
- en-GB/en-GB.plg_content_componentbuildercomponentheaderstabs.ini
- en-GB/en-GB.plg_content_componentbuildercomponentheaderstabs.sys.ini
+ en-GB/plg_content_componentbuildercomponentheaderstabs.ini
+ en-GB/plg_content_componentbuildercomponentheaderstabs.sys.ini
+ af-ZA/plg_content_componentbuildercomponentheaderstabs.ini
+ af-ZA/plg_content_componentbuildercomponentheaderstabs.sys.ini
- componentbuildercomponentheaderstabs.php
+ services
index.html
- language
forms
+ services
+ src
\ No newline at end of file
diff --git a/language/af-ZA/plg_content_componentbuildercomponentheaderstabs.ini b/language/af-ZA/plg_content_componentbuildercomponentheaderstabs.ini
new file mode 100644
index 0000000..3f17087
--- /dev/null
+++ b/language/af-ZA/plg_content_componentbuildercomponentheaderstabs.ini
@@ -0,0 +1,18 @@
+PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_YES="Ja"
+PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_NO="Nee"
+PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_YES="Ja"
+PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_NO="Nee"
+PLG_EXTENSION_COMPONENTBUILDEREXPORTCOMPILER_NO="Nee"
+PLG_EXTENSION_COMPONENTBUILDEREXPORTCOMPILER_YES="Ja"
+PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_YES="Ja"
+PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_NO="Nee"
+PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_YES="Ja"
+PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_NO="Nee"
+PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS_YES="Ja"
+PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS_NO="Nee"
+PLG_CONTENT_COMPONENTBUILDERCUSTOMADMINHEADERSTABS_YES="Ja"
+PLG_CONTENT_COMPONENTBUILDERCUSTOMADMINHEADERSTABS_NO="Nee"
+PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS_YES="Ja"
+PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS_NO="Nee"
+PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_YES="Ja"
+PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_NO="Nee"
\ No newline at end of file
diff --git a/language/af-ZA/plg_content_componentbuildercomponentheaderstabs.sys.ini b/language/af-ZA/plg_content_componentbuildercomponentheaderstabs.sys.ini
new file mode 100644
index 0000000..3f17087
--- /dev/null
+++ b/language/af-ZA/plg_content_componentbuildercomponentheaderstabs.sys.ini
@@ -0,0 +1,18 @@
+PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_YES="Ja"
+PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_NO="Nee"
+PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_YES="Ja"
+PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_NO="Nee"
+PLG_EXTENSION_COMPONENTBUILDEREXPORTCOMPILER_NO="Nee"
+PLG_EXTENSION_COMPONENTBUILDEREXPORTCOMPILER_YES="Ja"
+PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_YES="Ja"
+PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_NO="Nee"
+PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_YES="Ja"
+PLG_CONTENT_COMPONENTBUILDERCOMPONENTDASHBOARDHEADERSTABS_NO="Nee"
+PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS_YES="Ja"
+PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS_NO="Nee"
+PLG_CONTENT_COMPONENTBUILDERCUSTOMADMINHEADERSTABS_YES="Ja"
+PLG_CONTENT_COMPONENTBUILDERCUSTOMADMINHEADERSTABS_NO="Nee"
+PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS_YES="Ja"
+PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS_NO="Nee"
+PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_YES="Ja"
+PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_NO="Nee"
\ No newline at end of file
diff --git a/language/en-GB/en-GB.plg_content_componentbuildercomponentheaderstabs.ini b/language/en-GB/plg_content_componentbuildercomponentheaderstabs.ini
similarity index 97%
rename from language/en-GB/en-GB.plg_content_componentbuildercomponentheaderstabs.ini
rename to language/en-GB/plg_content_componentbuildercomponentheaderstabs.ini
index f4d4077..c820e55 100644
--- a/language/en-GB/en-GB.plg_content_componentbuildercomponentheaderstabs.ini
+++ b/language/en-GB/plg_content_componentbuildercomponentheaderstabs.ini
@@ -1,6 +1,6 @@
PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS="Content - Componentbuilder Component Headers Tabs"
PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_DESCRIPTION="This plugin is used to set component class custom headers."
-PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_XML_DESCRIPTION="
Content - Componentbuilder Component Headers Tabs (v.3.0.0)
This plugin is used to set component class custom headers.
Created by Llewellyn van der Merwe
Development started 10th March, 2024
"
+PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_XML_DESCRIPTION="Content - Componentbuilder Component Headers Tabs (v.4.0.0)
This plugin is used to set component class custom headers.
Created by Llewellyn van der Merwe
Development started 10th March, 2024
"
PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_CLASS_HEADERS="Class Headers"
PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_ADD_ADMIN_COMPONENT_LABEL="Admin Component
Header"
PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_YES="Yes"
diff --git a/language/en-GB/en-GB.plg_content_componentbuildercomponentheaderstabs.sys.ini b/language/en-GB/plg_content_componentbuildercomponentheaderstabs.sys.ini
similarity index 97%
rename from language/en-GB/en-GB.plg_content_componentbuildercomponentheaderstabs.sys.ini
rename to language/en-GB/plg_content_componentbuildercomponentheaderstabs.sys.ini
index f4d4077..c820e55 100644
--- a/language/en-GB/en-GB.plg_content_componentbuildercomponentheaderstabs.sys.ini
+++ b/language/en-GB/plg_content_componentbuildercomponentheaderstabs.sys.ini
@@ -1,6 +1,6 @@
PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS="Content - Componentbuilder Component Headers Tabs"
PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_DESCRIPTION="This plugin is used to set component class custom headers."
-PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_XML_DESCRIPTION="Content - Componentbuilder Component Headers Tabs (v.3.0.0)
This plugin is used to set component class custom headers.
Created by Llewellyn van der Merwe
Development started 10th March, 2024
"
+PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_XML_DESCRIPTION="Content - Componentbuilder Component Headers Tabs (v.4.0.0)
This plugin is used to set component class custom headers.
Created by Llewellyn van der Merwe
Development started 10th March, 2024
"
PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_CLASS_HEADERS="Class Headers"
PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_ADD_ADMIN_COMPONENT_LABEL="Admin Component
Header"
PLG_CONTENT_COMPONENTBUILDERCOMPONENTHEADERSTABS_YES="Yes"
diff --git a/script.php b/script.php
index e7d1218..f3b618b 100644
--- a/script.php
+++ b/script.php
@@ -13,15 +13,129 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
+use Joomla\CMS\Version;
+use Joomla\CMS\Installer\InstallerAdapter;
use Joomla\CMS\Language\Text;
-use Joomla\CMS\Filesystem\File;
-use Joomla\CMS\Filesystem\Folder;
+use Joomla\Filesystem\File;
+use Joomla\Filesystem\Folder;
/**
* Content - Componentbuilder Component Headers Tabs script file.
*
- * @package PlgContentComponentbuilderComponentHeadersTabs
+ * @package ComponentbuilderComponentHeadersTabs
*/
class plgContentComponentbuilderComponentHeadersTabsInstallerScript
{
+ /**
+ * The CMS Application.
+ *
+ * @since 4.4.2
+ */
+ protected $app;
+
+ /**
+ * A list of files to be deleted
+ *
+ * @var array
+ * @since 3.6
+ */
+ protected array $deleteFiles = [];
+
+ /**
+ * A list of folders to be deleted
+ *
+ * @var array
+ * @since 3.6
+ */
+ protected array $deleteFolders = [];
+
+ /**
+ * Constructor
+ *
+ * @param InstallerAdapter $adapter The object responsible for running this script
+ */
+ public function __construct($adapter)
+ {
+ // get application
+ $this->app = Factory::getApplication();
+
+ if (is_file(JPATH_ROOT . '/plugins/content/componentbuildercomponentheaderstabs/componentbuildercomponentheaderstabs.php'))
+ {
+ $this->deleteFiles[] = '/plugins/content/componentbuildercomponentheaderstabs/componentbuildercomponentheaderstabs.php';
+ }
+ }
+
+ /**
+ * Called before any type of action
+ *
+ * @param string $route Which action is happening (install|uninstall|discover_install|update)
+ * @param InstallerAdapter $adapter The object responsible for running this script
+ *
+ * @return boolean True on success
+ */
+ public function preflight($route, $adapter)
+ {
+ // set application to local method var, just use $this->app in future [we will drop $app in J6]
+ $app = $this->app;
+
+ // the default for both install and update
+ $jversion = new Version();
+ if (!$jversion->isCompatible('5.0.0'))
+ {
+ $app->enqueueMessage('Please upgrade to at least Joomla! 5.0.0 before continuing!', 'error');
+ return false;
+ }
+
+ // remove old files and folders
+ $this->removeFiles();
+
+ return true;
+ }
+
+ /**
+ * Called before any type of action
+ *
+ * @param string $route Which action is happening (install|uninstall|discover_install|update)
+ * @param InstallerAdapter $adapter The object responsible for running this script
+ *
+ * @return boolean True on success
+ */
+ public function postflight($route, $adapter)
+ {
+ // set application to local method var, just use $this->app in future [we will drop $app in J6]
+ $app = $this->app;
+
+ return true;
+ }
+
+ /**
+ * Remove the files and folders in the given array from
+ *
+ * @return void
+ * @since 5.0.2
+ */
+ protected function removeFiles()
+ {
+ if (!empty($this->deleteFiles))
+ {
+ foreach ($this->deleteFiles as $file)
+ {
+ if (is_file(JPATH_ROOT . $file) && !File::delete(JPATH_ROOT . $file))
+ {
+ echo Text::sprintf('JLIB_INSTALLER_ERROR_FILE_FOLDER', $file) . '
';
+ }
+ }
+ }
+
+ if (!empty($this->deleteFolders))
+ {
+ foreach ($this->deleteFolders as $folder)
+ {
+ if (is_dir(JPATH_ROOT . $folder) && !Folder::delete(JPATH_ROOT . $folder))
+ {
+ echo Text::sprintf('JLIB_INSTALLER_ERROR_FILE_FOLDER', $folder) . '
';
+ }
+ }
+ }
+ }
}
diff --git a/services/index.html b/services/index.html
new file mode 100644
index 0000000..fa6d84e
--- /dev/null
+++ b/services/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/services/provider.php b/services/provider.php
new file mode 100644
index 0000000..636101a
--- /dev/null
+++ b/services/provider.php
@@ -0,0 +1,47 @@
+
+ * @git 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');
+
+use Joomla\CMS\Factory;
+use Joomla\CMS\Plugin\PluginHelper;
+use Joomla\CMS\Extension\PluginInterface;
+use Joomla\Event\DispatcherInterface;
+use Joomla\DI\ServiceProviderInterface;
+use Joomla\DI\Container;
+use VDM\Plugin\Content\ComponentbuilderComponentHeadersTabs\Extension\ComponentbuilderComponentHeadersTabs;
+
+return new class () implements ServiceProviderInterface {
+ /**
+ * Registers the service provider with a DI container.
+ *
+ * @param Container $container The DI container.
+ *
+ * @return void
+ * @since 4.3.0
+ */
+ public function register(Container $container)
+ {
+ $container->set(
+ PluginInterface::class,
+ function (Container $container) {
+ $plugin = new ComponentbuilderComponentHeadersTabs(
+ $container->get(DispatcherInterface::class),
+ (array) PluginHelper::getPlugin('content', 'componentbuildercomponentheaderstabs')
+ );
+ $plugin->setApplication(Factory::getApplication());
+
+ return $plugin;
+ }
+ );
+ }
+};
diff --git a/componentbuildercomponentheaderstabs.php b/src/Extension/ComponentbuilderComponentHeadersTabs.php
similarity index 88%
rename from componentbuildercomponentheaderstabs.php
rename to src/Extension/ComponentbuilderComponentHeadersTabs.php
index a540b41..e62fc50 100644
--- a/componentbuildercomponentheaderstabs.php
+++ b/src/Extension/ComponentbuilderComponentHeadersTabs.php
@@ -8,21 +8,23 @@
* @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');
+namespace VDM\Plugin\Content\ComponentbuilderComponentHeadersTabs\Extension;
use Joomla\CMS\Form\Form;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\CMS\Component\ComponentHelper;
use VDM\Joomla\Utilities\ArrayHelper;
+
+// No direct access to this file
+defined('_JEXEC') or die('Restricted access');
+
/**
* Content - Componentbuilder Component Headers Tabs plugin.
*
* @package ComponentbuilderComponentHeadersTabs
- * @since 3.0.0
+ * @since 4.0.0
*/
-class PlgContentComponentbuilderComponentHeadersTabs extends CMSPlugin
+final class ComponentbuilderComponentHeadersTabs extends CMSPlugin
{
/**
@@ -51,7 +53,7 @@ class PlgContentComponentbuilderComponentHeadersTabs extends CMSPlugin
if (strpos($context, 'com_componentbuilder.joomla_component') === 0)
{
// Add the forms path
- Form::addFormPath(__DIR__ . '/forms');
+ Form::addFormPath(__DIR__ . '/../../forms');
// add the admin view params for privacy integration
$form->loadFile('joomla_component');
// update all editors to use this components global editor
diff --git a/src/Extension/index.html b/src/Extension/index.html
new file mode 100644
index 0000000..fa6d84e
--- /dev/null
+++ b/src/Extension/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file