Annonces
Livre d'or

Par aircrack

Super CMS, super staff une équipe génial!
Plein de possibilité d'avenir et on attend tous la 4.0

Livre d'or

Mini sondage
Disposez-vous de PHP 5 chez votre hébergeur ?








Résultats

 
RssDéveloppement du noyau » [Réglé] Changer la façon d'afficher les smileys Besoin d'un peu d'aide pour le faire  1  2  »
   Le 10/02/10 à 19h26 Citer      

Booster Roquette

Développement Modules

Sexe:
Inscrit le: 08/09/09
Messages: 433
Lieu: Québec, Canada
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 :
 
# 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.

pm patrick.dubeau@ccq.org http://www.mageialinux-online.org    
   Le 11/02/10 à 00h58 Citer      

Administrateur

Equipe historique

Sexe:
Inscrit le: 17/06/05
Messages: 7621
Lieu: Apt / Marseille
Il faut assigner les variables côté php (forum_topic.php), tu trouveras la boucle d'assignation dans bbcode_editor.class.php
____________________
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!

pm crowkait@phpboost.com http://www.phpboost.com    
   Le 11/02/10 à 16h20 Citer      

Booster Roquette

Développement Modules

Sexe:
Inscrit le: 08/09/09
Messages: 433
Lieu: Québec, Canada
Salut CrowkaiT,

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. :)

pm patrick.dubeau@ccq.org http://www.mageialinux-online.org    
   Le 11/02/10 à 16h30 Citer      

Administrateur

Chef de projet
Développement Noyau

Sexe:
Inscrit le: 27/02/09
Messages: 7993
Lieu: Alsace
pourquoi n'appelle tu pas le tpl dans bbcode_editor.class.php ?

pm http://www.phpboost.com    
   Le 11/02/10 à 16h53 Citer      

Administrateur

Equipe historique

Sexe:
Inscrit le: 17/06/05
Messages: 7621
Lieu: Apt / Marseille
Il faut que tu copies toute la boucle présente dans bbcode_editor.class.php là tu n'as pris que l'assignation.
____________________
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!

pm crowkait@phpboost.com http://www.phpboost.com    
   Le 11/02/10 à 16h56 Citer      

Booster Roquette

Développement Modules

Sexe:
Inscrit le: 08/09/09
Messages: 433
Lieu: Québec, Canada
Salut CrowkaiT,

Est-ce que je copie la boucle au grand complet ou je fais comme ReidLos suggère ?

pm patrick.dubeau@ccq.org http://www.mageialinux-online.org    
   Le 11/02/10 à 17h02 Citer      

Administrateur

Chef de projet
Développement Noyau

Sexe:
Inscrit le: 27/02/09
Messages: 7993
Lieu: Alsace
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 :
        $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']
            ));
        }

pm http://www.phpboost.com    
   Le 11/02/10 à 17h32 Citer      

Booster Roquette

Développement Modules

Sexe:
Inscrit le: 08/09/09
Messages: 433
Lieu: Québec, Canada
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à....

pm patrick.dubeau@ccq.org http://www.mageialinux-online.org    
   Le 11/02/10 à 17h42 Citer      

Administrateur

Chef de projet
Développement Noyau

Sexe:
Inscrit le: 27/02/09
Messages: 7993
Lieu: Alsace
supprime ta variable et met : Code PHP :
include(PATH_TO_ROOT . '/cache/smileys.php');
a la place

pm http://www.phpboost.com    
   Le 11/02/10 à 18h05 Citer      

Booster Roquette

Développement Modules

Sexe:
Inscrit le: 08/09/09
Messages: 433
Lieu: Québec, Canada
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 :
$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. :\'(

pm patrick.dubeau@ccq.org http://www.mageialinux-online.org    
   Le 11/02/10 à 18h11 Citer      

Administrateur

Chef de projet
Développement Noyau

Sexe:
Inscrit le: 27/02/09
Messages: 7993
Lieu: Alsace
la fonction d'insertion c'est encore autre chose la il faut que tu vois dans kernel/framework/content/parser/

pm http://www.phpboost.com    
   Le 11/02/10 à 18h16 Citer      

Administrateur

Chef de projet
Développement Noyau

Sexe:
Inscrit le: 27/02/09
Messages: 7993
Lieu: Alsace
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);

pm http://www.phpboost.com    
   Le 11/02/10 à 18h49 Citer      

Booster Roquette

Développement Modules

Sexe:
Inscrit le: 08/09/09
Messages: 433
Lieu: Québec, Canada
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 ?

pm patrick.dubeau@ccq.org http://www.mageialinux-online.org    
   Le 11/02/10 à 18h51 Citer      

Administrateur

Chef de projet
Développement Noyau

Sexe:
Inscrit le: 27/02/09
Messages: 7993
Lieu: Alsace
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

pm http://www.phpboost.com    
   Le 11/02/10 à 21h10 Citer      

Booster Roquette

Développement Modules

Sexe:
Inscrit le: 08/09/09
Messages: 433
Lieu: Québec, Canada
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 :
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....

pm patrick.dubeau@ccq.org http://www.mageialinux-online.org    
RssDé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é
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie
Annonces