Jump to content

[resolu] afficher des smileys dans une popup


Recommended Posts

salut tout le monde,

je suis en train d'améliorer mon site, et je viens de faire un code qui remplace certaines chaine par un smiley, comme ceci :

 <?php 
$in=array( 
 '-(;', 
 '-((' 
 ); 
$out=array( 
 '<img src="pas_content.png" alt="nom image" />', 
 '<img src="en_colere.png" alt="nom image" />' 
 ); 
echo str_replace($in,$out,$texte); 
?> 

seulement je voudrais faire un peu comme sur le forum, qu'en cliquant sur un lien, il apparaisse une popup avec a l'intérieur tous mes smileys !

comment faire ?

Link to comment
Share on other sites

Le plus simple est de regarder le code source de la page de rédaction des messages, sur ce forum.

En gros, il te faut :

1. Sur ta page principale, un lien (balise <a> avec propriété "target") permettant d'ouvrir la page contenant les smileys.

2. Une page html contenant tous les smileys, avec sur chaque image une fonction javascript ressemblant à : onclick="opener.getElementById('toto').value='mon_smiley'".

La partie importante dans cet exemple est l'emploi de l'objet "opener", qui permet d'accéder à la page ayant ouvert la page contenant les smilies, pour en changer le contenu.

Encore une fois, regarde le code source du forum, ce sera instructif et certainement réutilisable sans beaucoup de modifications.

Link to comment
Share on other sites

alors j'y arrive a peu près, mais il y a un seul truc que j'arrive pas a faire, c'est le lien sur le smiley pour qu'il s'affiche dans la page que je veux..., j'ai bien mis la fonction que tu dis, maisje sais pas quoi mettre comme valeur au href ?

edit : voici le code :

<table align='center' width='90%' border='3'>
<?php
foreach($tableau as $cle => $element)
{
echo  "<tr><td align='center' width='50%'><a href='#' onclick='opener.getElementById(\"message\").value=".$cle."'>".$cle."</a></td><td align='center' width='50%'>".$element."</td></tr>";
}
?> 
</table>

edit 2 : voici le code de la page ou je souhaite qu'apparaissent les smileys

ça dans le <head> de la page :

	<script language="javascript">
	function emot_pop()
	{ var nouvelleFenetre = 
		open("../includes/tabl_emot.php", "tableauEmot", "scrollbars, resizable, width=300, height=500");
	}
</script>

et ça a l'endroit ou je veux qu'il y ai le lien :

	<form method="post" action="minichat.php">
	<p>Pseudo : <input type="text" name="pseudo" /></p>
	<p>Message : <input type="text" name="message" /></p>
	<p><input type="submit" value="Smileys" onClick="emot_pop()" /></p>
	<p><input type="submit" /></p>
</form>

Link to comment
Share on other sites

voici la solution :

<script ='javascript'>
function add_smilie(smil, textarea)
{
	//opener.document.forms[0] += ' ' + smil + ' ';
	//return true;
	opener.document.getElementById(textarea).value += ' ' + smil + ' ';
}
</script>

<a href="java script:void(0);" onClick="add_smilie(' :-)', 'message');\">" :-)"</a>

ici textarea doit prendre la valeur de l'id du textarea dans votre formulaire ! donc ici il s'agit de 'message'

Link to comment
Share on other sites

Pour info, sur mon site j'ai repris la syntaxe pcinpact, c'est à dire :<nomdusmiley>:

	//Smileys!
	$reg = '#:(.*):#sU';
	preg_match_all($reg,$string,$out,PREG_SET_ORDER);

		//   $out[][0] = :smiley:
		//   $out[][1] = smiley

	// on les remplace:
	foreach ( $out as $tab )
	{
		if ( file_exists(dirname(__FILE__) . '/../_images/smileys/' . $tab[1] . '.gif') )
			$string = str_replace($tab[0], "<img src=\"$site/_images/smileys/" . $tab[1] . '.gif" alt="smiley: ' . $tab[1] . 'class="smiley" />', $string);
	}

C'est plus simple pour en rajouter, je n'ai qu'à les rajouter dans le dossier image de mon site :)

(en revanche le code actuel ne supporte que les images .gif.. mais bon pour le moment je n'ai pas besoin de plus)

Pour avoir la liste, je suppose que je pourrais parcourir le dossier des smileys, avec un chtit:

	$liste = array();

$dir = opendir($directory);

// keep going until all files in directory have been read
while ($file = readdir($dir))
	if ($file != '.' && $file != '..')
		$liste[] = $file;

closedir($dir);

Pour ensuite afficher le tableau. Ou alors, pour encore moins se fatiguer, ne pas renseigner de tableau mais ecrire directement sur la page:

(...)
while ($file = readdir($dir))
	if ($file != '.' && $file != '..')
		echo '<tr><td>' . $file . '</td><td><img src="...." alt="..."</td></tr>';

a toi de voir.

Link to comment
Share on other sites

ça m'a l'air compliqué comme ça ! :D faudrait que je m'y penche dessus ! mais bon, le mien fonctionne au poil maintenant, juste 2 ou 3 détails et ça sera parfait ! mais bon, c'est quand meme intéressant d'apprendre de nouveaux trucs ! :smack:

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...