Sélectionner du code [Réglé]
Jagang Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre Jagang
- Inscrit le : 06/03/2011
- Site internet
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
benflovideo Membre non connecté
-
Modérateur
- Voir le profil du membre benflovideo
- Inscrit le : 13/03/2010
- Groupes :
-
Equipe Modération
-
Equipe Communication
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
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
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."
Jagang Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre Jagang
- Inscrit le : 06/03/2011
- Site internet
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
Jagang Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre Jagang
- Inscrit le : 06/03/2011
- Site internet
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
Édité par Jagang Le 09/03/2011 à 00h09
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
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."
Jagang Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre Jagang
- Inscrit le : 06/03/2011
- Site internet
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
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
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."
Jagang Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre Jagang
- Inscrit le : 06/03/2011
- Site internet
Merci, j'ai bien trouver dans le fichier que tu m'as indiqué.
Merci
Cordialement
Jagang
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
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."
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie