예제 #1
0
function smarty_function_load_js($params, &$smarty)
{
    $loadMethod = ResourceHelper::getLoadMethod();
    //装载外部资源: jQuery CDN
    if (ResourceHelper::isExternalOpen() && defined("__EXTERNAL_JQUERY_URL")) {
        foreach ($params as $key => $val) {
            if (substr($key, 0, 4) == 'file' && ($val == "jquery.js" || $val == "jquery.min.js")) {
                echo "<script language='JavaScript' src='" . __EXTERNAL_JQUERY_URL . "'></script>\r\n";
                unset($params[$key]);
                break;
            }
        }
    }
    //装载外部资源: 外部存储
    if ($loadMethod == "EXTERNAL") {
        if (load_external_resource("js", $params)) {
            return;
        }
    }
    $files = array();
    foreach ($params as $key => $val) {
        if (substr($key, 0, 4) == 'file') {
            $val = trim($val);
            if ($val == '') {
                continue;
            }
            $num = intval(substr($key, 4));
            $files[$num] = $val;
        }
    }
    ksort($files);
    if ($loadMethod == "ORIGIN") {
        //显示原始文件
        foreach ($files as $file) {
            $url = RewriteHelper::getURL("js", array("file" => $file));
            echo "<script language='JavaScript' src='{$url}'></script>\r\n";
        }
    } else {
        if ($loadMethod == "PAGE") {
            //显示到页面中
            $result = __auto_create_js_cache($files, true);
            echo "<script language='JavaScript'>\r\n" . trim($result['data']) . "\r\n</script>\r\n";
        } else {
            $result = __auto_create_js_cache($files);
            $url = RewriteHelper::getURL("js_c", array("key" => $result['md5key'], "res" => $result['resdir']));
            echo "<script language='JavaScript' src='{$url}'></script>\r\n";
        }
    }
}
예제 #2
0
파일: resource.php 프로젝트: rchick/syrup
 /**
  * Include specified set of stylesheets to header.
  *
  * @return string Included stylesheets
  */
 public function css()
 {
     $stylesheets = func_get_args();
     $top = false;
     foreach ($stylesheets as $index => $stylesheet) {
         if (is_array($stylesheet)) {
             if (!empty($stylesheet)) {
                 $stylesheets = array_merge($stylesheets, $stylesheet);
             }
             unset($stylesheets[$index]);
         } elseif (is_bool($stylesheet)) {
             $top = $stylesheet;
             unset($stylesheets[$index]);
         }
     }
     if ($top) {
         $stylesheets = array_merge($stylesheets, self::$__stylesheets);
     } else {
         $stylesheets = array_merge(self::$__stylesheets, $stylesheets);
     }
     self::$__stylesheets = array_unique($stylesheets);
 }
예제 #3
0
function load_external_resource($type, &$params)
{
    global $_RESOURCE_CONFIG;
    static $loaded = array();
    if (ResourceHelper::isExternalOpen()) {
        return false;
    }
    if (defined("__EXTERNAL_RES_URL") && !empty($_RESOURCE_CONFIG) && !empty($_RESOURCE_CONFIG['name'])) {
        $url = __EXTERNAL_RES_URL . "resource/";
        if (!empty($_RESOURCE_CONFIG['path'])) {
            $url .= $_RESOURCE_CONFIG['path'];
        }
        $url .= $_RESOURCE_CONFIG['name'];
        if (isset($loaded[$type])) {
            $loaded[$type]++;
            $url .= "_" . $loaded[$type];
        } else {
            $loaded[$type] = 1;
        }
        $url .= "." . $type;
        if (!empty($_RESOURCE_CONFIG['version'])) {
            $url .= "?" . $_RESOURCE_CONFIG['version'];
        }
        if ($type == "css") {
            echo "<link href='{$url}' rel='stylesheet' />\r\n";
            return true;
        } else {
            if ($type == "js") {
                echo "<script language='JavaScript' src='{$url}'></script>\r\n";
                return true;
            }
        }
    }
    return false;
}
예제 #4
0
function __auto_create_css_cache($files, $returnData = false)
{
    if (ResourceHelper::isExternalOpen() && defined("__EXTERNAL_RES_URL")) {
        $baseURL = __EXTERNAL_RES_URL;
    } else {
        $baseURL = __RESOURCE_BASE_URL;
    }
    //1. 检查文件是否存在,并取得最后修改时间
    $loadFiles = array();
    $check = "";
    $resdir = "";
    foreach ($files as $file) {
        $file = str_replace(array('//', '..'), array('/', ''), $file);
        if ($file == '' || substr($file, -4) != '.css') {
            continue;
        }
        if (substr($file, 0, 1) == '/') {
            $file = substr($file, 1);
        }
        $pathfile = __ROOT_PATH . 'res/css/' . $file;
        $modifyTime = @filemtime($pathfile);
        if ($modifyTime == false) {
            logWarn("Load CSS ERROR - miss file: " . $pathfile);
            continue;
        }
        $resdir .= substr($file, 0, 1);
        //取文件名的第一个字母作为文件名
        $check .= $file . '|' . $modifyTime . '|';
        $loadFiles[] = array('file' => $file, 'mtime' => $modifyTime);
    }
    //2. 检查是否有缓存文件
    $md5key = md5($check);
    $result = array('resdir' => $resdir, 'md5key' => $md5key);
    $cacheFile = __FILES_PATH . 'res_c/css/' . $resdir . '/' . $md5key . '.css';
    if (file_exists($cacheFile)) {
        if ($returnData) {
            $result['data'] = file_get_contents($cacheFile);
        }
        return $result;
    }
    $data = "";
    foreach ($loadFiles as $info) {
        $originFile = __ROOT_PATH . 'res/css/' . $info['file'];
        $str = file_get_contents($originFile);
        $subBaseURL = $baseURL . "css/";
        $subdir = dirname($info['file']);
        if ($subdir != "" && $subdir != ".") {
            $subBaseURL .= $subdir . "/";
        }
        $str = FastPHP_CSSMin::minify($str, $subBaseURL);
        $data .= $str . "\r\n";
    }
    if (file_exists(dirname($cacheFile)) == false) {
        mkdir(dirname($cacheFile), 0777, true);
    }
    file_put_contents($cacheFile, $data);
    if ($returnData) {
        $result['data'] = $data;
    }
    return $result;
}