Test de PrismJS
Petite présentation de PrismJs développé par Léa Verrou qui permet d'afficher sur son blog des portions de code pour plusieurs langages de programmation (css, html, php, javascript. Et d'autres klangages non spécifiques aux sites Internet.
Très classiquement, on insère le code à afficher entre une paire de blocs de balises <pre class="language-php"><code> et </code></pre>.
Le langage employé sera précisé dans la classe de la balise <pre> comme ci-dessus.
Dans le cas de code PHP, il est nécessaire de transformer les caractères < et > en leurs entités HTML.
Code inline
<?php
// if (!defined('PLX_ROOT')) exit;
const TIMESTAMP_FORMAT = 'D, d M Y H:i:s';
session_start();
if(empty($_GET)) {
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename(__FILE__));
header('Content-Length: '.filesize(__FILE__));
header('Last-Modified: '.gmdate(TIMESTAMP_FORMAT, filemtime(__FILE__)).' GMT');
header('Expires: '.gmdate(TIMESTAMP_FORMAT, time() + 7200));
readfile(__FILE__);
exit;
}
?>
Mais on peut aussi employer le code d'un fichier hébergé chez Github et chez BitBucket.
Le principe est d'envoyer une requête JSONP et en retour, on reçoit le code à afficher, encodé en base64.
La syntaxe à employer est celle-ci :
<pre data-jsonp="https://api.github.com/repos/leaverou/prism/contents/prism.js" class="language-javascript">Cette partie sera affichée en cas d'échec</pre>.
L'adresse de la requête est précisée dans l'attribut data-jsonp. Comme dans l'exemple précédent, le langage est précisé dans la class.
Il n'y a pas de traitement particulier à faire pour le code PHP, vu que le code ne transite pas par le serveur mais est reçu par le navigateur qui fait le traitement approprié.
<?php
// Structure du cache :
$cache = array(
'plugin1' => array(
'3000' => array(
'dossier_archives/plugin1-3.zip', '2015-10-03', '3.0', 'http://www.monsite.com/depot/',
'Jean Khol', 'http://www.monsite.com',
'Description de mon super plugin plugin3 en version 3.0', 'Aucun pré-requis'
),
'2500' => array(
'dossier_archives/plugin1-2.zip', '2015-09-23', '2.5', 'http://www.monsite.com/depot/',
'Jean Khol', '',
'Description de mon super plugin plugin3 en version 3.0', ''
),
'0600' => array(
'dossier_archives/plugin1-2.zip', '2015-09-23', '0.6', 'http://www.monsite.com/depot/',
'Michel Martin', 'http://www.monsite.com',
'1ère R.C. candidate de mon super plugin plugin3 en version 3.0', 'Aucun pré-requis'
)
),
// ..........
'plugin99' => array(
'1000' => array(
'dossier_archives/plugin99-master.zip', '2015-10-03', '1.0', 'http://www.monsite.com/depot/',
'Michel Martin', 'http://www.monsite.com',
'Description de mon super plugin plugin99', 'Jquery, Pluxml 5.4'
)
)
);
// Pour récupérer le catalogue sur un site distant :
$repo = 'http://www.monsite.com/page_accueil/';
$cache = json_decode(file_get_contents($repo.'/?json'), true);
// toutes les versions du plugin plugin3 :
$versions = $cache['plugin3'];
// dernière version du plugin plugin3 :
$lastRelease = $versions[array_keys($versions)[0]]
// tout savoir sur la dernière version :
list($download, $filedate, $version, $repository, $author, $site, $description, $requirements) = $lastRelease;
/*
* $download: chemin relatif pour télécharger l'archive zip du plugin
* $filedate: date de l'archive zip
* $repo: adresse de base ou sont stockés les archives zip et où est située la page d'accueil pour afficher le dépôt
* Pour télécharger un plugin :
* if (substr($repository, -1) != '/')
* $repository .= '/';
* $archive = file_get_contents($repository.$download) ;
* */
?>
Toute la documentation en anglais est disponible sur le site de PrismJS.