From 8cd684badb51463981b94cb162a99bbd9818234a Mon Sep 17 00:00:00 2001 From: aB0t Date: Mon, 11 Mar 2024 18:34:06 +0200 Subject: [PATCH] Release of v2.0.0 --- componentbuilderfieldorderingtabs.php | 7 +- componentbuilderfieldorderingtabs.xml | 6 +- fields/adminlistvieworderfields.php | 145 ------------ fields/linkedviewsorderfields.php | 112 --------- ...tent_componentbuilderfieldorderingtabs.ini | 2 +- ..._componentbuilderfieldorderingtabs.sys.ini | 2 +- script.php | 214 ------------------ 7 files changed, 8 insertions(+), 480 deletions(-) delete mode 100644 fields/adminlistvieworderfields.php delete mode 100644 fields/linkedviewsorderfields.php diff --git a/componentbuilderfieldorderingtabs.php b/componentbuilderfieldorderingtabs.php index d2b30c8..5dc06e3 100644 --- a/componentbuilderfieldorderingtabs.php +++ b/componentbuilderfieldorderingtabs.php @@ -14,19 +14,17 @@ defined('_JEXEC') or die('Restricted access'); use Joomla\CMS\Form\Form; use Joomla\CMS\Plugin\CMSPlugin; - -JLoader::register('ComponentbuilderHelper', JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php'); /** * Content - Componentbuilder Field Ordering Tabs plugin. * * @package ComponentbuilderFieldOrderingTabs - * @since 1.0.2 + * @since 2.0.0 */ class PlgContentComponentbuilderFieldOrderingTabs extends CMSPlugin { /** - * Affects constructor behavior. If true, language files will be loaded automatically. + * Affects constructor behaviour. If true, language files will be loaded automatically. * * @var boolean * @since 1.0 @@ -55,6 +53,7 @@ class PlgContentComponentbuilderFieldOrderingTabs extends CMSPlugin // add the admin view params for privacy integration $form->loadFile('admin_view'); } + return true; } } diff --git a/componentbuilderfieldorderingtabs.xml b/componentbuilderfieldorderingtabs.xml index c447386..db668d3 100644 --- a/componentbuilderfieldorderingtabs.xml +++ b/componentbuilderfieldorderingtabs.xml @@ -1,13 +1,13 @@ - + PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS - 9th March, 2024 + 11th March, 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 - 1.0.2 + 2.0.0 PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_XML_DESCRIPTION diff --git a/fields/adminlistvieworderfields.php b/fields/adminlistvieworderfields.php deleted file mode 100644 index 7bbc112..0000000 --- a/fields/adminlistvieworderfields.php +++ /dev/null @@ -1,145 +0,0 @@ - - * @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\Language\Text; -use Joomla\CMS\HTML\HTMLHelper as Html; - -// import the list field type -jimport('joomla.form.helper'); -JFormHelper::loadFieldClass('list'); - -/** - * Adminlistvieworderfields Form Field class for the Componentbuilder component - */ -class JFormFieldAdminlistvieworderfields extends JFormFieldList -{ - /** - * The adminlistvieworderfields field type. - * - * @var string - */ - public $type = 'adminlistvieworderfields'; - - /** - * Method to get a list of options for a list input. - * - * @return array An array of Html options. - */ - protected function getOptions() - { - // load the db object - $db = JFactory::getDBO(); - // get the input from url - $jinput = JFactory::getApplication()->input; - // get the id - $adminView = $jinput->getInt('id', 0); - // set the field trackers - $fieldIds = array(); - $sortIds = array(); - // check if we have an admin view - if (is_numeric($adminView) && $adminView >= 1) - { - // get all the fields linked to the admin view - if ($addFields = ComponentbuilderHelper::getVar('admin_fields', (int) $adminView, 'admin_view', 'addfields')) - { - if (ComponentbuilderHelper::checkJson($addFields)) - { - $addFields = json_decode($addFields, true); - if (ComponentbuilderHelper::checkArray($addFields)) - { - foreach($addFields as $addField) - { - // admin list view and ordering - if (isset($addField['field']) && isset($addField['list']) && ($addField['list'] == 1 || $addField['list'] == 3) - && isset($addField['sort']) && $addField['sort']) - { - $fieldIds[(int) $addField['field']] = (int) $addField['field']; - } - // do track all fields set as sorted - if (isset($addField['field']) && isset($addField['sort']) && $addField['sort']) - { - $sortIds[(int) $addField['field']] = (int) $addField['field']; - } - } - } - } - } - // get all the fields that are also having a relationship on the list view as sorted - if ($addFields = ComponentbuilderHelper::getVar('admin_fields_relations', (int) $adminView, 'admin_view', 'addrelations')) - { - if (ComponentbuilderHelper::checkJson($addFields)) - { - $addFields = json_decode($addFields, true); - if (ComponentbuilderHelper::checkArray($addFields)) - { - foreach($addFields as $addField) - { - // admin list view and ordering - if (isset($addField['joinfields']) && ComponentbuilderHelper::checkArray($addField['joinfields'])) - { - foreach($addField['joinfields'] as $joinfield) - { - if (isset($sortIds[$joinfield])) - { - $fieldIds[(int) $joinfield] = (int) $joinfield; - } - } - } - } - } - } - } - // filter by fields linked - if (ComponentbuilderHelper::checkArray($fieldIds)) - { - $query = $db->getQuery(true); - $query->select($db->quoteName(array('a.id','a.name', 'a.xml', 'b.name'),array('id','name', 'xml', 'type'))); - $query->from($db->quoteName('#__componentbuilder_field', 'a')); - $query->join('LEFT', '#__componentbuilder_fieldtype AS b ON b.id = a.fieldtype'); - $query->where($db->quoteName('a.published') . ' >= 1'); - // only load these fields - $query->where($db->quoteName('a.id') . ' IN (' . implode(',', $fieldIds) . ')'); - $query->order('a.name ASC'); - $db->setQuery((string)$query); - $items = $db->loadObjectList(); - $options = array(); - if ($items) - { - $options[] = JHtml::_('select.option', '', JText::_('PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_SELECT_AN_OPTION')); - $options[] = JHtml::_('select.option', -1, JText::_('PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ID'). ' [ id - text ]'); - $options[] = JHtml::_('select.option', -2, JText::_('PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ORDERING'). ' [ ordering - number ]'); - $options[] = JHtml::_('select.option', -3, JText::_('PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_STATUS'). ' [ published - list ]'); - foreach($items as $item) - { - // get the field name (TODO this could slow down the system so we will need to improve on this) - if (isset($item->xml) && ComponentbuilderHelper::checkJson($item->xml)) - { - $field_xml = json_decode($item->xml); - $field_name = ComponentbuilderHelper::getBetween($field_xml,'name="','"'); - $field_name = ComponentbuilderHelper::safeFieldName($field_name); - $options[] = JHtml::_('select.option', $item->id, $item->name . ' [ ' . $field_name . ' - ' . $item->type . ' ]'); - } - else - { - $options[] = JHtml::_('select.option', $item->id, $item->name . ' [ empty - ' . $item->type . ' ]'); - } - } - } - return $options; - } - } - return false; - } -} diff --git a/fields/linkedviewsorderfields.php b/fields/linkedviewsorderfields.php deleted file mode 100644 index 66cee40..0000000 --- a/fields/linkedviewsorderfields.php +++ /dev/null @@ -1,112 +0,0 @@ - - * @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\Language\Text; -use Joomla\CMS\HTML\HTMLHelper as Html; - -// import the list field type -jimport('joomla.form.helper'); -JFormHelper::loadFieldClass('list'); - -/** - * Linkedviewsorderfields Form Field class for the Componentbuilder component - */ -class JFormFieldLinkedviewsorderfields extends JFormFieldList -{ - /** - * The linkedviewsorderfields field type. - * - * @var string - */ - public $type = 'linkedviewsorderfields'; - - /** - * Method to get a list of options for a list input. - * - * @return array An array of Html options. - */ - protected function getOptions() - { - // load the db object - $db = JFactory::getDBO(); - // get the input from url - $jinput = JFactory::getApplication()->input; - // get the id - $adminView = $jinput->getInt('id', 0); - // check if we have an admin view - if (is_numeric($adminView) && $adminView >= 1) - { - // get all the fields linked to the admin view - if ($addFields = ComponentbuilderHelper::getVar('admin_fields', (int) $adminView, 'admin_view', 'addfields')) - { - if (ComponentbuilderHelper::checkJson($addFields)) - { - $addFields = json_decode($addFields, true); - if (ComponentbuilderHelper::checkArray($addFields)) - { - foreach($addFields as $addField) - { - // linked list views and ordering - if (isset($addField['field']) && isset($addField['list']) && ($addField['list'] == 1 || $addField['list'] == 4) - && isset($addField['sort']) && $addField['sort']) - { - $fieldIds[] = (int) $addField['field']; - } - } - } - } - } - // filter by fields linked - if (ComponentbuilderHelper::checkArray($fieldIds)) - { - $query = $db->getQuery(true); - $query->select($db->quoteName(array('a.id','a.name', 'a.xml', 'b.name'),array('id','name', 'xml', 'type'))); - $query->from($db->quoteName('#__componentbuilder_field', 'a')); - $query->join('LEFT', '#__componentbuilder_fieldtype AS b ON b.id = a.fieldtype'); - $query->where($db->quoteName('a.published') . ' >= 1'); - // only load these fields - $query->where($db->quoteName('a.id') . ' IN (' . implode(',', $fieldIds) . ')'); - $query->order('a.name ASC'); - $db->setQuery((string)$query); - $items = $db->loadObjectList(); - $options = array(); - if ($items) - { - $options[] = JHtml::_('select.option', '', JText::_('PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_SELECT_AN_OPTION')); - $options[] = JHtml::_('select.option', -1, JText::_('PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ID'). ' [ id - text ]'); - $options[] = JHtml::_('select.option', -2, JText::_('PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ORDERING'). ' [ ordering - number ]'); - $options[] = JHtml::_('select.option', -3, JText::_('PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_STATUS'). ' [ published - list ]'); - foreach($items as $item) - { - // get the field name (TODO this could slow down the system so we will need to improve on this) - if (isset($item->xml) && ComponentbuilderHelper::checkJson($item->xml)) - { - $field_xml = json_decode($item->xml); - $field_name = ComponentbuilderHelper::getBetween($field_xml,'name="','"'); - $field_name = ComponentbuilderHelper::safeFieldName($field_name); - $options[] = JHtml::_('select.option', $item->id, $item->name . ' [ ' . $field_name . ' - ' . $item->type . ' ]'); - } - else - { - $options[] = JHtml::_('select.option', $item->id, $item->name . ' [ empty - ' . $item->type . ' ]'); - } - } - } - return $options; - } - } - return false; - } -} diff --git a/language/en-GB/en-GB.plg_content_componentbuilderfieldorderingtabs.ini b/language/en-GB/en-GB.plg_content_componentbuilderfieldorderingtabs.ini index f0fac5c..8f6789a 100644 --- a/language/en-GB/en-GB.plg_content_componentbuilderfieldorderingtabs.ini +++ b/language/en-GB/en-GB.plg_content_componentbuilderfieldorderingtabs.ini @@ -1,6 +1,6 @@ PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS="Content - Componentbuilder Field Ordering Tabs" PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_DESCRIPTION="This plugin is used to set custom ordering to fields in the JCB list views." -PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_XML_DESCRIPTION="

Content - Componentbuilder Field Ordering Tabs (v.1.0.2)

This plugin is used to set custom ordering to fields in the JCB list views.

Created by Llewellyn van der Merwe
Development started 20th May, 2020

" +PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_XML_DESCRIPTION="

Content - Componentbuilder Field Ordering Tabs (v.2.0.0)

This plugin is used to set custom ordering to fields in the JCB list views.

Created by Llewellyn van der Merwe
Development started 10th March, 2024

" PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_FIELD_ORDERING="Field Ordering" PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ADD_ADMIN_ORDERING_LABEL="Add Admin List View Ordering" PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ADD_ADMIN_ORDERING_DESCRIPTION="Select the ordering behavior, default is by id, and custom lets you select." diff --git a/language/en-GB/en-GB.plg_content_componentbuilderfieldorderingtabs.sys.ini b/language/en-GB/en-GB.plg_content_componentbuilderfieldorderingtabs.sys.ini index f0fac5c..8f6789a 100644 --- a/language/en-GB/en-GB.plg_content_componentbuilderfieldorderingtabs.sys.ini +++ b/language/en-GB/en-GB.plg_content_componentbuilderfieldorderingtabs.sys.ini @@ -1,6 +1,6 @@ PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS="Content - Componentbuilder Field Ordering Tabs" PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_DESCRIPTION="This plugin is used to set custom ordering to fields in the JCB list views." -PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_XML_DESCRIPTION="

Content - Componentbuilder Field Ordering Tabs (v.1.0.2)

This plugin is used to set custom ordering to fields in the JCB list views.

Created by Llewellyn van der Merwe
Development started 20th May, 2020

" +PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_XML_DESCRIPTION="

Content - Componentbuilder Field Ordering Tabs (v.2.0.0)

This plugin is used to set custom ordering to fields in the JCB list views.

Created by Llewellyn van der Merwe
Development started 10th March, 2024

" PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_FIELD_ORDERING="Field Ordering" PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ADD_ADMIN_ORDERING_LABEL="Add Admin List View Ordering" PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ADD_ADMIN_ORDERING_DESCRIPTION="Select the ordering behavior, default is by id, and custom lets you select." diff --git a/script.php b/script.php index e2f41bc..fd473b0 100644 --- a/script.php +++ b/script.php @@ -24,218 +24,4 @@ use Joomla\CMS\Filesystem\Folder; */ class plgContentComponentbuilderFieldOrderingTabsInstallerScript { - - /** - * Called before any type of action - * - * @param string $route Which action is happening (install|uninstall|discover_install|update) - * @param Joomla\CMS\Installer\InstallerAdapter $adapter The object responsible for running this script - * - * @return boolean True on success - */ - public function preflight($route, $adapter) - { - // get application - $app = Factory::getApplication(); - - // the default for both install and update - $jversion = new JVersion(); - if (!$jversion->isCompatible('3.8.0')) - { - $app->enqueueMessage('Please upgrade to at least Joomla! 3.8.0 before continuing!', 'error'); - return false; - } - - if ('install' === $route) - { -// needs fix - - - // check that componentbuilder is installed - $pathToCore = JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php'; - if (!JFile::exists($pathToCore)) - { - $app->enqueueMessage('Joomla Component Builder must first be installed from Joomla Component Builder.', 'error'); - return false; - } - - // load the helper class - JLoader::register('ComponentbuilderHelper', JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php'); - - // block install - $blockInstall = true; - - // check the version of JCB - $manifest = ComponentbuilderHelper::manifest(); - if (isset($manifest->version) && strpos($manifest->version, '.') !== false) - { - // get the version - $jcbVersion = explode('.', $manifest->version); - // check that we have JCB 3.0.0 or higher installed - if (count($jcbVersion) == 3 && $jcbVersion[0] >= 3 && - ( - ($jcbVersion[0] == 3 && $jcbVersion[1] == 0 && $jcbVersion[2] >= 0) || - ($jcbVersion[0] == 3 && $jcbVersion[1] > 0) || - $jcbVersion[0] > 3) - ) - { - $blockInstall = false; - } - } - - // allow install if all conditions are met - if ($blockInstall) - { - $app->enqueueMessage('Please upgrade to JCB v3.0.0 or higher before installing this plugin.', 'error'); - return false; - } - - - // check that componentbuilder is installed - $pathToCore = JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php'; - if (!JFile::exists($pathToCore)) - { - $app->enqueueMessage('Joomla Component Builder must first be installed from Joomla Component Builder.', 'error'); - return false; - } - // load the helper class - JLoader::register('ComponentbuilderHelper', JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php'); - // block install - $blockInstall = true; - // check the version of JCB - $manifest = ComponentbuilderHelper::manifest(); - if (isset($manifest->version) && strpos($manifest->version, '.') !== false) - { - // get the version - $jcbVersion = explode('.', $manifest->version); - // check that we have JCB 2.10.13 or higher installed - if (count($jcbVersion) == 3 && (($jcbVersion[0] == 2 && $jcbVersion[1] >= 10 && (($jcbVersion[1] == 10 && $jcbVersion[2] >= 13) || ($jcbVersion[1] > 10))) || $jcbVersion[0] >= 3)) - { - $blockInstall = false; - } - } - // allow install if all conditions are met - if ($blockInstall) - { - $app->enqueueMessage('Please upgrade to JCB 2.10.13 or higher before installing this plugin.', 'error'); - return false; - } - - // check that componentbuilder is installed - $pathToCore = JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php'; - if (!JFile::exists($pathToCore)) - { - $app->enqueueMessage('Joomla Component Builder must first be installed from Joomla Component Builder.', 'error'); - return false; - } - - // check that componentbuilder is installed - $pathToCore = JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php'; - if (!JFile::exists($pathToCore)) - { - $app->enqueueMessage('Joomla Component Builder must first be installed from Joomla Component Builder.', 'error'); - return false; - } - - // check that componentbuilder is installed - $pathToCore = JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php'; - if (!JFile::exists($pathToCore)) - { - $app->enqueueMessage('Joomla Component Builder must first be installed from Joomla Component Builder.', 'error'); - return false; - } - - // check that componentbuilder is installed - $pathToCore = JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php'; - if (!JFile::exists($pathToCore)) - { - $app->enqueueMessage('Joomla Component Builder must first be installed from Joomla Component Builder.', 'error'); - return false; - } - - - // check that componentbuilder is installed - $pathToCore = JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php'; - if (!JFile::exists($pathToCore)) - { - $app->enqueueMessage('Joomla Component Builder must first be installed from Joomla Component Builder.', 'error'); - return false; - } - - // load the helper class - JLoader::register('ComponentbuilderHelper', JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php'); - - // block install - $blockInstall = true; - - // check the version of JCB - $manifest = ComponentbuilderHelper::manifest(); - if (isset($manifest->version) && strpos($manifest->version, '.') !== false) - { - // get the version - $jcbVersion = explode('.', $manifest->version); - // check that we have JCB 3.0.0 or higher installed - if (count($jcbVersion) == 3 && $jcbVersion[0] >= 3 && - ( - ($jcbVersion[0] == 3 && $jcbVersion[1] == 0 && $jcbVersion[2] >= 0) || - ($jcbVersion[0] == 3 && $jcbVersion[1] > 0) || - $jcbVersion[0] > 3) - ) - { - $blockInstall = false; - } - } - - // allow install if all conditions are met - if ($blockInstall) - { - $app->enqueueMessage('Please upgrade to JCB v3.0.0 or higher before installing this plugin.', 'error'); - return false; - } - - - - // check that componentbuilder is installed - $pathToCore = JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php'; - if (!JFile::exists($pathToCore)) - { - $app->enqueueMessage('Joomla Component Builder must first be installed from Joomla Component Builder.', 'error'); - return false; - } - - // load the helper class - JLoader::register('ComponentbuilderHelper', JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php'); - - // block install - $blockInstall = true; - - // check the version of JCB - $manifest = ComponentbuilderHelper::manifest(); - if (isset($manifest->version) && strpos($manifest->version, '.') !== false) - { - // get the version - $jcbVersion = explode('.', $manifest->version); - // check that we have JCB 3.0.0 or higher installed - if (count($jcbVersion) == 3 && $jcbVersion[0] >= 3 && - ( - ($jcbVersion[0] == 3 && $jcbVersion[1] == 0 && $jcbVersion[2] >= 0) || - ($jcbVersion[0] == 3 && $jcbVersion[1] > 0) || - $jcbVersion[0] > 3) - ) - { - $blockInstall = false; - } - } - - // allow install if all conditions are met - if ($blockInstall) - { - $app->enqueueMessage('Please upgrade to JCB v3.0.0 or higher before installing this plugin.', 'error'); - return false; - } - - } - - return true; - } }