Add visibleTo parameter to extra displayed columns

This commit is contained in:
Benjamin Renard 2017-01-25 15:39:06 +01:00
parent e5406e924f
commit caa45fcc12
4 changed files with 45 additions and 5 deletions

View file

@ -54,6 +54,10 @@ configuration des &LSobjects;, dans la variable <varname>LSsearch</varname>
'formaterLSformat' => '[LSformat]',
'formaterFunction' => '[fonction de formatage]',
'cssStyle' => '[CSS style]',
'visibleTo' => array (
'[LSprofile 1]',
'[LSprofile 2]'
)
)
),
'customActions' => array (
@ -304,6 +308,14 @@ contexte dans lequel cette recherche est effectuée.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>visibleTo</term>
<listitem>
<simpara>Ce paramètre permet de restreindre la visibilité de cette colonne aux seuls
&LSprofiles; spécifiés. S'il est omis, la colonne sera visible pour tous.</simpara>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>

View file

@ -1088,6 +1088,18 @@ class LSsearch {
return False;
}
}
elseif ($key=='visibleExtraDisplayedColumns') {
if ($this->params['extraDisplayedColumns'] && is_array($this -> config['extraDisplayedColumns'])) {
$ret=array();
foreach($this->config['extraDisplayedColumns'] as $col => $conf) {
if (isset($conf['visibleTo']) && !LSsession :: isLSprofiles($this -> basedn, $conf['visibleTo'])) {
continue;
}
$ret[$col]=$conf;
}
return $ret;
}
}
else {
throw new Exception('Incorrect property !');
}

View file

@ -1796,9 +1796,9 @@ class LSsession {
/**
* Dit si l'utilisateur est du profil pour le DN spécifié
*
* @param[in] string $profile de l'objet
* @param[in] string $dn DN de l'objet
*
* @param[in] string $profile Profil
*
* @retval boolean True si l'utilisateur est du profil sur l'objet, false sinon.
*/
public static function isLSprofile($dn,$profile) {
@ -1814,6 +1814,22 @@ class LSsession {
}
return;
}
/**
* Dit si l'utilisateur est d'au moins un des profils pour le DN spécifié
*
* @param[in] string $dn DN de l'objet
* @param[in] string $profiles Profils
*
* @retval boolean True si l'utilisateur est d'au moins un profil sur l'objet, false sinon.
*/
public static function isLSprofiles($dn,$profiles) {
foreach ($profiles as $profile) {
if (self :: isLSprofile($dn,$profile))
return true;
}
return false;
}
/**
* Retourne qui est l'utilisateur par rapport à l'object

View file

@ -71,7 +71,7 @@
</th>
{/if}
{if $LSsearch->extraDisplayedColumns}
{foreach from=$LSsearch->extraDisplayedColumns item=conf key=cid}
{foreach from=$LSsearch->visibleExtraDisplayedColumns item=conf key=cid}
<th class='LSobject-list'{if $conf.cssStyle} style="{$conf.cssStyle}"{/if}>
{if $LSsearch->sort}
<a href='view.php?LSobject={$LSsearch->LSobject}&amp;sortBy={$cid}&amp;nocache={$smarty.now}'>
@ -95,7 +95,7 @@
<td class='LSobject-list LSobject-list-names'><a href='view.php?LSobject={$LSsearch->LSobject}&amp;dn={$object->dn|escape:'url'}' class='LSobject-list'>{$object->displayName}</a> </td>
{if $LSsearch->displaySubDn}<td class='LSobject-list'>{$object->subDn}</td>{/if}
{if $LSsearch->extraDisplayedColumns}
{foreach from=$LSsearch->extraDisplayedColumns item=conf key=cid}
{foreach from=$LSsearch->visibleExtraDisplayedColumns item=conf key=cid}
<td class='LSobject-list'{if $conf.cssStyle} style="{$conf.cssStyle}"{/if}>{$object->$cid}</td>
{/foreach}
{/if}
@ -107,7 +107,7 @@
</tr>
{foreachelse}
<tr class='LSobject-list'>
<td colspan='{if $LSsearch->extraDisplayedColumns}{count($LSsearch->extraDisplayedColumns)+3}{else}3{/if}' class='LSobject-list-without-result'>
<td colspan='{if $LSsearch->extraDisplayedColumns}{count($LSsearch->visibleExtraDisplayedColumns)+3}{else}3{/if}' class='LSobject-list-without-result'>
{$LSsearch->label_no_result}
</td>
</tr>