'predefinedFilters' => array(
'filter1' => 'label filter1',
'filter2' => 'label filter2'
+ ),
+ 'extraDisplayedColumns' => array(
+ 'col1' => array(
+ 'label' => 'label column 1',
+ 'LSformat' => '[LSformat]'
+ ),
+ 'col2' => array(
+ 'label' => 'label column 2',
+ 'LSformat' => '[LSformat]',
+ 'alternativeLSformats' => array (
+ '[LSformat 1]',
+ '[LSformat 2]'
+ )
+ )
)
);]]>
</programlisting>
</listitem>
</varlistentry>
+<varlistentry>
+ <term>extraDisplayedColumns</term>
+ <listitem>
+ <para>Tableau associatif contenant des colonnes supplémentaires à afficher dans les
+ résultats de recherche. Les clés sont les identifiants des colonnes supplémentaires
+ et les valeurs sont leur configuration définie à partir des paramètres suivant :</para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>label</term>
+ <listitem>
+ <simpara>Le label de la colonne.</simpara>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>LSformat</term>
+ <listitem>
+ <simpara>Le &LSformat; d'affichage de la colonne. Ce format est composé à partir
+ des attributs des objets LDAP dans leur format brut.</simpara>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>alternativeLSformats</term>
+ <listitem>
+ <simpara>Tableau des &LSformats; alternatifs à utiliser si le résultat du format
+ principal est vide. Les formats définis dans cette liste sont essayés les uns
+ après les autres et le premier &LSformat; retournant une valeur non-vide est
+ utilisé.</simpara>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </listitem>
+</varlistentry>
+
</variablelist>
</para>
'predefinedFilters' => array (
'(jpegPhoto=*)' => 'With photo',
'(!(jpegPhoto=*))' => 'Without photo'
+ ),
+ 'extraDisplayedColumns' => array (
+ 'mail' => array (
+ 'label' => 'Mail',
+ 'LSformat' => '%{mail}'
+ ),
)
),
'nbObjectsByPage' => NB_LSOBJECT_LIST,
'nbPageLinkByPage' => 10,
'customInfos' => array(),
- 'withoutCache' => false
+ 'withoutCache' => false,
+ 'extraDisplayedColumns' => false,
);
// The cache of search parameters
// Sort By
if (isset($params['sortBy']) && is_string($params['sortBy'])) {
- if (in_array($params['sortBy'],array('displayName','subDn'))) {
+ if (in_array($params['sortBy'],array('displayName','subDn')) || ($this ->extraDisplayedColumns && isset($this ->extraDisplayedColumns[$params['sortBy']]))) {
if ($this -> params['sortBy'] == $params['sortBy']) {
$this -> toggleSortDirection();
}
}
}
+ // Extra Columns
+ if (isset($params['extraDisplayedColumns'])) {
+ $this -> params['extraDisplayedColumns']=(bool)$params['extraDisplayedColumns'];
+ }
+
// predefinedFilter
if (isset($params['predefinedFilter'])) {
if (is_string($params['predefinedFilter'])) {
else {
$retval['attributes']=$attrs;
}
+
+ // Extra Columns
+ if ($this -> params['extraDisplayedColumns'] && is_array($this -> config['extraDisplayedColumns'])) {
+ foreach ($this -> config['extraDisplayedColumns'] as $id => $conf) {
+ $attrs=getFieldInFormat($conf['LSformat']);
+ if(is_array($conf['alternativeLSformats'])) {
+ foreach ($conf['alternativeLSformats'] as $format) {
+ $attrs=array_merge($attrs,getFieldInFormat($format));
+ }
+ }
+ else {
+ $attrs=array_merge($attrs,getFieldInFormat($conf['alternativeLSformats']));
+ }
+ if(is_array($retval['attributes'])) {
+ $retval['attributes']=array_merge($attrs,$retval['attributes']);
+ }
+ else {
+ $retval['attributes']=$attrs;
+ }
+ }
+ }
+
+ if (is_array($retval['attributes'])) {
+ $retval['attributes']=array_unique($retval['attributes']);
+ }
$this -> _searchParams = $retval;
}
}
return $retval;
}
+ elseif ($key=='extraDisplayedColumns') {
+ if ($this->params['extraDisplayedColumns'] && is_array($this -> config['extraDisplayedColumns'])) {
+ return $this -> config['extraDisplayedColumns'];
+ }
+ else {
+ return False;
+ }
+ }
else {
throw new Exception('Incorrect property !');
}
}
return;
}
+ elseif (is_array($this->LSsearch->extraDisplayedColumns) && array_key_exists($key,$this->LSsearch->extraDisplayedColumns)) {
+ if(isset($this -> cache[$key])) {
+ return $this -> cache[$key];
+ }
+ $ret=$this -> getFData($this->LSsearch->extraDisplayedColumns[$key]['LSformat']);
+ if (empty($ret) && is_array($this->LSsearch->extraDisplayedColumns[$key]['alternativeLSformats'])) {
+ foreach($this->LSsearch->extraDisplayedColumns[$key]['alternativeLSformats'] as $format) {
+ $ret=$this -> getFData($format);
+ if (!empty($ret)) break;
+ }
+ }
+ $this -> cache[$key] = $ret;
+ return $ret;
+ }
elseif (in_array($key,array_keys($this -> attrs))) {
return $this -> attrs[$key];
}
add($lay);
}
}
+ if (is_array($conf['LSsearch']['extraDisplayedColumns'])) {
+ foreach($conf['LSsearch']['extraDisplayedColumns'] as $cid => $cconf) {
+ add($cconf['label']);
+ }
+ }
if(is_array($conf['attrs'])) {
{/if}
</th>
{/if}
+ {if $LSsearch->extraDisplayedColumns}
+ {foreach from=$LSsearch->extraDisplayedColumns item=conf key=cid}
+ <th class='LSobject-list'>
+ {if $LSsearch->sort}
+ <a href='view.php?LSobject={$LSsearch->LSobject}&sortBy={$cid}&nocache={$smarty.now}'>
+ {if $LSsearch->sortBy == $cid}
+ <strong>{tr msg=$conf.label}</strong>
+ <img src='{img name=$LSsearch->sortDirection}' class='LSobject-list-ordersense' alt='{$LSsearch->sortDirection}'/>
+ {else}
+ {tr msg=$conf.label}
+ {/if}
+ </a>
+ {else}
+ {tr msg=$conf.label}
+ {/if}
+ </th>
+ {/foreach}
+ {/if}
<th class='LSobject-list'>{$LSsearch->label_actions}</th>
</tr>
{foreach from=$page.list item=object}
<tr class='{cycle values="LSobject-list,LSobject-list LSobject-list-bis"}'>
<td class='LSobject-list LSobject-list-names'><a href='view.php?LSobject={$LSsearch->LSobject}&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}
+ <td class='LSobject-list'>{$object->$cid}</th>
+ {/foreach}
+ {/if}
<td class='LSobject-list LSobject-list-actions'>
{foreach from=$object->actions item=item}
<a href='{$item.url}' class='LSobject-list-actions'><img src='{img name=$item.action}' alt='{$item.label}' title='{$item.label}'/></a>
LStemplate :: assign('pagetitle',$object -> getLabel());
$LSsearch = new LSsearch($LSobject,'LSview');
+ $LSsearch -> setParam('extraDisplayedColumns',True);
$LSsearch -> setParamsFormPostData();
$searchForm = array (