diff --git a/componentbuildersiteheaderstabs.xml b/componentbuildersiteheaderstabs.xml
index 2c457d2..6eb54e4 100644
--- a/componentbuildersiteheaderstabs.xml
+++ b/componentbuildersiteheaderstabs.xml
@@ -1,13 +1,14 @@
PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS
- 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\ComponentbuilderSiteHeadersTabs
PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS_XML_DESCRIPTION
@@ -15,15 +16,16 @@
- en-GB/en-GB.plg_content_componentbuildersiteheaderstabs.ini
- en-GB/en-GB.plg_content_componentbuildersiteheaderstabs.sys.ini
+ en-GB/plg_content_componentbuildersiteheaderstabs.ini
+ en-GB/plg_content_componentbuildersiteheaderstabs.sys.ini
- componentbuildersiteheaderstabs.php
+ services
index.html
- language
forms
+ services
+ src
\ No newline at end of file
diff --git a/language/en-GB/en-GB.plg_content_componentbuildersiteheaderstabs.ini b/language/en-GB/plg_content_componentbuildersiteheaderstabs.ini
similarity index 99%
rename from language/en-GB/en-GB.plg_content_componentbuildersiteheaderstabs.ini
rename to language/en-GB/plg_content_componentbuildersiteheaderstabs.ini
index 047dc29..295cf4b 100644
--- a/language/en-GB/en-GB.plg_content_componentbuildersiteheaderstabs.ini
+++ b/language/en-GB/plg_content_componentbuildersiteheaderstabs.ini
@@ -1,6 +1,6 @@
PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS="Content - Componentbuilder Site Headers Tabs"
PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS_DESCRIPTION="This plugin is used to set site class custom headers."
-PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS_XML_DESCRIPTION="
Content - Componentbuilder Site Headers Tabs (v.3.0.0)
This plugin is used to set site class custom headers.
Created by Llewellyn van der Merwe
Development started 10th March, 2024
"
+PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS_XML_DESCRIPTION="Content - Componentbuilder Site Headers Tabs (v.4.0.0)
This plugin is used to set site class custom headers.
Created by Llewellyn van der Merwe
Development started 10th March, 2024
"
PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS_CLASS_HEADERS="Class Headers"
PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS_ADD_SITE_VIEW_MODEL_LABEL="Target Site View
Model Header"
PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS_ADD_SITE_VIEW_MODEL_DESCRIPTION="Only use this option if you have a getItem as your Main Get."
diff --git a/language/en-GB/en-GB.plg_content_componentbuildersiteheaderstabs.sys.ini b/language/en-GB/plg_content_componentbuildersiteheaderstabs.sys.ini
similarity index 99%
rename from language/en-GB/en-GB.plg_content_componentbuildersiteheaderstabs.sys.ini
rename to language/en-GB/plg_content_componentbuildersiteheaderstabs.sys.ini
index 047dc29..295cf4b 100644
--- a/language/en-GB/en-GB.plg_content_componentbuildersiteheaderstabs.sys.ini
+++ b/language/en-GB/plg_content_componentbuildersiteheaderstabs.sys.ini
@@ -1,6 +1,6 @@
PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS="Content - Componentbuilder Site Headers Tabs"
PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS_DESCRIPTION="This plugin is used to set site class custom headers."
-PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS_XML_DESCRIPTION="Content - Componentbuilder Site Headers Tabs (v.3.0.0)
This plugin is used to set site class custom headers.
Created by Llewellyn van der Merwe
Development started 10th March, 2024
"
+PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS_XML_DESCRIPTION="Content - Componentbuilder Site Headers Tabs (v.4.0.0)
This plugin is used to set site class custom headers.
Created by Llewellyn van der Merwe
Development started 10th March, 2024
"
PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS_CLASS_HEADERS="Class Headers"
PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS_ADD_SITE_VIEW_MODEL_LABEL="Target Site View
Model Header"
PLG_CONTENT_COMPONENTBUILDERSITEHEADERSTABS_ADD_SITE_VIEW_MODEL_DESCRIPTION="Only use this option if you have a getItem as your Main Get."
diff --git a/script.php b/script.php
index 1018c94..ad355cc 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 Site Headers Tabs script file.
*
- * @package PlgContentComponentbuilderSiteHeadersTabs
+ * @package ComponentbuilderSiteHeadersTabs
*/
class plgContentComponentbuilderSiteHeadersTabsInstallerScript
{
+ /**
+ * 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/componentbuildersiteheaderstabs/componentbuildersiteheaderstabs.php'))
+ {
+ $this->deleteFiles[] = '/plugins/content/componentbuildersiteheaderstabs/componentbuildersiteheaderstabs.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..4ac3d05
--- /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\ComponentbuilderSiteHeadersTabs\Extension\ComponentbuilderSiteHeadersTabs;
+
+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 ComponentbuilderSiteHeadersTabs(
+ $container->get(DispatcherInterface::class),
+ (array) PluginHelper::getPlugin('content', 'componentbuildersiteheaderstabs')
+ );
+ $plugin->setApplication(Factory::getApplication());
+
+ return $plugin;
+ }
+ );
+ }
+};
diff --git a/componentbuildersiteheaderstabs.php b/src/Extension/ComponentbuilderSiteHeadersTabs.php
similarity index 88%
rename from componentbuildersiteheaderstabs.php
rename to src/Extension/ComponentbuilderSiteHeadersTabs.php
index 1700886..f841803 100644
--- a/componentbuildersiteheaderstabs.php
+++ b/src/Extension/ComponentbuilderSiteHeadersTabs.php
@@ -8,22 +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\ComponentbuilderSiteHeadersTabs\Extension;
use Joomla\CMS\Form\Form;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\CMS\Component\ComponentHelper;
-use VDM\Joomla\Utilities\ArrayHelper;
+use VDM\Joomla\Utilities\ArrayHelper;
+
+// No direct access to this file
+defined('_JEXEC') or die('Restricted access');
/**
* Content - Componentbuilder Site Headers Tabs plugin.
*
* @package ComponentbuilderSiteHeadersTabs
- * @since 3.0.0
+ * @since 4.0.0
*/
-class PlgContentComponentbuilderSiteHeadersTabs extends CMSPlugin
+final class ComponentbuilderSiteHeadersTabs extends CMSPlugin
{
/**
@@ -52,7 +53,7 @@ class PlgContentComponentbuilderSiteHeadersTabs extends CMSPlugin
if (strpos($context, 'com_componentbuilder.site_view') === 0)
{
// Add the forms path
- Form::addFormPath(__DIR__ . '/forms');
+ Form::addFormPath(__DIR__ . '/../../forms');
// add the admin view params for privacy integration
$form->loadFile('site_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