Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Asset/JavascriptAsset.php
Строк: 86
<?php

namespace ConcreteCoreAsset;

use 
HtmlObjectElement;
use 
Config;

class 
JavascriptAsset extends Asset
{
    
/**
     * @var bool
     */
    
protected $assetSupportsMinification true;

    
/**
     * @var bool
     */
    
protected $assetSupportsCombination true;

    
/**
     * @return string
     */
    
public function getAssetDefaultPosition()
    {
        return 
Asset::ASSET_POSITION_FOOTER;
    }

    
/**
     * @return string
     */
    
public static function getRelativeOutputDirectory()
    {
        return 
REL_DIR_FILES_CACHE.'/'.DIRNAME_JAVASCRIPT;
    }

    
/**
     * @return bool|string
     */
    
protected static function getOutputDirectory()
    {
        if (!
file_exists(Config::get('concrete.cache.directory').'/'.DIRNAME_JAVASCRIPT)) {
            
$proceed = @mkdir(Config::get('concrete.cache.directory').'/'.DIRNAME_JAVASCRIPT);
        } else {
            
$proceed true;
        }
        if (
$proceed) {
            return 
Config::get('concrete.cache.directory').'/'.DIRNAME_JAVASCRIPT;
        } else {
            return 
false;
        }
    }

    
/**
     * @param Asset[] $assets
     *
     * @return Asset[]
     */
    
public static function process($assets)
    {
        if (
$directory self::getOutputDirectory()) {
            
$relativeDirectory self::getRelativeOutputDirectory();
            
$filename '';
            
$sourceFiles = array();
            for (
$i 0$i count($assets); $i++) {
                
$asset $assets[$i];
                
$filename .= $asset->getAssetHashKey();
                
$sourceFiles[] = $asset->getAssetURL();
            }
            
$filename sha1($filename);
            
$cacheFile $directory.'/'.$filename.'.js';
            if (!
file_exists($cacheFile)) {
                
$js '';
                foreach (
$assets as $asset) {
                    
$contents $asset->getAssetContents();
                    if (isset(
$contents)) {
                        if (
$asset->assetSupportsMinification()) {
                            
$contents JShrinkMinifier::minify($contents);
                        }
                        
$js .= $contents."nn";
                    }
                }
                @
file_put_contents($cacheFile$js);
            }

            
$asset = new JavascriptAsset();
            
$asset->setAssetURL($relativeDirectory.'/'.$filename.'.js');
            
$asset->setAssetPath($directory.'/'.$filename.'.js');
            
$asset->setCombinedAssetSourceFiles($sourceFiles);

            return array(
$asset);
        }

        return 
$assets;
    }

    
/**
     * @return string
     */
    
public function getAssetType()
    {
        return 
'javascript';
    }

    
/**
     * @return string
     */
    
public function __toString()
    {
        
$e = new Element('script');
        
$e->type('text/javascript')->src($this->getAssetURL());
        if (
count($this->combinedAssetSourceFiles)) {
            
$source '';
            foreach (
$this->combinedAssetSourceFiles as $file) {
                
$source .= $file.' ';
            }
            
$source trim($source);
            
$e->setAttribute('data-source'$source);
        }

        return (string) 
$e;
    }
}
Онлайн: 0
Реклама