Release of v3.0.0

This commit is contained in:
Robot 2024-08-15 01:35:23 +02:00
parent 3f6a4961af
commit 33764ee597
Signed by: Robot
GPG Key ID: 14DECD44E7E1BB95
12 changed files with 198 additions and 33 deletions

View File

@ -1,13 +1,14 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<extension type="plugin" version="5.0" group="content" method="upgrade"> <extension type="plugin" version="5.0" group="content" method="upgrade">
<name>PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS</name> <name>PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS</name>
<creationDate>27th July, 2024</creationDate> <creationDate>14th August, 2024</creationDate>
<author>Llewellyn van der Merwe</author> <author>Llewellyn van der Merwe</author>
<authorEmail>joomla@vdm.io</authorEmail> <authorEmail>joomla@vdm.io</authorEmail>
<authorUrl>https://dev.vdm.io</authorUrl> <authorUrl>https://dev.vdm.io</authorUrl>
<copyright>Copyright (C) 2015 Vast Development Method. All rights reserved.</copyright> <copyright>Copyright (C) 2015 Vast Development Method. All rights reserved.</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license> <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<version>2.0.2</version> <version>3.0.0</version>
<namespace path="src">VDM\Plugin\Content\ComponentbuilderPrivacyTabs</namespace>
<description>PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_XML_DESCRIPTION</description> <description>PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_XML_DESCRIPTION</description>
<!-- Scripts to run on installation --> <!-- Scripts to run on installation -->
@ -15,28 +16,23 @@
<!-- Language files --> <!-- Language files -->
<languages folder="language"> <languages folder="language">
<language tag="en-GB">en-GB/en-GB.plg_content_componentbuilderprivacytabs.ini</language> <language tag="en-GB">en-GB/plg_content_componentbuilderprivacytabs.ini</language>
<language tag="en-GB">en-GB/en-GB.plg_content_componentbuilderprivacytabs.sys.ini</language> <language tag="en-GB">en-GB/plg_content_componentbuilderprivacytabs.sys.ini</language>
</languages> </languages>
<!-- Plugin files --> <!-- Plugin files -->
<files> <files>
<filename plugin="componentbuilderprivacytabs">componentbuilderprivacytabs.php</filename> <folder plugin="componentbuilderprivacytabs">services</folder>
<filename>index.html</filename> <filename>index.html</filename>
<folder>language</folder>
<folder>fields</folder>
<folder>forms</folder> <folder>forms</folder>
<folder>rules</folder> <folder>services</folder>
<folder>src</folder>
</files> </files>
<!-- Config parameter --> <!-- Config parameters -->
<config> <config>
<fields name="params"> <fields name="params">
<!-- default paths of basic fieldset points to the plugin --> <fieldset name="basic" label="PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_GLOBAL_PRIVACY">
<fieldset name="basic" label="PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_GLOBAL_PRIVACY"
addrulepath="/plugins/content/componentbuilderprivacytabs/rules"
addfieldpath="/plugins/content/componentbuilderprivacytabs/fields"
>
<!-- Note_select_privacy_plugin Field. Type: Note. A None Database Field. (joomla) --> <!-- Note_select_privacy_plugin Field. Type: Note. A None Database Field. (joomla) -->
<field type="note" name="note_select_privacy_plugin" label="PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_NOTE_SELECT_PRIVACY_PLUGIN_LABEL" description="PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_NOTE_SELECT_PRIVACY_PLUGIN_DESCRIPTION" heading="h4" class="alert alert-info note_select_privacy_plugin" /> <field type="note" name="note_select_privacy_plugin" label="PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_NOTE_SELECT_PRIVACY_PLUGIN_LABEL" description="PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_NOTE_SELECT_PRIVACY_PLUGIN_DESCRIPTION" heading="h4" class="alert alert-info note_select_privacy_plugin" />
<!-- Plugin Field. Type: Joomlaplugins. (custom) --> <!-- Plugin Field. Type: Joomlaplugins. (custom) -->

View File

@ -4,8 +4,8 @@
<fields name="params"> <fields name="params">
<!-- default paths of privacy fieldset points to the plugin --> <!-- default paths of privacy fieldset points to the plugin -->
<fieldset name="privacy" label="PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_PRIVACY" <fieldset name="privacy" label="PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_PRIVACY"
addrulepath="/plugins/content/componentbuilderprivacytabs/rules" addrulepath="VDM\Plugin\Content\componentbuilderprivacytabs\Rule"
addfieldpath="/plugins/content/componentbuilderprivacytabs/fields" addfieldpath="VDM\Plugin\Content\componentbuilderprivacytabs\Field"
> >
<fields name="privacy"> <fields name="privacy">
<!-- Note_plugin_actions Field. Type: Note. A None Database Field. (joomla) --> <!-- Note_plugin_actions Field. Type: Note. A None Database Field. (joomla) -->

View File

@ -4,8 +4,8 @@
<fields name="params"> <fields name="params">
<!-- default paths of plugin fieldset points to the plugin --> <!-- default paths of plugin fieldset points to the plugin -->
<fieldset name="plugin" label="PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_PLUGIN" <fieldset name="plugin" label="PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_PLUGIN"
addrulepath="/plugins/content/componentbuilderprivacytabs/rules" addrulepath="VDM\Plugin\Content\componentbuilderprivacytabs\Rule"
addfieldpath="/plugins/content/componentbuilderprivacytabs/fields" addfieldpath="VDM\Plugin\Content\componentbuilderprivacytabs\Field"
> >
<!-- Note_select_privacy_plugin Field. Type: Note. A None Database Field. (joomla) --> <!-- Note_select_privacy_plugin Field. Type: Note. A None Database Field. (joomla) -->
<field type="note" name="note_select_privacy_plugin" label="PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_NOTE_SELECT_PRIVACY_PLUGIN_LABEL" description="PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_NOTE_SELECT_PRIVACY_PLUGIN_DESCRIPTION" heading="h4" class="alert alert-info note_select_privacy_plugin" /> <field type="note" name="note_select_privacy_plugin" label="PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_NOTE_SELECT_PRIVACY_PLUGIN_LABEL" description="PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_NOTE_SELECT_PRIVACY_PLUGIN_DESCRIPTION" heading="h4" class="alert alert-info note_select_privacy_plugin" />

View File

@ -1,6 +1,6 @@
PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS="Content - Componentbuilder Privacy Tabs" PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS="Content - Componentbuilder Privacy Tabs"
PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_DESCRIPTION="This plugin is used to link your components to the privacy suite of Joomla by adding a new privacy tab to the JCB admin views, where you can set all the required details for the integration." PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_DESCRIPTION="This plugin is used to link your components to the privacy suite of Joomla by adding a new privacy tab to the JCB admin views, where you can set all the required details for the integration."
PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_XML_DESCRIPTION="<h1>Content - Componentbuilder Privacy Tabs (v.2.0.2)</h1> <div style='clear: both;'></div><p>This plugin is used to link your components to the privacy suite of Joomla by adding a new privacy tab to the JCB admin views, where you can set all the required details for the integration.</p><p>Created by <a href='https://dev.vdm.io' target='_blank'>Llewellyn van der Merwe</a><br /><small>Development started 10th March, 2024</small></p>" PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_XML_DESCRIPTION="<h1>Content - Componentbuilder Privacy Tabs (v.3.0.0)</h1> <div style='clear: both;'></div><p>This plugin is used to link your components to the privacy suite of Joomla by adding a new privacy tab to the JCB admin views, where you can set all the required details for the integration.</p><p>Created by <a href='https://dev.vdm.io' target='_blank'>Llewellyn van der Merwe</a><br /><small>Development started 10th March, 2024</small></p>"
PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_GLOBAL_PRIVACY="Global Privacy" PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_GLOBAL_PRIVACY="Global Privacy"
PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_PLUGIN="Plugin" PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_PLUGIN="Plugin"
PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_PRIVACY="Privacy" PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_PRIVACY="Privacy"

View File

@ -1,6 +1,6 @@
PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS="Content - Componentbuilder Privacy Tabs" PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS="Content - Componentbuilder Privacy Tabs"
PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_DESCRIPTION="This plugin is used to link your components to the privacy suite of Joomla by adding a new privacy tab to the JCB admin views, where you can set all the required details for the integration." PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_DESCRIPTION="This plugin is used to link your components to the privacy suite of Joomla by adding a new privacy tab to the JCB admin views, where you can set all the required details for the integration."
PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_XML_DESCRIPTION="<h1>Content - Componentbuilder Privacy Tabs (v.2.0.2)</h1> <div style='clear: both;'></div><p>This plugin is used to link your components to the privacy suite of Joomla by adding a new privacy tab to the JCB admin views, where you can set all the required details for the integration.</p><p>Created by <a href='https://dev.vdm.io' target='_blank'>Llewellyn van der Merwe</a><br /><small>Development started 10th March, 2024</small></p>" PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_XML_DESCRIPTION="<h1>Content - Componentbuilder Privacy Tabs (v.3.0.0)</h1> <div style='clear: both;'></div><p>This plugin is used to link your components to the privacy suite of Joomla by adding a new privacy tab to the JCB admin views, where you can set all the required details for the integration.</p><p>Created by <a href='https://dev.vdm.io' target='_blank'>Llewellyn van der Merwe</a><br /><small>Development started 10th March, 2024</small></p>"
PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_GLOBAL_PRIVACY="Global Privacy" PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_GLOBAL_PRIVACY="Global Privacy"
PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_PLUGIN="Plugin" PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_PLUGIN="Plugin"
PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_PRIVACY="Privacy" PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_PRIVACY="Privacy"

View File

@ -13,15 +13,129 @@
defined('_JEXEC') or die('Restricted access'); defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory; use Joomla\CMS\Factory;
use Joomla\CMS\Version;
use Joomla\CMS\Installer\InstallerAdapter;
use Joomla\CMS\Language\Text; use Joomla\CMS\Language\Text;
use Joomla\CMS\Filesystem\File; use Joomla\Filesystem\File;
use Joomla\CMS\Filesystem\Folder; use Joomla\Filesystem\Folder;
/** /**
* Content - Componentbuilder Privacy Tabs script file. * Content - Componentbuilder Privacy Tabs script file.
* *
* @package PlgContentComponentbuilderPrivacyTabs * @package ComponentbuilderPrivacyTabs
*/ */
class plgContentComponentbuilderPrivacyTabsInstallerScript class plgContentComponentbuilderPrivacyTabsInstallerScript
{ {
/**
* 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/componentbuilderprivacytabs/componentbuilderprivacytabs.php'))
{
$this->deleteFiles[] = '/plugins/content/componentbuilderprivacytabs/componentbuilderprivacytabs.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) . '<br>';
}
}
}
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) . '<br>';
}
}
}
}
} }

47
services/provider.php Normal file
View File

@ -0,0 +1,47 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/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\ComponentbuilderPrivacyTabs\Extension\ComponentbuilderPrivacyTabs;
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 ComponentbuilderPrivacyTabs(
$container->get(DispatcherInterface::class),
(array) PluginHelper::getPlugin('content', 'componentbuilderprivacytabs')
);
$plugin->setApplication(Factory::getApplication());
return $plugin;
}
);
}
};

View File

@ -8,9 +8,7 @@
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
namespace VDM\Plugin\Content\ComponentbuilderPrivacyTabs\Extension;
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Application\CMSApplication; use Joomla\CMS\Application\CMSApplication;
@ -20,13 +18,21 @@ use Joomla\CMS\Form\Form;
use Joomla\CMS\Factory; use Joomla\CMS\Factory;
use VDM\Joomla\Utilities\JsonHelper; use VDM\Joomla\Utilities\JsonHelper;
use VDM\Joomla\Utilities\ArrayHelper; use VDM\Joomla\Utilities\ArrayHelper;
use Joomla\CMS\Table\Extension;
use Joomla\CMS\Cache\Controller\CallbackController;
use Joomla\CMS\Cache\Cache;
use Joomla\CMS\Cache\Exception\CacheExceptionInterface;
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/** /**
* Content - Componentbuilder Privacy Tabs plugin. * Content - Componentbuilder Privacy Tabs plugin.
* *
* @package ComponentbuilderPrivacyTabs * @package ComponentbuilderPrivacyTabs
* @since 2.0.2 * @since 3.0.0
*/ */
class PlgContentComponentbuilderPrivacyTabs extends CMSPlugin final class ComponentbuilderPrivacyTabs extends CMSPlugin
{ {
/** /**
* Affects constructor behavior. If true, language files will be loaded automatically. * Affects constructor behavior. If true, language files will be loaded automatically.
@ -54,7 +60,7 @@ class PlgContentComponentbuilderPrivacyTabs extends CMSPlugin
if (strpos($context, 'com_componentbuilder.admin_view') === 0) if (strpos($context, 'com_componentbuilder.admin_view') === 0)
{ {
// Add the forms path // Add the forms path
Form::addFormPath(__DIR__ . '/forms'); Form::addFormPath(__DIR__ . '/../../forms');
// add the admin view params for privacy integration // add the admin view params for privacy integration
$form->loadFile('admin_view'); $form->loadFile('admin_view');
// if the global plugin is not set, allow it to be set from the admin view // if the global plugin is not set, allow it to be set from the admin view
@ -105,7 +111,7 @@ class PlgContentComponentbuilderPrivacyTabs extends CMSPlugin
// first set new params // first set new params
$this->params->set('plugin', (int) $item->params['plugin']); $this->params->set('plugin', (int) $item->params['plugin']);
// update the global plugin settings // update the global plugin settings
$extensionTable = new \JtableExtension(Factory::getDbo()); $extensionTable = new Extension(Factory::getDbo());
$extensionTable->load(array('element' => 'componentbuilderprivacytabs')); $extensionTable->load(array('element' => 'componentbuilderprivacytabs'));
// Save the change // Save the change
$extensionTable->set('params', $this->params->toString()); $extensionTable->set('params', $this->params->toString());
@ -149,11 +155,11 @@ class PlgContentComponentbuilderPrivacyTabs extends CMSPlugin
try try
{ {
/** @var \JCacheControllerCallback $cache */ /** @var CallbackController $cache */
$cache = \JCache::getInstance('callback', $options); $cache = Cache::getInstance('callback', $options);
$cache->clean(); $cache->clean();
} }
catch (\JCacheException $exception) catch (CacheExceptionInterface $exception)
{ {
$options['result'] = false; $options['result'] = false;
} }

1
src/Field/index.html Normal file
View File

@ -0,0 +1 @@
<html><body bgcolor="#FFFFFF"></body></html>

1
src/Rule/index.html Normal file
View File

@ -0,0 +1 @@
<html><body bgcolor="#FFFFFF"></body></html>