Annonces
Question aléatoire
Livre d'or

Par cOcO

Vous faites du super job !! merci

Livre d'or

Mini sondage
Etes-vous satisfait du support PHPBoost ?










Résultats

 
   Le 06/03/11 à 21h36 Citer      

Booster Fronde

Groupe: Membre

Sexe:
Inscrit le: 06/03/11
Messages: 5
Bonjour,
Nous avons fait un site avec PHPBoost. Sur le forum, on échange souvent du code, or, si ils sont longs, c'est pas facile de les sélectionner.
Sur certain site, il y a un système afin de sélectionner automatiquement tout le code dans une zone de code.
Est-ce que ça existe sur PHPBoost ou faut-il le faire soit même ? Si il faut le faire, comment s'y prendre ?

Merci d'avance
Cordialement
Jagang

pm http://libertybasic.fr/    
   Le 06/03/11 à 22h10 Citer      

Modérateur

Equipe Rédaction
Equipe Modération
Equipe test 4.0

Sexe:
Inscrit le: 13/03/10
Messages: 848
Lieu: Proche de Perpi...
Bonsoir,

Sur Phpboost, ce que tu demandes n'existe pas, en revanche, ceci peut t'intéresser. C'est le seul moyen afin de saisir du code.

Benji
____________________
Mon ptit site

pm http://www.trains-et-trainz.fr    
   Le 06/03/11 à 23h43 Citer      

Administrateur

Equipe historique

Sexe:
Inscrit le: 04/08/05
Messages: 11001
Lieu: Aix en Provence
Il n'y a pas la possibilité de sélectionner tout le code tel que le système est actuellement.
En revanche, je t'indique où est le code qui traite l'affichage de la balise code. Ca se passe dans /kernel/framework/content/parser/content_second_parser.class.php.
A la ligne 187 c'est pour les blocs de code, à la ligne 191 c'est pour mettre seulement une ligne en inline.
A cet endroit, le code rentré par l'utilisateur donc pas coloré (donc sans le formatage HTML) est dans $matches[4].
____________________
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++:
"There are two ways to write error-free programs; only the third works."

pm ben.popeye@phpboost.com http://www.phpboost.com    
   Le 08/03/11 à 22h35 Citer      

Booster Fronde

Groupe: Membre

Sexe:
Inscrit le: 06/03/11
Messages: 5
Merci bien de ton aide, je vais regarder ça dès que je peut, actuellement, le site ne fonctionne plus, mais ça viens de chez moi ...
Mais j'ai pas compris un truc, on peut avoir un bout de code en inline ? Comment fait-on en BBCode ?

Merci de ton aide
Cordialement
Jagang

pm http://libertybasic.fr/    
   Le 09/03/11 à 00h47 Citer      

Booster Fronde

Groupe: Membre

Sexe:
Inscrit le: 06/03/11
Messages: 5
Voici comment j'ai fait (soit pour aider les gens soit pour que l'on me crie dessus parce que j'ai pas mis ce qu'il faut où il faut) :

Déjà, la fonction qui sélectionne le code :
Code JAVASCRIPT :
// Sélectionne tout le code
function selectCode(a)
{
	// Get ID of code block
	var e = document.getElementById(a);
 
	// Not IE
	if (window.getSelection)
	{
		var s = window.getSelection();
		// Safari
		if (s.setBaseAndExtent)
		{
			s.setBaseAndExtent(e, 0, e, e.innerText.length - 1);
		}
		// Firefox and Opera
		else
		{
			var r = document.createRange();
			r.selectNodeContents(e);
			s.removeAllRanges();
			s.addRange(r);
		}
	}
	// Some older browsers
	else if (document.getSelection)
	{
		var s = document.getSelection();
		var r = document.createRange();
		r.selectNodeContents(e);
		s.removeAllRanges();
		s.addRange(r);
	}
	// IE
	else if (document.selection)
	{
		var r = document.body.createTextRange();
		r.moveToElementText(e);
		r.select();
	}
}
 

Je l'ai mise à la fin du fichier global.js, ne sachant pas où le mettre. C'est bien ?

Ensuite, dans /kernel/framework/content/parser/content_second_parser.class.php j'ai changé la fonction comme ceci (ligne 175) :
Code PHP :
<?php
function _callback_highlight_code($matches)
{
	global $LANG;
	static $identifiantNumeriqueDuCode, $randTxt;
 
	if(empty($randTxt))
		$randTxt = substr(md5(time()),0,5) . 'b';
 
	$line_number=!empty($matches[2]);
	$inline_code=!empty($matches[3]);
 
	$contents=$this->_highlight_code($matches[4],$matches[1],$line_number,$inline_code);
 
	$identifiantNumeriqueDuCode++;
	$identifiantDuCode = 'code_'.$randTxt.$identifiantNumeriqueDuCode;
 
	if(!$inline_code && !empty($matches[1]))
	{
		$contents='<span class="text_code">'.sprintf($LANG['code_langage'],strtoupper($matches[1])).' - <a href="javascript:javascript:selectCode(\''.$identifiantDuCode.'\')">Sélectionner ce code</a></span><div class="code" id="'.$identifiantDuCode.'">'.$contents.'</div>';
	}
	else if(!$inline_code && empty($matches[1]))
	{
		$contents='<span class="text_code">'.$LANG['code_tag'].' - <a href="javascript:javascript:selectCode(\''.$identifiantDuCode.'\')">Sélectionner ce code</a></span><div class="code" id="'.$identifiantDuCode.'">'.$contents.'</div>';
	}
 
	return $contents;
}
?>

$identifiantNumeriqueDuCode permet d'avoir un identifiant unique par chargement pour pouvoir correctement sélectionner le code.
$randTxt permet d'avoir un identifiant unique par page, pour éviter d'avoir des problèmes à cause de la prévisualisation.

Voila, ai-je bien fait les chose ?

Cordialement
Jagang



Edité par Jagang Le 09/03/11 à 01h09

pm http://libertybasic.fr/    
   Le 09/03/11 à 09h17 Citer      

Administrateur

Equipe historique

Sexe:
Inscrit le: 04/08/05
Messages: 11001
Lieu: Aix en Provence
Pour le code en inline :
Code BBCODE :
[code=php,0,1]echo 'toto';[/code]

Ca donne
echo 'toto';
.

Pour le code javascript, global.js est une solution convenable.

Quant à savoir si tu as bien fait les choses, j'ai rapidement lu le code, ça me semble pas mal. Ca fonctionne comme tu veux ?
____________________
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++:
"There are two ways to write error-free programs; only the third works."

pm ben.popeye@phpboost.com http://www.phpboost.com    
   Le 09/03/11 à 12h52 Citer      

Booster Fronde

Groupe: Membre

Sexe:
Inscrit le: 06/03/11
Messages: 5
Tout fonctionne correctement, merci.
Par contre, où est définit
$LANG['code_langage']
?
Simplement car il m'affiche quelque chose comme ça : Citation:
Code VB : - Sélectionner ce code

Et ça fait pas joli le ": -".

Merci
Cordialement
Jagang

pm http://libertybasic.fr/    
   Le 09/03/11 à 15h43 Citer      

Administrateur

Equipe historique

Sexe:
Inscrit le: 04/08/05
Messages: 11001
Lieu: Aix en Provence
Dans /lang/french/main.php je pense.
Mais pour le coup, le tiret ne doit pas être dans la variable de langue mais plutôt dans le code vers là où tu as modifié des choses.
Mais d'ailleurs, normalement il n'y est pas ce tiret. Ne serait-ce pas toi qui l'as rajouté par mégarde ?
____________________
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++:
"There are two ways to write error-free programs; only the third works."

pm ben.popeye@phpboost.com http://www.phpboost.com    
   Le 09/03/11 à 16h27 Citer      

Booster Fronde

Groupe: Membre

Sexe:
Inscrit le: 06/03/11
Messages: 5
J'ai rajouté le tiret et je veux enlever les deux-points.
Merci, j'ai bien trouver dans le fichier que tu m'as indiqué.

Merci
Cordialement
Jagang

pm http://libertybasic.fr/    
   Le 09/03/11 à 18h19 Citer      

Administrateur

Equipe historique

Sexe:
Inscrit le: 04/08/05
Messages: 11001
Lieu: Aix en Provence
Ah pardon, je n'avais pas bien compris ce que tu voulais.
____________________
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++:
"There are two ways to write error-free programs; only the third works."

pm ben.popeye@phpboost.com http://www.phpboost.com    
1 Utilisateur en ligne :: 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne: Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie
Annonces