git-svn-id: http://xe-core.googlecode.com/svn/trunk@432 201d5d3c-b55e-5fd7-737f-ddc643e51545

This commit is contained in:
zero 2007-03-14 10:33:36 +00:00
parent 0b1e0c5b2d
commit 56cf43fd4b
4 changed files with 41 additions and 1 deletions

View file

@ -8,6 +8,11 @@
class PluginHandler extends Object { class PluginHandler extends Object {
function executePlugin($plugin, $args) {
debugPrint($plugin);
debugPrint($args);
}
} }
?> ?>

View file

@ -93,6 +93,9 @@
// import xml filter/ css/ js <!--%filename--> // import xml filter/ css/ js <!--%filename-->
$buff = preg_replace_callback('!<\!--%import\(\"([^\"]*?)\"\)-->!is', array($this, '_compileImportCode'), $buff); $buff = preg_replace_callback('!<\!--%import\(\"([^\"]*?)\"\)-->!is', array($this, '_compileImportCode'), $buff);
// plugin 코드 변경
$buff = preg_replace_callback('!<div plugin=([^<]*?)<\/div>!is', array($this, '_compilePluginCode'), $buff);
// 파일에 쓰기 전에 직접 호출되는 것을 방지 // 파일에 쓰기 전에 직접 호출되는 것을 방지
$buff = sprintf('%s%s%s','<?php if(!__ZB5__) exit();?>',"\n",$buff); $buff = sprintf('%s%s%s','<?php if(!__ZB5__) exit();?>',"\n",$buff);
@ -269,6 +272,36 @@
return $output; return $output;
} }
/**
* @brief 플러그인 코드를 실제 php코드로 변경
**/
function _compilePluginCode($matches) {
$oXmlParser = new XmlParser();
$xml_doc = $oXmlParser->parse($matches[0]);
$vars = $xml_doc->div->attrs;
if(!$vars->plugin) return "";
// 플러그인의 이름을 구함
$plugin = $vars->plugin;
unset($vars->plugin);
// 플러그인의 변수들을 세팅
$vars_count = get_object_vars($vars);
if($vars_count) {
foreach($vars as $key => $val) {
$key = str_replace('"','\"', $key);
$val = str_replace('"','\"', $val);
$args_list[] = sprintf('"%s"=>"%s"', $key, $val);
}
$args = sprintf('array(%s)', implode(',',$args_list));
}
// 플러그인 실행코드를 삽입
$output = sprintf('<?php PluginHandler::executePlugin("%s", %s); ?>', $plugin, $args);
return $output;
}
/** /**
* @brief $tpl_file로 compiled_tpl_file이름을 return * @brief $tpl_file로 compiled_tpl_file이름을 return
**/ **/

View file

@ -18,7 +18,7 @@
/** /**
* @brief debug mode = true 일때 files/_debug_message.php 디버그 내용이 쌓임 * @brief debug mode = true 일때 files/_debug_message.php 디버그 내용이 쌓임
**/ **/
define('__DEBUG__', true); define('__DEBUG__', false);
if(__DEBUG__) { if(__DEBUG__) {
// php5이상이면 error handling을 handleError() 로 set // php5이상이면 error handling을 handleError() 로 set

View file

@ -43,6 +43,8 @@
</div> </div>
</div> </div>
<div plugin="newest_document" title="asdf" order_target="list_order" order_type="desc" list_count="asdf" ></div>
</div> </div>
<div> <div>