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]', 'formaterLSformat' => '[LSformat]',
'formaterFunction' => '[fonction de formatage]', 'formaterFunction' => '[fonction de formatage]',
'cssStyle' => '[CSS style]', 'cssStyle' => '[CSS style]',
'visibleTo' => array (
'[LSprofile 1]',
'[LSprofile 2]'
)
) )
), ),
'customActions' => array ( 'customActions' => array (
@ -304,6 +308,14 @@ contexte dans lequel cette recherche est effectuée.</para>
</listitem> </listitem>
</varlistentry> </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> </variablelist>
</listitem> </listitem>
</varlistentry> </varlistentry>

View file

@ -1088,6 +1088,18 @@ class LSsearch {
return False; 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 { else {
throw new Exception('Incorrect property !'); 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é * 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 $dn DN de l'objet
* * @param[in] string $profile Profil
*
* @retval boolean True si l'utilisateur est du profil sur l'objet, false sinon. * @retval boolean True si l'utilisateur est du profil sur l'objet, false sinon.
*/ */
public static function isLSprofile($dn,$profile) { public static function isLSprofile($dn,$profile) {
@ -1814,6 +1814,22 @@ class LSsession {
} }
return; 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 * Retourne qui est l'utilisateur par rapport à l'object

View file

@ -71,7 +71,7 @@
</th> </th>
{/if} {/if}
{if $LSsearch->extraDisplayedColumns} {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}> <th class='LSobject-list'{if $conf.cssStyle} style="{$conf.cssStyle}"{/if}>
{if $LSsearch->sort} {if $LSsearch->sort}
<a href='view.php?LSobject={$LSsearch->LSobject}&amp;sortBy={$cid}&amp;nocache={$smarty.now}'> <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> <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->displaySubDn}<td class='LSobject-list'>{$object->subDn}</td>{/if}
{if $LSsearch->extraDisplayedColumns} {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> <td class='LSobject-list'{if $conf.cssStyle} style="{$conf.cssStyle}"{/if}>{$object->$cid}</td>
{/foreach} {/foreach}
{/if} {/if}
@ -107,7 +107,7 @@
</tr> </tr>
{foreachelse} {foreachelse}
<tr class='LSobject-list'> <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} {$LSsearch->label_no_result}
</td> </td>
</tr> </tr>