示例#1
0
 protected function getOptions()
 {
     $plugin = JchPlatformPlugin::getPlugin();
     $pluginParams = new JRegistry();
     $pluginParams->loadString($plugin->params);
     $pluginParams->set('sprite-path', JchPlatformPaths::spriteDir());
     $CssSpriteGenClass = 'JchOptimize\\CssSpriteGen';
     $oSprite = new JchOptimizeSpriteGenerator($pluginParams);
     $CssSpriteGen = new $CssSpriteGenClass($oSprite->getImageLibrary(), $pluginParams);
     $aSpriteFormats = $CssSpriteGen->GetSpriteFormats();
     $this->default = $aSpriteFormats[0];
     $options = array();
     foreach ($aSpriteFormats as $sSpriteFormat) {
         $option = JHtml::_('select.option', $sSpriteFormat, $sSpriteFormat, 'value', 'text');
         $options[] = $option;
     }
     reset($options);
     return $options;
 }
示例#2
0
 /**
  * 
  * @param type $oObj
  * @param type $sCss
  * @return type
  */
 public function generateAdminLinks($oObj, $sCss)
 {
     JCH_DEBUG ? JchPlatformProfiler::start('GenerateAdminLinks') : null;
     $params = clone $this->params;
     $params->set('javascript', '1');
     $params->set('css', '1');
     $params->set('excludeAllExtensions', '0');
     $params->set('css_minify', '0');
     $params->set('debug', '0');
     $params->set('bottom_js', '2');
     $sHtml = $oObj->getOriginalHtml();
     $oParser = new JchOptimizeParser($params, $sHtml, JchOptimizeFileRetriever::getInstance());
     $aLinks = $oParser->getReplacedFiles();
     if ($sCss == '' && !empty($aLinks['css'][0])) {
         $oCombiner = new JchOptimizeCombiner($params, $this->bBackend);
         $oCssParser = new JchOptimizeCssParser($params, $this->bBackend);
         $oCombiner->combineFiles($aLinks['css'][0], 'css', $oCssParser);
         $sCss = $oCombiner->css;
     }
     $oSpriteGenerator = new JchOptimizeSpriteGenerator($params);
     $aLinks['images'] = $oSpriteGenerator->processCssUrls($sCss, TRUE);
     JCH_DEBUG ? JchPlatformProfiler::stop('GenerateAdminLinks', TRUE) : null;
     return $aLinks;
 }
示例#3
0
文件: admin.php 项目: grlf/eyedock
 /**
  * 
  * @param type $oObj
  * @param type $sCss
  * @return type
  */
 public function generateAdminLinks($oObj, $sCss)
 {
     JCH_DEBUG ? JchPlatformProfiler::start('GenerateAdminLinks') : null;
     $params = clone $this->params;
     $params->set('javascript', '1');
     $params->set('css', '1');
     $params->set('excludeAllExtensions', '0');
     $params->set('css_minify', '0');
     $params->set('debug', '0');
     $params->set('bottom_js', '2');
     ##<procode>##
     $params->set('pro_phpAndExternal', '1');
     $params->set('pro_inlineScripts', '1');
     $params->set('pro_lazyload', '0');
     ##</procode>##
     $sHtml = $oObj->getOriginalHtml();
     $oParser = new JchOptimizeParser($params, $sHtml, JchOptimizeFileRetriever::getInstance());
     $aLinks = $oParser->getReplacedFiles();
     if ($sCss == '' && !empty($aLinks['css'][0])) {
         $oCombiner = new JchOptimizeCombiner($params, $this->bBackend);
         $oCssParser = new JchOptimizeCssParser($params, $this->bBackend);
         $oCombiner->combineFiles($aLinks['css'][0], 'css', $oCssParser);
         $sCss = $oCombiner->css;
     }
     $oSpriteGenerator = new JchOptimizeSpriteGenerator($params);
     $aLinks['images'] = $oSpriteGenerator->processCssUrls($sCss, TRUE);
     ##<procode>##
     $sRegex = $oParser->getLazyLoadRegex();
     preg_match_all($sRegex, $oParser->getBodyHtml(), $aMatches);
     $aLinks['lazyload'] = $aMatches[1];
     ##</procode>##
     JCH_DEBUG ? JchPlatformProfiler::stop('GenerateAdminLinks', TRUE) : null;
     return $aLinks;
 }
示例#4
0
 /**
  * Get aggregated and possibly minified content from js and css files
  *
  * @param array $aUrlArray      Array of urls of css or js files for aggregation
  * @param string $sType         css or js
  * @return string               Aggregated (and possibly minified) contents of files
  */
 public function getContents($aUrlArray, $sType, $oParser)
 {
     JCH_DEBUG ? JchPlatformProfiler::start('GetContents - ' . $sType, TRUE) : null;
     $oCssParser = $this->oCssParser;
     $sCriticalCss = '';
     $aSpriteCss = array();
     $aFontFace = array();
     $aContentsArray = array();
     foreach ($aUrlArray as $index => $aUrlInnerArray) {
         $sContents = $this->combineFiles($aUrlInnerArray, $sType, $oCssParser);
         $sContents = $this->prepareContents($sContents);
         $aContentsArray[$index] = $sContents;
     }
     if ($sType == 'css') {
         if ($this->params->get('csg_enable', 0)) {
             try {
                 $oSpriteGenerator = new JchOptimizeSpriteGenerator($this->params);
                 $aSpriteCss = $oSpriteGenerator->getSprite($this->{$sType});
             } catch (Exception $ex) {
                 JchOptimizeLogger::log($ex->getMessage(), $this->params);
                 $aSpriteCss = array();
             }
         }
         if ($this->params->get('pro_optimizeCssDelivery', '0')) {
             if (is_array($aSpriteCss) && !empty($aSpriteCss) && isset($aSpriteCss['needles']) && isset($aSpriteCss['replacements'])) {
                 $this->{$sType} = str_replace($aSpriteCss['needles'], $aSpriteCss['replacements'], $this->{$sType});
             }
             $oParser->params->set('pro_InlineScripts', '1');
             $oParser->params->set('pro_InlineStyles', '1');
             $sHtml = $oParser->cleanHtml();
             $aCssContents = $oCssParser->optimizeCssDelivery($this->{$sType}, $sHtml);
             $sCriticalCss .= $oCssParser->sortImports($aCssContents['criticalcss']);
             $sCriticalCss = $sCriticalCss;
             $aFontFace = preg_split('#}\\K[^@]*+#', $aCssContents['font-face'], -1, PREG_SPLIT_NO_EMPTY);
         }
     }
     try {
         $oAdmin = new JchOptimizeAdmin($this->params);
         $oAdmin->getAdminLinks($oParser, JchPlatformUtility::menuId(), $this->css);
     } catch (Exception $ex) {
         JchOptimizeLogger::log($ex->getMessage(), $this->params);
     }
     $aContents = array('filemtime' => JchPlatformUtility::unixCurrentDate(), 'file' => $aContentsArray, 'criticalcss' => $sCriticalCss, 'spritecss' => $aSpriteCss, 'font-face' => $aFontFace);
     JCH_DEBUG ? JchPlatformProfiler::stop('GetContents - ' . $sType) : null;
     return $aContents;
 }
示例#5
0
 /**
  * Get aggregated and possibly minified content from js and css files
  *
  * @param array $aUrlArray      Array of urls of css or js files for aggregation
  * @param string $sType         css or js
  * @return string               Aggregated (and possibly minified) contents of files
  */
 public function getContents($aUrlArray, $sType, $oParser)
 {
     $oCssParser = new JchOptimizeCssParser($oParser, $this->bBackend);
     $sCriticalCss = '';
     $aSpriteCss = array();
     $aFontFace = array();
     $aContentsArray = array();
     foreach ($aUrlArray as $index => $aUrlInnerArray) {
         $sContents = $this->combineFiles($aUrlInnerArray, $sType, $oCssParser);
         $sContents = $this->prepareContents($sContents);
         $aContentsArray[$index] = $sContents;
     }
     if ($sType == 'css') {
         if ($this->params->get('csg_enable', 0)) {
             try {
                 $oSpriteGenerator = new JchOptimizeSpriteGenerator($this->params);
                 $aSpriteCss = $oSpriteGenerator->getSprite($this->{$sType});
             } catch (Exception $ex) {
                 JchOptimizeLogger::log($ex->getMessage(), $this->params);
                 $aSpriteCss = array();
             }
         }
         if ($this->params->get('pro_optimizeCssDelivery', '0')) {
             if (!empty($aSpriteCss)) {
                 $this->{$sType} = str_replace($aSpriteCss['needles'], $aSpriteCss['replacements'], $this->{$sType});
             }
             $oParser->params->set('pro_InlineScripts', '0');
             $oParser->params->set('pro_InlineStyles', '0');
             $sHtml = $oParser->cleanHtml();
             $aCssContents = $oCssParser->optimizeCssDelivery($this->{$sType}, $sHtml);
             $sCriticalCss .= $aCssContents['criticalcss'];
             $aFontFace = preg_split('#}\\K[^@]*+#', $aCssContents['font-face'], -1, PREG_SPLIT_NO_EMPTY);
         }
     }
     $aContents = array('filemtime' => JchPlatformUtility::unixCurrentDate(), 'file' => $aContentsArray, 'criticalcss' => $sCriticalCss, 'spritecss' => $aSpriteCss, 'font-face' => $aFontFace);
     return $aContents;
 }
示例#6
0
 /**
  * 
  * @param type $aUrlArray
  * @param type $params
  * @return type
  */
 public static function getImages($aUrlArray, $params)
 {
     $oCombiner = new JchOptimizeCombiner($params, TRUE);
     $oCssParser = new JchOptimizeCssParser($oCombiner->sLnEnd, $oCombiner->bBackend);
     try {
         $sCss = $oCombiner->combineFiles($aUrlArray, 'css', $oCssParser);
         $oSpriteGenerator = new JchOptimizeSpriteGenerator($params);
         $aMatches = $oSpriteGenerator->processCssUrls($sCss, TRUE);
     } catch (Exception $Ex) {
         $GLOBALS['bTextArea'] = TRUE;
         if ($oCombiner->params->get('log', '0')) {
             JchOptimizeLogger::log($Ex->getMessage());
         }
         throw new Exception(JText::_('Failed fetching images for the multiselect exclude options in sprite generator. ' . 'Will render textareas instead.'));
     }
     return $aMatches;
 }