diff --git a/.gitattributes b/.gitattributes index f78906355f86c10cf1e5143f754b14471c923f84..367490a7ffbb7dbf9f2cc1bb51da54e2eb90f533 100644 --- a/.gitattributes +++ b/.gitattributes @@ -471,6 +471,7 @@ ecrire/inc/boutons.php -text ecrire/inc/chercher_logo.php -text ecrire/inc/chercher_rubrique.php -text ecrire/inc/commencer_page.php -text +ecrire/inc/compacte_js.php -text ecrire/inc/cookie.php -text ecrire/inc/dater.php -text ecrire/inc/discuter.php -text @@ -500,7 +501,6 @@ ecrire/inc/informer_auteur.php -text ecrire/inc/instituer_article.php -text ecrire/inc/instituer_auteur.php -text ecrire/inc/joindre.php -text -ecrire/inc/jscompressor.php -text ecrire/inc/lang_liste.php -text ecrire/inc/legender.php -text ecrire/inc/legender_auteur.php -text diff --git a/dist/jquery.js.html b/dist/jquery.js.html index 2f87350119866a925e1584d5ba933d4c7462acfc..3ffc0c1c2827b4df77daef63ec179a9c51a7210a 100644 --- a/dist/jquery.js.html +++ b/dist/jquery.js.html @@ -14,6 +14,6 @@ * + form.js (jquery.com) * + ajaxCallback.js (www.spip.net) */ -[(#CHEMIN{javascript/jquery-1.1.js}|spip_file_get_contents|compacte_js)] -[(#CHEMIN{javascript/form.js}|spip_file_get_contents|compacte_js)] -[(#CHEMIN{javascript/ajaxCallback.js}|spip_file_get_contents|compacte_js)] +[(#CHEMIN{javascript/jquery-1.1.js}|compacte|spip_file_get_contents)] +[(#CHEMIN{javascript/form.js}|compacte|spip_file_get_contents)] +[(#CHEMIN{javascript/ajaxCallback.js}|compacte|spip_file_get_contents)] diff --git a/ecrire/inc/jscompressor.php b/ecrire/inc/compacte_js.php similarity index 93% rename from ecrire/inc/jscompressor.php rename to ecrire/inc/compacte_js.php index f30f54d486359201e7599d5430fa0a9a03e4beba..0b6284ec9d1484708b720b700926cbe85496682d 100644 --- a/ecrire/inc/jscompressor.php +++ b/ecrire/inc/compacte_js.php @@ -56,7 +56,6 @@ class SourceMap { * @param string generic source code * @param array array with nested array with code rules */ -// http://doc.spip.org/@getMap function getMap(&$source, &$delimeters) { # "unsigned" integer variables @@ -151,7 +150,6 @@ class SourceMap { return $tempMap; } -// http://doc.spip.org/@__endCharNoSlash function __endCharNoSlash(&$source, $position, &$find, &$len) { $temp = strlen($find); do { @@ -161,7 +159,6 @@ class SourceMap { return $position + $temp; } -// http://doc.spip.org/@__charNoSlash function __charNoSlash(&$source, &$position) { $next = 1; $len = $position - $next; while($len > 0 && $source{$len} === '\\') $len = $position - (++$next); @@ -196,13 +193,11 @@ class BaseConvert { var $base, $baseLength; -// http://doc.spip.org/@BaseConvert function BaseConvert($base) { $this->base = &$base; $this->baseLength = strlen($base); } -// http://doc.spip.org/@toBase function toBase($num) { $module = 0; $result = ''; while($num) { @@ -212,7 +207,6 @@ class BaseConvert { return $result !== '' ? $result : $this->base{0}; } -// http://doc.spip.org/@fromBase function fromBase($str) { $pos = 0; $len = strlen($str) - 1; $result = 0; while($pos < $len) @@ -312,7 +306,6 @@ class JavaScriptCompressor { * public constructor * creates a new BaseConvert class variable (base 36) */ -// http://doc.spip.org/@JavaScriptCompressor function JavaScriptCompressor() { $this->__SourceMap = new SourceMap(); $this->__BC = new BaseConvert('0123456789abcdefghijklmnopqrstuvwxyz'); @@ -331,7 +324,6 @@ class JavaScriptCompressor { * compress JavaScript removing comments and somespaces (on by default) * @param mixed view example and notes on class comments */ -// http://doc.spip.org/@getClean function getClean($jsSource) { return $this->__commonInitMethods($jsSource, false); } @@ -342,24 +334,20 @@ class JavaScriptCompressor { * compress JavaScript replaceing words and removing comments and some spaces * @param mixed view example and notes on class comments */ -// http://doc.spip.org/@getPacked function getPacked($jsSource) { return $this->__commonInitMethods($jsSource, true); } /** 'private' methods, any comment sorry */ -// http://doc.spip.org/@__addCleanCode function __addCleanCode($str) { return preg_replace($this->__cleanFinder, $this->__cleanReplacer, trim($str)); } -// http://doc.spip.org/@__addClean function __addClean(&$arr, &$str, &$start, &$end, $clean) { if($clean) array_push($arr, $this->__addCleanCode(substr($str, $start, $end - $start))); else array_push($arr, substr($str, $start, $end - $start)); } -// http://doc.spip.org/@__clean function __clean(&$str) { $len = strlen($str); $type = ''; @@ -380,7 +368,6 @@ class JavaScriptCompressor { } return preg_replace("/(\n)+/", "\n", trim(implode('', $clean))); } -// http://doc.spip.org/@__commonInitMethods function __commonInitMethods(&$jsSource, $packed) { $header = ''; $this->__startTime = $this->__getTime(); @@ -398,7 +385,6 @@ class JavaScriptCompressor { $this->__setStats(); return $header.$this->__sources; } -// http://doc.spip.org/@__getHeader function __getHeader() { return implode('', array( '/* ',$this->__getScriptNames(),'JavaScriptCompressor ',$this->version,' [www.devpro.it], ', @@ -406,7 +392,6 @@ class JavaScriptCompressor { " */\r\n" )); } -// http://doc.spip.org/@__getScriptNames function __getScriptNames() { $a = 0; $result = array(); @@ -419,7 +404,6 @@ class JavaScriptCompressor { $result[$a] .= ' with '; return $a < 0 ? '' : implode(', ', $result); } -// http://doc.spip.org/@__getSize function __getSize($size, $dec = 2) { $toEval = ''; $type = array('bytes', 'Kb', 'Mb', 'Gb'); @@ -438,7 +422,6 @@ class JavaScriptCompressor { } return $fSize; } -// http://doc.spip.org/@__getTime function __getTime($startTime = null) { list($usec, $sec) = explode(' ', microtime()); $newtime = (float)$usec + (float)$sec; @@ -446,14 +429,12 @@ class JavaScriptCompressor { $newtime = number_format(($newtime - $startTime), 3); return $newtime; } -// http://doc.spip.org/@__pack function __pack(&$str) { $container = array(); $str = preg_replace("/(\w+)/e", '$this->__BC->toBase($this->__wordsParser("\\1",$container));', $this->__clean($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(",")));'; } -// http://doc.spip.org/@__setStats function __setStats() { $this->stats = implode(' ', array( $this->__getSize($this->__sourceLength), @@ -464,7 +445,6 @@ class JavaScriptCompressor { 'seconds' )); } -// http://doc.spip.org/@__sourceManager function __sourceManager(&$jsSource) { $b = count($jsSource); $this->__sources = array(); @@ -484,12 +464,10 @@ class JavaScriptCompressor { } $this->__totalSources = count($this->__sources); } -// http://doc.spip.org/@__sourcePusher function __sourcePusher(&$code, $name) { $this->__sourceLength += strlen($code); array_push($this->__sources, array('code'=>$code, 'name'=>$name)); } -// http://doc.spip.org/@__wordsParser function __wordsParser($str, &$d) { if(is_null($key = array_shift($key = array_keys($d,$str)))) $key = array_push($d, $str) - 1; diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php index f82389fb0cce22a868c0473aecc5dfd0f6a86995..b1e46357e736a9d9c4044d0b954191dc7c6d46fd 100644 --- a/ecrire/inc/filtres.php +++ b/ecrire/inc/filtres.php @@ -1752,24 +1752,8 @@ function url_absolue_css ($css) { 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 -function compacte_css ($css) { - 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; - +function compacte_css ($contenu) { // nettoyer la css de tout ce qui sert pas $contenu = preg_replace(",/\*.*\*/,Ums","",$contenu); // pas de commentaires $contenu = preg_replace(",\s(?=\s),Ums","",$contenu); // pas d'espaces consecutifs @@ -1779,17 +1763,9 @@ function compacte_css ($css) { $contenu = preg_replace(",([^{}]*){},Ums"," ",$contenu); // supprimer les declarations vides $contenu = trim($contenu); - // ecrire la css - if (!ecrire_fichier($f, $contenu)) - return $css; - - return $f; + return $contenu; } -### 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 // 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) @@ -1892,13 +1868,12 @@ function concat(){ return join('', $args); } + // Compacte du javascript grace a javascriptcompressor // 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 function compacte_js($flux) { - include_spip('inc/jscompressor'); + include_spip('inc/compacte_js'); $k = new JavaScriptCompressor(); // en cas d'echec (?) renvoyer l'original if (strlen($t = $k->getClean($flux))) @@ -1907,4 +1882,45 @@ function compacte_js($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); +} + ?> diff --git a/ecrire/inc/vieilles_defs.php b/ecrire/inc/vieilles_defs.php index 823d4250b6537b9e0a2244359a968f449ce6a63a..90e50ddcbe943afaf6e34694b41abc2484e9daad 100644 --- a/ecrire/inc/vieilles_defs.php +++ b/ecrire/inc/vieilles_defs.php @@ -16,7 +16,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return; /* qui ont fait partie des fichiers de configurations de Spip */ /* mais en ont ete retires ensuite. */ /* 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 */ /* reecrites conformement a la nouvelle interface. */ @@ -167,7 +167,6 @@ spip_log('debut_page() '.$GLOBALS['REQUEST_URI'].' - '.$_SERVER['SCRIPT_NAME'], } // obsolete, utiliser calculer_url - // http://doc.spip.org/@extraire_lien function extraire_lien ($regs) { 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 // http://doc.spip.org/@ratio_image 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) // $nom et $format ne servent plus du fait du passage par le filtre image_reduire include_spip('inc/filtres_images'); @@ -211,4 +211,10 @@ function ratio_image($logo, $nom, $format, $taille, $taille_y, $attributs) { 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); +} + ?>