forked from joomla/Component-Builder
Improved the permissions adding behaviour so that no permissions tab will be added if no permissions are set in a view. gh-629
This commit is contained in:
parent
3bd2158b83
commit
cc201b8ec0
@ -147,7 +147,7 @@ TODO
|
||||
+ *Version*: 2.12.3
|
||||
+ *Copyright*: Copyright (C) 2015 - 2020 Vast Development Method. All rights reserved.
|
||||
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
|
||||
+ *Line count*: **290895**
|
||||
+ *Line count*: **290875**
|
||||
+ *Field count*: **1601**
|
||||
+ *File count*: **1923**
|
||||
+ *Folder count*: **316**
|
||||
|
@ -147,7 +147,7 @@ TODO
|
||||
+ *Version*: 2.12.3
|
||||
+ *Copyright*: Copyright (C) 2015 - 2020 Vast Development Method. All rights reserved.
|
||||
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
|
||||
+ *Line count*: **290895**
|
||||
+ *Line count*: **290875**
|
||||
+ *Field count*: **1601**
|
||||
+ *File count*: **1923**
|
||||
+ *Folder count*: **316**
|
||||
|
@ -46,6 +46,13 @@ class Fields extends Structure
|
||||
*/
|
||||
public $layoutBuilder = array();
|
||||
|
||||
/**
|
||||
* permissions builder
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $hasPermissions = array();
|
||||
|
||||
/**
|
||||
* used to fix the zero order
|
||||
*
|
||||
@ -865,7 +872,8 @@ class Fields extends Structure
|
||||
}
|
||||
// fix the permissions field "title" issue gh-629
|
||||
// check if the the title is not already set
|
||||
if (!isset($this->fieldsNames[$nameSingleCode]['title']))
|
||||
if (!isset($this->fieldsNames[$nameSingleCode]['title'])
|
||||
&& $this->hasPermissionsSet($view, $nameSingleCode))
|
||||
{
|
||||
// set the field/tab name
|
||||
$field_name = "title";
|
||||
@ -1299,7 +1307,8 @@ class Fields extends Structure
|
||||
}
|
||||
// fix the permissions field "title" issue gh-629
|
||||
// check if the the title is not already set
|
||||
if (!isset($this->fieldsNames[$nameSingleCode]['title']))
|
||||
if (!isset($this->fieldsNames[$nameSingleCode]['title'])
|
||||
&& $this->hasPermissionsSet($view, $nameSingleCode))
|
||||
{
|
||||
// set the field/tab name
|
||||
$field_name = "title";
|
||||
@ -1455,6 +1464,81 @@ class Fields extends Structure
|
||||
return $this->xmlPrettyPrint($XML, 'fieldset');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check to see if a view has permissions
|
||||
*
|
||||
* @param array $view View details
|
||||
* @param string $nameSingleCode View Single Code Name
|
||||
*
|
||||
* @return boolean true if it has permisssions
|
||||
*
|
||||
*/
|
||||
protected function hasPermissionsSet(&$view, &$nameSingleCode)
|
||||
{
|
||||
// first check if we have checked this already
|
||||
if (!isset($this->hasPermissions[$nameSingleCode]))
|
||||
{
|
||||
// default is false
|
||||
$this->hasPermissions[$nameSingleCode] = false;
|
||||
// when a view has history, it has permissions
|
||||
// since it tracks the version access
|
||||
if (isset($view['history']) && $view['history'] == 1)
|
||||
{
|
||||
// set the permission for later
|
||||
$this->hasPermissions[$nameSingleCode] = true;
|
||||
// break out here
|
||||
return true;
|
||||
}
|
||||
// check if the view has permissions
|
||||
if (isset($view['settings'])
|
||||
&& ComponentbuilderHelper::checkArray(
|
||||
$view['settings']->permissions
|
||||
))
|
||||
{
|
||||
foreach ($view['settings']->permissions as $per)
|
||||
{
|
||||
// check if the permission targets the view
|
||||
// 1 = view
|
||||
// 3 = both view & component
|
||||
if (isset($per['implementation'])
|
||||
&& (
|
||||
$per['implementation'] == 1
|
||||
|| $per['implementation'] == 3
|
||||
))
|
||||
{
|
||||
// set the permission for later
|
||||
$this->hasPermissions[$nameSingleCode] = true;
|
||||
// break out here
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
// check if the fields has permissions
|
||||
if (isset($view['settings'])
|
||||
&& ComponentbuilderHelper::checkArray(
|
||||
$view['settings']->fields
|
||||
))
|
||||
{
|
||||
foreach ($view['settings']->fields as $field)
|
||||
{
|
||||
// if a field has any permissions
|
||||
// the a view has permissions
|
||||
if (isset($field['permission'])
|
||||
&& ComponentbuilderHelper::checkArray(
|
||||
$field['permission']
|
||||
))
|
||||
{
|
||||
// set the permission for later
|
||||
$this->hasPermissions[$nameSingleCode] = true;
|
||||
// break out here
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $this->hasPermissions[$nameSingleCode];
|
||||
}
|
||||
|
||||
/**
|
||||
* set Field Names
|
||||
*
|
||||
|
@ -13393,7 +13393,9 @@ class Interpretation extends Fields
|
||||
}
|
||||
|
||||
// make sure we dont load it to a view with the name component (as this will cause conflict with Joomla conventions)
|
||||
if ($nameSingleCode != 'component')
|
||||
if ($nameSingleCode != 'component'
|
||||
&& isset($this->hasPermissions[$nameSingleCode])
|
||||
&& $this->hasPermissions[$nameSingleCode])
|
||||
{
|
||||
// set permissions tab lang
|
||||
$tabLangName = $langView . '_PERMISSION';
|
||||
|
@ -5678,7 +5678,6 @@ COM_COMPONENTBUILDER_HELP_DOCUMENT_MODIFIED_DATE_LABEL="Modified Date"
|
||||
COM_COMPONENTBUILDER_HELP_DOCUMENT_NEW="A New Help Document"
|
||||
COM_COMPONENTBUILDER_HELP_DOCUMENT_NOT_REQUIRED="Not Required"
|
||||
COM_COMPONENTBUILDER_HELP_DOCUMENT_ORDERING_LABEL="Ordering"
|
||||
COM_COMPONENTBUILDER_HELP_DOCUMENT_PERMISSION="Permissions"
|
||||
COM_COMPONENTBUILDER_HELP_DOCUMENT_PUBLISHING="Publishing"
|
||||
COM_COMPONENTBUILDER_HELP_DOCUMENT_SAVE_WARNING="Alias already existed so a number was added at the end. You can re-edit the Help Document to customise the alias."
|
||||
COM_COMPONENTBUILDER_HELP_DOCUMENT_SELECT_AN_OPTION="Select an option"
|
||||
|
@ -82,25 +82,6 @@ $componentParams = $this->params; // will be removed just use $this->params inst
|
||||
<?php echo JHtml::_('bootstrap.endTab'); ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($this->canDo->get('core.admin')) : ?>
|
||||
<?php echo JHtml::_('bootstrap.addTab', 'help_documentTab', 'permissions', JText::_('COM_COMPONENTBUILDER_HELP_DOCUMENT_PERMISSION', true)); ?>
|
||||
<div class="row-fluid form-horizontal-desktop">
|
||||
<div class="span12">
|
||||
<fieldset class="adminform">
|
||||
<div class="adminformlist">
|
||||
<?php foreach ($this->form->getFieldset('accesscontrol') as $field): ?>
|
||||
<div>
|
||||
<?php echo $field->label; echo $field->input;?>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<?php echo JHtml::_('bootstrap.endTab'); ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php echo JHtml::_('bootstrap.endTabSet'); ?>
|
||||
|
||||
<div>
|
||||
|
Loading…
Reference in New Issue
Block a user