Beispiel #1
0
	function onAfterRender()
	{

		$isDebug=false;
		$css=$this->param('css');
		$javascript=$this->param('javascript');
		if(!$css&&!$javascript){
			return true;
		}
		// Only render for the front site
	 $app =& JFactory::getApplication();
	 if($app->getName() != 'site') {
	 	return true;
	 }
		$document	=& JFactory::getDocument();
		$doctype	= $document->getType();
		// Only render for HTML output
		if ( $doctype != 'html' ) { return; }
	 //excludeComponents
		$excludeComponents=$this->param('excludeComponents');
		if(isset($excludeComponents)&&$excludeComponents){
			$components=@explode(',',$excludeComponents);
			$option=JRequest::getVar('option');
			if(isset($option)&&in_array($option,$components)){
				return true;
			}
		}
		//gzip checking
	 $isGZ=$this->param('gzip');
	 if($isGZ){
	 	$encoding = JResponse::_clientEncoding();
			if (!$encoding){
				$isGZ=false;
			}
			if (!extension_loaded('zlib') || ini_get('zlib.output_compression')) {
				$isGZ=false;
			}
	 }
	 $body = JResponse::getBody();
	 $isok=true;
	 $compressor=new jsCssCompressor();
	 $baseUrl=JURI::base(true).'/';
	 if($javascript){
	 	$scriptRegex="/<script [^>]+(\/>|><\/script>)/i";
	 	$jsRegex="/([^\"\'=]+\.(js))[\"\']/i";
	 	preg_match_all($scriptRegex, $body, $matches);
	 	$scripts=@implode('',$matches[0]);
	 	preg_match_all($jsRegex,$scripts,$matches);
	 	$scriptFiles= array();

	 	foreach($matches[1] as $script){
	 		if(isInternal($script)){
	 			//if $baseurl=='/'; may need specail handle
	 			$parts=@explode( JURI::base(),$script);
	 			if(count($parts)>1&&endwith($parts[1],'.js')){
	 				$script=JPATH_ROOT.DS.$parts[1];
	 				$script=replaceSperator($script);
	 				$scriptFiles[]=$script;
	 			}else if(endwith($script,'.js')){
	 					
	 				$script=$_SERVER['DOCUMENT_ROOT'].DS.$script;
	 				$script=replaceSperator($script);
	 				if(file_exists($script)){
	 					$scriptFiles[]=$script;
	 				}else{
	 					$script=JPATH_ROOT.DS.$script;
	 					$script=replaceSperator($script);
	 					if(file_exists($script)){
	 						$scriptFiles[]=$script;
	 					}
	 				}
	 			}
	 		}
	 	}
	 	$scriptFiles=array_unique($scriptFiles);
	 	$customOrder=$this->param('customOrder');
	 	$jqueryNoConflict=$this->param('jqueryNoConflict');
	 	$jquery=$this->param('jquery');
	 	$exclude=$this->param('excludeJs');
	 	$excludeJs=array();
	 	if(isset($exclude)&&$exclude){
	 		$excludeJs=@explode(',',$exclude);
	 	}
	 	$predefinedExcludeJs=array('xajax.js','script.js','tiny_mce.js','com_community/assets/toolbar.js');
	 	$excludeJs=@array_merge($excludeJs,$predefinedExcludeJs);
	 	$mappedScripts=array();
	 	foreach($scriptFiles as $sf){
	 		$file=strrchr($sf,DS);
	 		if(isset($file)){
	 			$file=substr($file,1);
	 			$mappedScripts[trim($file)]=$sf;
	 		}
	 	}
	 	$firstScripts=explode(',',$customOrder);
	 	$orderedScripts=array();

	 	foreach($firstScripts as $fs){
	 		$fs=trim($fs);
	 		if(array_key_exists($fs,$mappedScripts)){
	 			$orderedScripts[]=$mappedScripts[$fs];
	 		}
	 	}
	 	//append all js, ignore customorded files
	 	foreach($scriptFiles as $sf){
	 		if(!in_array($sf,$orderedScripts)){
	 			$orderedScripts[]=$sf;
	 		}
	 	}
	 	if(isset($jquery)&&isset($mappedScripts[$jquery])){
Beispiel #2
0
<?php

include_once 'js_merge.php';
if ($_POST['t'] == "css") {
    header("Content-Disposition: attachment; filename=compressed.css");
    echo jsCssCompressor::compressCss($_POST['s']);
}
if ($_POST['t'] == "js") {
    header("Content-Disposition: attachment; filename=compressed.js");
    echo jsCssCompressor::compressJs($_POST['s']);
}
Beispiel #3
0
 private function strip_spaces_js($data)
 {
     $strip_r = array('function', 'else', 'typeof', 'case', 'new', 'var', 'return', 'in', '\\|\\|', '\\&\\&');
     $strip_l = array('typeof', 'in', '\\|\\|', '\\&\\&', 'else');
     $strip_ap = array('while', 'for', 'foreach', 'do', 'switch');
     if (!self::$block_js) {
         function strip_zap($m)
         {
             if ($m[1] == "}") {
                 return '};' . $m[2];
             }
         }
         function strip_right($m)
         {
             return ' ' . $m[2] . $m[3] . ' {*}' . $m[4] . ' ';
         }
         function strip_left($m)
         {
             return ' ' . $m[2] . '{*}' . $m[3] . $m[4] . ' ';
         }
         self::$block_js = 1;
     }
     foreach ($strip_r as $v) {
         $f = '/(([\\}\\{\\)\\(\\; =]{1})(' . $v . ')([\\}\\{\\)\\(; ]{1}))+/i';
         $data = preg_replace_callback($f, 'strip_right', $data);
     }
     foreach ($strip_l as $v) {
         $f = '/(([\\}\\{\\)\\(\\; =]{1})(' . $v . ')([\\}\\{\\)\\(; ]{1}))+/i';
         $data = preg_replace_callback($f, 'strip_left', $data);
     }
     foreach ($strip_ap as $v) {
         $f1[0] = '/([}]{1}' . $v . '( ||{*}))+/i';
         $r1[0] = '};' . $v;
         $data = preg_replace($f1, $r1, $data);
     }
     $data = eregi_replace("[ ]+", '', $data);
     $data = eregi_replace("\\{\\*\\}", ' ', $data);
     $f = '/([\\}]{1})([a-z]{1})/i';
     $data = preg_replace_callback($f, 'strip_zap', $data);
     return $data;
 }