Skip to content
Extraits de code Groupes Projets
Valider 5056dfbf rédigé par Fil's avatar Fil
Parcourir les fichiers

le filtre |compacte : unifier compacte{css} et compacte{js} sur le mode...

le filtre |compacte : unifier compacte{css} et compacte{js} sur le mode fichier->fichier et contenu->contenu ; reste a trouver moins moche que spip_get_file_contents comme nom de filtre :)
parent e177b56a
Branches
Étiquettes
Aucune requête de fusion associée trouvée
...@@ -471,6 +471,7 @@ ecrire/inc/boutons.php -text ...@@ -471,6 +471,7 @@ ecrire/inc/boutons.php -text
ecrire/inc/chercher_logo.php -text ecrire/inc/chercher_logo.php -text
ecrire/inc/chercher_rubrique.php -text ecrire/inc/chercher_rubrique.php -text
ecrire/inc/commencer_page.php -text ecrire/inc/commencer_page.php -text
ecrire/inc/compacte_js.php -text
ecrire/inc/cookie.php -text ecrire/inc/cookie.php -text
ecrire/inc/dater.php -text ecrire/inc/dater.php -text
ecrire/inc/discuter.php -text ecrire/inc/discuter.php -text
...@@ -500,7 +501,6 @@ ecrire/inc/informer_auteur.php -text ...@@ -500,7 +501,6 @@ ecrire/inc/informer_auteur.php -text
ecrire/inc/instituer_article.php -text ecrire/inc/instituer_article.php -text
ecrire/inc/instituer_auteur.php -text ecrire/inc/instituer_auteur.php -text
ecrire/inc/joindre.php -text ecrire/inc/joindre.php -text
ecrire/inc/jscompressor.php -text
ecrire/inc/lang_liste.php -text ecrire/inc/lang_liste.php -text
ecrire/inc/legender.php -text ecrire/inc/legender.php -text
ecrire/inc/legender_auteur.php -text ecrire/inc/legender_auteur.php -text
......
...@@ -14,6 +14,6 @@ ...@@ -14,6 +14,6 @@
* + form.js (jquery.com) * + form.js (jquery.com)
* + ajaxCallback.js (www.spip.net) * + ajaxCallback.js (www.spip.net)
*/ */
[(#CHEMIN{javascript/jquery-1.1.js}|spip_file_get_contents|compacte_js)] [(#CHEMIN{javascript/jquery-1.1.js}|compacte|spip_file_get_contents)]
[(#CHEMIN{javascript/form.js}|spip_file_get_contents|compacte_js)] [(#CHEMIN{javascript/form.js}|compacte|spip_file_get_contents)]
[(#CHEMIN{javascript/ajaxCallback.js}|spip_file_get_contents|compacte_js)] [(#CHEMIN{javascript/ajaxCallback.js}|compacte|spip_file_get_contents)]
...@@ -56,7 +56,6 @@ class SourceMap { ...@@ -56,7 +56,6 @@ class SourceMap {
* @param string generic source code * @param string generic source code
* @param array array with nested array with code rules * @param array array with nested array with code rules
*/ */
// http://doc.spip.org/@getMap
function getMap(&$source, &$delimeters) { function getMap(&$source, &$delimeters) {
# "unsigned" integer variables # "unsigned" integer variables
...@@ -151,7 +150,6 @@ class SourceMap { ...@@ -151,7 +150,6 @@ class SourceMap {
return $tempMap; return $tempMap;
} }
// http://doc.spip.org/@__endCharNoSlash
function __endCharNoSlash(&$source, $position, &$find, &$len) { function __endCharNoSlash(&$source, $position, &$find, &$len) {
$temp = strlen($find); $temp = strlen($find);
do { do {
...@@ -161,7 +159,6 @@ class SourceMap { ...@@ -161,7 +159,6 @@ class SourceMap {
return $position + $temp; return $position + $temp;
} }
// http://doc.spip.org/@__charNoSlash
function __charNoSlash(&$source, &$position) { function __charNoSlash(&$source, &$position) {
$next = 1; $len = $position - $next; $next = 1; $len = $position - $next;
while($len > 0 && $source{$len} === '\\') $len = $position - (++$next); while($len > 0 && $source{$len} === '\\') $len = $position - (++$next);
...@@ -196,13 +193,11 @@ class BaseConvert { ...@@ -196,13 +193,11 @@ class BaseConvert {
var $base, $baseLength; var $base, $baseLength;
// http://doc.spip.org/@BaseConvert
function BaseConvert($base) { function BaseConvert($base) {
$this->base = &$base; $this->base = &$base;
$this->baseLength = strlen($base); $this->baseLength = strlen($base);
} }
// http://doc.spip.org/@toBase
function toBase($num) { function toBase($num) {
$module = 0; $result = ''; $module = 0; $result = '';
while($num) { while($num) {
...@@ -212,7 +207,6 @@ class BaseConvert { ...@@ -212,7 +207,6 @@ class BaseConvert {
return $result !== '' ? $result : $this->base{0}; return $result !== '' ? $result : $this->base{0};
} }
// http://doc.spip.org/@fromBase
function fromBase($str) { function fromBase($str) {
$pos = 0; $len = strlen($str) - 1; $result = 0; $pos = 0; $len = strlen($str) - 1; $result = 0;
while($pos < $len) while($pos < $len)
...@@ -312,7 +306,6 @@ class JavaScriptCompressor { ...@@ -312,7 +306,6 @@ class JavaScriptCompressor {
* public constructor * public constructor
* creates a new BaseConvert class variable (base 36) * creates a new BaseConvert class variable (base 36)
*/ */
// http://doc.spip.org/@JavaScriptCompressor
function JavaScriptCompressor() { function JavaScriptCompressor() {
$this->__SourceMap = new SourceMap(); $this->__SourceMap = new SourceMap();
$this->__BC = new BaseConvert('0123456789abcdefghijklmnopqrstuvwxyz'); $this->__BC = new BaseConvert('0123456789abcdefghijklmnopqrstuvwxyz');
...@@ -331,7 +324,6 @@ class JavaScriptCompressor { ...@@ -331,7 +324,6 @@ class JavaScriptCompressor {
* compress JavaScript removing comments and somespaces (on by default) * compress JavaScript removing comments and somespaces (on by default)
* @param mixed view example and notes on class comments * @param mixed view example and notes on class comments
*/ */
// http://doc.spip.org/@getClean
function getClean($jsSource) { function getClean($jsSource) {
return $this->__commonInitMethods($jsSource, false); return $this->__commonInitMethods($jsSource, false);
} }
...@@ -342,24 +334,20 @@ class JavaScriptCompressor { ...@@ -342,24 +334,20 @@ class JavaScriptCompressor {
* compress JavaScript replaceing words and removing comments and some spaces * compress JavaScript replaceing words and removing comments and some spaces
* @param mixed view example and notes on class comments * @param mixed view example and notes on class comments
*/ */
// http://doc.spip.org/@getPacked
function getPacked($jsSource) { function getPacked($jsSource) {
return $this->__commonInitMethods($jsSource, true); return $this->__commonInitMethods($jsSource, true);
} }
/** 'private' methods, any comment sorry */ /** 'private' methods, any comment sorry */
// http://doc.spip.org/@__addCleanCode
function __addCleanCode($str) { function __addCleanCode($str) {
return preg_replace($this->__cleanFinder, $this->__cleanReplacer, trim($str)); return preg_replace($this->__cleanFinder, $this->__cleanReplacer, trim($str));
} }
// http://doc.spip.org/@__addClean
function __addClean(&$arr, &$str, &$start, &$end, $clean) { function __addClean(&$arr, &$str, &$start, &$end, $clean) {
if($clean) if($clean)
array_push($arr, $this->__addCleanCode(substr($str, $start, $end - $start))); array_push($arr, $this->__addCleanCode(substr($str, $start, $end - $start)));
else else
array_push($arr, substr($str, $start, $end - $start)); array_push($arr, substr($str, $start, $end - $start));
} }
// http://doc.spip.org/@__clean
function __clean(&$str) { function __clean(&$str) {
$len = strlen($str); $len = strlen($str);
$type = ''; $type = '';
...@@ -380,7 +368,6 @@ class JavaScriptCompressor { ...@@ -380,7 +368,6 @@ class JavaScriptCompressor {
} }
return preg_replace("/(\n)+/", "\n", trim(implode('', $clean))); return preg_replace("/(\n)+/", "\n", trim(implode('', $clean)));
} }
// http://doc.spip.org/@__commonInitMethods
function __commonInitMethods(&$jsSource, $packed) { function __commonInitMethods(&$jsSource, $packed) {
$header = ''; $header = '';
$this->__startTime = $this->__getTime(); $this->__startTime = $this->__getTime();
...@@ -398,7 +385,6 @@ class JavaScriptCompressor { ...@@ -398,7 +385,6 @@ class JavaScriptCompressor {
$this->__setStats(); $this->__setStats();
return $header.$this->__sources; return $header.$this->__sources;
} }
// http://doc.spip.org/@__getHeader
function __getHeader() { function __getHeader() {
return implode('', array( return implode('', array(
'/* ',$this->__getScriptNames(),'JavaScriptCompressor ',$this->version,' [www.devpro.it], ', '/* ',$this->__getScriptNames(),'JavaScriptCompressor ',$this->version,' [www.devpro.it], ',
...@@ -406,7 +392,6 @@ class JavaScriptCompressor { ...@@ -406,7 +392,6 @@ class JavaScriptCompressor {
" */\r\n" " */\r\n"
)); ));
} }
// http://doc.spip.org/@__getScriptNames
function __getScriptNames() { function __getScriptNames() {
$a = 0; $a = 0;
$result = array(); $result = array();
...@@ -419,7 +404,6 @@ class JavaScriptCompressor { ...@@ -419,7 +404,6 @@ class JavaScriptCompressor {
$result[$a] .= ' with '; $result[$a] .= ' with ';
return $a < 0 ? '' : implode(', ', $result); return $a < 0 ? '' : implode(', ', $result);
} }
// http://doc.spip.org/@__getSize
function __getSize($size, $dec = 2) { function __getSize($size, $dec = 2) {
$toEval = ''; $toEval = '';
$type = array('bytes', 'Kb', 'Mb', 'Gb'); $type = array('bytes', 'Kb', 'Mb', 'Gb');
...@@ -438,7 +422,6 @@ class JavaScriptCompressor { ...@@ -438,7 +422,6 @@ class JavaScriptCompressor {
} }
return $fSize; return $fSize;
} }
// http://doc.spip.org/@__getTime
function __getTime($startTime = null) { function __getTime($startTime = null) {
list($usec, $sec) = explode(' ', microtime()); list($usec, $sec) = explode(' ', microtime());
$newtime = (float)$usec + (float)$sec; $newtime = (float)$usec + (float)$sec;
...@@ -446,14 +429,12 @@ class JavaScriptCompressor { ...@@ -446,14 +429,12 @@ class JavaScriptCompressor {
$newtime = number_format(($newtime - $startTime), 3); $newtime = number_format(($newtime - $startTime), 3);
return $newtime; return $newtime;
} }
// http://doc.spip.org/@__pack
function __pack(&$str) { function __pack(&$str) {
$container = array(); $container = array();
$str = preg_replace("/(\w+)/e", '$this->__BC->toBase($this->__wordsParser("\\1",$container));', $this->__clean($str)); $str = preg_replace("/(\w+)/e", '$this->__BC->toBase($this->__wordsParser("\\1",$container));', $this->__clean($str));
$str = str_replace("\n", '\n', addslashes($str)); $str = str_replace("\n", '\n', addslashes($str));
return 'eval(function(A,G){return A.replace(/(\\w+)/g,function(a,b){return G[parseInt(b,36)]})}("'.$str.'","'.implode(',', $container).'".split(",")));'; return 'eval(function(A,G){return A.replace(/(\\w+)/g,function(a,b){return G[parseInt(b,36)]})}("'.$str.'","'.implode(',', $container).'".split(",")));';
} }
// http://doc.spip.org/@__setStats
function __setStats() { function __setStats() {
$this->stats = implode(' ', array( $this->stats = implode(' ', array(
$this->__getSize($this->__sourceLength), $this->__getSize($this->__sourceLength),
...@@ -464,7 +445,6 @@ class JavaScriptCompressor { ...@@ -464,7 +445,6 @@ class JavaScriptCompressor {
'seconds' 'seconds'
)); ));
} }
// http://doc.spip.org/@__sourceManager
function __sourceManager(&$jsSource) { function __sourceManager(&$jsSource) {
$b = count($jsSource); $b = count($jsSource);
$this->__sources = array(); $this->__sources = array();
...@@ -484,12 +464,10 @@ class JavaScriptCompressor { ...@@ -484,12 +464,10 @@ class JavaScriptCompressor {
} }
$this->__totalSources = count($this->__sources); $this->__totalSources = count($this->__sources);
} }
// http://doc.spip.org/@__sourcePusher
function __sourcePusher(&$code, $name) { function __sourcePusher(&$code, $name) {
$this->__sourceLength += strlen($code); $this->__sourceLength += strlen($code);
array_push($this->__sources, array('code'=>$code, 'name'=>$name)); array_push($this->__sources, array('code'=>$code, 'name'=>$name));
} }
// http://doc.spip.org/@__wordsParser
function __wordsParser($str, &$d) { function __wordsParser($str, &$d) {
if(is_null($key = array_shift($key = array_keys($d,$str)))) if(is_null($key = array_shift($key = array_keys($d,$str))))
$key = array_push($d, $str) - 1; $key = array_push($d, $str) - 1;
......
...@@ -1752,24 +1752,8 @@ function url_absolue_css ($css) { ...@@ -1752,24 +1752,8 @@ function url_absolue_css ($css) {
return $f; return $f;
} }
// recuperere le chemin d'une css existante et :
// cree (ou recree) dans _DIR_VAR/cache_css/ une css compactee en nettoyant tout ce qui n'est pas significatif
// http://doc.spip.org/@compacte_css // http://doc.spip.org/@compacte_css
function compacte_css ($css) { function compacte_css ($contenu) {
if (!preg_match(',\.css$,i', $css, $r)) return $css;
$f = basename($css,'.css');
$f = sous_repertoire (_DIR_VAR, 'cache-css')
. preg_replace(",(.*?)(_rtl|_ltr)?$,","\\1-compacte-" . substr(md5("$css-compacte"), 0,4) . "\\2",$f)
. '.css';
if ((@filemtime($f) > @filemtime($css))
AND ($GLOBALS['var_mode'] != 'recalcul'))
return $f;
if (!lire_fichier($css, $contenu))
return $css;
// nettoyer la css de tout ce qui sert pas // nettoyer la css de tout ce qui sert pas
$contenu = preg_replace(",/\*.*\*/,Ums","",$contenu); // pas de commentaires $contenu = preg_replace(",/\*.*\*/,Ums","",$contenu); // pas de commentaires
$contenu = preg_replace(",\s(?=\s),Ums","",$contenu); // pas d'espaces consecutifs $contenu = preg_replace(",\s(?=\s),Ums","",$contenu); // pas d'espaces consecutifs
...@@ -1779,17 +1763,9 @@ function compacte_css ($css) { ...@@ -1779,17 +1763,9 @@ function compacte_css ($css) {
$contenu = preg_replace(",([^{}]*){},Ums"," ",$contenu); // supprimer les declarations vides $contenu = preg_replace(",([^{}]*){},Ums"," ",$contenu); // supprimer les declarations vides
$contenu = trim($contenu); $contenu = trim($contenu);
// ecrire la css return $contenu;
if (!ecrire_fichier($f, $contenu))
return $css;
return $f;
} }
### fonction depreciee, laissee ici pour compat ascendante 1.9
// http://doc.spip.org/@entites_unicode
function entites_unicode($texte) { return charset2unicode($texte); }
// filtre table_valeur // filtre table_valeur
// permet de recuperer la valeur d'un tableau pour une cle donnee // permet de recuperer la valeur d'un tableau pour une cle donnee
// prend en entree un tableau serialise ou non (ce qui permet d'enchainer le filtre) // prend en entree un tableau serialise ou non (ce qui permet d'enchainer le filtre)
...@@ -1892,13 +1868,12 @@ function concat(){ ...@@ -1892,13 +1868,12 @@ function concat(){
return join('', $args); return join('', $args);
} }
// Compacte du javascript grace a javascriptcompressor // Compacte du javascript grace a javascriptcompressor
// utile pour dist/jquery.js par exemple // utile pour dist/jquery.js par exemple
// attention contrairement a compacte_css ici c'est un flux qui est compacte
// et pas un fichier ... comment unifier ?
// http://doc.spip.org/@compacte_js // http://doc.spip.org/@compacte_js
function compacte_js($flux) { function compacte_js($flux) {
include_spip('inc/jscompressor'); include_spip('inc/compacte_js');
$k = new JavaScriptCompressor(); $k = new JavaScriptCompressor();
// en cas d'echec (?) renvoyer l'original // en cas d'echec (?) renvoyer l'original
if (strlen($t = $k->getClean($flux))) if (strlen($t = $k->getClean($flux)))
...@@ -1907,4 +1882,45 @@ function compacte_js($flux) { ...@@ -1907,4 +1882,45 @@ function compacte_js($flux) {
return $flux; return $flux;
} }
// Si la source est un chemin, on retourne un chemin avec le contenu compacte
// dans _DIR_VAR/cache_$format/
// Si c'est un flux on le renvoit compacte
// Si on ne sait pas compacter, on renvoie ce qu'on a recu
function compacte($source, $format = null) {
if (!$format AND preg_match(',\.(js|css)$,', $source, $r))
$format = $r[1];
if (!function_exists($compacte = 'compacte_'.$format))
return $source;
// Si on n'importe pas, est-ce un fichier ?
if (!preg_match(',[\s{}],', $source)
AND preg_match(',\.'.$format.'$,i', $source, $r)
AND file_exists($source)) {
$f = basename($source,'.'.$format);
$f = sous_repertoire (_DIR_VAR, 'cache-'.$format)
. preg_replace(",(.*?)(_rtl|_ltr)?$,","\\1-compacte-"
. substr(md5("$source-compacte"), 0,4) . "\\2", $f, 1)
. '.' . $format;
if ((@filemtime($f) > @filemtime($css))
AND ($GLOBALS['var_mode'] != 'recalcul'))
return $f;
if (!lire_fichier($source, $contenu))
return $source;
// traiter le contenu
$contenu = $compacte($contenu);
// ecrire le fichier destination, en cas d'echec renvoyer la source
if (ecrire_fichier($f, $contenu))
return $f;
else
return $source;
}
// Sinon simple compactage de contenu
return $compacte($source);
}
?> ?>
...@@ -16,7 +16,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return; ...@@ -16,7 +16,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
/* qui ont fait partie des fichiers de configurations de Spip */ /* qui ont fait partie des fichiers de configurations de Spip */
/* mais en ont ete retires ensuite. */ /* mais en ont ete retires ensuite. */
/* Ce fichier n'est donc jamais charge par la presente version */ /* Ce fichier n'est donc jamais charge par la presente version */
/* mais est present pour que les contributions Spip puissent */ /* mais est present pour que les contributions a Spip puissent */
/* fonctionner en chargeant ce fichier, en attendant d'etre */ /* fonctionner en chargeant ce fichier, en attendant d'etre */
/* reecrites conformement a la nouvelle interface. */ /* reecrites conformement a la nouvelle interface. */
...@@ -167,7 +167,6 @@ spip_log('debut_page() '.$GLOBALS['REQUEST_URI'].' - '.$_SERVER['SCRIPT_NAME'], ...@@ -167,7 +167,6 @@ spip_log('debut_page() '.$GLOBALS['REQUEST_URI'].' - '.$_SERVER['SCRIPT_NAME'],
} }
// obsolete, utiliser calculer_url // obsolete, utiliser calculer_url
// http://doc.spip.org/@extraire_lien // http://doc.spip.org/@extraire_lien
function extraire_lien ($regs) { function extraire_lien ($regs) {
spip_log('extraire_lien() '.$GLOBALS['REQUEST_URI'].' - '.$_SERVER['SCRIPT_NAME'], 'vieilles_defs'); spip_log('extraire_lien() '.$GLOBALS['REQUEST_URI'].' - '.$_SERVER['SCRIPT_NAME'], 'vieilles_defs');
...@@ -204,6 +203,7 @@ spip_log('afficher_formulaire_date() '.$GLOBALS['REQUEST_URI'].' - '.$_SERVER['S ...@@ -204,6 +203,7 @@ spip_log('afficher_formulaire_date() '.$GLOBALS['REQUEST_URI'].' - '.$_SERVER['S
// http://doc.spip.org/@ratio_image // http://doc.spip.org/@ratio_image
function ratio_image($logo, $nom, $format, $taille, $taille_y, $attributs) { function ratio_image($logo, $nom, $format, $taille, $taille_y, $attributs) {
spip_log('ratio_image() '.$GLOBALS['REQUEST_URI'].' - '.$_SERVER['SCRIPT_NAME'], 'vieilles_defs');
// $logo est le nom complet du logo ($logo = "chemin/$nom.$format) // $logo est le nom complet du logo ($logo = "chemin/$nom.$format)
// $nom et $format ne servent plus du fait du passage par le filtre image_reduire // $nom et $format ne servent plus du fait du passage par le filtre image_reduire
include_spip('inc/filtres_images'); include_spip('inc/filtres_images');
...@@ -211,4 +211,10 @@ function ratio_image($logo, $nom, $format, $taille, $taille_y, $attributs) { ...@@ -211,4 +211,10 @@ function ratio_image($logo, $nom, $format, $taille, $taille_y, $attributs) {
return $res; return $res;
} }
// http://doc.spip.org/@entites_unicode
function entites_unicode($texte) {
spip_log('entites_unicode() '.$GLOBALS['REQUEST_URI'].' - '.$_SERVER['SCRIPT_NAME'], 'vieilles_defs');
return charset2unicode($texte);
}
?> ?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter