[spip-dev] ! generer_url_ecrire_objet

generer_url_ecrire_objet
évite l'écriture systématique d'une fonction generer_url_ecrire_xxx pour chaque objet.
L'écriture d'une telle fonction reste possible pour traiter des cas particuliers (exemple des forums)

Hello,

Dans quel cas veut t'on "indiquer [qu'] on veut une url publique"
quand on appelle generer_url_ecrire_xxx ??

Je me demande si ca s'applique au cas qui m'a fait galéré récemment, à
savoir afficher des #URL_ARTICLE public même si on est dans un
squelette prive/exec.

Est-ce que l'idée est de faire un truc du genre
#VAL{article}|generer_url_ecrire_objet{#ID_ARTICLE,'','',public} ??

Je me demande si un #URL_ARTICLE{public} ne serait pas plus clean,
mais alors cela ne serait pas forcement dans generer_url_ecrire_xxx
qu'il faut prévoir le débrayage.

Enfin je ne sais pas si je suis clair ni si j'ai bien compris le but
de la nouvelle option.

BoOz

Hello,

ce n'est pas une option nouvelle, cela correspondait deja au fonctionnement actuel.

#URL_ARTICLE est *toujours* l'url publique de l'article, à partir de l'endroit ou on est (c'est donc un lien clicable)
Depus ecrire, il genere donc un ../ en prefixe. Pour avoir une url invariante il suffit d'écrire
[(#URL_ARTICLE|url_absolue)]
qui sera alors toujours l'url absolue vers la page publique de l'article.

Pour avoir un lien vers l'article qui soit
- un lien vers la page publique quand le squelette est calculé dans le site public
- un lien vers la page exec=article quand le squelette est calculé dans le privé
il faut écrire :
[(#ID_ARTICLE|generer_url_entite{article})]

Enfin, tu peux forcer une url qui soit toujours vers la page exec de l'espace privé, en passant une valeur fausse en 4ème argument du filtre :
[(#ID_ARTICLE|generer_url_entite{article,'','',''})]

Donc tout est possible, il me semble, non ?

Cédric

Ah oui pardon j'ai mélangé ton commit et un cas qui n'a rien à voir, ou pas direcetement lié du moins ^^, au temps pour moi.

En fait le cas pénible que j'ai eu c'est quand tu as un raccourcis typo [->art12] dans un #TEXTE affiché dans un squelette prive/exec et que tu veux des urls publiques.

Par défaut dans un prive/exec spip va te faire une page ecrire/?exec=articles?id_article=12

Et je n'ai pas trouvé comment lui faire afficher l'url publique.

BoOz

2011/3/14 cedric.morin@yterium.com <cedric.morin@yterium.com>

generer_url_ecrire_objet
évite l’écriture systématique d’une fonction generer_url_ecrire_xxx pour chaque objet.
L’écriture d’une telle fonction reste possible pour traiter des cas particuliers (exemple des forums)

Author: cedric@yterium.com
Date: 2011-03-14 14:14:47 +0100 (lun, 14 mar 2011)
New Revision: 17398

Log:
puisqu’on a une fonction generique pour determiner si un objet est publie est une api declarative pour connaitre le nom de l’exec correspondant a la page de visualisation d’un objet, on peut ecrire et utiliser une fonction generique generer_url_ecrire_objet qui remplace les diverses generer_url_ecrire_xxx.
La signature est quasi identique, l’argument ‹ statut › (incomplet) etant remplacé par l’argument explicite ‹ public › pour indiquer si on veut une url publique ou privee.
Au passage, on corrige donc le bug de ces fonctions qui generaient des urls publiques en 404 sur les objets publies post-dates…

Modified:
spip/ecrire/inc/urls.php
spip/ecrire/inc/utils.php

Details: http://core.spip.org/projects/spip/repository/revisions/17398


Ca ne permettrait pas de simplifier le squelette du formulaire admin avec un lien générique plutôt qu’un par objet, pour tous les objets de l’univers connu et inconnu ?