Forum PHPBoost
• Développement du noyau » [Réglé] Changer la façon d'afficher les smileys Besoin d'un peu d'aide pour le faire
1 2 »
Salut aux devs et autres,
J'ai un petit projet pour le forum, en fait pour modifier le mien à tout le moins et qui donnera peut-être des idées.
Je veux afficher les smileys dans un div à gauche du champs Répondre. Donc, je veux éliminer le petit bouton dans l'éditeur car sur mon site j'ai beaucoup de smileys (je sais que c'est beaucoup, mais j'aime ça offrir du choix) et j'aimerais pouvoir les insérer dans ce div afin d'accéder rapidement à la majorité.
J'ai identifé le template que je dois modifier (forum_topic.tpl), j'ai trouvé la fonction actuelle qui remplie le petit div au-dessus du bouton dans l'éditeur (bbcode_editor.class.php) et j'ai aussi vu comment est rempli le petit div actuel (editor.tpl).
Ma question : comment je fais pour que la fonction de remplissage actuelle (celle qui se retrouve dans bbcode_editor.class.php) tiennent compte de mon div dans le template forum_topic.tpl ? En effet, si dans ce template je fais bêtement :
Code TPL :
Ça ne fonctionne pas évidemment.
Merci à l'avance de votre aide.
J'ai un petit projet pour le forum, en fait pour modifier le mien à tout le moins et qui donnera peut-être des idées.

Je veux afficher les smileys dans un div à gauche du champs Répondre. Donc, je veux éliminer le petit bouton dans l'éditeur car sur mon site j'ai beaucoup de smileys (je sais que c'est beaucoup, mais j'aime ça offrir du choix) et j'aimerais pouvoir les insérer dans ce div afin d'accéder rapidement à la majorité.
J'ai identifé le template que je dois modifier (forum_topic.tpl), j'ai trouvé la fonction actuelle qui remplie le petit div au-dessus du bouton dans l'éditeur (bbcode_editor.class.php) et j'ai aussi vu comment est rempli le petit div actuel (editor.tpl).
Ma question : comment je fais pour que la fonction de remplissage actuelle (celle qui se retrouve dans bbcode_editor.class.php) tiennent compte de mon div dans le template forum_topic.tpl ? En effet, si dans ce template je fais bêtement :
Code TPL :
# START smiley # <div><a onclick="insertbbcode('{smiley.CODE}', 'smile', '{FIELD}');" class="bbcode_hover" title="{smiley.CODE}">{smiley.IMG}</a>{smiley.END_LINE}</div> # END smiley #
Ça ne fonctionne pas évidemment.
Merci à l'avance de votre aide.
Il faut assigner les variables côté php (forum_topic.php), tu trouveras la boucle d'assignation dans bbcode_editor.class.php
Salut CrowkaiT,
J'ai fait l'assignation des variables suivantes dans le fichier topic.php :
Code PHP :
Le problème c'est qu'il me manque plusieurs choses parce que j'obtiens les erreurs suivantes :
Suggestion : Undefined variable: img dans le fichier D:\xampplite\htdocs\phpboost\forum\topic.php à la ligne 568
Suggestion : Undefined variable: code_smile dans le fichier D:\xampplite\htdocs\phpboost\forum\topic.php à la ligne 569
Suggestion : Undefined variable: smile_by_line dans le fichier D:\xampplite\htdocs\phpboost\forum\topic.php à la ligne 570
Avertissement : Division by zero dans le fichier D:\xampplite\htdocs\phpboost\forum\topic.php à la ligne 570
En effet, il manque plusieurs fonctions et variables qui proviennent du fichier bbcode_editor.class.php. Alors, faudrait-il que je fasse un include ou un require_once ?
Merci encore de ton aide.
J'ai fait l'assignation des variables suivantes dans le fichier topic.php :
Code PHP :
$Template->assign_block_vars('smiley',array( 'IMG'=>$img, 'CODE'=>addslashes($code_smile), 'END_LINE'=>$i%$smile_by_line==0?'<br />':'' )); $Template->assign_vars(array( 'C_BBCODE_SMILEY_MORE'=>true, 'L_ALL_SMILEY'=>$LANG['all_smiley'], 'L_SMILEY'=>$LANG['smiley'] ));
Le problème c'est qu'il me manque plusieurs choses parce que j'obtiens les erreurs suivantes :
Suggestion : Undefined variable: img dans le fichier D:\xampplite\htdocs\phpboost\forum\topic.php à la ligne 568
Suggestion : Undefined variable: code_smile dans le fichier D:\xampplite\htdocs\phpboost\forum\topic.php à la ligne 569
Suggestion : Undefined variable: smile_by_line dans le fichier D:\xampplite\htdocs\phpboost\forum\topic.php à la ligne 570
Avertissement : Division by zero dans le fichier D:\xampplite\htdocs\phpboost\forum\topic.php à la ligne 570
En effet, il manque plusieurs fonctions et variables qui proviennent du fichier bbcode_editor.class.php. Alors, faudrait-il que je fasse un include ou un require_once ?
Merci encore de ton aide.
pourquoi n'appelle tu pas le tpl dans bbcode_editor.class.php ?
Il faut que tu copies toute la boucle présente dans bbcode_editor.class.php là tu n'as pris que l'assignation.
Salut CrowkaiT,
Est-ce que je copie la boucle au grand complet ou je fais comme ReidLos suggère ?
Est-ce que je copie la boucle au grand complet ou je fais comme ReidLos suggère ?
c'est mieux de ne pas toucher directement les fichiers du kernel car lors d'une maj tu sera dans la merdouille ^^
Donc copie la boucle :
sa savoir :
Code PHP :
Donc copie la boucle :
sa savoir :
Code PHP :
$smile_max = 28; //Nombre de smiley maximim avant affichage d'un lien vers popup. $smile_by_line = 5; //Smiley par ligne. $height_max = 50; $width_max = 50; $nbr_smile = count($_array_smiley_code); $i = 1; $z = 0; foreach ($_array_smiley_code as $code_smile => $url_smile) { if ($z == $smile_max) { $z++; break; } $width_source = 18; //Valeur par défaut. $height_source = 18; // On recupère la hauteur et la largeur de l'image. list($width_source, $height_source) = @getimagesize(PATH_TO_ROOT . '/images/smileys/' . $url_smile); if ($width_source > $width_max || $height_source > $height_max) { if ($width_source > $height_source) { $ratio = $width_source / $height_source; $width = $width_max; $height = $width / $ratio; } else { $ratio = $height_source / $width_source; $height = $height_max; $width = $height / $ratio; } } else { $width = $width_source; $height = $height_source; } $img = '<img src="' . TPL_PATH_TO_ROOT . '/images/smileys/' . $url_smile . '" height="' . $height . '" width="' . $width . '" alt="' . $code_smile . '" title="' . $code_smile . '" />'; $template->assign_block_vars('smiley', array( 'IMG' => $img, 'CODE' => addslashes($code_smile), 'END_LINE' => $i % $smile_by_line == 0 ? '<br />' : '' )); $i++; $z++; } if ($z > $smile_max) //Lien vers tous les smiley! { $template->assign_vars(array( 'C_BBCODE_SMILEY_MORE' => true, 'L_ALL_SMILEY' => $LANG['all_smiley'], 'L_SMILEY' => $LANG['smiley'] )); }
Salut ReidLos,
Oki, ça fait du sens effectivement de ne pas toucher aux fichiers du kernel.
Bon, j'ai fait ça, mais j'ai une erreur encore. Au départ, il me disait que la variable $_array_smiley_code n'était pas définie. Dans bbcode_editor.class.php elle est définie comme une global. J'ai donc ajouté cette définition au-dessus de la boucle. L'erreur qui persiste :
Avertissement : Invalid argument supplied for foreach() dans le fichier D:\xampplite\htdocs\phpboost\forum\topic.php à la ligne 562
Une idée ? Je ne vois pas là....
Oki, ça fait du sens effectivement de ne pas toucher aux fichiers du kernel.
Bon, j'ai fait ça, mais j'ai une erreur encore. Au départ, il me disait que la variable $_array_smiley_code n'était pas définie. Dans bbcode_editor.class.php elle est définie comme une global. J'ai donc ajouté cette définition au-dessus de la boucle. L'erreur qui persiste :
Avertissement : Invalid argument supplied for foreach() dans le fichier D:\xampplite\htdocs\phpboost\forum\topic.php à la ligne 562
Une idée ? Je ne vois pas là....
supprime ta variable et met : Code PHP : a la place
include(PATH_TO_ROOT . '/cache/smileys.php');
Salut ReidLos,
En fait, après analyse du fichier bbcode_editor.class.php, j'ai remarqué qu'avant cette boucle il y avait cette ligne de code qui s'y trouvait :
Code PHP :
Une fois inséré, ça fonctionne. Les smileys apparaissent dans mon div. Ce qui revient à ce que tu me suggères.
Malheureusement, tout n'est pas encore réglé. La fonction d'insertion ne semble pas fonctionner.
En fait, après analyse du fichier bbcode_editor.class.php, j'ai remarqué qu'avant cette boucle il y avait cette ligne de code qui s'y trouvait :
Code PHP :
$Cache->load('smileys');
Une fois inséré, ça fonctionne. Les smileys apparaissent dans mon div. Ce qui revient à ce que tu me suggères.
Malheureusement, tout n'est pas encore réglé. La fonction d'insertion ne semble pas fonctionner.
la fonction d'insertion c'est encore autre chose la il faut que tu vois dans kernel/framework/content/parser/
Code PHP :
foreach ($_array_smiley_code as $code => $img)
{
$smiley_code[] = '`(?:(?![a-z0-9]))(?<!&[a-z]{4}|&[a-z]{5}|&[a-z]{6}|")(' . preg_quote($code) . ')(?:(?![a-z0-9]))`';
$smiley_img_url[] = '<img src="/images/smileys/' . $img . '" alt="' . addslashes($code) . '" class="smiley" />';
}
$return = preg_replace($smiley_code, $smiley_img_url, $return);
Salut,
Oki, j'ai essayé ça, mais ça ne fonctionne pas. D'ailleurs, la variable $return doit être définie à quoi ? Je mets où ce code ? Après ma boucle ?
J'ai essayé en insérant toute la fonction et ça ne fonctionne pas.
Si on se réfère à editor.tpl, dans le lien de chaque smiley il y a la fonction javascript insertbbcode. On dirait qu'il n'appelle pas cette fonction, est-ce possible que ce soit ça qui fait que ça ne fonctionne pas ?
Oki, j'ai essayé ça, mais ça ne fonctionne pas. D'ailleurs, la variable $return doit être définie à quoi ? Je mets où ce code ? Après ma boucle ?
J'ai essayé en insérant toute la fonction et ça ne fonctionne pas.
Si on se réfère à editor.tpl, dans le lien de chaque smiley il y a la fonction javascript insertbbcode. On dirait qu'il n'appelle pas cette fonction, est-ce possible que ce soit ça qui fait que ça ne fonctionne pas ?
excuse moi ca c'est l'affichage, je croyais que tu parle de l'affichage et non l'insertion, en effet maintenant il faut voir dans le editor.tpl comment c'est fait
Bon voilà,
Je suis bloqué et je sèche....
Je sens qu'il me manque quelque chose mais je ne sais quoi. L'affichage des bbcode se fait dans mon div, mais lorsque je clique sur un smiley, rien n'est inséré dans le champs de réponse.
On dirait qu'il manque une info pour appeler la fonction insertbbcode :
Code JAVASCRIPT :
Après analyse avec Firebug, je remarque que la variable {FIELD} est vide. Donc, je présume que la fonctione ne retourne rien....
Je suis bloqué et je sèche....
Je sens qu'il me manque quelque chose mais je ne sais quoi. L'affichage des bbcode se fait dans mon div, mais lorsque je clique sur un smiley, rien n'est inséré dans le champs de réponse.
On dirait qu'il manque une info pour appeler la fonction insertbbcode :
Code JAVASCRIPT :
onclick="insertbbcode('{smiley.CODE}', 'smile', '{FIELD}');"
Après analyse avec Firebug, je remarque que la variable {FIELD} est vide. Donc, je présume que la fonctione ne retourne rien....
• Développement du noyau » [Réglé] Changer la façon d'afficher les smileys Besoin d'un peu d'aide pour le faire
1 2 »
2 Utilisateurs en ligne :: 0 Administrateur, 0 Modérateur, 0 Membre et 2 Visiteurs
Utilisateurs en ligne: Aucun membre connecté
Utilisateurs en ligne: Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie





PHPBoost

Support
Téléchargements
Développement
Communauté















