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

This commit is contained in:
zero 2007-04-09 02:56:59 +00:00
parent a9e0caa781
commit 8ed36ce916
11 changed files with 164 additions and 16 deletions

View file

@ -1,44 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<skin>
<title xml:lang="ko">게시판 기본 스킨</title>
<title xml:lang="en">BBS default skin</title>
<maker email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
<name xml:lang="ko">제로</name>
<name xml:lang="en">zero</name>
<description xml:lang="ko">board모듈의 default스킨</description>
<description xml:lang="en">default skin of the board module</description>
</maker>
<colorset>
<color name="normal" src="screenshot/normal.gif">
<title xml:lang="ko">기본</title>
<title xml:lang="en">normal</title>
</color>
<color name="deep" src="screenshot/blue.gif">
<title xml:lang="ko">이상한거</title>
<title xml:lang="en">deep</title>
</color>
</colorset>
<extra_vars>
<var name="title" type="text">
<title xml:lang="ko">제목</title>
<title xml:lang="en">title</title>
<description xml:lang="ko">그냥 테스트용입니다</description>
<description xml:lang="en">just for test..</description>
</var>
<var name="title2" type="text">
<title xml:lang="ko">제목 2</title>
<title xml:lang="en">title 2</title>
<default>haha</default>
</var>
<var name="memo" type="textarea">
<title xml:lang="ko">내용</title>
<title xml:lang="en">memo</title>
<default lang="ko">내용의 기본값</default>
<default lang="en">default value of memo</default>
</var>
<var name="select" type="select">
<title xml:lang="ko">선택1</title>
<title xml:lang="en">select 1</title>
<default>1</default>
<default>2</default>
<default>3</default>
@ -47,21 +36,18 @@
</var>
<var name="checkbox" type="checkbox">
<title xml:lang="ko">다중선택</title>
<title xml:lang="en">multi select</title>
<default>a</default>
<default>b</default>
<default>c</default>
</var>
<var name="radio" type="radio">
<title xml:lang="ko">하나선택</title>
<title xml:lang="en">one select</title>
<default>A</default>
<default>B</default>
<default>C</default>
</var>
<var name="logo_image" type="image" width="60" height="60">
<title xml:lang="ko">로고이미지</title>
<title xml:lang="en">logo image</title>
</var>
</extra_vars>
<skin>

View file

@ -1,5 +1,5 @@
/**
* @file modules/board/js/plugin_admin.js
* @file modules/plugin/js/plugin_admin.js
* @author zero (zero@nzeo.com)
* @brief plugin 모듈의 관리자용 javascript
**/

View file

@ -5,8 +5,11 @@
<action name="dispPollAdminList" type="view" admin_index="true" standalone="true" />
<action name="dispPollAdminConfig" type="controller" standalone="true" />
<action name="getPollGetColorsetList" type="model" standalone="true" />
<action name="procInsert" type="controller" standalone="true" />
<action name="procPoll" type="controller" standalone="true" />
<action name="procPollAdminDeleteChecked" type="controller" standalone="true" />
<action name="procPollAdminInsertConfig" type="controller" standalone="true" />
</actions>
</module>

View file

@ -16,6 +16,12 @@
$oModuleController->insertActionForward('poll', 'view', 'dispPollAdminList');
$oModuleController->insertActionForward('poll', 'view', 'dispPollAdminConfig');
// 기본 스킨 설정
$oModuleController = &getController('module');
$config->skin = 'default';
$config->colorset = 'normal';
$oModuleController->insertModuleConfig('poll', $config);
return new Object();
}

View file

@ -261,5 +261,18 @@
return new Object();
}
/**
* @brief 설정 저장
**/
function procPollAdminInsertConfig() {
$config->skin = Context::get('skin');
$config->colorset = Context::get('colorset');
$oModuleController = &getController('module');
$oModuleController->insertModuleConfig('poll', $config);
$this->setMessage('success_updated');
}
}
?>

View file

@ -84,12 +84,33 @@
Context::set('poll',$poll);
$tpl_path = $this->module_path.'tpl';
// 기본 설정의 스킨, 컬러셋 설정
$oModuleModel = &getModel('module');
$poll_config = $oModuleModel->getModuleConfig('poll');
Context::set('poll_config', $poll_config);
$tpl_path = sprintf("%sskins/%s/", $this->module_path, $poll_config->skin);
require_once("./classes/template/TemplateHandler.class.php");
$oTemplate = new TemplateHandler();
return $oTemplate->compile($tpl_path, $tpl_file);
}
/**
* @brief 선택된 설문조사 - 스킨의 컬러셋을 return
**/
function getPollGetColorsetList() {
$skin = Context::get('skin');
$oModuleModel = &getModel('module');
$skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin);
for($i=0;$i<count($skin_info->colorset);$i++) {
$colorset = sprintf('%s|@|%s', $skin_info->colorset[$i]->name, $skin_info->colorset[$i]->title);
$colorset_list[] = $colorset;
}
if(count($colorset_list)) $colorsets = implode("\n", $colorset_list);
$this->add('colorset_list', $colorsets);
}
}
?>

View file

@ -59,5 +59,27 @@
$this->setTemplateFile('poll_list');
}
/**
* @brief 설문조사 스킨, 컬러셋 설정
**/
function dispPollAdminConfig() {
$oModuleModel = &getModel('module');
// 설정 정보 가져오기
$config = $oModuleModel->getModuleConfig('poll');
Context::set('config', $config);
// 스킨 정보 가져오기
$skin_list = $oModuleModel->getSkins($this->module_path);
Context::set('skin_list', $skin_list);
// 설정된 스킨의 컬러셋 설정
Context::set('colorset_list', $skin_list[$config->skin]->colorset);
// 템플릿 지정
$this->setTemplatePath($this->module_path.'tpl');
$this->setTemplateFile('config');
}
}
?>

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<skin>
<title xml:lang="ko">설문조사 기본 스킨</title>
<maker email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
<name xml:lang="ko">제로</name>
<description xml:lang="ko">설문조사 기본 스킨</description>
</maker>
<colorset>
<color name="normal">
<title xml:lang="ko">기본</title>
</color>
</colorset>
<skin>

View file

@ -0,0 +1,35 @@
<!--%import("filter/insert_config.xml")-->
<!--%import("js/poll_admin.js")-->
<!--#include("./header.html")-->
<form action="./" method="get" onsubmit="return procFilter(this, insert_config);" id="fo_poll">
<table border="1">
<tr>
<th>{$lang->skin}</th>
<td>
<select name="skin" onchange="doDisplaySkinColorset(this);return false;">
<!--@foreach($skin_list as $key => $val)-->
<option value="{$key}" <!--@if($config->skin == $key)-->selected="true"<!--@end-->>{$val->title} ({$key})</option>
<!--@end-->
</select>
</td>
</tr>
<tr>
<th>{$lang->colorset}</th>
<td>
<select name="colorset" id="poll_colorset">
<!--@foreach($colorset_list as $key => $val)-->
<option value="{$val->name}" <!--@if($config->colorset == $val->name)-->selected="true"<!--@end-->>{$val->title} ({$val->name})</option>
<!--@end-->
</select>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="{$lang->cmd_submit}" />
</td>
</tr>
</table>
</form>

View file

@ -0,0 +1,11 @@
<filter name="insert_config" module="poll" act="procPollAdminInsertConfig" confirm_msg_code="confirm_delete">
<form>
<node target="skin" required="true" />
<node target="colorset" required="true" />
</form>
<parameter />
<response>
<tag name="error" />
<tag name="message" />
</response>
</filter>

View file

@ -0,0 +1,38 @@
/**
* @file modules/poll/js/poll_admin.js
* @author zero (zero@nzeo.com)
* @brief poll 모듈의 관리자용 javascript
**/
/* 플러그인 코드 생성시 스킨을 고르면 컬러셋의 정보를 표시 */
function doDisplaySkinColorset(sel, colorset) {
var skin = sel.options[sel.selectedIndex].value;
var params = new Array();
params["skin"] = skin;
params["colorset"] = colorset;
var response_tags = new Array("error","message","colorset_list");
exec_xml("poll", "getPollGetColorsetList", params, completeGetSkinColorset, response_tags, params);
}
/* 서버에서 받아온 컬러셋을 표시 */
function completeGetSkinColorset(ret_obj, response_tags, params, fo_obj) {
var sel = xGetElementById("fo_poll").poll_colorset;
var length = sel.options.length;
var selected_colorset = params["colorset"];
for(var i=0;i<length;i++) sel.remove(0);
var colorset_list = ret_obj["colorset_list"].split("\n");
var selected_index = 0;
for(var i=0;i<colorset_list.length;i++) {
var tmp = colorset_list[i].split("|@|");
if(selected_colorset && selected_colorset==tmp[0]) selected_index = i;
var opt = new Option(tmp[1], tmp[0], false, false);
sel.options.add(opt);
}
sel.selectedIndex = selected_index;
}