[spip-dev] [proposition] filtre "inserer_parametre"

Salut,

Si la balise #SELF renvoie une chaîne un peu longue, comme ceci :
page.php3?tri=date&ordre=inverse&debut_page=100&mode=large&lang=fr

il est pour le moins assez complexe de reprendre cette url pour
l'utiliser dans la page en modifiant un paramètre ou deux. Je crois qu'à
moins d'écrire un filtre spécifique, il faut recomposer entièrement
l'url en testant la présence de chaque paramètre, avec un truc du genre:

[(page.php?[lang=(#LANG)][&id_document=(#ENV{id_document})]

(en tout cas, j'ai rien trouvé d'autre).

Ne serait-il pas pertinent dès lors d'introduire un filtre qu'on
pourrait appeler "inserer_parametre" et qui s'utiliserait comme suit :

[(#SELF|inserer_parametre{'var1','valeur'}|inserer_parametre{'var2','valeur'})]

Son action consisterait à remplacer un paramètre dans la chaîne et à
l'ajouter si ce paramètre n'est pas présent. Une sorte d'équivalent à
"inserer_attribut".

J'ai l'impression que c'est l'élément manquant pour que #SELF révèle
tout son potentiel (enfin, à moins qu'il existe un autre moyen de faire
qui m'aurait échappé, bien sûr).

Ca serait quelque chose du genre:

// modifier (ou inserer) un parametre dans une url
function inserer_parametre($url, $param, $valeur) {
    if (preg_match($param, $url))
        $url = preg_replace($param.'\='.$valeur,
                      $attribut\=[(a-zA-Z0-9)+], $url);
    else
        $url .= strpos($url,'?')?'&':'?'.$param.'='.$valeur;
    return $url;
}

Je n'en touche pas une en ce qui concerne les expressions régulières,
donc le code ci-dessus ne marche pas, mais si l'idée est acceptée, il
devrait bien se trouver quelqu'un qui les connaît pour faire tourner ça.

François

Selon François Schreuer <francois@schreuer.org>:

Salut,

Si la balise #SELF renvoie une chaîne un peu longue, comme ceci :
page.php3?tri=date&ordre=inverse&debut_page=100&mode=large&lang=fr

Dans sedna, sur la zone, la fonction parametre_url dans le fichier sedna.php,
gère ça très bien.

Spip-Contrib ? :wink:

Hello,

klike@free.fr wrote:

Dans sedna, sur la zone, la fonction parametre_url dans le fichier sedna.php,
gère ça très bien.

Connexion · GitLab

Génial ! Il m'avait échappé celui-là :slight_smile:

Spip-Contrib ? :wink:

Pourquoi pas. Mais, vu l'utilité du machin, est-ce qu'il ne serait pas
pertinent d'intégrer ça directement à SPIP ? Ca complète vraiment très
utilement #SELF. J'ai d'ailleurs vu le problème se poser plusieurs fois
ces derniers-temps, notamment sur la liste des utilisateurs.

François

Selon François Schreuer <francois@schreuer.org>:

Hello,

> Dans sedna, sur la zone, la fonction parametre_url dans le fichier
sedna.php,
> gère ça très bien.
>
> Connexion · GitLab

Génial ! Il m'avait échappé celui-là :slight_smile:

> Spip-Contrib ? :wink:

Pourquoi pas. Mais, vu l'utilité du machin, est-ce qu'il ne serait pas
pertinent d'intégrer ça directement à SPIP ? Ca complète vraiment très
utilement #SELF. J'ai d'ailleurs vu le problème se poser plusieurs fois
ces derniers-temps, notamment sur la liste des utilisateurs.

Il s'en est fallu d'un cheveux que ça intègre la 1.8.2 :)... en attendant, si tu
me files un coup de main sur l'aspect rédactionnel du machin, on peut publier ça
sans trainer (ça sert sur sedna, spip.blog et ça va pas tarder à entrer dans le
squelette de spip-contrib aussi)

klike@free.fr wrote:

Il s'en est fallu d'un cheveux que ça intègre la 1.8.2 :)... en attendant, si tu
me files un coup de main sur l'aspect rédactionnel du machin, on peut publier ça
sans trainer (ça sert sur sedna, spip.blog et ça va pas tarder à entrer dans le
squelette de spip-contrib aussi)

ok, on y va

François

Le machin est ici pour ceux que ça intéresse :
http://www.spip-contrib.net/Le-filtre-parametre-url

François

Oui et c'est dommage parce c'est exactement ce qu'il me fallait pour nettoyer la nouvelle version agenda_jour qui accumule le parametre "theme". Mais ton filtre est déjà dans la nouvelle version svn,
et utilisé dans agenda_jour. Merci James.

Déesse A.