From 65b1b2df2bc8f91eb2ec2ade2f2acea22746b0f2 Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Tue, 28 Oct 2014 23:23:23 +0000 Subject: [PATCH] #3320 : quand on utilise avec le criter tri un nom de variable qui commence par 'session', les changements de criteres de tri par l'utilisateur sont memorises en session et conserves d'un hit sur l'autre pour toutes les listes qui utilisent le meme nom de variable. Application a la liste des articles dans l'espace prive (a voir si on generalise a tous les objets ou non) --- ecrire/inc_version.php | 8 ++++++++ ecrire/public/balises.php | 1 + ecrire/public/criteres.php | 4 ++-- prive/objets/liste/articles.html | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php index d232f2cab2..535092379c 100644 --- a/ecrire/inc_version.php +++ b/ecrire/inc_version.php @@ -419,6 +419,14 @@ OR _request('action') == 'test_dirs')) { // autrement c'est une install ad hoc (spikini...), on sait pas faire } +// memoriser un tri sessionne eventuel +if (isset($_REQUEST['var_memotri']) + AND $t = $_REQUEST['var_memotri'] + AND (strncmp($t,'trisession',10)==0 OR strncmp($t,'senssession',11)==0)){ + if (!function_exists('session_set')) + include_spip('inc/session'); + session_set($t,_request($t)); +} /** * Header "Composed-By" diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php index 92150d49f0..fbcfae0dba 100644 --- a/ecrire/public/balises.php +++ b/ecrire/public/balises.php @@ -2594,6 +2594,7 @@ function balise_TRI_dist($p, $liste='true') { $_variable = "((\$s=$_issens)?'sens':'tri').".$boucle->modificateur['tri_nom']; $_url = "parametre_url(self(),$_variable,\$s?$_sens:$_champ)"; + $_url = "parametre_url($_url,'var_memotri',strncmp(".$boucle->modificateur['tri_nom'].",'session',7)==0?$_variable:'')"; $_on = "\$s?(".$boucle->modificateur['tri_sens']."==$_sens".'):('.$boucle->modificateur['tri_champ']."==$_champ)"; $p->code = "lien_ou_expose($_url,$_libelle,$_on".($_class?",$_class":"").")"; diff --git a/ecrire/public/criteres.php b/ecrire/public/criteres.php index 5bac3eca15..e88c6bf858 100644 --- a/ecrire/public/criteres.php +++ b/ecrire/public/criteres.php @@ -1287,10 +1287,10 @@ function critere_tri_dist($idb, &$boucles, $crit){ $_variable = !isset($crit->param[2][0]) ? "'$idb'" : calculer_liste(array($crit->param[2][0]), array(), $boucles, $boucle->id_parent); - $_tri = "((\$t=(isset(\$Pile[0]['tri'.$_variable]))?\$Pile[0]['tri'.$_variable]:$_champ_defaut)?tri_protege_champ(\$t):'')"; + $_tri = "((\$t=(isset(\$Pile[0]['tri'.$_variable]))?\$Pile[0]['tri'.$_variable]:((strncmp($_variable,'session',7)==0 AND session_get('tri'.$_variable))?session_get('tri'.$_variable):$_champ_defaut))?tri_protege_champ(\$t):'')"; $_sens_defaut = "(is_array(\$s=$_sens_defaut)?(isset(\$s[\$st=$_tri])?\$s[\$st]:reset(\$s)):\$s)"; - $_sens = "((intval(\$t=(isset(\$Pile[0]['sens'.$_variable]))?\$Pile[0]['sens'.$_variable]:$_sens_defaut)==-1 OR \$t=='inverse')?-1:1)"; + $_sens = "((intval(\$t=(isset(\$Pile[0]['sens'.$_variable]))?\$Pile[0]['sens'.$_variable]:((strncmp($_variable,'session',7)==0 AND session_get('sens'.$_variable))?session_get('sens'.$_variable):$_sens_defaut))==-1 OR \$t=='inverse')?-1:1)"; $boucle->modificateur['tri_champ'] = $_tri; $boucle->modificateur['tri_sens'] = $_sens; diff --git a/prive/objets/liste/articles.html b/prive/objets/liste/articles.html index ade1782a74..458a9d9767 100644 --- a/prive/objets/liste/articles.html +++ b/prive/objets/liste/articles.html @@ -19,7 +19,7 @@ </tr> </thead> <tbody> - <BOUCLE_liste_art(ARTICLES){id_article?}{id_rubrique?}{id_mot?}{id_auteur?}{where?}{statut?}{recherche?}{tri #ENV{par,date},#GET{defaut_tri}}{par titre}{pagination #ENV{nb,10}}{!lang_select}> + <BOUCLE_liste_art(ARTICLES){id_article?}{id_rubrique?}{id_mot?}{id_auteur?}{where?}{statut?}{recherche?}{tri #ENV{par,date},#GET{defaut_tri},session_liste_art}{par titre}{pagination #ENV{nb,10}}{!lang_select}> [(#LANG|changer_typo)] <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]"> <td class='statut'>[(#STATUT|puce_statut{article,#ID_ARTICLE,#ID_RUBRIQUE})]</td> -- GitLab