Aide BBcode...Une messagerie pour un espace membre...

Bonjour,

Voila, je suis en train de créer un espace membre, mais je souhaiterais que les membres ient une messagerie interne.Mais malhreusement, je suis encore un faible en php et j'aimerais des conseil en php! (ou bien un script tout prêt!! :lol: )

J'ai déjà beaucoup chercher un petit truc tout prêt, mais sans succès!

Attention : C'est un ajout, je ne souhaite pas changer tout l'espace membre.
 
Ici tu en auras :
http://www.phpscripts-fr.net/scripts/sc ... s+internes

Mais tu ne pourras pas trouver un script qui s'adapte à ton espace membre (sauf si tu ne l'as pas codé toi même et à pris un truc déjà connu? peut être il y aura un mod)

Car par définition une messagerie interne sera nécessaire intimement lié à ton espace membre. Après tu peux peut être adapter, mais si tu es pas top en PHP c'est peut être pas préférable.
 
C'est pas trop compliqué une messagerie interne.

Avant de penser php, il faut penser aux données à stocker.

Crée toi une table "messagerie" du style :
id
expediteur
destinataire
date/heure
sujet
message

(et d'autres infos plus tard pr savoir si le message a été lu ou non, archivé...etc)

Ensuite, il suffit de l'exploiter tout comme tu exploites ta partie membres.

- Ecrire un message (vérifier destinataire => envoyer)
- Lire un message

C'est le minimum.
ça prend du temps à développer mais tu fais ce que tu veux et tu pourra grandement l'améliorer avec le temps.
 
Ou alors tu as pensé au coté CMS de la chose ?

Des legers , ou des complets pourraient reprendre toutes les fonctionnalités dont tu as besoin :)
 
Au fait, je suis en train de la créer !

Mais, si possible, j'aimerais de l'aide pour le BBcode, j'ai fait quelques recherche su le net, mais pas super intérésant, meci de votre consil ;)
 
Code:
$a = array('#\[b\](.*?)\[/b\]#s',
					 '#\[i\](.*?)\[/i\]#s',
					 '#\[u\](.*?)\[/u\]#s',
					 '#\[img\](.*?)\[/img\]#s');

	$b = array('<strong>$1</strong>',
					 '<i>$1</i>',
					 '<u>$1</u>',
					 '<img src="$1" alt="IMAGE" />');

	$text = preg_replace($a, $b, $text);

Voila ;)

Pour une URL par exemple :

Code:
$a = array('#\[url=(.*?)\](.*?)\[/url\]#s');

	$b = array('<a href="$1">$2</a>');

	$text = preg_replace($a, $b, $text);

PS : Je te donne pour l'URL par que je me souvient, j'"ai chercher longtemps ^^ ( il y a un certain temps xP )
 
Ok, je vais essayer de faire avec cela, mais juste un autre petit truc, comment faire pour que quand on clique sur le smilies, ca ajoute le code dans la balise textarea?
 
Créer un fichier par exempl;e bbcodes.js et met ce code :

Code:
var isMozilla = (navigator.userAgent.toLowerCase().indexOf('gecko')!=-1) ? true : false;
var regexp = new RegExp("[\r]","gi");

function storeCaret(selec) {
if (isMozilla) {
oField = document.forms['news'].elements['newst'];
objectValue = oField.value;
deb = oField.selectionStart;
fin = oField.selectionEnd;
objectValueDeb = objectValue.substring( 0 , oField.selectionStart );
objectValueFin = objectValue.substring( oField.selectionEnd , oField.textLength );
objectSelected = objectValue.substring( oField.selectionStart ,oField.selectionEnd );

	//	alert("Debut:'"+objectValueDeb+"' ("+deb+")\nFin:'"+objectValueFin+"' ("+fin+")\n\nSelectionné:'"+objectSelected+"'("+(fin-deb)+")");
			
oField.value = objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]" + objectValueFin;
oField.selectionStart = strlen(objectValueDeb);
oField.selectionEnd = strlen(objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]");
oField.focus();
oField.setSelectionRange(
objectValueDeb.length + selec.length + 2,
objectValueDeb.length + selec.length + 2);
}
else
{
oField = document.forms['news'].elements['newst'];
var str = document.selection.createRange().text;
if (str.length>0)
{
// Si on a selectionné du texte
var sel = document.selection.createRange();
sel.text = "[" + selec + "]" + str + "[/" + selec + "]";
sel.collapse();
sel.select();
}
else
{
oField.focus(oField.caretPos);
// alert(oField.caretPos+"\n"+oField.value.length+"\n")
oField.focus(oField.value.length);
oField.caretPos = document.selection.createRange().duplicate();
var bidon = "%~%";
var orig = oField.value;
oField.caretPos.text = bidon;
var i = oField.value.search(bidon);
oField.value = orig.substr(0,i) + "[" + selec + "][/" + selec + "]" + orig.substr(i, oField.value.length);
var r = 0;
for(n = 0; n < i; n++)
{if(regexp.test(oField.value.substr(n,2)) == true){r++;}};
pos = i + 2 + selec.length - r;
//placer(document.forms['news'].elements['newst'], pos);
var r = oField.createTextRange();
r.moveStart('character', pos);
r.collapse();
r.select();
}
}
}

Le bouton :

Code:
<input type="button" value="b" onclick="storeCaret('b')">

PS : L'id du champs de texte doit être "newst"
 
Je doit inclure ce code dans ma page?
Exemple : <?php include("smilies.js") ?>

Merci!
aussi, je peut changer l'id du champ en changeant tout les "newst" du code par ce que je souhaite?

Remerci!
 
Pour la première question, non pas comme ça^^

Pour la deuxièmes, oui ;)

Pour lié le code :

Code:
<script src="ADRESSE_FICHIER" type="text/javascript"></script>

Biensur tu change : ADRESSE_FICHIER ;)
 
SI ;)

Mais, tu voit, tu a une balise <form> ( avec les element biensur ).

Rajoute : id="news"

après <form en laissant un espace ;)
 
ah! ca marche pour , mais pour italic, ca :
<input type="button" value="i" onclick="storeCaret('i')">

Non?

et pour les smilies?
 
Pour italique, c'est ça mais les smileys c'est un autre code ^^

Dans le fichier .js, ajoute ce code à la fin :

Code:
function smile(smiley)

{

var message = document.form1.message.value;

document.form1.message.value = message + smiley;

}

Ensuite : <img src="images/smileys/content1.gif" OnClick="smile(':)')" />

( c'est un exemple ;) )
 
Ca ne marche pas, je pense que c'est a cause de mon fichier Js, le voici!

var isMozilla = (navigator.userAgent.toLowerCase().indexOf('gecko')!=-1) ? true : false;
var regexp = new RegExp("[\r]","gi");

function storeCaret(selec) {
if (isMozilla) {
oField = document.forms['news'].elements['message'];
objectValue = oField.value;
deb = oField.selectionStart;
fin = oField.selectionEnd;
objectValueDeb = objectValue.substring( 0 , oField.selectionStart );
objectValueFin = objectValue.substring( oField.selectionEnd , oField.textLength );
objectSelected = objectValue.substring( oField.selectionStart ,oField.selectionEnd );

// alert("Debut:'"+objectValueDeb+"' ("+deb+")\nFin:'"+objectValueFin+"' ("+fin+")\n\nSelectionné:'"+objectSelected+"'("+(fin-deb)+")");

oField.value = objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]" + objectValueFin;
oField.selectionStart = strlen(objectValueDeb);
oField.selectionEnd = strlen(objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]");
oField.focus();
oField.setSelectionRange(
objectValueDeb.length + selec.length + 2,
objectValueDeb.length + selec.length + 2);
}
else
{
oField = document.forms['news'].elements['message'];
var str = document.selection.createRange().text;
if (str.length>0)
{
// Si on a selectionné du texte
var sel = document.selection.createRange();
sel.text = "[" + selec + "]" + str + "[/" + selec + "]";
sel.collapse();
sel.select();
}
else
{
oField.focus(oField.caretPos);
// alert(oField.caretPos+"\n"+oField.value.length+"\n")
oField.focus(oField.value.length);
oField.caretPos = document.selection.createRange().duplicate();
var bidon = "%~%";
var orig = oField.value;
oField.caretPos.text = bidon;
var i = oField.value.search(bidon);
oField.value = orig.substr(0,i) + "[" + selec + "][/" + selec + "]" + orig.substr(i, oField.value.length);
var r = 0;
for(n = 0; n < i; n++)
{if(regexp.test(oField.value.substr(n,2)) == true){r++;}};
pos = i + 2 + selec.length - r;
//placer(document.forms['news'].elements['message'], pos);
var r = oField.createTextRange();
r.moveStart('character', pos);
r.collapse();
r.select();
}
}
}
function smile(smiley)

{

var message = document.form1.message.value;

document.form1.message.value = message + smiley;

}
 
Le bbcode marche nn ?

Pour les smileys, voila la fonction addaptée à ton script :

Code:
function smile(smiley)

{

var message = document.news.message.value;

document.news.message.value = message + smiley;

}
 
ba met ce code :

Code:
function smile(smiley)

{

var oFieldsmiley = document.forms['news'].elements['message'];

document.news.message.value = oFieldsmiley + smiley;

}
 
Code:
function toolBar(textarea,bt_img_path,smilies_img_path)
{
	this.addButton		= function() {}
	this.addSmiley		= function() {}
	this.addSpace		= function() {}
	this.draw			= function() {}
	this.moreSmilies	= function() {}
	this.btStrong		= function() {}
	this.btEm			= function() {}
	this.btIns			= function() {}
	this.btDel			= function() {}
	this.btQ			= function() {}
	this.btBquote		= function() {}
	this.btCode			= function() {}
	this.btColor		= function() {}
	this.btPre			= function() {}
	this.btHr			= function() {}
	this.btLink			= function() {}
	this.btAcronym		= function() {}
	this.btEmail		= function() {}
	this.btNospam		= function() {}
	this.btImgLink		= function() {}
	this.btSmilies		= function() {}
	this.barSmilies		= function() {}

	if (!document.createElement) {
		return;
	}

	if ((typeof(document["selection"]) == "undefined")
	&& (typeof(textarea["setSelectionRange"]) == "undefined")) {
		return;
	}

	var toolbar = document.createElement("div");
	toolbar.id = "toolbar";

	var smilies = document.createElement("div");
	smilies.id = "smilies";
	smilies.style.display = 'none';
	smilies.style.padding = '0.3em 0';

	function addButton(src, title, fn)
	{
		var i = document.createElement('img');
		i.src = src;
		i.title = title;
		i.onclick = function() { try { fn() } catch (e) { } return false };
		i.tabIndex = 400;
		toolbar.appendChild(i);
		addSpace(2);
	}

	function addSmiley(src, txt)
	{
		var i = document.createElement('img');
		i.src = src;
		i.title = txt;
		i.style.verticalAlign = 'middle';
		i.onclick = function() { try { encloseSelection(txt, '') } catch (e) { } return false };
		i.tabIndex = 400;
		smilies.appendChild(i);
		addSpace(2);
	}

	function addSpace(w)
	{
		s = document.createElement('span');
		s.style.padding='0 '+w+'px 0 0';
		s.appendChild(document.createTextNode(' '));
		toolbar.appendChild(s);
	}

	function encloseSelection(prefix, suffix, fn)
	{
		textarea.focus();
		var start, end, sel, scrollPos, subst;

		if (typeof(document["selection"]) != "undefined") {
			sel = document.selection.createRange().text;
		} else if (typeof(textarea["setSelectionRange"]) != "undefined") {
			start = textarea.selectionStart;
			end = textarea.selectionEnd;
			scrollPos = textarea.scrollTop;
			sel = textarea.value.substring(start, end);
		}

		if (sel.match(/ $/)) { // exclude ending space char, if any
			sel = sel.substring(0, sel.length - 1);
			suffix = suffix + " ";
		}

		if (typeof(fn) == 'function') {
			var res = (sel) ? fn(sel) : fn('');
		} else {
			var res = (sel) ? sel : '';
		}

		subst = prefix + res + suffix;

		if (typeof(document["selection"]) != "undefined") {
			var range = document.selection.createRange().text = subst;
			textarea.caretPos -= suffix.length;
		} else if (typeof(textarea["setSelectionRange"]) != "undefined") {
			textarea.value = textarea.value.substring(0, start) + subst +
			textarea.value.substring(end);
			if (sel) {
				textarea.setSelectionRange(start + subst.length, start + subst.length);
			} else {
				textarea.setSelectionRange(start + prefix.length, start + prefix.length);
			}
			textarea.scrollTop = scrollPos;
		}
	}

	function draw()
	{
		textarea.parentNode.insertBefore(smilies, textarea);
		textarea.parentNode.insertBefore(toolbar, textarea);
	}

	function moreSmilies(txt)
	{
		l = document.createElement('strong');
		l.style.padding='1em';
		l.style.cursor='pointer';
		l.onclick = function() { popup_smilies(); };
		l.appendChild(document.createTextNode(txt));
		smilies.appendChild(l);
	}

	// ---
	function singleTag(tag)
	{
		var stag = '['+tag+']';
		var etag = '[/'+tag+']';
		encloseSelection(stag,etag);
	}

	function btStrong(label)
	{
		addButton(bt_img_path+'bt_strong.png',label,
		function() { singleTag('b'); });
	}

	function btEm(label)
	{
		addButton(bt_img_path+'bt_em.png',label,
		function() { singleTag('i'); });
	}

	function btIns(label)
	{
		addButton(bt_img_path+'bt_ins.png',label,
		function() { singleTag('u'); });
	}

	function btDel(label)
	{
		addButton(bt_img_path+'bt_del.png',label,
		function() { singleTag('s'); });
	}

	function btQ(label)
	{
		addButton(bt_img_path+'bt_quote.png',label,
		function() { singleTag('q'); });
	}

	function btBquote(label)
	{
		addButton(bt_img_path+'bt_bquote.png',label,
		function() { singleTag('quote'); });
	}

	function btCode(label)
	{
		addButton(bt_img_path+'bt_code.png',label,
		function() { singleTag('c'); });
	}

	function btPre(label)
	{
		addButton(bt_img_path+'bt_pre.png',label,
		function() { singleTag('code'); });
	}

	function btColor(label)
	{
		addButton(bt_img_path+'bt_color.png',label,
		function() { popup_color_picker(); });
	}

	function btImgLink(label,msg_url)
	{
		addButton(bt_img_path+'bt_img_link.png',label,
		function() {
			encloseSelection('','',
			function(str) {
				var href = window.prompt(msg_url,str);
				if (!href) { return str; }

				return '[img]'+href+'[/img]';
			});
		});
	}

	function btHr(label)
	{
		addButton(bt_img_path+'bt_hr.png',label,
		function() {
			encloseSelection('[---]','');
		});
	}

	function btLink(label,msg_url,msg_label)
	{
		addButton(bt_img_path+'bt_link.png',label,
		function() {
			encloseSelection('','',
			function(str) {
				var href = window.prompt(msg_url,str);
				if (!href) { return str; }

				var label = window.prompt(msg_label,str);

				if (label) {
					return '[url="'+href+'"]'+label+'[/url]';
				} else {
					return '[url]'+href+'[/url]';
				}
			});
		});
	}

	function btAcronym(label,msg_title,msg_label)
	{
		addButton(bt_img_path+'bt_acronym.png',label,
		function() {
			encloseSelection('','',
			function(str) {
				var label = window.prompt(msg_label,str);
				if (!label) { return str; }

				var title = window.prompt(msg_title,'');

				if (title) {
					return '[acronym="'+title+'"]'+label+'[/acronym]';
				} else {
					return '[acronym]'+label+'[/acronym]';
				}
			});
		});
	}

	function btEmail(label,msg_addresse,msg_label)
	{
		addButton(bt_img_path+'bt_email.png',label,
		function() {
			encloseSelection('','',
			function(str) {
				var href = window.prompt(msg_addresse,'');
				if (!href) { return str; }

				var label = window.prompt(msg_label,str);

				if (label) {
					return '[email="'+href+'"]'+label+'[/email]';
				} else {
					return '[email]'+href+'[/email]';
				}
			});
		});
	}

	function btNospam(label,msg_addresse,msg_label)
	{
		addButton(bt_img_path+'bt_nospam.png',label,
		function() {
			encloseSelection('','',
			function(str) {
				var href = window.prompt(msg_addresse,'');
				if (!href) { return str; }

				var label = window.prompt(msg_label,str);

				if (label) {
					return '[nospam="'+href+'"]'+label+'[/nospam]';
				} else {
					return '[nospam]'+href+'[/nospam]';
				}
			});
		});
	}

	function btSmilies(label)
	{
		addButton(bt_img_path+'bt_smilies.png',label,
		function()
		{
			element = document.getElementById('smilies');

			if (element.style.display == 'block' )
			{
				textarea.focus();
				element.style.display = 'none';
			}
			else {
				textarea.focus();
				element.style.display = 'block';
			}
		});
	}

	function barSmilies(smiliesTxt,smiliesImg)
	{
		for (var i=0; i<smiliesTxt.length; i++){
			addSmiley(smilies_img_path+smiliesImg[i],smiliesTxt[i]);
		}
	}

	// methods
	this.addButton		= addButton;
	this.addSmiley		= addSmiley;
	this.addSpace		= addSpace;
	this.draw			= draw;
	this.moreSmilies	= moreSmilies;
	this.btStrong		= btStrong;
	this.btEm			= btEm;
	this.btIns			= btIns;
	this.btDel			= btDel;
	this.btQ			= btQ;
	this.btBquote		= btBquote;
	this.btCode			= btCode;
	this.btColor		= btColor;
	this.btPre			= btPre;
	this.btHr			= btHr;
	this.btLink			= btLink;
	this.btAcronym		= btAcronym;
	this.btEmail		= btEmail;
	this.btNospam		= btNospam;
	this.btImgLink		= btImgLink;
	this.btSmilies		= btSmilies;
	this.barSmilies		= barSmilies;
}

Voici le code d'une fonction Js de mon forum, (voir ici, en bas de la page : http://forum.tuning-ordi.com/viewtopic.php?id=77 )

Peut-tu m'aider a en faire quelque hose pour mon forum??

Merci
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut