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