Ticket #2051 (closed enhancement: wontfix)
cut_string / remove_html
Reported by: | franck | Owned by: | team |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | module:core | Version: | 2.7.3 |
Severity: | normal | Keywords: | |
Cc: |
Description
L'attribut cut_string souvent utilisé en combinaison avec remove_html a fréquemment pour usage de fournir un début textuel d'un contenu plus long.
C'est très basique — le html reste en clair (mais non interprété) — alors qu'on pourrait tout à fait faire quelque chose de plus "intelligent"
Entre autre, utiliser les attributs alt des images, …
Change History
comment:2 Changed 9 years ago by Jean-Christian Denis
(In [3dde74bd36ee]) Open template tags to third party filters, addresses #2051
comment:3 Changed 9 years ago by JcDenis
J'ai ouvert les filtres des tags des templates (avec le commit ci dessus) pour pouvoir ajouter facilement de nouveaux filtres mais il faudrait que des fous de templates (que je ne suis pas) test un peu cette solution...
comment:4 Changed 9 years ago by franck
Vais tester ça dès que j'aurais un peu de temps (j'ai une fonction de découpe semi-intelligente à essayer à la place du cut_string de base) ;-)
Sinon, pour la deprecated, j'aurais plutôt mis ça comme code :
return self::global_filters( $str, array(0 => null, 'encode_xml' => $encode_xml, 'remove_html' => $remove_html, 'cut_string' => $cut_string, 'lower_case' => $lower_case, 'upper_case' => ($upper_case == 1 ? 1 : 0), 'capitalize' => ($upper_case == 2 ? 1 : 0), 'encode_url' => $encode_url), $tag);
à la place du simple :
return $str;
T'en penses ?
comment:5 Changed 9 years ago by franck
Je viens de faire quelques tests avec mon plugin gracefulCut (censé prendre la main à la place de cut_string de façon transparente).
On ne peut, dans les fonctions behaviors appelées, modifier ou ajouter le tableau $args (sauf bien sûr la chaîne finale), et j'ai pas trouvé comment faire (un $args = new ArrayObject?($args); au début de la fonction global_filters() ne fonctionne pas.
C'est dommage parce que j'aurais besoin, sur le behaviour publicBeforeContentFilter, de positionner un flag particulier dans le tableau $args pour pouvoir ensuite le gérer sur le behaviour publicAfterContentFilter.
comment:6 follow-up: ↓ 7 Changed 9 years ago by JcDenis
Ra zut, c'était un peu le but de pouvoir modifier ça, mais effectivement $args n'est pas passer par référence... Et la seule solution est d'utiliser array(&$args) dans l'appelle du behavior, ce qui est moche, qui ajoute un niveau, qui le rend incompatible avec les versions antérieurs...
comment:7 in reply to: ↑ 6 Changed 9 years ago by franck
Replying to JcDenis:
Ra zut, c'était un peu le but de pouvoir modifier ça, mais effectivement $args n'est pas passer par référence... Et la seule solution est d'utiliser array($args) dans l'appelle du behavior, ce qui est moche, qui ajoute un niveau, qui le rend incompatible avec les versions antérieurs...
Ce qui est bizarre c'est que j'ai déjà, et avec succès, utilisé un new ArrayObject? pour pouvoir modifier un tableau via un behaviour. J'avoue ne pas comprendre pourquoi ça coince ici !
Mais sinon, c'est pas très grave, on peut aussi faire avec. La limitation sera qu'on ne pourra que jouer avec de nouveaux filtres (aka nouveaux attributs dans les balises).
comment:8 Changed 9 years ago by franck
- Milestone changed from A definir to 2.12
Bon, les filtres peuvent être étendus ou modifiés, un plugin sortira avec cette feature pour la 2.11 et si pas trop de bug on intégrera ce nouveau filtre ("graceful_cut") à la 2.12
Je renvois ce ticket à la 2.12 comme reminder…
comment:10 Changed 8 years ago by franck
- Milestone changed from 2.13 to A definir
Aucun retour sur le plugin en question ( http://plugins.dotaddict.org/dc2/details/gracefulCut) on va dire que ça n'intéresse personne ;-)
comment:11 Changed 8 years ago by franck
- Status changed from new to closed
- Resolution set to wontfix
- Milestone A definir deleted
Au passage il est difficile d'intégrer des filtres complémentaires à global_filter, il serait peut-être pas mal de prévoir la possibilité d'étendre plus facilement qu'aujourd'hui la liste des filtres disponibles.