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

  [Opened] [non résolu] Equivalent mambots de contenu

Posted by RaphaelW on 08/10/2010 18:49

Bonjour

Je voudrais faire un systeme équivalent aux mambots de contenu de joomla. Si vous avez d'autres options je suis également ouvert.

Dans mon application un utilisateur doit avoir la possibilité de rédiger du contenu qui est stocké dans une table avec un champs "content". Je voudrais qu'il puisse insérer des balises du genre {gallery '/albums/photos/montagne', height=100px, width=30px} là ou il souhaite inserer une galerie photo ou encore {youtube nTasT5h0LEg} pour ajouter une vidéo Youtube.

J'avais pensé utiliser les fonctions de template de jelix avec deux fonctions gallery et youtube. Ensuite je crée un objet jTpl qui recevrait la chaine contenant ce qu'a rédigé l'utilisateur et faire un fetch dessus, pour ensuite envoyer la chaine issue de ce fetch au template final. Le hic c'est qu'à priori un objet jTpl ne fait un fetch que sur un template et par sur une chaine.

Raph

  [Opened] Equivalent mambots de contenu

Reply #1 Posted by foxmask on 08/11/2010 12:21

bonjour,

il vous faut juste créer 2 plugin de template (de type html) comme par exemple celui ci pour afficher les icones des réseaux sociaux(..)


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

  [Opened] Equivalent mambots de contenu

Reply #2 Posted by RaphaelW on 08/11/2010 16:03

oui mais non ma situation c'est qu'à un moment donné je me retrouve avec un truc du genre :

$content = "blabla {youtube 'nTasT5h0LEg'} bla bla"; //c'est pour simplifier, le texte est issu d'une base de donnée
$rep = $this->getResponse('html');
$tpl = new jTpl();
$tpl->assign('content', $content);
$rep->body->assign('MAIN', $tpl->fetch('article~showArticle'));
return $rep;

Et là mon plugin est inefficace. Il ne marche que si je met la fonction directement dans le template. Donc je me dit qu'il faudrait avoir un fetch sur $content avant de l'assigner à $tpl.

  [Opened] Equivalent mambots de contenu

Reply #3 Posted by foxmask on 08/11/2010 17:48

Hmm

je ferai bien un nouveau "render" de la classe wikirender.

je m'explique, ici sur le forum, la barre d'outil au dessus du textarea où on saisit le message, permet de formater son texte.

Il suffirait d'ajouter un picto Youtube en plus, puis en cliquant dessus ca afficherait {youtube '123445'} dans le champ de saisi et une fois enregistré en base, afficherait la vidéo voulue.

Si c'est ce que vous voulez, le travail consisterait donc à créer "sa" classe "render" (dans ce style) (ici cela permet de transformer des smileys par des images.)

Si c'est cela que vous souhaitez jettez un oeil par ici http://jelix.org/articles/fr/manuel-1.1/wiki


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

  [Opened] Equivalent mambots de contenu

Reply #4 Posted by Julien on 08/11/2010 19:18

je pense que la fonctionnalité (fetch d'un template à partir d'une chaine) est la suivante : http://developer.jelix.org/ticket/545

maintenant je ne sais pas exactement où en est l'implémentation

après je pense que foxmask a raison de suggérer un formatage intermédiaire, car il ne serait à mon avis pas très secure d'analyser directement le contenu saisi par l'utilisateur via jTpl.


Julien

  [Opened] Equivalent mambots de contenu

Reply #5 Posted by RaphaelW on 08/12/2010 11:25

Quelle coïncidence, ce matin j'ai pensé à wikirenderer.

Je vais avoir une fin de semaine chargée donc ce sera en début de semaine prochaine. Mais à priori il n'y a pas de raison que ça ne marche pas. Je met donc le post en résolu pour le moment.

  [Opened] [non résolu] Equivalent mambots de contenu

Reply #6 Posted by RaphaelW on 08/17/2010 08:17

Alors il y a comme un soucis. Dans myapp/plugins/wr_rules/articles/articles.rule.php j'ai mis ça :

class articles extends WikiRendererConfig  {
<code>
    public $inlinetags= array('article_youtube');
    public $defaultTextLineContainer = 'WikiHtmlTextLine';
    public $availabledTextLineContainers = array('WikiHtmlTextLine');
    public $bloctags = array();
    public $simpletags = array();

} class article_youtube extends WikiTag {

    protected $name='youtube';
    public $beginTag='{youtube ';
    public $endTag='}';
    protected $attribute = array('code','width','height');
    public $separators=array('|');

    public function getContent(){
        $contents = $this->wikiContentArr;
        $cnt=count($contents);
        $attribut='';
        if($cnt > 3) $cnt=3;
        $width = '640';
        $height = '385';
        switch($cnt){
           case 3:
               $height = $contents[2];
           case 2:
               $width = $contents[1];
           case 1:
           default:
              $code = $contents[0];
        }
        $text = '<object bla bla '.$code.'>bla bla</object>'; //là je raccourcis
        return $text;
    }
</code>

et dans mon controlleur j'ai

$content = '<p>bla bla</p> <p>{youtube saC5I3kOD-I|640|385}</p> <p>bla bla</p>';
$wr = new jWiki('articles');
$tpl = new jTpl();
$tpl->assign('content', $wr->render($content));

et là mon code youtube est bien remplacé, le problème c'est que j'ai un htmlspecialchar qui est appliqué à tout les < et > de $content ! Et si je remplace

    <code>
    public $defaultTextLineContainer = 'WikiHtmlTextLine';
    public $availabledTextLineContainers = array('WikiHtmlTextLine');
</code>

par

    <code>
    public $defaultTextLineContainer = 'WikiTextLine';
    public $availabledTextLineContainers = array('WikiTextLine');
</code>

A ce moment là absolument aucun remplacement n'est fait. Je n'ai pas du bien comprendre le fonctionnement de ces eux lignes.

  [Opened] [non résolu] Equivalent mambots de contenu

Reply #7 Posted by laurentj on 08/23/2010 11:04

Bonjour,

les templates "virtuels" ne sont effectivement pas encore implémenté. Si j'ai le temps de relire le patch proposé avant la sortie de la 1.2RC1 (on va dire d'ici 2 semaines ;) , je le ferai.

  [Opened] [non résolu] Equivalent mambots de contenu

Reply #8 Posted by RaphaelW on 08/23/2010 15:35

ok merci Laurent.

Sinon j'ai essayé de passer par un wikirenderer mais je n'arrive pas à faire un sorte que ma syntaxe soit reconnue au sein d'un code html (voir au dessus).

 
Page
  1. Equivalent mambots de contenu