Mathias a écrit:en ce qui concerne le curseur dans les posts, je trouve ça aussi assez pénible... mais comme un passage à phpbb3 est envisagé (reste à savoir si c'est à court ou moyen terme...), ce n'est peut être pas le moment de se lancer là dedans ???
Tu sais, tu pourrais modifier très simplement le rajout des smileys
à l'endroit où se trouve le curseur. Il suffit, au moment du clic sur le smiley en question de lancer la procédure suivante :
- Code: Tout sélectionner
//****************************************************************************************
// Fonction d'insertion d'un smiley
// bbtxt : chaine correspondant au smiley (:lol:)
//****************************************************************************************
function bbsmiley(bbtxt, formulaire, champ) {
var txtarea = eval('document.' + formulaire + '.' + champ);
txtarea.focus();
// Rajout des bbcodes souhaités
bbcodecursor (txtarea,bbtxt);
storeCaret(txtarea);
}
La fonction bbcodecursor c'est celle-là (à noter que c'est la même utilisée pour mettre une balise bbcode où se trouve le curseur ou bien encadrer une sélection de 2 balises bbcodes) :
- Code: Tout sélectionner
//****************************************************************************************
// Fonction d'insertion d'un bbcode à l'emplacement du curseur ou avant la sélection
//****************************************************************************************
function bbcodecursor (txtarea,bbstyle) {
if ((clientVer >= 4) && is_ie && is_win) {
theSelection = document.selection.createRange().text;
if (!theSelection) {
// Navigateur IE : pas de sélection préalable
var range = document.selection.createRange();
var insText = range.text;
range.text = insText + bbstyle;
range = document.selection.createRange();
if (insText.length == 0) range.move('character', -bbstyle.length);
else range.moveStart('character', insText.length + bbstyle.length);
return;
}
// Navigateur IE : texte préalablement sélectionné
document.selection.createRange().text = bbstyle + theSelection;
return;
} else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0)) {
// Navigateur NS : texte préalablement sélectionné
if ( bbstyle != '[*]' ) mozWrap(txtarea, bbstyle, bbstyle);
else mozWrap(txtarea, bbstyle, '');
return;
} else {
// Navigateur NS : pas de sélection préalable
var selLength = txtarea.textLength;
var selCursor = txtarea.selectionStart;
var s1 = (txtarea.value).substring(0,selCursor);
var s2 = (txtarea.value).substring(selCursor, selLength);
txtarea.value = s1 + bbstyle + s2;
selCursor += bbstyle.length
txtarea.selectionStart = selCursor;
txtarea.selectionEnd = selCursor;
}
}
Quant à la fonction storeCaret, la voilà :
- Code: Tout sélectionner
//****************************************************************************************
// Fonction de récupération de la position du curseur
//****************************************************************************************
function storeCaret(textEl) {
alert(textE1);
if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();
}
Il manque peut-être des variables mais si tel est le cas je t'envoie le tout.
Je pense que rapidement ça pourrait être implémenté.
Amicalement.
LTDB_ki_propose_mais_c'est_le_boss_ki_dispose