Пример #1
0
 /**
  * Inserts the scripts in the head section.
  * @param string $output the output to be inserted with scripts.
  */
 public function renderHead(&$output)
 {
     $this->filterScripts();
     $this->reorderFiles();
     $this->processFiles();
     parent::renderHead($output);
 }
 /**
  * Inserts the scripts in the head section.
  * @param string $output the output to be inserted with scripts.
  */
 public function renderHead(&$output)
 {
     if ($this->packScriptFiles && $this->enableJavaScript) {
         $this->packScriptFiles(self::POS_HEAD);
     }
     parent::renderHead($output);
 }
Пример #3
0
 public function renderHead(&$output)
 {
     $cssFilesOrdered = array();
     $currentCssFiles = $this->cssFiles;
     if (!empty($this->priority)) {
         # assign 0 to anything without a specific priority
         # can't do this in the register method because not every CSS file that ends up here used it
         $cssFilesWithPrioritySet = array_keys($this->priority);
         foreach ($currentCssFiles as $path => $v) {
             if (!in_array($path, $cssFilesWithPrioritySet)) {
                 $this->priority[$path] = 0;
             }
         }
         asort($this->priority);
         foreach ($this->priority as $path => $id) {
             $cssFilesOrdered[$path] = $currentCssFiles[$path];
             unset($currentCssFiles[$path]);
         }
         # add any remaining CSS files that didn't have an order specified
         $cssFilesOrdered += $currentCssFiles;
     }
     if (!empty($cssFilesOrdered)) {
         $this->cssFiles = $cssFilesOrdered;
     }
     parent::renderHead($output);
 }
 /**
  * Extension of default {@link CClientScript::renderHead} that creates a big combo of minified CSS and compiled CSSP files.
  */
 public function renderHead(&$output)
 {
     $html = '';
     $origCssFiles = $this->cssFiles;
     $files_per_midia = array();
     foreach ($origCssFiles as $css => $media) {
         foreach ($this->excludeFromCompiling as $regexp) {
             if (preg_match($regexp, $css)) {
                 continue 2;
             }
         }
         if (!isset($files_per_midia[$media])) {
             $files_per_midia[$media] = array();
         }
         $files_per_midia[$media][] = preg_replace('/^\\/assets\\//', '../assets/', $css);
         unset($this->cssFiles[$css]);
     }
     foreach ($files_per_midia as $media => $files) {
         $html .= $this->compile($files, $media) . "\n";
     }
     if ($html !== '') {
         $count = 0;
         $output = preg_replace('/(<title\\b[^>]*>|<\\/head\\s*>)/is', '<###head###>$1', $output, 1, $count);
         if ($count) {
             $output = str_replace('<###head###>', $html, $output);
         } else {
             $output = $html . $output;
         }
     }
     parent::renderHead($output);
     $this->cssFiles = $origCssFiles;
 }
Пример #5
0
 public function renderHead(&$output)
 {
     $cssFiles = array();
     if (!empty($this->cssFiles)) {
         foreach ($this->cssFiles as $url => $media) {
             $cssFiles[$media][] = $url;
         }
         $this->cssFiles = array();
         foreach ($cssFiles as $media => $urls) {
             $this->cssFiles[$this->minifyController . "/" . $this->md5Group($urls, "css")] = $media;
         }
     }
     if ($this->enableJavaScript) {
         if (isset($this->scriptFiles[self::POS_HEAD])) {
             $this->scriptFiles[self::POS_HEAD] = array($this->minifyController . "/" . $this->md5Group($this->scriptFiles[self::POS_HEAD], "js"));
         }
     }
     parent::renderHead($output);
 }
Пример #6
0
 public function renderHead(&$output)
 {
     $folder = 'frontend.tmp';
     $path = Yii::getPathOfAlias($folder);
     $root = Yii::getPathOfAlias('webroot');
     $filePath = $root . '/../../Makefile';
     $fullPaths = array();
     $cssPaths = array();
     foreach ($this->scriptFiles[0] as $from => $to) {
         $fullPaths[] = $root . $to;
     }
     foreach ($this->cssFiles as $path => $media) {
         $cssPaths[] = $root . $path;
     }
     $makefileTemplate = file_get_contents($root . '/../../Makefile.template');
     $makefile = str_replace('{{jsFiles}}', implode(" \\\n", $fullPaths), $makefileTemplate);
     $makefile = str_replace('{{cssFiles}}', implode(" \\\n", $cssPaths), $makefile);
     file_put_contents($filePath, $makefile);
     parent::renderHead($output);
 }
 /**
  * Inserts the scripts in the head section (overrides parent method).
  * @param string $output the output to be inserted with scripts.
  * @since 2.0
  */
 public function renderHead(&$output)
 {
     $this->_minScriptProcessor('scripts', self::POS_HEAD);
     $this->_minScriptProcessor('css');
     parent::renderHead($output);
 }
Пример #8
0
 /**
  * Will combine/compress JS and CSS if wanted/needed, and will continue with original
  * renderHead afterwards
  *
  * @param <type> $output
  */
 public function renderHead(&$output)
 {
     if ($this->combineFiles) {
         $this->combineJs = $this->combineCss = true;
     }
     $this->renderJs($output, parent::POS_HEAD);
     if ($this->combineCss) {
         if (count($this->cssFiles) !== 0) {
             // old code - mixa, 2012 05 07
             /*foreach ($this->cssFiles as $url => $media)
                       if(! $this->isRemoteFile($url))
                         $cssFiles[$media][$url] = $url; // Exclude remote files
             
                     */
             // code from forum:
             $cssFiles = array();
             foreach ($this->cssFiles as $url => $media) {
                 $file_arr = pathinfo($url);
                 if (!empty($this->excludeCssFiles) && in_array($file_arr['basename'], $this->excludeCssFiles) || $this->isRemoteFile($url)) {
                     // excluding files
                 } else {
                     $cssFiles[$media][$url] = $url;
                 }
             }
             /*        // my code - mixa, 2012 05 07
                     $cssFiles = array();
                     foreach ($this->cssFiles as $url => $media) {
                       if($this->isRemoteFile($url)) continue;
                       $cont = false;
                       if (!empty($this->excludeFiles)) 
                         foreach($this->excludeFiles AS $excludeFile) 
                           if (strpos($url, $excludeFile) !== false) {$cont = true; break; }
                       if ($cont) continue;
                       $cssFiles[$media][$url] = $url; // Exclude remote files
                     }
                     // -- end new code */
             foreach ($cssFiles as $media => $url) {
                 $this->combineAndCompress('css', $url, $media);
             }
         }
     }
     parent::renderHead($output);
 }
	/**
	 * Will combine/compress JS and CSS if wanted/needed, and will continue with original
	 * renderHead afterwards
	 *
	 * @param <type> $output
	 */
	public function renderHead(&$output)
	{
		if ($this->combineFiles)
		{
			if (isset($this->scriptFiles[parent::POS_HEAD]) && count($this->scriptFiles[parent::POS_HEAD]) !==  0)
			{
				$jsFiles = $this->scriptFiles[parent::POS_HEAD];
				if (!empty($this->excludeFiles))
				{
					foreach ($jsFiles as &$fileName)
						(in_array($fileName, $this->excludeFiles)) AND $fileName = false;
					$jsFiles = array_filter($jsFiles);
				}
				$this->combineAndCompress('js',$jsFiles,parent::POS_HEAD);
			}

			if (count($this->cssFiles) !==  0)
			{
				foreach ($this->cssFiles as $url => $media)
					$cssFiles[$media][$url] = $url;
				foreach ($cssFiles as $media => $url)
					$this->combineAndCompress('css',$url, $media);
			}
		}
		parent::renderHead($output);
	}
 /**
  * Will combine/compress JS and CSS if wanted/needed, and will continue with original
  * renderHead afterwards
  *
  * @param <type> $output
  */
 public function renderHead(&$output)
 {
     if ($this->combineFiles) {
         $this->combineJs = $this->combineCss = true;
     }
     $this->renderJs($output, parent::POS_HEAD);
     if ($this->combineCss) {
         if (count($this->cssFiles) !== 0) {
             foreach ($this->cssFiles as $url => $media) {
                 if (!$this->isRemoteFile($url)) {
                     $cssFiles[$media][$url] = $url;
                 }
             }
             // Exclude remote files
             foreach ($cssFiles as $media => $url) {
                 $this->combineAndCompress('css', $url, $media);
             }
         }
     }
     parent::renderHead($output);
 }
Пример #11
0
 /**
  * Inserts the scripts in the head section.
  * @param string $output the output to be inserted with scripts.
  */
 public function renderHead(&$output)
 {
     //do sort by order
     $this->sortCssFiles();
     $this->sortCss();
     $this->sortScriptFiles(self::POS_HEAD);
     $this->sortScripts(self::POS_HEAD);
     parent::renderHead($output);
 }
Пример #12
0
 /**
  * @param string the output to be inserted with scripts.
  */
 public function renderHead(&$output)
 {
     // combine css files
     if (count($this->cssFiles) > 0) {
         $cssFiles = array();
         foreach ($this->cssFiles as $url => $media) {
             if (!($this->excludeAssets && $this->isAsset($url)) && !in_array(basename($url), $this->excludeFiles)) {
                 $cssFiles[$media ? strtolower($media) : $this->_defaultCssMedia][] = $url;
             }
         }
         foreach ($cssFiles as $media => $urls) {
             $outfile = $this->combineFiles('css', $urls);
             foreach ($urls as $url) {
                 $this->scriptMap[basename($url)] = $this->getCoreScriptUrl() . '/' . $outfile;
             }
         }
     }
     // combine js files
     if ($this->enableJavaScript) {
         foreach ($this->getPositions() as $p) {
             if (isset($this->scriptFiles[$p])) {
                 $combine = array();
                 foreach ($this->scriptFiles[$p] as $url) {
                     if (!($this->excludeAssets && $this->isAsset($url)) && !in_array(basename($url), $this->excludeFiles)) {
                         $combine[] = $url;
                     }
                 }
                 if ($combine) {
                     $outfile = $this->combineFiles('js', $combine);
                     foreach ($combine as $url) {
                         $this->scriptMap[basename($url)] = $this->getCoreScriptUrl() . '/' . $outfile;
                     }
                 }
             }
         }
     }
     $this->remapScripts();
     parent::renderHead($output);
 }
Пример #13
0
 /**
  * Combine css files and script files before renderHead.
  * 
  * @param string the output to be inserted with scripts.
  */
 public function renderHead(&$output)
 {
     $this->onBeforeOptimization('css', self::POS_HEAD);
     $this->onOptimization('css', self::POS_HEAD);
     $this->onAfterOptimization('css', self::POS_HEAD);
     $this->onBeforeOptimization('js', self::POS_HEAD);
     $this->onOptimization('js', self::POS_HEAD);
     $this->onAfterOptimization('js', self::POS_HEAD);
     parent::renderHead($output);
 }
Пример #14
0
 /**
  * Combines the CSS files and the scripts at the head position
  * @param string $output
  */
 public function renderHead(&$output)
 {
     if ($this->combineStyles) {
         $combiner = new CSSCombiner($this->combinedCssPrefix, $this->getPathResolver());
         $this->cssFiles = $combiner->combine($this->cssFiles);
     }
     if ($this->combineScripts) {
         $this->combineScripts(self::POS_HEAD);
     }
     parent::renderHead($output);
 }
Пример #15
0
 /**
  * Combine css files and script files before renderHead.
  * @param string the output to be inserted with scripts.
  */
 public function renderHead(&$output)
 {
     if ($this->combineCssFiles) {
         $this->combineCssFiles();
     }
     if ($this->combineScriptFiles && $this->enableJavaScript) {
         $this->combineScriptFiles(self::POS_HEAD);
     }
     parent::renderHead($output);
 }
Пример #16
0
 public function renderHead(&$output)
 {
     $this->_putnlscode();
     //merging
     if ($this->mergeJs) {
         $this->_mergeJs(self::POS_HEAD);
     }
     if ($this->mergeCss) {
         $this->_mergeCss();
     }
     parent::renderHead($output);
 }
Пример #17
0
 /**
  * Inserts the scripts in the head section.
  * @param string $output the output to be inserted with scripts.
  */
 public function renderHead(&$output)
 {
     // If YII_DEBUG is set we don't want to minify the assets
     if (YII_DEBUG === false) {
         if (is_dir($this->_minifyPath) === false) {
             mkdir($this->_minifyPath, 0775, true);
         }
         $this->minifyCss();
         if ($this->enableJavaScript) {
             foreach ($this->_minifyJsPositions as $position) {
                 $this->minifyScriptFileByPosition($position);
             }
         } else {
             $this->scriptFiles = $this->scripts = null;
         }
         // We have to force the copy of the folder, since it might be possible
         // that another process copies some of the files in the folder first
         // and new ones will not be copied over the assets.
         $forceCopy = $this->_shouldForceCopy($this->_minifyPath);
         Yii::app()->assetManager->publish($this->_minifyPath, true, -1, $forceCopy);
     }
     parent::renderHead($output);
 }