Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] [résolu]plugins de template - modificateur 'date_format'

Posted by gdugas on 10/12/2011 20:01

Bonjour a tous,
J'ai un petit soucis avec le modificateur date_format dans mes templates. Voici mon code dans le template:

Créé par <span class="author">{$author->login}</span> le <span class="creationdate">{$page->first_date|date_format:'%A %d %b %g à %H:%M'}</span>
{if $page->last_date != $page->first_date} - Dernière édition le <span class="lasteditdate">{$page->last_date}</span>{/if}

et voici ma sortie:

Créé par admin le Thursday 01 Jan 70 à 01:00 - Dernière édition le 1318437809

$page est retourné par mon dao, voici la définition des champs first_date et last_date:

<property name="first_date" fieldname="first_date" datatype="int" required="true"/>
<property name="last_date" fieldname="last_date" datatype="int" required="true"/>


J'ai également fait des tests manuellement, et j'ai la même sortie si j'assigne la variable directement dans le template:

{assign $date=1318326158}
{$date|date_format:'%A %d %b %g à %H:%M'}

me donne:

Thursday 01 Jan 70 à 01:00

Je ne sais pas si j'ai bien compris le fonctionnement du modificateur, mais d'après ce que j'ai vu dans le fichier jelix/plugins/tpl/common/modifier.date_format.php, il me semble que modificateur prend en charge les timestamp ainsi que les dates au format string.
Quelqu'un aurait une idée ?

ps: testé avec jelix 1.2.6-dev

  [Opened] plugins de template - modificateur 'date_format'

Reply #1 Posted by foxmask on 10/12/2011 23:25

je crois que le modificateur est buggé ca fait 1heure que je suis dessus :)

par contre à la place je suggèrerai :

{$date|jdatetime:'timestamp':'lang_datetime'}

@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !

  [Opened] plugins de template - modificateur 'date_format'

Reply #2 Posted by gdugas on 10/13/2011 11:28

j'ai fait une petite correction sur le fichier lib/jelix/plugins/tpl/common/modifier.date_format.php qui à l'air de fonctionner. En fait, la fonction check si $string n'est pas vide, alors on applique sur $string strtotime($string), et on ne prend donc pas en compte le fait que $string peut être un timestamp. Voici la modif:

36c36,39
<         return strftime($format, strtotime($string));
---
> 	if(is_int($string))
>         	return strftime($format, $string);
> 	else
>  	       return strftime($format, strtotime($string));

  [Opened] plugins de template - modificateur 'date_format'

Reply #3 Posted by laurentj on 10/17/2011 11:53

c'est corrigé, merci :)

  [Opened] plugins de template - modificateur 'date_format'

Reply #4 Posted by gdugas on 10/17/2011 11:56

Je me permet de revenir sur ce sujet. En fait, la modification que j'ai proposé fonctionne + ou - bien, dans la mesure ou lorsque l'on a un timestamp dans une dao, donc de type 'int', le résultat du dao nous retourne une chaine de type 'string', vérifié par la fonction is_string($page->date). Le modificateur ne reconnait donc pas un timestamp, mais une chaine de caractère ...
Du coup pour le type 'string' retourné par le dao, à moins d'y appliquer un $page->date = intval($page->date), quelqu'un aurait une autre solution ?

  [Opened] plugins de template - modificateur 'date_format'

Reply #5 Posted by laurentj on 10/17/2011 12:06

le modificateur date_format, à l'origine, spécifie bien d'indiquer une date en paramètre, pas un entier.

fais toi un autre modificateur pour les formatages de timestamp.

  [Opened] plugins de template - modificateur 'date_format'

Reply #6 Posted by gdugas on 10/17/2011 13:06

Quoi qu'il en soit, je n'ai désormais plus de soucis avec ce modificateur, mais c'était plus pour noter que finalement, sur un champ de type int, le dao retournera une chaine de caractère, et non un integer.
Je passe le sujet en résolu :)

 
Page
  1. [résolu]plugins de template - modificateur 'date_format'