Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/01/2014, à 13:11

Reflexive

Extension BBCode

Bonjour

D'après la documentation php, l'extension bbcode ferait partie du module standard et il n'y aurait pas besoin de l'installer.

Avec Wamp, on pouvait accéder à la configuration d'Apache et de PHP via une icône Wamp, qui indiquait que les services tournaient. Un des menus contextuels de cette icône faisait apparaître une liste impressionnante d'extensions dont certaines étaient cochées. Il me se semble qu'une de ces extensions, qui n'était pas cochée était bbcode. Mais ça dit que pour s'en servir, il suffisait de cocher.

Comme sous Lamp il n'y a pas de tels menus, je suppose - ou j'espère - qu'il doit y avoir quelque part un ficher où il suffirait d'enlever un # deant l'instruction qui activerait l'extension. J'espérais que ce soit php.ini mais non, pas de trace d'extensions. Quelqu'un aurait une idée ?

Hors ligne

#2 Le 03/01/2014, à 13:38

Epehj

Re : Extension BBCode

Salut,

D'après mes recherches rapides, il faudrait installer php-text-wiki et/ou php-pear.

Voir ici


Linux user #447629 - Ubuntu user # 21770
C'est en sciant que Léonard devint scie

Hors ligne

#3 Le 09/01/2014, à 02:30

Reflexive

Re : Extension BBCode

J'avais installé ça, et j'avais installé aussi php5-dev comme il était conseillé ailleurs (il arrive un moment où on sait plus où on a vu quoi.). Au final, j'obtiens une erreur comme ça :

make: *** [php_bbcode.lo] Erreur 1
ERROR: `make' failed

Mais je me suis débrouillé autrement.

Hors ligne

#4 Le 09/01/2014, à 10:30

Epehj

Re : Extension BBCode

Tu t'es débrouillé comment ?
Ça pourrait en intéresser quelques uns, dans le futur wink


Linux user #447629 - Ubuntu user # 21770
C'est en sciant que Léonard devint scie

Hors ligne

#5 Le 13/01/2014, à 12:55

Reflexive

Re : Extension BBCode

Les balises bbcode, il faut pouvoir les interpréter pour en afficer la mise en forme. Il faut donc une fonction pre_replace() et deux tableaux, une avec les balises bbcode, l'autre avec sa traduction en html. Les trois fonctions qui suivent, je l'ai ai mises dans un fichier fonctions, qui est ajouté au début du script :

function prepare_pour_afficher($message)
	{
	return  preg_replace(bbcode(),htmlcode(),htmlspecialchars($message)) ;
	//return  nl2br($message) ;
	}

function bbcode()
	{
	$bbcode= array 
		(
		"/\n/",
		"/\[taille=(.+?)\](.+?)\[\/taille\]/si",
		"/\[color=(.+?)\](.+?)\[\/color\]/si",
		"/\[b\](.+?)\[\/b\]/si",
		"/\[i\](.+?)\[\/i\]/si",
		"/\[u\](.+?)\[\/u\]/si",
		"/\[left\](.+?)\[\/left\]/si",
		"/\[center\](.+?)\[\/center\]/si",
		"/\[right\](.+?)\[\/right\]/si",
		"/\[justify\](.+?)\[\/justify\]/si",
		"/\[note\](.+?)\[\/note\]/si",
		"/\[code\](.+?)\[\/code\]/si",
		"/\[img\](.+?)\[\/img\]/si",
		"/\[url=(.+?)\](.+?)\[\/url\]/si",
		"/\[url\](.+?)\[\/url\]/si"
		);
		
	return $bbcode ;
	}
	
function htmlcode()
	{
	$htmlcode= array 
		(
		"<br>",
		"<span style='font-size:$1em'>$2</span>", //l'anti-slash ne devrait pas être avant l'apostrophe?
		"<span style='color:$1'>$2</span>",
		"<b>$1</b>",
		"<i>$1</i>",
		"<u>$1</u>",
		"<div style='text-align:left'>$1</div>",
		"<div style='text-align:center'>$1</div>",
		"<div style='text-align:right'>$1</div>",
		"<div style='text-align:justify'>$1</div>",
		"<div style='width:50%;float:right'>$1</div>",
		"<div style='background-color:#FFCCCC;border:thick;font-family:\"Lucida Console\", \"Courier New\";'>$1</div>",
		"<img src='$1' border='0'>",
		"<a href=$1 target=_blank>$2</a>",
		"<a href=$1 target=_blank>$1</a>"
		);
		
	return $htmlcode ;
	}

Ensuite, j'ai fait une classe éditeur. En tête de fichier, avant le code php, j'ai ajouté le code qui suit. que l'on trouve à l'url http://actuel.fr.selfhtml.org/articles/ … /index.htm . C'est des méthodes pour sélectionner le contenu dans un textarea t pouvoir ainsi ajouter les balises bbcode.


<script language="JavaScript" type="text/javascript">
// Helpline messages
defaut_help = "Informations sur les boutons";
b_help = "Texte en gras";
i_help = "Texte en italique";
u_help = "Texte souligné";
l_help = "Aligner à gauche";
c_help = "Aligner au centre";
r_help = "Aligner à droite";
j_help = "Justifier";
q_help = "Citation";
o_help = "Liste ordonnée";
img_help = "Image";
url_help = "Lien hypertexte";
couleur_help = "Couleur du texte";
taille_help = "Taille de la police";

function helpline(help) 
	{
	document.editeur.informations.value = eval(help + "_help");
	}


function insertion(repdeb, repfin) 
	{  
	var input = document.forms['editeur'].elements['text'];  
	input.focus();  
	/* pour l'Explorer Internet */  
	if(typeof document.selection != 'undefined') 
		{    
		/* Insertion du code de formatage */    
		var range = document.selection.createRange();    
		var insText = range.text;    range.text = repdeb + insText + repfin;    
		/* Ajustement de la position du curseur */    
		range = document.selection.createRange();    
		if (insText.length == 0) 
			{      
			range.move('character', -repfin.length);    
			} 
		else 
			{      
			range.moveStart('character', repdeb.length + insText.length + repfin.length);
			}    
		range.select();  }  
		/* pour navigateurs plus récents basés sur Gecko*/  
		else if(typeof input.selectionStart != 'undefined')  
			{    
			/* Insertion du code de formatage */    
			var start = input.selectionStart;    
			var end = input.selectionEnd;    
			var insText = input.value.substring(start, end);    
			input.value = input.value.substr(0, start) + repdeb + insText + repfin + input.value.substr(end);
			/* Ajustement de la position du curseur */    
			var pos;    
			if(insText.length == 0) 
				{      
				pos = start + repdeb.length;    
				} 
			else 
				{      
				pos = start + repdeb.length + insText.length + repfin.length;    
				}    
			input.selectionStart = pos;    
			input.selectionEnd = pos;  
			}  /* pour les autres navigateurs */  
		else  
			{    
			/* requête de la position d'insertion */    
			var pos;    
			var re = new RegExp('^[0-9]{0,3}$');    
			while(!re.test(pos)) 
				{      
				pos = prompt("Insertion à la position (0.." + input.value.length + "):", "0");
				}    
			if(pos > input.value.length) 
				{      
				pos = input.value.length;    
				}    
				/* Insertion du code de formatage */    
				var insText = prompt("Veuillez entrer le texte à formater:");    
				input.value = 
					input.value.substr(0, pos) + repdeb + insText + repfin + input.value.substr(pos);
			}
	}
		
</script>

J'avais déjà fait des choses de ce genre il y a quelques années. Je m'étais alors inspiré du js du moteur de focum phpforum.

Ensuite, j'ai composé le formulaire. Par exemple, pour les boutons pour le gras, l'italique et le soulignement, j'ai fait comme ça :

		$bouton_gras = 
			"<input type='button' class='out' value = G ;  
			onMouseDown=this.className='click' ; 
			onClick=\"insertion('[b]', '[/b]')\" 
			onMouseOver=\"this.className='over'; helpline('b')\"; 
			onMouseUp=this.className='over'; 
			onMouseOut=\"this.className='out'; helpline('defaut')\";> " ;

		$bouton_italique = 
			"<input type='button' class='out' value = I ;  
			onMouseDown=this.className='click' ; 
			onClick=\"insertion('[i]', '[/i]')\" 
			onMouseOver=\"this.className='over'; helpline('i')\"; 
			onMouseUp=this.className='over'; 
			onMouseOut=\"this.className='out'; 
			helpline('defaut')\";>" ;

		$bouton_souligne = 
			"<input type='button' class='out' value = S ;  
			onMouseDown=this.className='click' ; 
			onClick=\"insertion('[u]', '[/u]')\" 
			onMouseOver=\"this.className='over'; helpline('u')\"; 
			onMouseUp=this.className='over'; 
			onMouseOut=\"this.className='out'; helpline('defaut')\">" ;


Voilà, en gros, comment j'essaie de me débrouiller. Sur un autre site on m'a signalé l'existence de jbbcode : http://jbbcode.com/docs/install .
Si on cherche une solution pour un éditeur ans que ce soit nécessairement à l'aide de bbcode, il y a aussi tinyMCE, parait-il très bien. http://www.tinymce.com/

En ce qui me concerne, je travaille sur une application en html/css-JS-PHP "pures", sans bibliothèques ni frameworks. Un peu à titre d'exercice. Je crois qu'il doit être sain de sinon maîtriser, d'avoir une bonne connaissance de ce qui se trouve à la base. Donc je fais cette application, j'espère qu'elle sera assez bien pour être mise en ligne et j'essayerai de la maintenir et de la développer. Mais ça sera aussi la dernière fois, c'est long, et c'est prise de tête.

Hors ligne