Commit 636dc820 authored by Cerdic's avatar Cerdic

minification des fichiers statiques et ecriture versionnee sur le disque, avec...

minification des fichiers statiques et ecriture versionnee sur le disque, avec affichage dans la console d'un numero de version correspondant a celui du fichier sur le disque
parent 023b803e
......@@ -46,8 +46,16 @@ function action_api_offline_dist($arg = null, $return = false, $cached_or_refres
include_spip('compresseur_fonctions');
}
$t = minifier($t, $m[1]);
$t = str_replace("\n}","}", $t);
$t = str_replace("\n.",".", $t);
$t = str_replace("\n;",";", $t);
$t = str_replace(",\n",",", $t);
$t = str_replace(";\n",";", $t);
$t = str_replace("{\n","{", $t);
$t = str_replace("(\n","(", $t);
$t = str_replace("[\n","[", $t);
$cache_file = sous_repertoire(_DIR_VAR, 'offline') . $arg;
ecrire_fichier($cache_file, $t);
offline_ecrire_fichier_statique_versionne($cache_file, $t);
}
}
}
......
......@@ -33,6 +33,47 @@ function offline_cache_hash($version_editoriale) {
return substr(md5($s),0,8);
}
/**
* Ecrire le fichier statique du service en versionnant a cote les fichiers
* ce qui permet d'avoir un historique date de ce qu'on a envoyé aux utilisateurs
* @param string $filename
* @param string $contenu
*/
function offline_ecrire_fichier_statique_versionne($filename, $contenu) {
$service = basename($filename);
$extension = explode('.', $filename);
$extension = end($extension);
$filebase = substr($filename, 0, -strlen(".$extension"));
// trouver la derniere version du fichier ecrite
// local/offline/sw.1.js
// local/offline/sw.2.js
// local/offline/sw.js contient une copie de la derniere version
$version = 0;
$existing = glob($filebase . ".*.$extension");
foreach ($existing as $f) {
$f = explode('.', $f);
array_pop($f);
$v = intval(end($f));
if ($v>$version) {
$version = $v;
}
}
// tester si un fichier existe et si la nouvelle version est différente ou non
if (file_exists($filename)) {
$old_version = file_get_contents($filename);
$offline_version_code = "\noffline['$service']=$version;";
if ($old_version !== $contenu . $offline_version_code) {
// nouvelle version :
$version++;
$offline_version_code = "\noffline['$service']=$version;";
$filename_version = "$filebase.$version.$extension";
ecrire_fichier($filename_version, $contenu . $offline_version_code);
@copy($filename_version, $filename);
}
}
}
/**
* Retrouver l'URL relative du site (ou rien si ca n'en est pas une)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment