LSsearch : Add nbObjectsByPageChoices parameter

This commit is contained in:
Benjamin Renard 2019-09-04 11:26:09 +02:00
parent 1a2d881322
commit 2708dd01ee
5 changed files with 69 additions and 8 deletions

View file

@ -34,6 +34,7 @@ configuration des &LSobjects;, dans la variable <varname>LSsearch</varname>
// Paramètre d'affichage // Paramètre d'affichage
'displayFormat' => [LSformat], 'displayFormat' => [LSformat],
'nbObjectsByPage' => [integer], 'nbObjectsByPage' => [integer],
'nbObjectsByPageChoices' => array([integer], [integer], ...),
'nbPageLinkByPage' => [integer], 'nbPageLinkByPage' => [integer],
'validPatternRegex' => '[regex]' 'validPatternRegex' => '[regex]'
), ),
@ -234,6 +235,14 @@ contexte dans lequel cette recherche est effectuée.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term>nbObjectsByPageChoices</term>
<listitem>
<simpara>Tableau des choix proposés à l'utilisateur pour le nombre d'objets maximum affichés dans une page
de résultat de la recherche.</simpara>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term>nbPageLinkByPage</term> <term>nbPageLinkByPage</term>
<listitem> <listitem>

View file

@ -181,6 +181,8 @@ $GLOBALS['LSobjects']['LSpeople'] = array (
), ),
'params' => array ( 'params' => array (
'recursive' => true, 'recursive' => true,
'nbObjectsByPage' => 5,
'nbObjectsByPageChoices' => array(5, 10, 15),
), ),
'predefinedFilters' => array ( 'predefinedFilters' => array (
'(jpegPhoto=*)' => 'With photo', '(jpegPhoto=*)' => 'With photo',

View file

@ -236,27 +236,34 @@ td.LSobject-list-names {
*/ */
p.LSobject-list-page { p.LSobject-list-page {
text-align: center; text-align: center;
margin: 0.5em; margin: auto;
margin-top: 0.5em;
max-width: 20em;
} }
a.LSobject-list-page { a.LSobject-list-page, a.LSobject-list-nb-by-page {
color: #0072b8; color: #0072b8;
text-decoration: none; text-decoration: none;
} }
a.LSobject-list-page:hover { a.LSobject-list-page:hover, a.LSobject-list-nb-by-page:hover {
color: #0072b8; color: #0072b8;
} }
strong.LSobject-list-page { strong.LSobject-list-page, strong.LSobject-list-nb-by-page {
color: #0072b8; color: #0072b8;
} }
#LSobject_list_nbresult, p.LSobject-list-nb-by-page {
float: right;
clear: both;
color: #333;
font-style: italic;
margin: 0;
margin-right: 20px;
}
#LSobject_list_nbresult { #LSobject_list_nbresult {
float: right;
color: #333;
font-style: italic;
margin-right: 20px;
text-transform: lowercase; text-transform: lowercase;
} }

View file

@ -58,6 +58,7 @@ class LSsearch {
'displaySubDn' => NULL, 'displaySubDn' => NULL,
'displayFormat' => NULL, 'displayFormat' => NULL,
'nbObjectsByPage' => NB_LSOBJECT_LIST, 'nbObjectsByPage' => NB_LSOBJECT_LIST,
'nbObjectsByPageChoices' => array(25, 50, 75, 100),
'nbPageLinkByPage' => 10, 'nbPageLinkByPage' => 10,
'customInfos' => array(), 'customInfos' => array(),
'withoutCache' => false, 'withoutCache' => false,
@ -333,6 +334,34 @@ class LSsearch {
$OK=false; $OK=false;
} }
} }
// nbObjectsByPageChoices
if (isset($params['nbObjectsByPageChoices'])) {
if (is_array($params['nbObjectsByPageChoices'])) {
$choices = array();
$choiceError = false;
foreach($params['nbObjectsByPageChoices'] as $choice) {
if (is_int($choice) && !in_array($choice, $choices)) {
$choices[] = $choice;
}
else {
$choiceError = true;
break;
}
}
if (!empty($choices) && !$choiceError) {
$this -> params['nbObjectsByPageChoices'] = $choices;
}
else {
LSerror :: addErrorCode('LSsearch_03','nbObjectsByPageChoices');
$OK = false;
}
}
else {
LSerror :: addErrorCode('LSsearch_03','nbObjectsByPageChoices');
$OK = false;
}
}
// Sort Limit // Sort Limit
if (isset($params['sortlimit'])) { if (isset($params['sortlimit'])) {

View file

@ -113,7 +113,21 @@
</tr> </tr>
{/foreach} {/foreach}
</table> </table>
<span id='LSobject_list_nbresult'>{$LSsearch->label_total|escape:"htmlall"}</span> <span id='LSobject_list_nbresult'>{$LSsearch->label_total|escape:"htmlall"}</span>
{if !empty($page.list)}
<p class='LSobject-list-nb-by-page'>
{tr msg='Nb / page :'}
{foreach from=$LSsearch->getParam('nbObjectsByPageChoices') item=choice}
{if $LSsearch->getParam('nbObjectsByPage') == $choice}
<strong><a href='view.php?LSobject={$LSsearch->LSobject|escape:"url"}&amp;nbObjectsByPage={$choice}' class='LSobject-list-nb-by-page'>{$choice}</a></strong>
{else}
<a href='view.php?LSobject={$LSsearch->LSobject|escape:"url"}&amp;nbObjectsByPage={$choice}' class='LSobject-list-nb-by-page'>{$choice}</a>
{/if}
{/foreach}
</p>
{/if}
{if $page.nbPages > 1} {if $page.nbPages > 1}
<p class='LSobject-list-page'> <p class='LSobject-list-page'>