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

This commit is contained in:
zero 2007-06-19 09:11:10 +00:00
parent 15801d738a
commit 8390ec57e2
75 changed files with 484 additions and 484 deletions

View file

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<module version="0.1">
<title xml:lang="ko">플러그인 관리</title>
<title xml:lang="ko">위젯 관리</title>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
<name xml:lang="ko">제로</name>
<description xml:lang="ko">플러그인 관리 모듈</description>
<description xml:lang="ko">위젯 관리 모듈</description>
</author>
</module>

View file

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<module>
<actions>
<action name="dispPluginInfo" type="view" standalone="true" />
<action name="dispPluginGenerateCode" type="view" standalone="true" />
<action name="dispPluginGenerateCodeInPage" type="view" standalone="true" />
<action name="dispWidgetInfo" type="view" standalone="true" />
<action name="dispWidgetGenerateCode" type="view" standalone="true" />
<action name="dispWidgetGenerateCodeInPage" type="view" standalone="true" />
<action name="dispPluginAdminDownloadedList" type="view" standalone="true" admin_index="true" />
<action name="dispWidgetAdminDownloadedList" type="view" standalone="true" admin_index="true" />
<action name="procPluginGenerateCode" type="controller" standalone="true" />
<action name="procPluginGetColorsetList" type="controller" standalone="true" />
<action name="procWidgetGenerateCode" type="controller" standalone="true" />
<action name="procWidgetGetColorsetList" type="controller" standalone="true" />
</actions>
</module>

View file

@ -1,23 +1,23 @@
<?php
/**
* @file modules/plugin/lang/ko.lang.php
* @file modules/widget/lang/ko.lang.php
* @author zero <zero@nzeo.com>
* @brief 플러그인(plugin) 모듈의 기본 언어팩
* @brief 위젯(widget) 모듈의 기본 언어팩
**/
$lang->cmd_generate_code = '코드생성';
$lang->plugin_name = '플러그인 이름';
$lang->plugin_maker = '플러그인 제작자';
$lang->plugin_history = '변경사항';
$lang->plugin_info = '플러그인 정보';
$lang->plugin_code = '코드';
$lang->widget_name = '위젯 이름';
$lang->widget_maker = '위젯 제작자';
$lang->widget_history = '변경사항';
$lang->widget_info = '위젯 정보';
$lang->widget_code = '코드';
$lang->msg_plugin_is_not_exists = '%s 플러그인을 찾을 수 없습니다';
$lang->msg_plugin_object_is_null = '%s 플러그인의 객체 생성을 할 수가 없습니다';
$lang->msg_plugin_proc_is_null = '%s 플러그인의 proc() 를 실행할 수가 없습니다';
$lang->msg_widget_is_not_exists = '%s 위젯을 찾을 수 없습니다';
$lang->msg_widget_object_is_null = '%s 위젯의 객체 생성을 할 수가 없습니다';
$lang->msg_widget_proc_is_null = '%s 위젯의 proc() 를 실행할 수가 없습니다';
$lang->about_plugin_code = '선택하신 플러그인에서 요구하는 아래 항목들의 값을 넣고 [코드생성]버튼을 누르시면 제일 아래 칸에 템플릿 파일에 적용할 수 있는 코드가 출력 됩니다';
$lang->about_plugin_code_in_page = '아래 필요한 값들을 입력하신 후 추가 버튼을 누르시면 페이지 내에 플러그인이 삽입이 됩니다';
$lang->about_addon = "플러그인은 레이아웃이나 페이지 모듈에서 사용되는 작은 구성요소입니다.\n내부 모듈 또는 외부 open api와 연동될 수도 있고 설정을 통해서 다양한 응용이 가능합니다.\n제로보드XE의 페이지 모듈이나 레이아웃 모듈을 사용하지 않더라도 [코드생성] 기능을 통해 직접 플러그인 추가도 할 수 있습니다";
$lang->about_widget_code = '선택하신 위젯에서 요구하는 아래 항목들의 값을 넣고 [코드생성]버튼을 누르시면 제일 아래 칸에 템플릿 파일에 적용할 수 있는 코드가 출력 됩니다';
$lang->about_widget_code_in_page = '아래 필요한 값들을 입력하신 후 추가 버튼을 누르시면 페이지 내에 위젯이 삽입이 됩니다';
$lang->about_addon = "위젯은 레이아웃이나 페이지 모듈에서 사용되는 작은 구성요소입니다.\n내부 모듈 또는 외부 open api와 연동될 수도 있고 설정을 통해서 다양한 응용이 가능합니다.\n제로보드XE의 페이지 모듈이나 레이아웃 모듈을 사용하지 않더라도 [코드생성] 기능을 통해 직접 위젯 추가도 할 수 있습니다";
?>

View file

@ -1,11 +1,11 @@
<?php
/**
* @class pluginAdminView
* @class widgetAdminView
* @author zero (zero@nzeo.com)
* @brief plugin 모듈의 admin view class
* @brief widget 모듈의 admin view class
**/
class pluginAdminView extends plugin {
class widgetAdminView extends widget {
/**
* @brief 초기화
@ -15,15 +15,15 @@
}
/**
* @brief 플러그인 목록을 보여줌
* @brief 위젯 목록을 보여줌
**/
function dispPluginAdminDownloadedList() {
// 플러그인 목록을 세팅
$oPluginModel = &getModel('plugin');
$plugin_list = $oPluginModel->getDownloadedPluginList();
Context::set('plugin_list', $plugin_list);
function dispWidgetAdminDownloadedList() {
// 위젯 목록을 세팅
$oWidgetModel = &getModel('widget');
$widget_list = $oWidgetModel->getDownloadedWidgetList();
Context::set('widget_list', $widget_list);
$this->setTemplateFile('downloaded_plugin_list');
$this->setTemplateFile('downloaded_widget_list');
}
}
?>

View file

@ -1,11 +1,11 @@
<?php
/**
* @class plugin
* @class widget
* @author zero (zero@nzeo.com)
* @brief plugin 모듈의 high class
* @brief widget 모듈의 high class
**/
class plugin extends ModuleObject {
class widget extends ModuleObject {
/**
* @brief 설치시 추가 작업이 필요할시 구현
@ -13,13 +13,13 @@
function moduleInstall() {
// action forward에 등록 (관리자 모드에서 사용하기 위함)
$oModuleController = &getController('module');
$oModuleController->insertActionForward('plugin', 'view', 'dispPluginInfo');
$oModuleController->insertActionForward('plugin', 'view', 'dispPluginGenerateCode');
$oModuleController->insertActionForward('plugin', 'view', 'dispPluginGenerateCodePage');
$oModuleController->insertActionForward('plugin', 'view', 'dispPluginAdminDownloadedList');
$oModuleController->insertActionForward('widget', 'view', 'dispWidgetInfo');
$oModuleController->insertActionForward('widget', 'view', 'dispWidgetGenerateCode');
$oModuleController->insertActionForward('widget', 'view', 'dispWidgetGenerateCodePage');
$oModuleController->insertActionForward('widget', 'view', 'dispWidgetAdminDownloadedList');
// plugin 에서 사용할 cache디렉토리 생성
FileHandler::makeDir('./files/cache/plugin');
// widget 에서 사용할 cache디렉토리 생성
FileHandler::makeDir('./files/cache/widget');
return new Object();
}

View file

@ -1,11 +1,11 @@
<?php
/**
* @class pluginController
* @class widgetController
* @author zero (zero@nzeo.com)
* @brief plugin 모듈의 Controller class
* @brief widget 모듈의 Controller class
**/
class pluginController extends plugin {
class widgetController extends widget {
/**
* @brief 초기화
@ -14,16 +14,16 @@
}
/**
* @brief 플러그인생성된 코드를 return
* @brief 위젯생성된 코드를 return
**/
function procPluginGenerateCode() {
function procWidgetGenerateCode() {
// 변수 정리
$vars = Context::getRequestVars();
$plugin = $vars->selected_plugin;
$widget = $vars->selected_widget;
unset($vars->module);
unset($vars->act);
unset($vars->selected_plugin);
unset($vars->selected_widget);
$attribute = array();
if($vars) {
@ -34,20 +34,20 @@
}
$blank_img_path = "./common/tpl/images/blank.gif";
$plugin_code = sprintf('<img src="%s" class="zbxe_plugin_output" plugin="%s" %s style="width:100px;height:100px;"/>', $blank_img_path, $plugin, implode(' ',$attribute));
$widget_code = sprintf('<img src="%s" class="zbxe_widget_output" widget="%s" %s style="width:100px;height:100px;"/>', $blank_img_path, $widget, implode(' ',$attribute));
// 코드 출력
$this->add('plugin_code', $plugin_code);
$this->add('widget_code', $widget_code);
}
/**
* @brief 선택된 플러그인 - 스킨의 컬러셋을 return
* @brief 선택된 위젯 - 스킨의 컬러셋을 return
**/
function procPluginGetColorsetList() {
$plugin = Context::get('selected_plugin');
function procWidgetGetColorsetList() {
$widget = Context::get('selected_widget');
$skin = Context::get('skin');
$path = sprintf('./plugins/%s/', $plugin);
$path = sprintf('./widgets/%s/', $widget);
$oModuleModel = &getModel('module');
$skin_info = $oModuleModel->loadSkinInfo($path, $skin);

View file

@ -1,12 +1,12 @@
<?php
/**
* @class pluginModel
* @class widgetModel
* @author zero (zero@nzeo.com)
* @version 0.1
* @brief plugin 모듈의 Model class
* @brief widget 모듈의 Model class
**/
class pluginModel extends plugin {
class widgetModel extends widget {
/**
* @brief 초기화
@ -15,34 +15,34 @@
}
/**
* @brief 플러그인경로를 구함
* @brief 위젯경로를 구함
**/
function getPluginPath($plugin_name) {
$path = sprintf('./plugins/%s/', $plugin_name);
function getWidgetPath($widget_name) {
$path = sprintf('./widgets/%s/', $widget_name);
if(is_dir($path)) return $path;
return "";
}
/**
* @brief 플러그인종류와 정보를 구함
* 다운로드되어 있는 플러그인종류 (생성과 다른 의미)
* @brief 위젯종류와 정보를 구함
* 다운로드되어 있는 위젯종류 (생성과 다른 의미)
**/
function getDownloadedPluginList() {
// 다운받은 플러그인과 설치된 플러그인의 목록을 구함
$searched_list = FileHandler::readDir('./plugins');
function getDownloadedWidgetList() {
// 다운받은 위젯과 설치된 위젯의 목록을 구함
$searched_list = FileHandler::readDir('./widgets');
$searched_count = count($searched_list);
if(!$searched_count) return;
// 찾아진 플러그인 목록을 loop돌면서 필요한 정보를 간추려 return
// 찾아진 위젯 목록을 loop돌면서 필요한 정보를 간추려 return
for($i=0;$i<$searched_count;$i++) {
// 플러그인의 이름
$plugin = $searched_list[$i];
// 위젯의 이름
$widget = $searched_list[$i];
// 해당 플러그인의 정보를 구함
$plugin_info = $this->getPluginInfo($plugin);
// 해당 위젯의 정보를 구함
$widget_info = $this->getWidgetInfo($widget);
$list[] = $plugin_info;
$list[] = $widget_info;
}
return $list;
}
@ -51,45 +51,45 @@
* @brief 모듈의 conf/info.xml 읽어서 정보를 구함
* 이것 역시 캐싱을 통해서 xml parsing 시간을 줄인다..
**/
function getPluginInfo($plugin) {
function getWidgetInfo($widget) {
// 요청된 모듈의 경로를 구한다. 없으면 return
$plugin_path = $this->getPluginPath($plugin);
if(!$plugin_path) return;
$widget_path = $this->getWidgetPath($widget);
if(!$widget_path) return;
// 현재 선택된 모듈의 스킨의 정보 xml 파일을 읽음
$xml_file = sprintf("%sconf/info.xml", $plugin_path);
$xml_file = sprintf("%sconf/info.xml", $widget_path);
if(!file_exists($xml_file)) return;
// cache 파일을 비교하여 문제 없으면 include하고 $plugin_info 변수를 return
$cache_file = sprintf('./files/cache/plugin/%s.%s.cache.php', $plugin, Context::getLangType());
// cache 파일을 비교하여 문제 없으면 include하고 $widget_info 변수를 return
$cache_file = sprintf('./files/cache/widget/%s.%s.cache.php', $widget, Context::getLangType());
if(file_exists($cache_file)&&filectime($cache_file)>filectime($xml_file)) {
@include($cache_file);
return $plugin_info;
return $widget_info;
}
// cache 파일이 없으면 xml parsing하고 변수화 한 후에 캐시 파일에 쓰고 변수 바로 return
$oXmlParser = new XmlParser();
$tmp_xml_obj = $oXmlParser->loadXmlFile($xml_file);
$xml_obj = $tmp_xml_obj->plugin;
$xml_obj = $tmp_xml_obj->widget;
if(!$xml_obj) return;
$buff = '';
// 플러그인의 제목, 버전
$buff .= sprintf('$plugin_info->plugin = "%s";', $plugin);
$buff .= sprintf('$plugin_info->path = "%s";', $plugin_path);
$buff .= sprintf('$plugin_info->title = "%s";', $xml_obj->title->body);
$buff .= sprintf('$plugin_info->version = "%s";', $xml_obj->attrs->version);
$buff .= sprintf('$plugin_info->plugin_srl = $plugin_srl;');
$buff .= sprintf('$plugin_info->plugin_title = $plugin_title;');
// 위젯의 제목, 버전
$buff .= sprintf('$widget_info->widget = "%s";', $widget);
$buff .= sprintf('$widget_info->path = "%s";', $widget_path);
$buff .= sprintf('$widget_info->title = "%s";', $xml_obj->title->body);
$buff .= sprintf('$widget_info->version = "%s";', $xml_obj->attrs->version);
$buff .= sprintf('$widget_info->widget_srl = $widget_srl;');
$buff .= sprintf('$widget_info->widget_title = $widget_title;');
// 작성자 정보
$buff .= sprintf('$plugin_info->author->name = "%s";', $xml_obj->author->name->body);
$buff .= sprintf('$plugin_info->author->email_address = "%s";', $xml_obj->author->attrs->email_address);
$buff .= sprintf('$plugin_info->author->homepage = "%s";', $xml_obj->author->attrs->link);
$buff .= sprintf('$plugin_info->author->date = "%s";', $xml_obj->author->attrs->date);
$buff .= sprintf('$plugin_info->author->description = "%s";', $xml_obj->author->description->body);
$buff .= sprintf('$widget_info->author->name = "%s";', $xml_obj->author->name->body);
$buff .= sprintf('$widget_info->author->email_address = "%s";', $xml_obj->author->attrs->email_address);
$buff .= sprintf('$widget_info->author->homepage = "%s";', $xml_obj->author->attrs->link);
$buff .= sprintf('$widget_info->author->date = "%s";', $xml_obj->author->attrs->date);
$buff .= sprintf('$widget_info->author->description = "%s";', $xml_obj->author->description->body);
// 추가 변수 (템플릿에서 사용할 제작자 정의 변수)
if(!is_array($xml_obj->extra_vars->var)) $extra_vars[] = $xml_obj->extra_vars->var;
@ -97,16 +97,16 @@
if($extra_vars[0]->attrs->id) {
$extra_var_count = count($extra_vars);
$buff .= sprintf('$plugin_info->extra_var_count = "%s";', $extra_var_count);
$buff .= sprintf('$widget_info->extra_var_count = "%s";', $extra_var_count);
for($i=0;$i<$extra_var_count;$i++) {
unset($var);
unset($options);
$var = $extra_vars[$i];
$buff .= sprintf('$plugin_info->extra_var->%s->name = "%s";', $var->attrs->id, $var->name->body);
$buff .= sprintf('$plugin_info->extra_var->%s->type = "%s";', $var->attrs->id, $var->type->body);
$buff .= sprintf('$plugin_info->extra_var->%s->value = $vars->%s;', $var->attrs->id, $var->attrs->id);
$buff .= sprintf('$plugin_info->extra_var->%s->description = "%s";', $var->attrs->id, str_replace('"','\"',$var->description->body));
$buff .= sprintf('$widget_info->extra_var->%s->name = "%s";', $var->attrs->id, $var->name->body);
$buff .= sprintf('$widget_info->extra_var->%s->type = "%s";', $var->attrs->id, $var->type->body);
$buff .= sprintf('$widget_info->extra_var->%s->value = $vars->%s;', $var->attrs->id, $var->attrs->id);
$buff .= sprintf('$widget_info->extra_var->%s->description = "%s";', $var->attrs->id, str_replace('"','\"',$var->description->body));
$options = $var->options;
if(!$options) continue;
@ -114,7 +114,7 @@
if(!is_array($options)) $options = array($options);
$options_count = count($options);
for($j=0;$j<$options_count;$j++) {
$buff .= sprintf('$plugin_info->extra_var->%s->options["%s"] = "%s";', $var->attrs->id, $options[$j]->value->body, $options[$j]->name->body);
$buff .= sprintf('$widget_info->extra_var->%s->options["%s"] = "%s";', $var->attrs->id, $options[$j]->value->body, $options[$j]->name->body);
}
}
@ -124,7 +124,7 @@
FileHandler::writeFile($cache_file, $buff);
if(file_exists($cache_file)) @include($cache_file);
return $plugin_info;
return $widget_info;
}
}

View file

@ -1,11 +1,11 @@
<?php
/**
* @class pluginView
* @class widgetView
* @author zero (zero@nzeo.com)
* @brief plugin 모듈의 View class
* @brief widget 모듈의 View class
**/
class pluginView extends plugin {
class widgetView extends widget {
/**
* @brief 초기화
@ -15,29 +15,29 @@
}
/**
* @brief 플러그인상세 정보(conf/info.xml) 팝업 출력
* @brief 위젯상세 정보(conf/info.xml) 팝업 출력
**/
function dispPluginInfo() {
// 선택된 플러그인 정보를 구함
$oPluginModel = &getModel('plugin');
$plugin_info = $oPluginModel->getPluginInfo(Context::get('selected_plugin'));
Context::set('plugin_info', $plugin_info);
function dispWidgetInfo() {
// 선택된 위젯 정보를 구함
$oWidgetModel = &getModel('widget');
$widget_info = $oWidgetModel->getWidgetInfo(Context::get('selected_widget'));
Context::set('widget_info', $widget_info);
// 플러그인을 팝업으로 지정
// 위젯을 팝업으로 지정
$this->setLayoutFile('popup_layout');
// 템플릿 파일 지정
$this->setTemplateFile('plugin_detail_info');
$this->setTemplateFile('widget_detail_info');
}
/**
* @brief 플러그인코드 생성기
* @brief 위젯코드 생성기
**/
function dispPluginGenerateCode() {
// 선택된 플러그인 정보를 구함
$oPluginModel = &getModel('plugin');
$plugin_info = $oPluginModel->getPluginInfo(Context::get('selected_plugin'));
Context::set('plugin_info', $plugin_info);
function dispWidgetGenerateCode() {
// 선택된 위젯 정보를 구함
$oWidgetModel = &getModel('widget');
$widget_info = $oWidgetModel->getWidgetInfo(Context::get('selected_widget'));
Context::set('widget_info', $widget_info);
// mid 목록을 가져옴
$oModuleModel = &getModel('module');
@ -45,22 +45,22 @@
Context::set('mid_list', $mid_list);
// 스킨의 정보를 구함
$skin_list = $oModuleModel->getSkins($plugin_info->path);
$skin_list = $oModuleModel->getSkins($widget_info->path);
Context::set('skin_list', $skin_list);
// 플러그인을 팝업으로 지정
// 위젯을 팝업으로 지정
$this->setLayoutFile('popup_layout');
// 템플릿 파일 지정
$this->setTemplateFile('plugin_generate_code');
$this->setTemplateFile('widget_generate_code');
}
/**
* @brief 페이지 관리에서 사용될 코드 생성 팝업
**/
function dispPluginGenerateCodeInPage() {
$this->dispPluginGenerateCode();
$this->setTemplateFile('plugin_generate_code_in_page');
function dispWidgetGenerateCodeInPage() {
$this->dispWidgetGenerateCode();
$this->setTemplateFile('widget_generate_code_in_page');
}
}

View file

@ -1,11 +1,11 @@
@charset "utf-8";
.plugin_detail_info_window {
.widget_detail_info_window {
width:600px;
clear:both;
}
.plugin_title {
.widget_title {
font-weight:bold;
font-size:10pt;
text-align:center;
@ -14,7 +14,7 @@
background-color:#444444;
}
.plugin_description {
.widget_description {
margin:5px 2px 10px 2px;
border:1px solid #EEEEEE;
color:#444444;
@ -22,7 +22,7 @@
padding:5px;
}
.plugin_header {
.widget_header {
clear:left;
font-weight:bold;
float:left;
@ -31,20 +31,20 @@
padding:5px 0px 5px 0px;
}
.plugin_body {
.widget_body {
float:left;
width:490px;
padding:5px 0px 5px 0px;
}
.plugin_var_description {
.widget_var_description {
clear:both;
padding:5px 0px 5px 0px;
margin-left:100px;
color:#AAAAAA;
}
.plugin_button_area {
.widget_button_area {
clear:both;
text-align:center;
padding:5px 0px 5px 0px;
@ -52,14 +52,14 @@
border-top:1px solid #AAAAAA;
}
.plugin_button {
.widget_button {
border:1px solid #AAAAAA;
background-color:#FFFFFF;
font-weight:bold;
height:16px;
}
.plugin_code_area {
.widget_code_area {
clear:both;
padding:4px;
border:1px solid #AAAAAA;
@ -67,7 +67,7 @@
height:100px;
}
.plugin_code_area textarea {
.widget_code_area textarea {
border:0px;
height:100px;
width:570px;
@ -75,7 +75,7 @@
font-size:8pt;
}
.plugin_mid_list {
.widget_mid_list {
float:left;
margin-right:10px;
}

View file

@ -3,30 +3,30 @@
{nl2br($lang->about_addon)}
</div>
<!-- 플러그인의 목록 -->
<!-- 위젯의 목록 -->
<div>
<table border="1" width="100%">
<tr>
<td>{$lang->plugin_name}</td>
<td>{$lang->widget_name}</td>
<td>{$lang->version}</td>
<td>{$lang->author}</td>
<td>{$lang->date}</td>
<td>{$lang->path}</td>
<td>{$lang->cmd_generate_code}</td>
<td>{$lang->plugin_info}</td>
<td>{$lang->widget_info}</td>
</tr>
<!--@foreach($plugin_list as $key => $val)-->
<!--@foreach($widget_list as $key => $val)-->
<tr>
<td rowspan="2">
{$val->title} <br />
({$val->plugin})
({$val->widget})
</td>
<td>{$val->version}</td>
<td><a href="#" onclick="window.open('{$val->author->homepage}')">{$val->author->name}</a></td>
<td>{$val->author->date}</td>
<td>{$val->path}</td>
<td><a href="#" onclick="popopen('{getUrl('','module','plugin','act','dispPluginGenerateCode','selected_plugin',$val->plugin)}','plugin_code_generate');return false">{$lang->cmd_generate_code}</a></td>
<td><a href="#" onclick="popopen('{getUrl('','module','plugin','act','dispPluginInfo','selected_plugin',$val->plugin)}','plugin_info');return false">{$lang->cmd_view}</a></td>
<td><a href="#" onclick="popopen('{getUrl('','module','widget','act','dispWidgetGenerateCode','selected_widget',$val->widget)}','widget_code_generate');return false">{$lang->cmd_generate_code}</a></td>
<td><a href="#" onclick="popopen('{getUrl('','module','widget','act','dispWidgetInfo','selected_widget',$val->widget)}','widget_info');return false">{$lang->cmd_view}</a></td>
</tr>
<tr>
<td colspan="6">

View file

@ -1,7 +1,7 @@
<filter name="generate_code" module="plugin" act="procPluginGenerateCode">
<filter name="generate_code" module="widget" act="procWidgetGenerateCode">
<response callback_func="completeGenerateCode">
<tag name="error" />
<tag name="message" />
<tag name="plugin_code" />
<tag name="widget_code" />
</response>
</filter>

View file

@ -1,7 +1,7 @@
<filter name="generate_code_in_page" module="plugin" act="procPluginGenerateCode">
<filter name="generate_code_in_page" module="widget" act="procWidgetGenerateCode">
<response callback_func="completeGenerateCodeInPage">
<tag name="error" />
<tag name="message" />
<tag name="plugin_code" />
<tag name="widget_code" />
</response>
</filter>

View file

@ -1,23 +1,23 @@
/**
* @file modules/plugin/js/plugin_admin.js
* @file modules/widget/js/widget_admin.js
* @author zero (zero@nzeo.com)
* @brief plugin 모듈의 관리자용 javascript
* @brief widget 모듈의 관리자용 javascript
**/
/* 생성된 코드를 textarea에 출력 */
function completeGenerateCode(ret_obj) {
var plugin_code = ret_obj["plugin_code"];
var widget_code = ret_obj["widget_code"];
var zone = xGetElementById("plugin_code");
zone.value = plugin_code;
var zone = xGetElementById("widget_code");
zone.value = widget_code;
}
/* 생성된 코드를 에디터에 출력 */
function completeGenerateCodeInPage(ret_obj,response_tags,params,fo_obj) {
var plugin_code = ret_obj["plugin_code"];
var widget_code = ret_obj["widget_code"];
var module_srl = fo_obj.module_srl.value;
if(!opener || !plugin_code || !module_srl) {
if(!opener || !widget_code || !module_srl) {
window.close();
return;
}
@ -29,8 +29,8 @@ function completeGenerateCodeInPage(ret_obj,response_tags,params,fo_obj) {
orig_width = parseInt(xWidth(node),10)-6;
orig_height = parseInt(xHeight(node),10)-6;
plugin_code = plugin_code.replace(/width([^p]+)px/ig,'width:'+orig_width+'px');
plugin_code = plugin_code.replace(/height([^p]+)px/ig,'height:'+orig_height+'px');
widget_code = widget_code.replace(/width([^p]+)px/ig,'width:'+orig_width+'px');
widget_code = widget_code.replace(/height([^p]+)px/ig,'height:'+orig_height+'px');
}
// 부모창에 에디터가 있으면 에디터에 추가
@ -38,14 +38,14 @@ function completeGenerateCodeInPage(ret_obj,response_tags,params,fo_obj) {
var iframe_obj = opener.editorGetIFrame(module_srl);
if(iframe_obj) {
opener.editorFocus(module_srl);
opener.editorReplaceHTML(iframe_obj, plugin_code);
opener.editorReplaceHTML(iframe_obj, widget_code);
opener.editorFocus(module_srl);
}
}
//window.close();
}
/* 플러그인 코드 생성시 스킨을 고르면 컬러셋의 정보를 표시 */
/* 위젯 코드 생성시 스킨을 고르면 컬러셋의 정보를 표시 */
function doDisplaySkinColorset(sel, colorset) {
var skin = sel.options[sel.selectedIndex].value;
if(!skin) {
@ -55,18 +55,18 @@ function doDisplaySkinColorset(sel, colorset) {
}
var params = new Array();
params["selected_plugin"] = xGetElementById("fo_plugin").selected_plugin.value;
params["selected_widget"] = xGetElementById("fo_widget").selected_widget.value;
params["skin"] = skin;
params["colorset"] = colorset;
var response_tags = new Array("error","message","colorset_list");
exec_xml("plugin", "procPluginGetColorsetList", params, completeGetSkinColorset, response_tags, params);
exec_xml("widget", "procWidgetGetColorsetList", params, completeGetSkinColorset, response_tags, params);
}
/* 서버에서 받아온 컬러셋을 표시 */
function completeGetSkinColorset(ret_obj, response_tags, params, fo_obj) {
var sel = xGetElementById("fo_plugin").plugin_colorset;
var sel = xGetElementById("fo_widget").widget_colorset;
var length = sel.options.length;
var selected_colorset = params["colorset"];
for(var i=0;i<length;i++) sel.remove(0);
@ -86,10 +86,10 @@ function completeGetSkinColorset(ret_obj, response_tags, params, fo_obj) {
setFixedPopupSize();
}
/* 페이지 모듈에서 내용의 플러그인을 더블클릭하여 수정하려고 할 경우 */
/* 페이지 모듈에서 내용의 위젯을 더블클릭하여 수정하려고 할 경우 */
var selected_node = null;
function doFillPluginVars() {
if(!opener || !opener.editorPrevNode || !opener.editorPrevNode.getAttribute("plugin")) return;
function doFillWidgetVars() {
if(!opener || !opener.editorPrevNode || !opener.editorPrevNode.getAttribute("widget")) return;
selected_node = opener.editorPrevNode;
@ -97,7 +97,7 @@ function doFillPluginVars() {
var skin = selected_node.getAttribute("skin");
var colorset = selected_node.getAttribute("colorset");
var fo_obj = xGetElementById("fo_plugin");
var fo_obj = xGetElementById("fo_widget");
for(var name in fo_obj) {
var node = fo_obj[name];
@ -136,8 +136,8 @@ function doFillPluginVars() {
}
// 컬러셋 설정
if(skin && xGetElementById("plugin_colorset").options.length<1 && colorset) {
doDisplaySkinColorset(xGetElementById("plugin_skin"), colorset);
if(skin && xGetElementById("widget_colorset").options.length<1 && colorset) {
doDisplaySkinColorset(xGetElementById("widget_skin"), colorset);
}
}

View file

@ -1,25 +1,25 @@
<!--%import("css/plugin.css")-->
<!--%import("css/widget.css")-->
<div class="plugin_detail_info_window">
<div class="widget_detail_info_window">
<div class="plugin_title">{$lang->plugin_maker}</div>
<div class="widget_title">{$lang->widget_maker}</div>
<div class="plugin_header">{$lang->title}</div>
<div class="plugin_body">{$plugin_info->title} ver {$plugin_info->version}</div>
<div class="widget_header">{$lang->title}</div>
<div class="widget_body">{$widget_info->title} ver {$widget_info->version}</div>
<div class="plugin_header">{$lang->author}</div>
<div class="plugin_body"><a href="mailto:{$plugin_info->author->email_address}">{$plugin_info->author->name}</a></div>
<div class="widget_header">{$lang->author}</div>
<div class="widget_body"><a href="mailto:{$widget_info->author->email_address}">{$widget_info->author->name}</a></div>
<div class="plugin_header">{$lang->homepage}</div>
<div class="plugin_body"><a href="#" onclick="window.open('{$plugin_info->author->homepage}');return false;">{$plugin_info->author->homepage}</a></div>
<div class="widget_header">{$lang->homepage}</div>
<div class="widget_body"><a href="#" onclick="window.open('{$widget_info->author->homepage}');return false;">{$widget_info->author->homepage}</a></div>
<div class="plugin_header">{$lang->regdate}</div>
<div class="plugin_body">{$plugin_info->author->date}</div>
<div class="widget_header">{$lang->regdate}</div>
<div class="widget_body">{$widget_info->author->date}</div>
<div class="plugin_header">{$lang->description}</div>
<div class="plugin_body">{nl2br($plugin_info->author->description)}</div>
<div class="widget_header">{$lang->description}</div>
<div class="widget_body">{nl2br($widget_info->author->description)}</div>
<div class="plugin_button_area">
<div class="widget_button_area">
<a href="#" onclick="window.close();">{$lang->cmd_close}</a>
</div>

View file

@ -1,21 +1,21 @@
<!--%import("filter/generate_code.xml")-->
<!--%import("js/plugin_admin.js")-->
<!--%import("css/plugin.css")-->
<!--%import("js/widget_admin.js")-->
<!--%import("css/widget.css")-->
<form action="./" method="get" onsubmit="return procFilter(this, generate_code);" id="fo_plugin">
<input type="hidden" name="selected_plugin" value="{$selected_plugin}" />
<form action="./" method="get" onsubmit="return procFilter(this, generate_code);" id="fo_widget">
<input type="hidden" name="selected_widget" value="{$selected_widget}" />
<div class="plugin_detail_info_window">
<div class="widget_detail_info_window">
<div class="plugin_title">{$lang->cmd_generate_code}</div>
<div class="widget_title">{$lang->cmd_generate_code}</div>
<div class="plugin_description">{$lang->about_plugin_code}</div>
<div class="widget_description">{$lang->about_widget_code}</div>
<div class="plugin_header">{$lang->plugin}</div>
<div class="plugin_body">{$plugin_info->title} ver {$plugin_info->version}</div>
<div class="widget_header">{$lang->widget}</div>
<div class="widget_body">{$widget_info->title} ver {$widget_info->version}</div>
<div class="plugin_header">{$lang->skin}</div>
<div class="plugin_body">
<div class="widget_header">{$lang->skin}</div>
<div class="widget_body">
<select name="skin" onchange="doDisplaySkinColorset(this);return false;">
<option value="">&nbsp;</option>
<!--@foreach($skin_list as $key => $val)-->
@ -25,17 +25,17 @@
</div>
<div id="colorset_area" style="display:none">
<div class="plugin_header">{$lang->colorset}</div>
<div class="plugin_body">
<select name="colorset" id="plugin_colorset">
<div class="widget_header">{$lang->colorset}</div>
<div class="widget_body">
<select name="colorset" id="widget_colorset">
</select>
</div>
</div>
<!--@foreach($plugin_info->extra_var as $id => $var)-->
<div class="plugin_header">{$var->name}</div>
<!--@foreach($widget_info->extra_var as $id => $var)-->
<div class="widget_header">{$var->name}</div>
<div class="plugin_body">
<div class="widget_body">
<!--@if($var->type == "text")-->
<input type="text" name="{$id}" value="" />
@ -51,22 +51,22 @@
<!--@elseif($var->type == "mid_list")-->
<!--@foreach($mid_list as $key => $val)-->
<div class="plugin_mid_list">
<div class="widget_mid_list">
<input type="checkbox" value="{$key}" name="{$id}" id="chk_mid_list_{$key}" />
<label for="chk_mid_list_{$key}">{$key} ({$val->browser_title})</label>
</div>
<!--@end-->
<!--@end-->
</div>
<div class="plugin_var_description">{$var->description}</div>
<div class="widget_var_description">{$var->description}</div>
<!--@end-->
<div class="plugin_button_area">
<input type="submit" value="{$lang->cmd_generate_code}" class="plugin_button" />
<input type="button" onclick="self.close()" value="{$lang->cmd_close}" class="plugin_button" />
<div class="widget_button_area">
<input type="submit" value="{$lang->cmd_generate_code}" class="widget_button" />
<input type="button" onclick="self.close()" value="{$lang->cmd_close}" class="widget_button" />
</div>
<div class="plugin_code_area"><textarea readonly="true" id="plugin_code"></textarea></div>
<div class="widget_code_area"><textarea readonly="true" id="widget_code"></textarea></div>
</div>

View file

@ -1,23 +1,23 @@
<!--%import("filter/generate_code_in_page.xml")-->
<!--%import("js/plugin_admin.js")-->
<!--%import("css/plugin.css")-->
<!--%import("js/widget_admin.js")-->
<!--%import("css/widget.css")-->
<form action="./" method="get" onsubmit="return procFilter(this, generate_code_in_page);" id="fo_plugin">
<input type="hidden" name="selected_plugin" value="{$selected_plugin}" />
<form action="./" method="get" onsubmit="return procFilter(this, generate_code_in_page);" id="fo_widget">
<input type="hidden" name="selected_widget" value="{$selected_widget}" />
<input type="hidden" name="module_srl" value="{$module_srl}" />
<div class="plugin_detail_info_window">
<div class="widget_detail_info_window">
<div class="plugin_title">{$plugin_info->title} ver {$plugin_info->version}</div>
<div class="widget_title">{$widget_info->title} ver {$widget_info->version}</div>
<div class="plugin_description">{$lang->about_plugin_code_in_page}</div>
<div class="widget_description">{$lang->about_widget_code_in_page}</div>
<div class="plugin_header">{$lang->description}</div>
<div class="plugin_body">{nl2br($plugin_info->author->description)}</div>
<div class="widget_header">{$lang->description}</div>
<div class="widget_body">{nl2br($widget_info->author->description)}</div>
<div class="plugin_header">{$lang->skin}</div>
<div class="plugin_body">
<select name="skin" onchange="doDisplaySkinColorset(this,'');return false;" id="plugin_skin">
<div class="widget_header">{$lang->skin}</div>
<div class="widget_body">
<select name="skin" onchange="doDisplaySkinColorset(this,'');return false;" id="widget_skin">
<option value="">&nbsp;</option>
<!--@foreach($skin_list as $key => $val)-->
<option value="{$key}">{$val->title} ({$key})</option>
@ -26,17 +26,17 @@
</div>
<div id="colorset_area" style="display:none">
<div class="plugin_header">{$lang->colorset}</div>
<div class="plugin_body">
<select name="colorset" id="plugin_colorset">
<div class="widget_header">{$lang->colorset}</div>
<div class="widget_body">
<select name="colorset" id="widget_colorset">
</select>
</div>
</div>
<!--@foreach($plugin_info->extra_var as $id => $var)-->
<div class="plugin_header">{$var->name}</div>
<!--@foreach($widget_info->extra_var as $id => $var)-->
<div class="widget_header">{$var->name}</div>
<div class="plugin_body">
<div class="widget_body">
<!--@if($var->type == "text")-->
<input type="text" name="{$id}" value="" />
@ -52,19 +52,19 @@
<!--@elseif($var->type == "mid_list")-->
<!--@foreach($mid_list as $key => $val)-->
<div class="plugin_mid_list">
<div class="widget_mid_list">
<input type="checkbox" value="{$key}" name="{$id}" id="chk_mid_list_{$key}" />
<label for="chk_mid_list_{$key}">{$key} ({$val->browser_title})</label>
</div>
<!--@end-->
<!--@end-->
</div>
<div class="plugin_var_description">{$var->description}</div>
<div class="widget_var_description">{$var->description}</div>
<!--@end-->
<div class="plugin_button_area">
<input type="submit" value="{$lang->cmd_insert}" class="plugin_button" />
<input type="button" onclick="self.close()" value="{$lang->cmd_close}" class="plugin_button" />
<div class="widget_button_area">
<input type="submit" value="{$lang->cmd_insert}" class="widget_button" />
<input type="button" onclick="self.close()" value="{$lang->cmd_close}" class="widget_button" />
</div>
</div>
@ -72,5 +72,5 @@
</form>
<script type="text/javascript">
xAddEventListener(window, "load", doFillPluginVars);
xAddEventListener(window, "load", doFillWidgetVars);
</script>