diff --git a/e107_files/e_jslib.php b/e107_files/e_jslib.php index 160514778..c6450de66 100644 --- a/e107_files/e_jslib.php +++ b/e107_files/e_jslib.php @@ -1,16 +1,29 @@ 1, 'no_online' => 1,'no_menus' => 1,'no_prunetmp' => 1); //admin or front-end call @@ -44,7 +57,9 @@ if($encoding) header('Content-Encoding: '.$encoding); - echo @file_get_contents($cacheFile); + $tmp = @file_get_contents($cacheFile); + header('Content-Length: '.strlen($tmp)); + echo $tmp; //TODO - log //@file_put_contents('cache/e_jslib_log', "----------\ncache used - ".$cacheFile."\n\n", FILE_APPEND); exit; @@ -82,7 +97,8 @@ */ function e_jslib_browser_enc() { - if( headers_sent() ){ + //double-compression fix - thanks Topper + if( headers_sent() || ini_get('zlib.output_compression') || !isset($_SERVER["HTTP_ACCEPT_ENCODING"]) ){ $encoding = ''; } elseif ( strpos($_SERVER["HTTP_ACCEPT_ENCODING"], 'x-gzip') !== false ){ @@ -107,7 +123,7 @@ */ function e_jslib_cache_file($encoding='') { - $cacheDir = 'cache/'; + $cacheDir = './cache/'; $hash = $_SERVER['QUERY_STRING'] ? md5($_SERVER['QUERY_STRING']) : 'nomd5'; $cacheFile = $cacheDir.'S_e_jslib'.($encoding ? '_'.$encoding : '').'_'.$hash.'.cache.php'; diff --git a/e107_files/jslib/e107.js.php b/e107_files/jslib/e107.js.php index 94ddbde4a..4d322b051 100644 --- a/e107_files/jslib/e107.js.php +++ b/e107_files/jslib/e107.js.php @@ -8,8 +8,8 @@ * e107 Javascript API * * $Source: /cvs_backup/e107_0.8/e107_files/jslib/e107.js.php,v $ - * $Revision: 1.5 $ - * $Date: 2008-11-19 12:19:51 $ + * $Revision: 1.6 $ + * $Date: 2008-11-19 12:52:22 $ * $Author: secretr $ * */ @@ -783,11 +783,11 @@ Object.extend(e107Helper, { if(false === Object.isString(el) || ( ($(el) && $(el).nodeName.toLowerCase() == 'a' && $(el).readAttribute('href')) || - ($(el) && $(el).readAttribute('type') && $(el).readAttribute('type').toLowerCase() == 'input') + ($(el) && $(el).readAttribute('type') && $(el).readAttribute('type').toLowerCase() == 'input') /* deprecated */ )) { eltoggle = (function(el) { return Try.these( - function() { var ret= $(el.readAttribute('href').match(/#(\w.+)$/)[1]); if(ret) { return ret; } throw 'Error';}, //This will be the only valid case in the near future + function() { var ret= $(el.readAttribute('href').hash.substr(1)); if(ret) { return ret; } throw 'Error';}, //This will be the only valid case in the near future function() { var ret=el.next('.e-expandme'); if(ret) { return ret; } throw 'Error';}, function() { var ret=el.next('div'); if(ret) { return ret; } throw 'Error'; }, //backward compatibality - DEPRECATED function() { return null; } //break @@ -823,10 +823,8 @@ Object.extend(e107Helper, { toggleObserver: function(event) { var expandthem = event.memo.element ? $(event.memo.element) : $$('body')[0]; expandthem.select('.e-expandit').invoke('observe', 'click', function(e) { - var relval = e.element().getAttribute('rel') ? '{' + String(e.element().getAttribute('rel').toJSON()) + '}' : '{}'; e.stop(); - //security - evalJSON(true) - this.toggle(e.element(), relval.evalJSON(true) || {}); + this.toggle(e.element(), {}); }.bindAsEventListener(e107Helper)); }, diff --git a/e107_handlers/jslib_handler.php b/e107_handlers/jslib_handler.php index c6731f0ef..251ac13e0 100644 --- a/e107_handlers/jslib_handler.php +++ b/e107_handlers/jslib_handler.php @@ -1,15 +1,14 @@ browser_enc(); @@ -161,17 +168,18 @@ class e_jslib $this->set_cache($gzdata, $encoding); header('Content-Encoding: ' . $encoding); - //header('Content-Length: '.$gsize); + header('Content-Length: '.$gsize); header('X-Content-size: ' . $size); print($gzdata); - //TODO - log + //TODO - log/debug //@file_put_contents('cache/e_jslib_log', "----------\n cache used - ".$encoding."\nOld size - $size, New compressed size - $gsize\nCache hash: ".($_SERVER['QUERY_STRING'] ? md5($_SERVER['QUERY_STRING']) : 'nomd5')."\n\n", FILE_APPEND); } else { + header('Content-Length: '.strlen($contents)); $this->set_cache($contents); print($contents); - //TODO - log + //TODO - log/debug //@file_put_contents('cache/e_jslib_log', "----------\nno cache used - raw\n\n", FILE_APPEND); } exit(); @@ -204,7 +212,8 @@ class e_jslib */ function browser_enc() { - if (headers_sent()) + //double-compression fix (thanks Topper), remove possible php warning + if ( headers_sent() || ini_get('zlib.output_compression') || !isset($_SERVER["HTTP_ACCEPT_ENCODING"]) ) { $encoding = ''; } @@ -227,13 +236,14 @@ class e_jslib * Create cache filename (doesn't require e107 API) * * @param string $encoding + * @param string $cacheStr * @return string cache filename */ - function cache_file($encoding = '') + function cache_file($encoding = '', $cacheStr = 'S_e_jslib') { $cacheDir = 'cache/'; $hash = $_SERVER['QUERY_STRING'] ? md5($_SERVER['QUERY_STRING']) : 'nomd5'; - $cacheFile = $cacheDir . 'S_e_jslib' . ($encoding ? '_' . $encoding : '') . '_' . $hash . '.cache.php'; + $cacheFile = $cacheDir . $cacheStr . ($encoding ? '_' . $encoding : '') . '_' . $hash . '.cache.php'; return $cacheFile; }