From 8062daecf3b42e384b3b33d2661658bcca8a48ca Mon Sep 17 00:00:00 2001 From: flyskyko Date: Sun, 4 Sep 2011 08:48:26 +0000 Subject: [PATCH] change cdn feature git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@9017 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 15 +++++--- classes/display/HTMLDisplayHandler.php | 34 +++++++++---------- .../FrontEndFileHandler.class.php | 24 +++++++++---- classes/template/TemplateHandler.class.php | 12 ++++--- config/config.inc.php | 9 +++-- 5 files changed, 59 insertions(+), 35 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 3f7683787..f010966db 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -1069,10 +1069,17 @@ class Context { * $args[2]: target IE * $args[3]: index **/ - function loadFile($args, $cdnPath = '') + function loadFile($args, $useCdn = false, $cdnPrefix = '', $cdnVersion = '') { is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); - $self->oFrontEndFileHandler->loadFile($args, $cdnPath); + + if ($useCdn && !$cdnPrefix) + { + $cdnPrefix = __XE_CDN_PREFIX__; + $cdnVersion = __XE_CDN_VERSION__; + } + + $self->oFrontEndFileHandler->loadFile($args, $useCdn, $cdnPrefix, $cdnVersion); } function unloadFile($file, $targetIe = '', $media = 'all') @@ -1202,8 +1209,8 @@ class Context { if(!$filename) continue; if(substr($filename,0,2)=='./') $filename = substr($filename,2); - if(preg_match('/\.js$/i', $filename)) $self->loadFile(array($plugin_path.$filename, 'body', '', 0)); - elseif(preg_match('/\.css$/i', $filename)) $self->loadFile(array($plugin_path.$filename, 'all', '', 0)); + if(preg_match('/\.js$/i', $filename)) $self->loadFile(array($plugin_path.$filename, 'body', '', 0), true); + elseif(preg_match('/\.css$/i', $filename)) $self->loadFile(array($plugin_path.$filename, 'all', '', 0), true); } if(is_dir($plugin_path.'lang')) $self->loadLang($plugin_path.'lang'); diff --git a/classes/display/HTMLDisplayHandler.php b/classes/display/HTMLDisplayHandler.php index 5eabbe91e..c1d18155f 100644 --- a/classes/display/HTMLDisplayHandler.php +++ b/classes/display/HTMLDisplayHandler.php @@ -162,30 +162,30 @@ class HTMLDisplayHandler { // add common JS/CSS files if(__DEBUG__) { - $oContext->loadFile(array('./common/js/jquery.js', 'head', '', -100000)); - $oContext->loadFile(array('./common/js/x.js', 'head', '', -100000)); - $oContext->loadFile(array('./common/js/common.js', 'head', '', -100000)); - $oContext->loadFile(array('./common/js/js_app.js', 'head', '', -100000)); - $oContext->loadFile(array('./common/js/xml_handler.js', 'head', '', -100000)); - $oContext->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000)); - $oContext->loadFile(array('./common/css/xe.css', 'all', '', -100000)); + $oContext->loadFile(array('./common/js/jquery.js', 'head', '', -100000), true); + $oContext->loadFile(array('./common/js/x.js', 'head', '', -100000), true); + $oContext->loadFile(array('./common/js/common.js', 'head', '', -100000), true); + $oContext->loadFile(array('./common/js/js_app.js', 'head', '', -100000), true); + $oContext->loadFile(array('./common/js/xml_handler.js', 'head', '', -100000), true); + $oContext->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000), true); + $oContext->loadFile(array('./common/css/xe.css', 'all', '', -100000), true); } else { - $oContext->loadFile(array('./common/js/jquery.min.js', 'head', '', -100000)); - $oContext->loadFile(array('./common/js/x.min.js', 'head', '', -100000)); - $oContext->loadFile(array('./common/js/xe.min.js', 'head', '', -100000)); - $oContext->loadFile(array('./common/css/xe.min.css', 'all', '', -100000)); + $oContext->loadFile(array('./common/js/jquery.min.js', 'head', '', -100000), true); + $oContext->loadFile(array('./common/js/x.min.js', 'head', '', -100000), true); + $oContext->loadFile(array('./common/js/xe.min.js', 'head', '', -100000), true); + $oContext->loadFile(array('./common/css/xe.min.css', 'all', '', -100000), true); } // for admin page, add admin css if(Context::get('module')=='admin' || strpos(Context::get('act'),'Admin')>0){ if(__DEBUG__) { - $oContext->loadFile(array('./modules/admin/tpl/css/admin.css', 'all', '', 100000)); - $oContext->loadFile(array("./modules/admin/tpl/css/admin_{$lang_type}.css", 'all', '', 100000)); - $oContext->loadFile('./modules/admin/tpl/js/admin.js'); + $oContext->loadFile(array('./modules/admin/tpl/css/admin.css', 'all', '', 100000), true); + $oContext->loadFile(array("./modules/admin/tpl/css/admin_{$lang_type}.css", 'all', '', 100000), true); + $oContext->loadFile('./modules/admin/tpl/js/admin.js', true); } else { - $oContext->loadFile(array('./modules/admin/tpl/css/admin.min.css', 'all', '', 100000)); - $oContext->loadFile(array("./modules/admin/tpl/css/admin_{$lang_type}.min.css", 'all', '',10000)); - $oContext->loadFile('./modules/admin/tpl/js/admin.js'); + $oContext->loadFile(array('./modules/admin/tpl/css/admin.min.css', 'all', '', 100000), true); + $oContext->loadFile(array("./modules/admin/tpl/css/admin_{$lang_type}.min.css", 'all', '',10000), true); + $oContext->loadFile('./modules/admin/tpl/js/admin.js', true); } } } diff --git a/classes/frontendfile/FrontEndFileHandler.class.php b/classes/frontendfile/FrontEndFileHandler.class.php index c735a7849..d3470b838 100644 --- a/classes/frontendfile/FrontEndFileHandler.class.php +++ b/classes/frontendfile/FrontEndFileHandler.class.php @@ -1,7 +1,7 @@ fileName = $pathInfo['basename']; $file->filePath = $this->_getAbsFileUrl($pathInfo['dirname']); $file->fileExtension = strtolower($pathInfo['extension']); - $file->cdnPath = $cdnPath; + + if (strpos($file->filePath, '://') == false) + { + $file->useCdn = $useCdn; + $file->cdnPath = $this->_normalizeFilePath($pathInfo['dirname']); + $file->cdnPrefix = $cdnPrefix; + $file->cdnVersion = $cdnVersion; + } $availableExtension = array('css', 'js'); if (!in_array($file->fileExtension, $availableExtension)) return; @@ -46,6 +53,7 @@ if ($file->fileExtension == 'css') { $file->media = $args[1]; + if (!$file->media) $file->media = 'all'; $map = &$this->cssMap; $mapIndex = &$this->cssMapIndex; $key = $file->filePath . $file->fileName . "\t" . $file->targetIe . "\t" . $file->media; @@ -123,12 +131,13 @@ $dbInfo = Context::get('db_info'); $useCdn = $dbInfo->use_cdn; + $result = array(); foreach($map as $file) { - if ($useCdn == 'Y' && $file->cdnPath) + if ($useCdn == 'Y' && $file->useCdn) { - $fullFilePath = __XE_CDN__ . $file->cdnPath . '/' . $file->fileName; + $fullFilePath = $file->cdnPrefix . $file->cdnVersion . '/' . substr($file->cdnPath, 2) . '/' . $file->fileName; } else { @@ -157,12 +166,13 @@ $dbInfo = Context::get('db_info'); $useCdn = $dbInfo->use_cdn; + $result = array(); foreach($map as $file) { - if ($useCdn == 'Y' && $file->cdnPath) + if ($useCdn == 'Y' && $file->useCdn) { - $fullFilePath = __XE_CDN__ . $file->cdnPath . '/' . $file->fileName; + $fullFilePath = $file->cdnPrefix . $file->cdnVersion . '/' . substr($file->cdnPath, 2) . '/' . $file->fileName; } else { diff --git a/classes/template/TemplateHandler.class.php b/classes/template/TemplateHandler.class.php index 77aa2edcd..8c4e687b8 100644 --- a/classes/template/TemplateHandler.class.php +++ b/classes/template/TemplateHandler.class.php @@ -527,7 +527,7 @@ if(!preg_match('/^(http|https)/i',$target)) { if(substr($target,0,2)=='./') $target = substr($target,2); - if(substr($target,0,1)!='/') $target = $web_path.$target; + //if(substr($target,0,1)!='/') $target = $web_path.$target; } if(!$attrs['index']) $attrs['index'] = 'null'; @@ -579,19 +579,21 @@ // css file case 'css' : if($type == 'unload') { - $output = ''; + $output = sprintf("", $source_filename, $attrs['targetie'], $attrs['media']); } else { $meta_file = $source_filename; - $output = ''; + $output = sprintf("", + $source_filename, $attrs['media'], $attrs['targetie'], $attrs['index'], $attrs['usecdn'], $attrs['cdnprefix'], $attrs['cdnversion']); } break; // js file case 'js' : if($type == 'unload') { - $output = ''; + $output = sprintf("", $source_filename, $attrs['targetie']); } else { $meta_file = $source_filename; - $output = ''; + $output = sprintf("", + $source_filename, $attrs['type'], $attrs['targetie'], $attrs['index'], $attrs['usecdn'], $attrs['cdnprefix'], $attrs['cdnversion']); } break; } diff --git a/config/config.inc.php b/config/config.inc.php index 1250143e1..474737905 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -21,9 +21,14 @@ define('_XE_PATH_', str_replace('config/config.inc.php', '', str_replace('\\', '/', __FILE__))); /** - * @brief CDN domain + * @brief CDN prefix **/ - define('__XE_CDN__', 'http://static.xpressengine.com/'); + define('__XE_CDN_PREFIX__', 'http://static.xpressengine.com/core/'); + + /** + * @brief CDN version + **/ + define('__XE_CDN_VERSION__', '1.0'); /** * @brief 쿠키 이외의 값에서도 세션을 인식할 수 있도록 함(파일업로드 등에서의 문제 수정)