52
0
Fork 0

first commit - v1.0.0

This commit is contained in:
Llewellyn van der Merwe 2021-10-14 16:30:52 +02:00
commit 7f1e4b976e
Signed by: Llewellyn
GPG Key ID: EFC0C720A240551C
14 changed files with 575 additions and 0 deletions

View File

@ -0,0 +1,60 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com>
* @github Joomla Component Builder <https://github.com/vdm-io/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\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.0
*/
class PlgContentComponentbuilderFieldOrderingTabs extends CMSPlugin
{
/**
* Affects constructor behavior. If true, language files will be loaded automatically.
*
* @var boolean
* @since 1.0
*/
protected $autoloadLanguage = true;
/**
* Runs on content preparation of form.
*
* @param JForm $form The form
* @param stdClass $data The data
*
* @return boolean
*
* @since 1.0
*/
public function onContentPrepareForm(Form $form, $data)
{
$context = $form->getName();
// When this is componentbuilder admin view
if (strpos($context, 'com_componentbuilder.admin_view') === 0)
{
// Add the forms path
Form::addFormPath(__DIR__ . '/forms');
// add the admin view params for privacy integration
$form->loadFile('admin_view');
}
return true;
}
}

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<extension type="plugin" version="3.8" group="content" method="upgrade">
<name>PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS</name>
<creationDate>20th February, 2021</creationDate>
<author>Llewellyn van der Merwe</author>
<authorEmail>llewellyn@joomlacomponentbuilder.com</authorEmail>
<authorUrl>http://www.joomlacomponentbuilder.com</authorUrl>
<copyright>Copyright (C) 2015 Vast Development Method. All rights reserved.</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<version>1.0.0</version>
<description>PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_XML_DESCRIPTION</description>
<!-- Scripts to run on installation -->
<scriptfile>script.php</scriptfile>
<!-- Language files -->
<languages folder="language">
<language tag="en-GB">en-GB/en-GB.plg_content_componentbuilderfieldorderingtabs.ini</language>
<language tag="en-GB">en-GB/en-GB.plg_content_componentbuilderfieldorderingtabs.sys.ini</language>
</languages>
<!-- Plugin files -->
<files>
<filename plugin="componentbuilderfieldorderingtabs">componentbuilderfieldorderingtabs.php</filename>
<filename>index.html</filename>
<folder>language</folder>
<folder>fields</folder>
<folder>forms</folder>
<folder>rules</folder>
</files>
</extension>

View File

@ -0,0 +1,132 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com>
* @github Joomla Component Builder <https://github.com/vdm-io/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');
// 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 JHtml 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)
$field_name = ComponentbuilderHelper::safeFieldName(ComponentbuilderHelper::getBetween(json_decode($item->xml),'name="','"'));
$options[] = JHtml::_('select.option', $item->id, $item->name . ' [ ' . $field_name . ' - ' . $item->type . ' ]');
}
}
return $options;
}
}
return false;
}
}

1
fields/index.html Normal file
View File

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

View File

@ -0,0 +1,99 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com>
* @github Joomla Component Builder <https://github.com/vdm-io/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');
// 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 JHtml 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)
$field_name = ComponentbuilderHelper::safeFieldName(ComponentbuilderHelper::getBetween(json_decode($item->xml),'name="','"'));
$options[] = JHtml::_('select.option', $item->id, $item->name . ' [ ' . $field_name . ' - ' . $item->type . ' ]');
}
}
return $options;
}
}
return false;
}
}

124
forms/admin_view.xml Normal file
View File

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- default paths of admin_view form points to componentbuilder -->
<form>
<fields name="params">
<!-- default paths of fieldordering fieldset points to the plugin -->
<fieldset name="fieldordering" label="PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_FIELD_ORDERING"
addrulepath="/plugins/content/componentbuilderfieldorderingtabs/rules"
addfieldpath="/plugins/content/componentbuilderfieldorderingtabs/fields"
>
<fields name="fieldordering">
<!-- Add_admin_ordering Field. Type: Radio. (joomla) -->
<field
type="radio"
name="add_admin_ordering"
label="PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ADD_ADMIN_ORDERING_LABEL"
description="PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ADD_ADMIN_ORDERING_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0">
<!-- Option Set. -->
<option value="1">
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_YES</option>
<option value="0">
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_NO</option>
</field>
<!-- Admin_ordering_fields Field. Type: Subform. (joomla) -->
<field
type="subform"
name="admin_ordering_fields"
label="PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ADMIN_ORDERING_FIELDS_LABEL"
layout="joomla.form.field.subform.repeatable-table"
multiple="true"
buttons="add,remove,move"
icon="list"
max="5"
min="1"
showon="add_admin_ordering:1">
<form hidden="true" name="list_admin_ordering_fields_modal" repeat="true">
<!-- Field Field. Type: Adminlistvieworderfields. (custom) -->
<field
type="adminlistvieworderfields"
name="field"
label="PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_FIELD_LABEL"
class="fieldLarge"
multiple="false"
button="false"
/>
<!-- Direction Field. Type: List. (joomla) -->
<field
type="list"
name="direction"
label="PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_DIRECTION_LABEL"
class="list_class fieldLarge"
multiple="false"
filter="WORD"
default="asc">
<!-- Option Set. -->
<option value="asc">
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ASCENDING</option>
<option value="desc">
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_DESCENDING</option>
<option value="rand">
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_RANDOM</option>
</field>
</form>
</field>
<!-- Add_linked_ordering Field. Type: Radio. (joomla) -->
<field
type="radio"
name="add_linked_ordering"
label="PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ADD_LINKED_ORDERING_LABEL"
description="PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ADD_LINKED_ORDERING_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0">
<!-- Option Set. -->
<option value="1">
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_YES</option>
<option value="0">
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_NO</option>
</field>
<!-- Linked_ordering_fields Field. Type: Subform. (joomla) -->
<field
type="subform"
name="linked_ordering_fields"
label="PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_LINKED_ORDERING_FIELDS_LABEL"
layout="joomla.form.field.subform.repeatable-table"
multiple="true"
buttons="add,remove,move"
icon="list"
max="5"
min="1"
showon="add_linked_ordering:1">
<form hidden="true" name="list_linked_ordering_fields_modal" repeat="true">
<!-- Field Field. Type: Linkedviewsorderfields. (custom) -->
<field
type="linkedviewsorderfields"
name="field"
label="PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_FIELD_LABEL"
class="fieldLarge"
multiple="false"
button="false"
/>
<!-- Direction Field. Type: List. (joomla) -->
<field
type="list"
name="direction"
label="PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_DIRECTION_LABEL"
class="list_class fieldLarge"
multiple="false"
filter="WORD"
default="asc">
<!-- Option Set. -->
<option value="asc">
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ASCENDING</option>
<option value="desc">
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_DESCENDING</option>
<option value="rand">
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_RANDOM</option>
</field>
</form>
</field>
</fields>
</fieldset>
</fields>
</form>

1
forms/index.html Normal file
View File

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

1
index.html Normal file
View File

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

View File

@ -0,0 +1,22 @@
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="<h1>Content - Componentbuilder Field Ordering Tabs (v.1.0.0)</h1> <div style='clear: both;'></div><p>This plugin is used to set custom ordering to fields in the JCB list views.</p><p>Created by <a href='http://www.joomlacomponentbuilder.com' target='_blank'>Llewellyn van der Merwe</a><br /><small>Development started 20th May, 2020</small></p>"
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."
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_YES="Yes"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_NO="No"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ADMIN_ORDERING_FIELDS_LABEL="Admin Ordering Fields"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_FIELD_LABEL="Field"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_SELECT_AN_OPTION="Select an option"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ID="Id"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ORDERING="Ordering"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_STATUS="Status"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_FIELD="Field"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_DIRECTION_LABEL="Direction"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ASCENDING="Ascending"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_DESCENDING="Descending"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_RANDOM="Random"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ADD_LINKED_ORDERING_LABEL="Add Linked List Views Ordering"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ADD_LINKED_ORDERING_DESCRIPTION="Select the ordering behavior, default is by id, and custom lets you select."
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_LINKED_ORDERING_FIELDS_LABEL="Linked Ordering Fields"

View File

@ -0,0 +1,22 @@
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="<h1>Content - Componentbuilder Field Ordering Tabs (v.1.0.0)</h1> <div style='clear: both;'></div><p>This plugin is used to set custom ordering to fields in the JCB list views.</p><p>Created by <a href='http://www.joomlacomponentbuilder.com' target='_blank'>Llewellyn van der Merwe</a><br /><small>Development started 20th May, 2020</small></p>"
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."
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_YES="Yes"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_NO="No"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ADMIN_ORDERING_FIELDS_LABEL="Admin Ordering Fields"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_FIELD_LABEL="Field"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_SELECT_AN_OPTION="Select an option"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ID="Id"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ORDERING="Ordering"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_STATUS="Status"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_FIELD="Field"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_DIRECTION_LABEL="Direction"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ASCENDING="Ascending"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_DESCENDING="Descending"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_RANDOM="Random"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ADD_LINKED_ORDERING_LABEL="Add Linked List Views Ordering"
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_ADD_LINKED_ORDERING_DESCRIPTION="Select the ordering behavior, default is by id, and custom lets you select."
PLG_CONTENT_COMPONENTBUILDERFIELDORDERINGTABS_LINKED_ORDERING_FIELDS_LABEL="Linked Ordering Fields"

View File

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

1
language/index.html Normal file
View File

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

1
rules/index.html Normal file
View File

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

79
script.php Normal file
View File

@ -0,0 +1,79 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com>
* @github Joomla Component Builder <https://github.com/vdm-io/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');
/**
* Content - Componentbuilder Field Ordering Tabs script file.
*
* @package PlgContentComponentbuilderFieldOrderingTabs
*/
class plgContentComponentbuilderFieldOrderingTabsInstallerScript
{
/**
* Called before any type of action
*
* @param string $route Which action is happening (install|uninstall|discover_install|update)
* @param JAdapterInstance $adapter The object responsible for running this script
*
* @return boolean True on success
*/
public function preflight($route, JAdapterInstance $adapter)
{
// get application
$app = JFactory::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)
{
// 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 <a href="https://www.joomlacomponentbuilder.com/ " target="_blank">Joomla Component Builder</a>.', '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.11.1 or higher installed
if (count($jcbVersion) == 3 && $jcbVersion[0] >= 2 && $jcbVersion[1] >= 11 && (($jcbVersion[1] == 11 && $jcbVersion[2] >= 1) || ($jcbVersion[1] > 11)))
{
$blockInstall = false;
}
}
// allow install if all conditions are met
if ($blockInstall)
{
$app->enqueueMessage('Please upgrade to JCB 2.11.1 or higher before installing this plugin.', 'error');
return false;
}
}
return true;
}
}