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