Aller au contenu

[resolu] afficher des smileys dans une popup


bryce_30

Messages recommandés

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 ?

Lien vers le commentaire
Partager sur d’autres 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.

Lien vers le commentaire
Partager sur d’autres 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>

Lien vers le commentaire
Partager sur d’autres 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'

Lien vers le commentaire
Partager sur d’autres 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.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...