diff --git a/componentbuilderadminheaderstabs.xml b/componentbuilderadminheaderstabs.xml
index 3277d26..a27f56c 100644
--- a/componentbuilderadminheaderstabs.xml
+++ b/componentbuilderadminheaderstabs.xml
@@ -1,13 +1,14 @@
PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS
- 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\ComponentbuilderAdminHeadersTabs
PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS_XML_DESCRIPTION
@@ -15,15 +16,16 @@
- en-GB/en-GB.plg_content_componentbuilderadminheaderstabs.ini
- en-GB/en-GB.plg_content_componentbuilderadminheaderstabs.sys.ini
+ en-GB/plg_content_componentbuilderadminheaderstabs.ini
+ en-GB/plg_content_componentbuilderadminheaderstabs.sys.ini
- componentbuilderadminheaderstabs.php
+ services
index.html
- language
forms
+ services
+ src
\ No newline at end of file
diff --git a/language/en-GB/en-GB.plg_content_componentbuilderadminheaderstabs.ini b/language/en-GB/plg_content_componentbuilderadminheaderstabs.ini
similarity index 99%
rename from language/en-GB/en-GB.plg_content_componentbuilderadminheaderstabs.ini
rename to language/en-GB/plg_content_componentbuilderadminheaderstabs.ini
index 9ed070a..f1d2ff0 100644
--- a/language/en-GB/en-GB.plg_content_componentbuilderadminheaderstabs.ini
+++ b/language/en-GB/plg_content_componentbuilderadminheaderstabs.ini
@@ -1,6 +1,6 @@
PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS="Content - Componentbuilder Admin Headers Tabs"
PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS_DESCRIPTION="This plugin is used to set admin class custom headers."
-PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS_XML_DESCRIPTION="
Content - Componentbuilder Admin Headers Tabs (v.3.0.0)
This plugin is used to set admin class custom headers.
Created by Llewellyn van der Merwe
Development started 10th March, 2024
"
+PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS_XML_DESCRIPTION="Content - Componentbuilder Admin Headers Tabs (v.4.0.0)
This plugin is used to set admin class custom headers.
Created by Llewellyn van der Merwe
Development started 10th March, 2024
"
PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS_CLASS_HEADERS="Class Headers"
PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS_ADD_ADMIN_VIEW_MODEL_LABEL="Target Admin View
Model Header"
PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS_YES="Yes"
diff --git a/language/en-GB/en-GB.plg_content_componentbuilderadminheaderstabs.sys.ini b/language/en-GB/plg_content_componentbuilderadminheaderstabs.sys.ini
similarity index 99%
rename from language/en-GB/en-GB.plg_content_componentbuilderadminheaderstabs.sys.ini
rename to language/en-GB/plg_content_componentbuilderadminheaderstabs.sys.ini
index 9ed070a..f1d2ff0 100644
--- a/language/en-GB/en-GB.plg_content_componentbuilderadminheaderstabs.sys.ini
+++ b/language/en-GB/plg_content_componentbuilderadminheaderstabs.sys.ini
@@ -1,6 +1,6 @@
PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS="Content - Componentbuilder Admin Headers Tabs"
PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS_DESCRIPTION="This plugin is used to set admin class custom headers."
-PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS_XML_DESCRIPTION="Content - Componentbuilder Admin Headers Tabs (v.3.0.0)
This plugin is used to set admin class custom headers.
Created by Llewellyn van der Merwe
Development started 10th March, 2024
"
+PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS_XML_DESCRIPTION="Content - Componentbuilder Admin Headers Tabs (v.4.0.0)
This plugin is used to set admin class custom headers.
Created by Llewellyn van der Merwe
Development started 10th March, 2024
"
PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS_CLASS_HEADERS="Class Headers"
PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS_ADD_ADMIN_VIEW_MODEL_LABEL="Target Admin View
Model Header"
PLG_CONTENT_COMPONENTBUILDERADMINHEADERSTABS_YES="Yes"
diff --git a/script.php b/script.php
index 59f560a..efd5ee5 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 Admin Headers Tabs script file.
*
- * @package PlgContentComponentbuilderAdminHeadersTabs
+ * @package ComponentbuilderAdminHeadersTabs
*/
class plgContentComponentbuilderAdminHeadersTabsInstallerScript
{
+ /**
+ * 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/componentbuilderadminheaderstabs/componentbuilderadminheaderstabs.php'))
+ {
+ $this->deleteFiles[] = '/plugins/content/componentbuilderadminheaderstabs/componentbuilderadminheaderstabs.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..d7b9870
--- /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\ComponentbuilderAdminHeadersTabs\Extension\ComponentbuilderAdminHeadersTabs;
+
+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 ComponentbuilderAdminHeadersTabs(
+ $container->get(DispatcherInterface::class),
+ (array) PluginHelper::getPlugin('content', 'componentbuilderadminheaderstabs')
+ );
+ $plugin->setApplication(Factory::getApplication());
+
+ return $plugin;
+ }
+ );
+ }
+};
diff --git a/componentbuilderadminheaderstabs.php b/src/Extension/ComponentbuilderAdminHeadersTabs.php
similarity index 88%
rename from componentbuilderadminheaderstabs.php
rename to src/Extension/ComponentbuilderAdminHeadersTabs.php
index a4bfc3f..300ccbf 100644
--- a/componentbuilderadminheaderstabs.php
+++ b/src/Extension/ComponentbuilderAdminHeadersTabs.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\ComponentbuilderAdminHeadersTabs\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 Admin Headers Tabs plugin.
*
* @package ComponentbuilderAdminHeadersTabs
- * @since 3.0.0
+ * @since 4.0.0
*/
-class PlgContentComponentbuilderAdminHeadersTabs extends CMSPlugin
+final class ComponentbuilderAdminHeadersTabs extends CMSPlugin
{
/**
@@ -51,7 +53,7 @@ class PlgContentComponentbuilderAdminHeadersTabs extends CMSPlugin
if (strpos($context, 'com_componentbuilder.admin_view') === 0)
{
// Add the forms path
- Form::addFormPath(__DIR__ . '/forms');
+ Form::addFormPath(__DIR__ . '/../../forms');
// add the admin view params for privacy integration
$form->loadFile('admin_view');
// 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