!is', array($this,'transWidgetBox'), $content);
// include_info, 즉 위젯의 수정일 경우 css와 js파일을 추가해 주고 위젯 수정용 레이어도 추가함
if($this->include_info) {
Context::addJsFile("./modules/widget/tpl/js/widget.js");
Context::addCSSFile("./modules/widget/tpl/css/widget.css");
$oTemplate = &TemplateHandler::getInstance();
$tpl = $oTemplate->compile($this->module_path.'tpl', 'widget_layer');
$content .= $tpl;
}
return $content;
}
/**
* @brief 위젯 코드를 실제 php코드로 변경
**/
function transWidget($matches) {
$oContext = &Context::getInstance();
$buff = trim($matches[0]);
$buff = preg_replace_callback('/([^=^"^ ]*)=([^ ^>]*)/i', array($oContext, _fixQuotation), $buff);
$buff = str_replace("&","&",$buff);
$oXmlParser = new XmlParser();
$xml_doc = $oXmlParser->parse(trim($buff));
if($xml_doc->img) $vars = $xml_doc->img->attrs;
else $vars = $xml_doc->attrs;
if(!$vars->widget) return "";
// 캐시 체크
$widget_sequence = $vars->widget_sequence;
$widget_cache = $vars->widget_cache;
if($widget_cache && $widget_sequence && !$this->include_info) {
$output = WidgetHandler::getCache($widget_sequence, $widget_cache);
if($output) return $output;
}
// 위젯의 이름을 구함
$widget = $vars->widget;
unset($vars->widget);
return WidgetHandler::execute($widget, $vars, $this->include_info);
}
/**
* @brief 위젯 박스를 실제 php코드로 변경
**/
function transWidgetBox($matches) {
$buff = preg_replace('/
$/i','
',$matches[0]);
$oXmlParser = new XmlParser();
$xml_doc = $oXmlParser->parse($buff);
$vars = $xml_doc->div->attrs;
$widget = $vars->widget;
unset($vars->widget);
// 위젯의 이름을 구함
if(!$widget) return $matches[0];
return WidgetHandler::execute($widget, $vars, $this->include_info);
}
/**
* @brief 에디터에서 생성한 컨텐츠를 페이지 수정시 사용할 수 있도록 코드 생성
**/
function transEditorContent($content, $args = null) {
// 에디터의 내용을 변환하여 visual한 영역과 원본 소스를 가지고 있는 code로 분리
$code = $content;
$oContext = &Context::getInstance();
$content = preg_replace_callback('!
]*)editor_component=([^\>]*)>(.*?)\<\/div\>!is', array($oContext,'transEditorComponent'), $content);
$content = preg_replace_callback('!
![]()
]*)editor_component=([^\>]*?)\>!is', array($oContext,'transEditorComponent'), $content);
// 결과물에 있는 css Meta 목록을 구해와서 해당 css를 아예 읽어버림
require_once("./classes/optimizer/Optimizer.class.php");
$oOptimizer = new Optimizer();
preg_match_all('!<\!\-\-Meta:([^\-]*?)\-\->!is', $content, $matches);
$css_header = null;
for($i=0;$i
replaceCssPath($css_file, $buff)."\n";
}
$tpl = sprintf(
''.
'',
$css_header,
$args->style,
$args->widget_padding_left, $args->widget_padding_right, $args->widget_padding_top, $args->widget_padding_bottom,
$args->widget_padding_top, $args->widget_padding_right, $args->widget_padding_bottom, $args->widget_padding_left,
$content,
base64_encode($code)
);
return $tpl;
}
}
?>