Pages: 1
|
Membre
|
Bonjour.
Je voudrais une coloration syntaxique pour mes codes sources, mais pas dans des fichiers .php, mais dans mes codes.
Pour tous les codes exécutables (langages interprétés), il ne faut pas modifier les fichiers sources, puisque ce sont ceux qui seront téléchargés.
Exemples :
http://free-apps.evoconcept.net/logiciels/calculatrice/Calculatrice.py
http://free-apps.evoconcept.net/web/resizer/taille-texte.js
Pour l'instant, je voudrais juste colorer des .py .js et .php
Et pour les .php, comment faire pour qu'ils ne soient pas interprétés, autrement qu'en les appelant fichier.txt, ou qu'en faisant header content-type:text ?
Merci.
|
Admin
|
Bonjour,
pour colorer du code, je te conceil d'utiliser des système de coloration tel que geshi, voici un tutoriel:
http://www.siteduzero.com/tutoriel-3-38905-geshi-colorer-son-code.html
Je ne suis pas sûr de comprendre ce que tu veux, mais voici comment faire:
codecolor.php
<?php
include('geshi.php');
$dossier_sources = 'http://free-apps.evoconcept.net/logiciels';
$code = file_get_contents($dossier_sources.$_GET['filename']);
$geshi = new GeSHi($code, $GET['langage']);
echo $geshi->parse_code();
?>
Ensuite, il te suffira d'appeler codecolor.php?filename=calculatrice%2FCalculatrice.py&langage=python
Et tu dois désactiver l'exécution des codes en mettant ceci dans le fichier .htaccess du dossier contenant les sources:
AddType text/plain .php
AddType text/plain .py
Cordialement
|
Membre
|
Bonjour.
Ça marche pas.
Les erreurs sont là : http://free-apps.evoconcept.net/code.php?url=http://free-apps.evoconcept.net/logiciels/calculatrice/Calculatrice.py&lang=python
Le code.php :
<?include_once('geshi.php');
$geshi=new GeSHi(file_get_contents($_GET['url']),$GET['lang']);
echo $geshi->parse_code();?>
Lien vers la source :
<input type="button" value="Source" onclick="window.location='../../code.php?url=<?echo urlencode("http://free-apps.evoconcept.net$src");?>&lang=<?echo $language;?>';">
Merci.
Et puis-je supprimer les dossier docs et contrib, ou sont-ils necessaires ?
Cordialement.
|
Admin
|
Bonjour,
premièrement, je te conseil d'utiliser le code que je t'ai donné, car celui que tu a mis comporte une grande faille de sécurité.
Et l'erreur, c'est que j'avais fait une erreur de touche, et j'ai oublié de mettre le _ dans le deuxième GET.
Donc le code doit être:
<?php
include('geshi.php');
$dossier_sources = 'http://free-apps.evoconcept.net/logiciels';
$code = file_get_contents($dossier_sources.$_GET['filename']);
$geshi = new GeSHi($code, $_GET['langage']);
echo $geshi->parse_code();
?>
Et oui, tu peut supprimer les deux dossiers docs et contrib.
Cordialement
|
Membre
|
Merci.
Mais mes codes sont dans des dossiers : la calculatrice est dans /logiciels/calculatrice/ et je suppose que pour que le code fonctionne pour tous les logiciels, et pour tous les scripts du dossier /web/nom_du_script/, il faudra mettre soit le chemin complet dans l'URL, soit mettre ce code pour chaque logiciel ou script.
Puis, de toute façon, ça ne change rien :
Warning: array_keys() [function.array-keys]: The first argument should be an array in /home/sites/f/r/free-apps.evoconcept.net/geshi.php on line 1930
Warning: Invalid argument supplied for foreach() in /home/sites/f/r/free-apps.evoconcept.net/geshi.php on line 1930
Warning: Invalid argument supplied for foreach() in /home/sites/f/r/free-apps.evoconcept.net/geshi.php on line 2294
Warning: implode() [function.implode]: Argument must be an array in /home/sites/f/r/free-apps.evoconcept.net/geshi.php on line 3246
Warning: array_keys() [function.array-keys]: The first argument should be an array in /home/sites/f/r/free-apps.evoconcept.net/geshi.php on line 3269
Warning: Invalid argument supplied for foreach() in /home/sites/f/r/free-apps.evoconcept.net/geshi.php on line 3269
Warning: Invalid argument supplied for foreach() in /home/sites/f/r/free-apps.evoconcept.net/geshi.php on line 3310
Warning: array_keys() [function.array-keys]: The first argument should be an array in /home/sites/f/r/free-apps.evoconcept.net/geshi.php on line 3361
Warning: Invalid argument supplied for foreach() in /home/sites/f/r/free-apps.evoconcept.net/geshi.php on line 3361
Warning: array_keys() [function.array-keys]: The first argument should be an array in /home/sites/f/r/free-apps.evoconcept.net/geshi.php on line 3506
Warning: Invalid argument supplied for foreach() in /home/sites/f/r/free-apps.evoconcept.net/geshi.php on line 3506
Cordialement.
|
Membre
|
J'ai fait une faute de frappe pour le nom d'une variable : dans la source, "langage" (à la française), et dans la fiche, "language" (à l'anglaise).
Mais pour désactiver l'execution d'UN PHP, comment faire ? AddType text/plain moncode.php ?
Merci.
|
Admin
|
Bonjour,
Non, tu doit mettre:
AddType text/plain .php
Cordialement
|
Membre
|
Bonjour.
Mais si je fais ça, tous mes fichiers .php du dossier seront désactivés, non ?
Cordialement.
|
Admin
|
Bonjour,
essaye ça:
<Files fichier.php>
AddType text/plain .php
</Files>
Cordialement
|
Membre
|
Merci.
|
Membre
|
J'ai amélioré ma page. J'ai ajouté un panneau en haut, fixé, contenant la barre de navigation, le lien vers la page d'accueil, le lien vers la page de présentation du logiciel/script, un bouton pour afficher/masquer les lignes, et une liste de choix pour sélectionner la coloration syntaxique à utiliser.
Problème n°1 :
Les langages sont classés par ordre alphabétique. Comment afficher dans le select la valeur <?echo$_GET['lang'];?> par défaut ?
Problème n°2 :
J'ai trop de langages ! J'ai mélangé les langages proposés dans la coloration syntaxique de Support-Du-Web et de Gedit, mon éditeur de texte. Ce qui me fait un total de 50 langues.
Lesquels dois-je supprimer, sachant que je ne programme dans quasiment aucun de ces langages, mais que des développeurs utilisant d'autres langages pourraient vouloir utiliser une autre coloration syntaxique (remplacer la coloration Python par TCL quand il y a Tkinter par exemple), ou pour mettre un valeur un langage à l'intérieur d'un autre (CSS ou Javascript dans HTML, par exemple).
La page du code source de ma calculatrice : http://free-apps.evoconcept.net/code.php?root=/logiciels/calculatrice/&file=Calculatrice.py&lang=py&lines=0
Merci.
|
Admin
|
Bonjour,
pour le 1er problème, il suffit d'ajouter selected="selected" au langage par défaut.
la meilleure solution est de faire quelque chose de semblable à:
<select [...]><?php
$langages = array('ada' => 'Ada','apache' => 'Apache', 'as' => 'Actionscript','asm' => 'Assembleur'[...]);
foreach($langages as $k=>$v)
{
if($k == $_GET['lang'])
{
echo '<option value="'.$k.'" selected="selected">'.$v.'</option>';
}
else
{
echo '<option value="'.$k.'">'.$v.'</option>';
}
}
?>
</select>
Et pour ton deuxième problème, je te conseil de mettre les languages les plus importants au début de la liste et les autres après.
Cordialement
|
Membre
|
Merci.
J'ai gardé l'ordre alphabétique, sauf pour le plain/text que j'ai placé en haut.
J'ai de nouveaux problèmes.
Je voudrais proposer d'imprimer le code source, avec la coloration syntaxique sélectionnée, avec les lignes si les lignes sont activées, mais sans ma barre d'outils. Y a t-il une fonction qui me permettrait de n'imprimer que le code source, ou une fonction pour imprimer une autre page, avec comme URL, la même que la page actuelle avec par exemple &hideToolBar=1 à la fin de l'adresse.
Même question pour enregistrer en PDF.
Merci.
|
Admin
|
Bonjour,
pour imprimer, tu peut mettre un bouton:
<input type="button" onclick="javascript:window.print();" value="Imprimer" />
Ensuite, tu doit faire une deuxième feuille de style spéciale pour l'impression:
<link href="print.css" rel="stylesheet" type="text/css" media="print" />
et dans le fichier print.css tu cachera la toolbar avec display:none;
Et pour la version pdf, regarde:
http://html2pdf.fr/
et sert toi des exemples qu'ils donnent pour l'adapter à ton site.
Cordialement
|
Membre
|
Merci.
L'image qui empêche le haut du code de s'afficher sous la barre s'appelle id="haut", la barre d'outils s'appelle id="toolbar".
Mon CSS :
<STYLE type="text/css">
@media print {#toolbar,#haut{display:none;}}
</style>
C'est bon comme ça ? Je ne peux pas tester, je n'ai pas d'imprimante, j'ai supprimé le gestionnaire d'imprimante, ainsi que tous les drivers d'impression.
|
Admin
|
Bonjour,
Oui, ça devrait fonctionner.
Cordialement
|
Membre
|
Merci.
Pour le PDF, j'annule le projet : trop long à faire, trop complexe, et pas nécessaire, puisqu'il est possible de télécharger directement la source en texte éditable avec n'importe quel éditeur. De plus, la fonction d'impression permet d'enregistrer, sous Linux en tout cas, en PDF.
Mais mon dernier problème, c'est que mon PDF n'est pas complet : je n'ai qu'une page, contenant les 94 premières lignes de mon code. Est-ce mon PDF qui est incomplet ou est-ce l'impression qui n'utilisera qu'une seule et unique page ?
Comment mettre tout le code dans le PDF (toujours à partir de la fonction d'impression) ?
Mon problème est originaire de JavaScript ou de UNIX/Linux (n'ayant plus de logiciels d'impressions, je pense plutôt que c'est JavaScript.) ?
Merci.
|
Admin
|
Bonjour,
Chez moi, l'enregistrement en pdf fonctionne sans aucun problème. Est-tu sûr d'avoir bien coché la case "Toutes les pages"?
Cordialement
|
Membre
|
Désolé, j'utilise rarement des PDF et je n'avais pas remarqué que mon lecteur PDF sépare les pages au lieu de les mettre à la suite. Donc pour changer de page, il faut appuyer sur le bouton suivant ou précédent (ou aller à...), et non pas descendre la srollbar jusqu'à la page suivante, comme sur d'autres lecteurs PDF.
Au temps pour moi.
Merci.
|
Pages: 1
|