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
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -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
......
......@@ -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)]
......@@ -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;
......
......@@ -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);
}
?>
......@@ -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);
}
?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter