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