Projets Gestion des images

Insertion automatique des nouvelles images

Actuellement, lorsque l'on ajoute des images à une page, yacs insère automatiquement à la fin du corps de l'article (description), un code yacs [image=1234] qui permet d'afficher la nouvelle image en bas de la page.

Pour un éditeur non initié aux codes yacs, c'est génant de lui afficher des codes yacs dans son texte car il risque de croire que c'est un bug et des les effacer (tout en se demandant où sont passées les images qui étaient insérées en bas de sa page...).

D'autre part, s'il l'on souhaite prendre l'une de ces images pour la cliquer/glisser ailleurs dans le texte, il est impossible de savoir laquelle si on ne connait pas son Id.

Pour éviter cela, on peut modifier le code de yacs afin que ce soit directement le code html (résultat du code yacs) qui soit inséré dans la page plutôt que le code yacs.

Vu de l'éditeur Wysiwyg, c'est nettement plus clair :

Un autre intérêt, c'est que le membre peut définir certains paramètres de l'image insérée en cliquant sur le bouton "image" de l'éditeur pour redéfinir l'alignement de l'image (droite, gauche) ou définir un lien vers une autre page par exemple. Cette manière de procéder est plus intuitive et "classique" que de connaitre les options du code yacs [image...

Cette méthode a néanmoins (au moins) un inconvénient. Auparavant, lorsque l'on modifiait une image enregistrée dans yacs, elle était automatiquement modifiée dans toutes les pages où elle était appelée via le code [image=... ce qui ne sera plus le cas avec cette modification. Pour ma part, cet avantage n'en était pas forcément un car on peut vouloir modifier une image utilisée dans un article mais que cette modif ne soit pas judicieuse dans un autre article où elle serait utilisée (sans qu'on le sache, en plus).

Pour réaliser cette modif, j'ai remplacé dans articles/article.php et dans sections/section.php :

<p>if(!preg_match('/\[image='.preg_quote($origin'/').'.*?\]/'$this->item['description'])) { // list has already started <span> </span>if(preg_match('/\[image=[^\]]+?\]\s*$/', $this->item['description'])) <span> </span>$this->item['description'] .= ' [image='.$origin.']'; // starting a new list of images <span> </span>else</p>
<p><span> </span>$this->item['description'] .= "\n\n".'[image='.$origin.']';</p>
<
p>$query[] = "description = '".SQL::escape($this->item['description'])."'";</p>
}

par

<p>//html code for the new image</p>
<p><span> </span>$image_html codes::render_object('image'$id_image_source);</p>
<
p><span> </span>//image html code added to the end of description field</p>
$query[] = "description = '".SQL::escape($this->item['description'].' '.$image_html)."'";

Cette modif est dispo dans GitHub à l'adresse : http://github.com/jmarc06/yacs/commit/cded5e94efc903f47ddf1f93f46ad8aec5a0acd1