Ticket #545 (assigned enhancement)

Opened 4 months ago

Last modified 4 months ago

Templates virtuel

Reported by: Lipki Assigned to: Lipki (accepted)
Priority: normal Milestone:
Component: jelix:tpl Version: 1.0.3
Severity: normal Keywords:
Cc: Php version:
Review: review- Hosting Provider:
Documentation needed: 0 Blocking:

Description

Alors voila l'idée : Pour utiliser jTpl on est obliger de créer des fichiers physique. (.tpl)

Dans la "norme" jTpl, la plupart des éléments sont fait pour créer des squelettes, mais de plus en plus sont créer des plugins orienté contenu.

Je pense évidement eu plugin image, swf, mais également aux modificateurs, à jUrl, et dans une certaine mesure les boucles le plugin cycle et j'en oublie.

C'est dommage de ne pas pouvoir profiter de tout cela sur du contenu dynamique. Comme par exemple récupérer d'une base de données.

En tous cas j'ai trouvé ça dommage :)

Donc je propose ...

Attachments

jTpl.classe.diff (1.2 kB) - added by Lipki on 04/15/08 01:42:02.
init.diff (3.2 kB) - added by Lipki on 04/15/08 01:55:14.
jTplCompiler.class.diff (1.6 kB) - added by Lipki on 04/15/08 02:01:16.
dynTpl.class.php (339 bytes) - added by Lipki on 04/15/08 02:06:12.
template_virtuel.diff (5.7 kB) - added by Lipki on 04/23/08 19:56:52.

Change History

04/15/08 01:39:56 changed by Lipki

  • une function jTpl::dynFetch(...)
  • Qui fait appel à jTpl::fetch(... $dyn=true)
  • jTpl::fetch(... $dyn=true) instancie jVTplSelector(...)

04/15/08 01:42:02 changed by Lipki

  • attachment jTpl.classe.diff added.

04/15/08 01:51:51 changed by Lipki

  • jVTplSelector(...)
    • fichier source dans le dossier classes 'xxx/dynTpl.class.php'
    • nouveau compiler jVTplCompiler(...)

04/15/08 01:55:14 changed by Lipki

  • attachment init.diff added.

04/15/08 01:59:14 changed by Lipki

  • jVTplCompiler(...) extends jTplCompiler(...)
    • instancie dynTpl()
    • vérifie l'existence de dynTpl::{$selector->resource}()
    • et récupère le contenu a compiler

04/15/08 02:01:16 changed by Lipki

  • attachment jTplCompiler.class.diff added.

04/15/08 02:02:41 changed by Lipki

La dernière touche, c'est la classe qui renvoie le contenu en fonction de la ressource demandée.

04/15/08 02:06:12 changed by Lipki

  • attachment dynTpl.class.php added.

04/15/08 02:08:49 changed by Lipki

  • owner set to Lipki.
  • status changed from new to assigned.

Bon c'est fait assez rapidement, et je ne connais pas du tous cette partie du code de jelix, donc je suis sur d'avoir fait des bourdes énorme. D'ailleurs en l'état jurl ne fonctionne pas dans les tpl virtuel.

Enfin, je veut avoir votre avis, est-ce une piste fiable ou pas ?

04/22/08 15:47:21 changed by mike

Cette piste me semble interessante. Cela résoudrait le problème que je soulevais sur le forum: http://jelix.org/forums/read.php?5,2491

Je pense qu'il faut creuser l'idée.

04/23/08 19:56:27 changed by Lipki

Bon voila la bonne version du patch, j'espère que je me suis pas planté.

04/23/08 19:56:52 changed by Lipki

  • attachment template_virtuel.diff added.

04/30/08 23:49:58 changed by Lipki

  • review set to review?.

05/02/08 14:52:09 changed by laurentj

  • review changed from review? to review-.
  • component changed from jelix to jelix:tpl.
  • je préfère une méthode fetchFromString plutôt qu'un enième argument à fetch
  • je n'aime pas cette histoire de classe dynTpl.class.php. D'une part déjà parce que si on utilise plusieurs template "virtuels" de plusieurs modules dans une même action, cela va provoquer des erreurs "classe déjà définie" au chargement des classes (il faudrait laisser le nom libre, et imposer l'implémentation d'une interface spécifique), et d'autre part, je trouve que c'est plutôt limitant, puisqu'il faut absolument fournir une classe.
  • il manque des blocs de commentaires en tête des nouvelles classes et méthodes

Ton patch sur jIncluder n'est pas suffisant. En effet, il faut faire plus de modifications que celles que tu as fait. Par exemple, le cache n'est jamais mis à jour, puisque ton fichier source est cette classe dyn, et donc sa date de modification ne correspond absolument à la date de modification du contenu du template.

Je pense qu'il faut y travailler encore, voir si on ne peut pas faire un truc plus général au niveau des selecteurs. Ou encore se passer de selecteur et jIncluder. Je ne sais pas trop encore, je vais y reflechir.

Download in other formats: Comma-delimited Text Tab-delimited Text RSS Feed