Méthode liée au taglib

Thomas LEGAT · le 13/09/12 à 16:58

Bonjour,

Actuellement dans JCMS, il existe des méthodes Java permettant d'effectuer le traitement que font les taglibs JCMS. En voulant utiliser la méthode permettant de créer des thumbnails, nous nous sommes aperçus que nous ne pouvons agir sur tous les attributs de ce taglib. Est il envisageable à l'avenir d'avoir la possibilité d'agir sur les ensemble des attributs des taglibs à partir des objets Java liés à ces taglibs? Dans le cas contraire, existe il des hooks permettant de faire cela?

Cordialement

9 pts
Olivier Jaquemet · le 13/09/12 à 18:17

Bonjour,

Pourriez-vous donner un exemple concret ?

Nous sommes toujours prêt à améliorer l'API dans la mesure où cette évolution peut correspondre à un besoin suffisamment générique pour être introduit dans le produit.

0 pt
Thomas LEGAT · le 14/09/12 à 10:07

Bonjour,

Tout d'abord merci pour votre réponse rapide. Nous aurions aimé effectuer des traitements sur des images. Nous aimerions bien pouvoir rogner une image en développement spécifique dans une classe Java. Nous avions donc eu l'idée d'utiliser l'attribut "css" disponible dans la taglib pour lui spécifier comment rogner. (Par exemple: top-left, top-right). Mais dans le constructeur de la classe BasicThumbnailPolicyFilter, nous ne pouvons accéder à cet attribut. Cet exemple ne peut donc pas être effectué actuellement,

Cordialement,

1 pt
Olivier Jaquemet · le 17/09/12 à 14:49

L'attribut css ne définit pas le comportement de redimensionnement, il permet simplement de préciser une ou plusieurs classes CSS dans le tag img dans la sortie HTML.
Ce n'est donc pas une option du traitement d'image mais bien une option du rendu HTML (d'ou sa présence dans le tag et pas dans l'API).

Mais je comprends votre besoin : accéder à des informations contextuels à l'invocation du tag thumbnail depuis une implémentation du ThumbnailPolicyFilter.

Cependant le ThumbnailPolicyFilter peuvent être invoqué dans d'autre circonstances que depuis un tag et cet attribut css n'aurait pas forcément de sens pour un simple traitement d'image (par opposition à un rendu en HTML).
Donc pour contourner cette limite 2 pistes :

  • Positionner un attribut de requete avant l'invocation du tag et le supprimer après, et le récupérer via channel.getCurrentServletRequest() dans votre implémentation du ThumbnailPolicyFilter.
  • Utiliser l'attribut background qui lui semble être lu depuis le tag et communiqué au policyfilter
0 pt
Vincent Wozniak · le 17/09/12 à 15:38

Bonjour,

Effectivement il serait utile de pouvoir utiliser des informations contextuelles au tag dans les traitements effectués dans les policyFilter.

De façon générale, le fait de pouvoir passer une map avec des données et de la récupérer dans le policyFilter est pratique. Est-ce justement le role de "attributeMap" pour le tag WIKI ?

Ici, pour le thumbnailPolicyFiler, l'idée était de transmettre un paramétrage permettant de rogner l'image et d'obtenir des vignettes respectant les tailles exactes transmises au tag (hauteur ET largeur).

Si l'image n'a pas le ratio attendu, un rognage sélectif s’opère en fonction d'un attribut tel que monAttribut="[top|center|bottom]-[left|center|right]" permettant de choisir comment rogner.

Une image de 100px de haut, par 200px de large dont on souhaite une miniature "90x90" avec l'attribut "top-left" aurait conservé la partie la plus à gauche de l'image d'origine.

Image d'origine => 200x100 Image intermédiaire => 180x90 Image finale => partie gauche de l'image intermédiaire de sorte à avoir une largeur de 90px.

Si ce principe d'attributeMap pouvait être étandu à tous les TAGs Jalios surchargeables par policyFilter, cela serait pratique ;)

-1 pt
Olivier Jaquemet · le 17/09/12 à 15:50

J'ai bien compris le besoin et il est légitime.

Le tag wiki propose en effet une solution générique à ce besoin et cela pourrait être généralisé.
Cependant il est pas anodin du tout de faire évoluer les signatures de policy filter... J'ai malgré tout saisi une demande pour ce cas particulier du ThumbnailPolicyFilter :
http://issues.jalios.com/browse/JCMS-3196

Et je note en interne le fait de généraliser le plus possible ce mode de fonctionnement par attribut de contexte pour vous permettre des développements avancés.

Cependant, notez bien que ma réponse ...

  • vous précise que l'attribut css ne sert pas à ça
  • vous propose une solution de contournement tout à fait valable
0 pt