1. 에디터 모듈의 추가 설정 부분을 확장하여 업로드 권한/컴포넌트/기본컴포넌트/html사용등의 권한과 에디터 높이/스킨등을 상세히 설정할 수 있도록 기능 추가.

2. 게시판 모듈(board)의 경우 기본 설정 - 추가 설정 - 권한 설정을 여러개의 게시판에 대해서 일괄 적용할 수 있도록 기능 추가


git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3519 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2008-01-14 08:58:27 +00:00
parent 77195b282a
commit 62ff4b1fae
54 changed files with 710 additions and 230 deletions

View file

@ -113,15 +113,6 @@
}
}
// module.xml 에 있는 권한 정보를 정리
if($module_info->grants) {
foreach($module_info->grants as $key => $val) {
if(!$xml_info->grant->{$key}) {
$xml_info->grant->{$key}->title = $key;
}
}
}
// 권한 설정
if($xml_info->grant) {

View file

@ -231,6 +231,8 @@ function XmlJsFilterCheckFieldItem() {
var equalto = item[4];
var filter = item[5].split(",");
if(typeof(this.fo_obj[target])=='undefined') continue;
for(var j=0; j<notnull_list.length; j++) {
if(notnull_list[j]==target) required = true;
}

View file

@ -207,15 +207,7 @@
// 에디터 모듈의 getEditor를 호출하여 세팅
$oEditorModel = &getModel('editor');
$option->primary_key_name = 'document_srl';
$option->content_key_name = 'content';
$option->allow_fileupload = $this->grant->fileupload;
$option->enable_autosave = true;
$option->enable_default_component = true;
$option->enable_component = true;
$option->resizable = true;
$option->height = 400;
$editor = $oEditorModel->getEditor($document_srl, $option);
$editor = $oEditorModel->getModuleEditor('document', $this->module_srl, $document_srl, 'document_srl', 'content');
Context::set('editor', $editor);
$this->setTemplateFile('write_form');
@ -383,19 +375,11 @@
* 따라서 고유값이 없을 경우 고유값을 가져와서 지정해 주어야
**/
function getCommentEditor($editor_sequence, $comment_srl=0, $height = 100) {
$oEditorModel = &getModel('editor');
$option->editor_sequence = $editor_sequence;
$option->primary_key_name = 'comment_srl';
$option->content_key_name = 'content';
$option->allow_fileupload = $this->grant->comment_fileupload;
$option->enable_autosave = false;
$option->enable_default_component = true;
$option->enable_component = true;
$option->resizable = true;
$option->height = $height;
$comment_editor = $oEditorModel->getEditor($comment_srl, $option);
return $comment_editor;
}
Context::set('comment_srl', $comment_srl);
$oEditorModel = &getModel('editor');
$editor = $oEditorModel->getModuleEditor('comment', $this->module_srl, $comment_srl, 'comment_srl', 'content');
return $editor;
}
}
?>

View file

@ -19,18 +19,6 @@
<title xml:lang="en">write comment</title>
<title xml:lang="jp">コメント作成</title>
</grant>
<grant name="fileupload" default="guest">
<title xml:lang="ko">파일 첨부</title>
<title xml:lang="zh-CN">附件</title>
<title xml:lang="en">file upload</title>
<title xml:lang="jp">添付ファイル</title>
</grant>
<grant name="comment_fileupload" default="guest">
<title xml:lang="ko">댓글 파일 첨부</title>
<title xml:lang="zh-CN">评论附件</title>
<title xml:lang="en">comment file upload</title>
<title xml:lang="jp">コメントファイル添付</title>
</grant>
<grant name="manager" default="root">
<title xml:lang="ko">관리</title>
<title xml:lang="zh-CN">管理</title>

View file

@ -125,6 +125,43 @@
* @brief 게시판 추가
**/
function procBoardAdminInsertBoard($args = null) {
// module 모듈의 model/controller 객체 생성
$oModuleController = &getController('module');
$oModuleModel = &getModel('module');
// 만약 module_srl이 , 로 연결되어 있다면 일괄 정보 수정으로 처리
if(preg_match('/^([0-9,]+)$/',Context::get('module_srl'))) {
// 대상 모듈들을 구해옴
$modules = $oModuleModel->getModulesInfo(Context::get('module_srl'));
$args = Context::getRequestVars();
for($i=0;$i<count($modules);$i++) {
$obj = $extra_vars = null;
$obj = $modules[$i];
$extra_vars = unserialize($obj->extra_vars);
$obj->module_category_srl = $args->module_category_srl;
$obj->layout_srl = $args->layout_srl;
$obj->skin = $args->skin;
$obj->description = $args->description;
$obj->header_text = $args->header_text;
$obj->footer_text = $args->footer_text;
$obj->admin_id = $args->admin_id;
$extra_vars->use_category = $args->use_category=='Y'?'Y':'N';
$extra_vars->list_count = $args->list_count;
$extra_vars->page_count = $args->page_count;
$obj->extra_vars = serialize($extra_vars);
$output = $oModuleController->updateModule($obj);
if(!$output->toBool()) return $output;
}
return new Object(0,'success_updated');
}
// 일단 입력된 값들을 모두 받아서 db 입력항목과 그외 것으로 분리
if(!$args) {
$args = Context::gets('module_srl','module_category_srl','board_name','layout_srl','skin','browser_title','description','is_default','header_text','footer_text','admin_id');
@ -158,7 +195,6 @@
// module_srl이 넘어오면 원 모듈이 있는지 확인
if($args->module_srl) {
$oModuleModel = &getModel('module');
$module_info = $oModuleModel->getModuleInfoByModuleSrl($args->module_srl);
// 만약 원래 모듈이 없으면 새로 입력하기 위한 처리
@ -168,9 +204,6 @@
// $extra_var를 serialize
$args->extra_vars = serialize($extra_var);
// module 모듈의 controller 객체 생성
$oModuleController = &getController('module');
// is_default=='Y' 이면
if($args->is_default=='Y') $oModuleController->clearDefaultModule();
@ -186,7 +219,7 @@
$admin_group_srl = $admin_group->group_srl;
$module_srl = $output->get('module_srl');
$grants = serialize(array('fileupload'=>array($admin_group_srl), 'comment_fileupload'=>array($admin_group_srl), 'manager'=>array($admin_group_srl)));
$grants = serialize(array('manager'=>array($admin_group_srl)));
$oModuleController->updateModuleGrant($module_srl, $grants);
}

View file

@ -211,15 +211,7 @@
// 에디터 모듈의 getEditor를 호출하여 세팅
$oEditorModel = &getModel('editor');
$option->primary_key_name = 'document_srl';
$option->content_key_name = 'content';
$option->allow_fileupload = $this->grant->fileupload;
$option->enable_autosave = true;
$option->enable_default_component = true;
$option->enable_component = true;
$option->resizable = true;
$option->height = 400;
$editor = $oEditorModel->getEditor($document_srl, $option);
$editor = $oEditorModel->getModuleEditor('document', $this->module_srl, $document_srl, 'document_srl', 'content');
Context::set('editor', $editor);
// 확장변수처리를 위해 xml_js_filter를 직접 header에 적용
@ -390,18 +382,9 @@
function setCommentEditor($comment_srl = 0, $height = 100) {
Context::set('comment_srl', $comment_srl);
// 에디터 모듈의 getEditor를 호출하여 세팅
$oEditorModel = &getModel('editor');
$option->primary_key_name = 'comment_srl';
$option->content_key_name = 'content';
$option->allow_fileupload = $this->grant->comment_fileupload;
$option->enable_autosave = false;
$option->enable_default_component = true;
$option->enable_component = true;
$option->resizable = true;
$option->height = $height;
$comment_editor = $oEditorModel->getEditor($comment_srl, $option);
Context::set('comment_editor', $comment_editor);
$editor = $oEditorModel->getModuleEditor('comment', $this->module_srl, $comment_srl, 'comment_srl', 'content');
Context::set('comment_editor', $editor);
}
/**

View file

@ -25,18 +25,6 @@
<title xml:lang="jp">コメント作成</title>
<title xml:lang="en">write comment</title>
</grant>
<grant name="fileupload" default="guest">
<title xml:lang="ko">파일 첨부</title>
<title xml:lang="zh-CN">附件</title>
<title xml:lang="jp">ファイル添付</title>
<title xml:lang="en">file upload</title>
</grant>
<grant name="comment_fileupload" default="guest">
<title xml:lang="ko">댓글 파일 첨부</title>
<title xml:lang="zh-CN">评论附件</title>
<title xml:lang="jp">コメントファイル添付</title>
<title xml:lang="en">comment file upload</title>
</grant>
<grant name="manager" default="root">
<title xml:lang="ko">관리</title>
<title xml:lang="zh-CN">管理</title>

View file

@ -25,7 +25,7 @@
<!--%import("filter/insert_comment.xml")-->
<div class="boardWrite">
<form action="./" method="post" onsubmit="return procFilter(this, insert_comment)" <!--@if($grant->fileupload)-->enctype="multipart/form-data"<!--@end--> class="boardEditor" id="fo_comment_write" >
<form action="./" method="post" onsubmit="return procFilter(this, insert_comment)" class="boardEditor" id="fo_comment_write" >
<fieldset>
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="document_srl" value="{$oComment->get('document_srl')}" />

View file

@ -147,7 +147,7 @@
<!--%import("filter/insert_comment.xml")-->
<div class="boardWrite">
<form action="./" method="post" onsubmit="return procFilter(this, insert_comment)" <!--@if($grant->fileupload)-->enctype="multipart/form-data"<!--@end--> class="boardEditor" id="fo_comment_write" >
<form action="./" method="post" onsubmit="return procFilter(this, insert_comment)" class="boardEditor" id="fo_comment_write" >
<fieldset>
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="document_srl" value="{$document_srl}" />

View file

@ -2,7 +2,7 @@
<!--#include("header.html")-->
<div class="boardWrite bottomBorder">
<form action="./" method="post" onsubmit="return procFilter(this, window.insert)" <!--@if($grant->fileupload)-->enctype="multipart/form-data"<!--@end--> class="boardEditor" id="fo_write">
<form action="./" method="post" onsubmit="return procFilter(this, window.insert)" class="boardEditor" id="fo_write">
<fieldset class="bottomBorder">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="content" value="{$oDocument->getContentText()}" />

View file

@ -24,7 +24,7 @@
<!--%import("filter/insert_comment.xml")-->
<div class="boardWrite">
<form action="./" method="post" onsubmit="return procFilter(this, insert_comment)" <!--@if($grant->fileupload)-->enctype="multipart/form-data"<!--@end--> class="boardEditor" >
<form action="./" method="post" onsubmit="return procFilter(this, insert_comment)" class="boardEditor" >
<fieldset>
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="document_srl" value="{$oComment->get('document_srl')}" />

View file

@ -259,6 +259,7 @@ Jeong, Chan Myeong 070601~070630
/* boardWrite */
.boardWrite { width:100%; position:relative;}
.boardWrite fieldset { border:none; }
.boardWrite .userNameAndPw { margin-bottom:-1px;}
.boardWrite .boardEditor fieldset { width:auto; position:relative;}
.boardWrite div.title { border-bottom:1px solid #eff0ed; border-top:1px solid #eff0ed; padding:.5em 0; white-space:nowrap;}

View file

@ -168,7 +168,7 @@
<!--%import("filter/insert_comment.xml")-->
<div class="boardWrite">
<form action="./" method="post" onsubmit="return procFilter(this, insert_comment)" <!--@if($grant->fileupload)-->enctype="multipart/form-data"<!--@end--> class="boardEditor" >
<form action="./" method="post" onsubmit="return procFilter(this, insert_comment)" class="boardEditor" >
<fieldset>
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="document_srl" value="{$document_srl}" />

View file

@ -2,7 +2,7 @@
<!--#include("header.html")-->
<div class="boardWrite">
<form action="./" method="post" onsubmit="return procFilter(this, window.insert)" <!--@if($grant->fileupload)-->enctype="multipart/form-data"<!--@end--> class="boardEditor" id="fo_write">
<form action="./" method="post" onsubmit="return procFilter(this, window.insert)" id="fo_write">
<fieldset>
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="content" value="{$oDocument->getContentText()}" />

View file

@ -4,7 +4,7 @@
<form action="./" method="post" onsubmit="return procFilter(this, insert_board)" enctype="multipart/form-data">
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="module_srl" value="{$module_srl}" />
<input type="hidden" name="module_srl" value="{$module_srl?$module_srl:$module_srls}" />
<!--@if($module_info->is_default=='Y')-->
<input type="hidden" name="is_default" value="Y" />
<!--@end-->
@ -13,21 +13,23 @@
<col width="150" />
<col />
<tr>
<th scope="row">{$lang->mid}</th>
<td>
<input type="text" name="mid" value="{$module_info->mid}" class="inputTypeText w200" />
<p>{$lang->about_mid}</p>
</td>
</tr>
<!--@if($module_info->is_default!='Y')-->
<tr>
<th scope="row">{$lang->is_default}</th>
<td>
<input type="checkbox" name="is_default" value="Y" <!--@if($module_info->is_default=='Y')-->checked="checked"<!--@end--> id="fld_for_default" class="checkbox" />
<label for="fld_for_default">{$lang->about_default}</label>
</td>
</tr>
<!--@if(!$module_srls)-->
<tr>
<th scope="row">{$lang->mid}</th>
<td>
<input type="text" name="mid" value="{$module_info->mid}" class="inputTypeText w200" />
<p>{$lang->about_mid}</p>
</td>
</tr>
<!--@if($module_info->is_default!='Y')-->
<tr>
<th scope="row">{$lang->is_default}</th>
<td>
<input type="checkbox" name="is_default" value="Y" <!--@if($module_info->is_default=='Y')-->checked="checked"<!--@end--> id="fld_for_default" class="checkbox" />
<label for="fld_for_default">{$lang->about_default}</label>
</td>
</tr>
<!--@end-->
<!--@end-->
<tr>
<th scope="row">{$lang->module_category}</th>
@ -42,6 +44,7 @@
</td>
</tr>
<!--@if(!$module_srls)-->
<tr>
<th scope="row">{$lang->browser_title}</th>
<td>
@ -49,6 +52,8 @@
<p>{$lang->about_browser_title}</p>
</td>
</tr>
<!--@end-->
<tr>
<th scope="row">{$lang->layout}</th>
<td>
@ -125,65 +130,68 @@
<tr>
<th scope="row" colspan="2" class="button">
<span class="button"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
<span class="button"><input type="button" value="{$lang->cmd_back}" onclick="history.back(); return false;" /></span>
</th>
</table>
<!--@for($i=1;$i<=20;$i++)-->
<div class="gap1"></div>
{@ $extra_vars_name = ''}
{@ $extra_vars_type = ''}
{@ $extra_vars_is_required = ''}
{@ $extra_vars_default_value = ''}
{@ $extra_vars_desc = ''}
{@ $extra_vars_search = ''}
<!--@if($module_info->extra_vars[$i])-->
{@ $extra_vars_name = $module_info->extra_vars[$i]->name}
{@ $extra_vars_type = $module_info->extra_vars[$i]->type}
{@ $extra_vars_is_required = $module_info->extra_vars[$i]->is_required}
{@ $extra_vars_default_value = $module_info->extra_vars[$i]->default}
{@ $extra_vars_desc = $module_info->extra_vars[$i]->desc}
{@ $extra_vars_search = $module_info->extra_vars[$i]->search}
<!--@end-->
<table cellspacing="0" class="adminTable ">
<col width="150" />
<col />
<caption>{$lang->extra_vars} {$i}</caption>
<tr>
<th>{$lang->column_name}</th>
<td><input type="text" name="extra_vars_{$i}_name" value="{$extra_vars_name}" class="inputTypeText w200" /> </td>
</tr>
<tr>
<th>{$lang->column_type}</th>
<td>
<select name="extra_vars_{$i}_type">
<!--@foreach($lang->column_type_list as $key => $val)-->
<!--@if($key != 'kr_zip')-->
<option value="{$key}" <!--@if($extra_vars_type==$key)-->selected="selected"<!--@end-->>{$lang->column_type_list[$key]}</option>
<!--@if(!$module_srls)-->
<!--@for($i=1;$i<=20;$i++)-->
<div class="gap1"></div>
{@ $extra_vars_name = ''}
{@ $extra_vars_type = ''}
{@ $extra_vars_is_required = ''}
{@ $extra_vars_default_value = ''}
{@ $extra_vars_desc = ''}
{@ $extra_vars_search = ''}
<!--@if($module_info->extra_vars[$i])-->
{@ $extra_vars_name = $module_info->extra_vars[$i]->name}
{@ $extra_vars_type = $module_info->extra_vars[$i]->type}
{@ $extra_vars_is_required = $module_info->extra_vars[$i]->is_required}
{@ $extra_vars_default_value = $module_info->extra_vars[$i]->default}
{@ $extra_vars_desc = $module_info->extra_vars[$i]->desc}
{@ $extra_vars_search = $module_info->extra_vars[$i]->search}
<!--@end-->
<table cellspacing="0" class="adminTable ">
<col width="150" />
<col />
<caption>{$lang->extra_vars} {$i}</caption>
<tr>
<th>{$lang->column_name}</th>
<td><input type="text" name="extra_vars_{$i}_name" value="{$extra_vars_name}" class="inputTypeText w200" /> </td>
</tr>
<tr>
<th>{$lang->column_type}</th>
<td>
<select name="extra_vars_{$i}_type">
<!--@foreach($lang->column_type_list as $key => $val)-->
<!--@if($key != 'kr_zip')-->
<option value="{$key}" <!--@if($extra_vars_type==$key)-->selected="selected"<!--@end-->>{$lang->column_type_list[$key]}</option>
<!--@end-->
<!--@end-->
<!--@end-->
</select>
</td>
</tr>
<tr>
<th>{$lang->is_required}</th>
<td><input type="checkbox" name="extra_vars_{$i}_is_required" value="Y" <!--@if($extra_vars_is_required=='Y')-->checked="checked"<!--@end--> /></td>
</tr>
<tr>
<th>{$lang->default_value}</th>
<td><input type="text" name="extra_vars_{$i}_default" value="{$extra_vars_default_value}" class="inputTypeText w400" /><p>{$lang->about_extra_vars_default_value}</p></td>
</tr>
<tr>
<th>{$lang->description}</th>
<td><input type="text" name="extra_vars_{$i}_desc" value="{$extra_vars_desc}" class="inputTypeText w400" /></td>
</tr>
<tr>
<th>{$lang->cmd_search}</th>
<td><input type="checkbox" name="extra_vars_{$i}_search" value="Y" <!--@if($extra_vars_search=='Y')-->checked="checked"<!--@end--> /></td>
</tr>
<tr>
<th scope="row" colspan="2" class="button"><span class="button"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span></th>
</tr>
</table>
</select>
</td>
</tr>
<tr>
<th>{$lang->is_required}</th>
<td><input type="checkbox" name="extra_vars_{$i}_is_required" value="Y" <!--@if($extra_vars_is_required=='Y')-->checked="checked"<!--@end--> /></td>
</tr>
<tr>
<th>{$lang->default_value}</th>
<td><input type="text" name="extra_vars_{$i}_default" value="{$extra_vars_default_value}" class="inputTypeText w400" /><p>{$lang->about_extra_vars_default_value}</p></td>
</tr>
<tr>
<th>{$lang->description}</th>
<td><input type="text" name="extra_vars_{$i}_desc" value="{$extra_vars_desc}" class="inputTypeText w400" /></td>
</tr>
<tr>
<th>{$lang->cmd_search}</th>
<td><input type="checkbox" name="extra_vars_{$i}_search" value="Y" <!--@if($extra_vars_search=='Y')-->checked="checked"<!--@end--> /></td>
</tr>
<tr>
<th scope="row" colspan="2" class="button"><span class="button"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span></th>
</tr>
</table>
<!--@end-->
<!--@end-->

View file

@ -1,6 +1,6 @@
<filter name="insert_grant" module="board" act="procBoardAdminInsertGrant" confirm_msg_code="confirm_submit">
<form>
<node target="module_srl" required="true" filter="number" />
<node target="module_srl" required="true" />
</form>
<response callback_func="completeInsertGrant">
<tag name="error" />

View file

@ -3,7 +3,7 @@
<form action="./" method="post" onsubmit="return procFilter(this, insert_grant)">
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="module_srl" value="{$module_srl}" />
<input type="hidden" name="module_srl" value="{$module_srl?$module_srl:$module_srls}" />
<table cellspacing="0" class="adminTable">
<col width="150" />
@ -37,6 +37,7 @@
<tr>
<th scope="row" colspan="4" class="button">
<span class="button"><input type="submit" value="{$lang->cmd_save}" accesskey="s" /></span>
<span class="button"><input type="button" value="{$lang->cmd_back}" onclick="history.back(); return false;" /></span>
</th>
</tr>
</tbody>

View file

@ -6,9 +6,11 @@
</div>
<!-- 목록 -->
<form action="./" method="get" onsubmit="return doChangeCategory(this);" id="fo_list">
<table cellspacing="0" class="adminTable">
<!--@if($lang_type == 'ko')-->
<col width="50" />
<col width="40" />
<col width="130" />
<col />
<col width="65" />
@ -18,6 +20,7 @@
<!--@else if($lang_type == 'en')-->
<col width="50" />
<col width="40" />
<col width="130" />
<col />
<col width="80" />
@ -27,6 +30,7 @@
<!--@else if($lang_type == 'zh-CN')-->
<col width="50" />
<col width="40" />
<col width="130" />
<col />
<col width="65" />
@ -36,6 +40,7 @@
<!--@else if($lang_type == 'jp')-->
<col width="50" />
<col width="40" />
<col width="130" />
<col />
<col width="65" />
@ -45,6 +50,7 @@
<!--@else if($lang_type == 'es')-->
<col width="50" />
<col width="40" />
<col width="130" />
<col />
<col width="80" />
@ -54,6 +60,7 @@
<!--@else if($lang_type == 'ru')-->
<col width="50" />
<col width="40" />
<col width="130" />
<col />
<col width="90" />
@ -64,8 +71,8 @@
<thead>
<tr>
<th scope="col">{$lang->no}</th>
<th scope="col"><input type="checkbox" onclick="checkboxSelectAll(this.form, 'cart'); return false;" /></th>
<th scope="col">
<form action="./" method="get" onsubmit="return doChangeCategory(this);">
<input type="hidden" name="module" value="{$module}" />
<input type="hidden" name="act" value="{$act}" />
<select name="module_category_srl" class="w80">
@ -77,7 +84,6 @@
<option value="-1">{$lang->cmd_management}</option>
</select>
<input type="submit" name="go_button" id="go_button" value="GO" class="buttonTypeGo" />
</form>
</th>
<th scope="col">{$lang->mid} / {$lang->browser_title}</th>
<th scope="col">{$lang->regdate}</th>
@ -90,6 +96,7 @@
<!--@foreach($board_list as $no => $val)-->
<tr>
<td class="tahoma">{$no}</td>
<td><input type="checkbox" name="cart" value="{$val->module_srl}" /></td>
<td>
<!--@if(!$val->module_category_srl)-->
{$lang->not_exists}
@ -109,8 +116,14 @@
<!--@end-->
</tbody>
</table>
</form>
<!-- 버튼 -->
<div class="fl gap1">
<a href="#" onclick="doCartSetup('dispBoardAdminInsertBoard'); return false;" class="button"><span>{$lang->cmd_setup}</span></a>
<a href="#" onclick="doCartSetup('dispBoardAdminBoardAdditionSetup'); return false;" class="button"><span>{$lang->cmd_addition_setup}</span></a>
<a href="#" onclick="doCartSetup('dispBoardAdminGrantInfo'); return false;" class="button"><span>{$lang->cmd_manage_grant}</span></a>
</div>
<div class="fr gap1">
<a href="{getUrl('act','dispBoardAdminInsertBoard','module_srl','')}" class="button"><span>{$lang->cmd_make}</span></a>
</div>

View file

@ -86,8 +86,6 @@ function completeInsertGrant(ret_obj) {
var module_srl = ret_obj['module_srl'];
alert(message);
location.href = location.href;
}
/* 카테고리 이동 */
@ -100,3 +98,20 @@ function doChangeCategory(fo_obj) {
return true;
}
/* 일괄 설정 */
function doCartSetup(act_type) {
var fo_obj = xGetElementById('fo_list');
var module_srl = new Array();
if(typeof(fo_obj.cart.length)=='undefined') {
if(fo_obj.cart.checked) module_srl[module_srl.length] = fo_obj.cart.value;
} else {
for(var i=0;i<fo_obj.cart.length;i++) {
if(fo_obj.cart[i].checked) module_srl[module_srl.length] = fo_obj.cart[i].value;
}
}
if(module_srl.length<1) return;
var url = current_url.setQuery('act',act_type).setQuery('module_srl','').setQuery('module_srls',module_srl.join(','));
location.href = url;
}

View file

@ -102,20 +102,80 @@
* @brief 에디터의 모듈별 추가 확장 폼을 저장
**/
function procEditorAdminInsertModuleConfig() {
// 필요한 변수를 받아옴
$module_srl = Context::get('target_module_srl');
$editor_skin = Context::get('editor_skin');
// 기존 설정을 가져옴
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('editor');
$config->module_config[$module_srl] = $editor_skin;
// 대상을 구함
$module_srl = Context::get('target_module_srl');
// 여러개의 모듈 일괄 설정일 경우
if(preg_match('/^([0-9,]+)$/',$module_srl)) $module_srl = explode(',',$module_srl);
else $module_srl = array($module_srl);
$editor_config = null;
$editor_config->editor_skin = Context::get('editor_skin');
$editor_config->comment_editor_skin = Context::get('comment_editor_skin');
$enable_html_grant = trim(Context::get('enable_html_grant'));
if($enable_html_grant) $editor_config->enable_html_grant = explode('|@|', $enable_html_grant);
else $editor_config->enable_html_grant = array();
$enable_comment_html_grant = trim(Context::get('enable_comment_html_grant'));
if($enable_comment_html_grant) $editor_config->enable_comment_html_grant = explode('|@|', $enable_comment_html_grant);
else $editor_config->enable_comment_html_grant = array();
$upload_file_grant = trim(Context::get('upload_file_grant'));
if($upload_file_grant) $editor_config->upload_file_grant = explode('|@|', $upload_file_grant);
else $editor_config->upload_file_grant = array();
$comment_upload_file_grant = trim(Context::get('comment_upload_file_grant'));
if($comment_upload_file_grant) $editor_config->comment_upload_file_grant = explode('|@|', $comment_upload_file_grant);
else $editor_config->comment_upload_file_grant = array();
$enable_default_component_grant = trim(Context::get('enable_default_component_grant'));
if($enable_default_component_grant) $editor_config->enable_default_component_grant = explode('|@|', $enable_default_component_grant);
else $editor_config->enable_default_component_grant = array();
$enable_comment_default_component_grant = trim(Context::get('enable_comment_default_component_grant'));
if($enable_comment_default_component_grant) $editor_config->enable_comment_default_component_grant = explode('|@|', $enable_comment_default_component_grant);
else $editor_config->enable_comment_default_component_grant = array();
$enable_component_grant = trim(Context::get('enable_component_grant'));
if($enable_component_grant) $editor_config->enable_component_grant = explode('|@|', $enable_component_grant);
else $editor_config->enable_component_grant = array();
$enable_comment_component_grant = trim(Context::get('enable_comment_component_grant'));
if($enable_comment_component_grant) $editor_config->enable_comment_component_grant = explode('|@|', $enable_comment_component_grant);
else $editor_config->enable_comment_component_grant = array();
$editor_config->editor_height = (int)Context::get('editor_height');
$editor_config->comment_editor_height = (int)Context::get('comment_editor_height');
$editor_config->enable_height_resizable = Context::get('enable_height_resizable');
$editor_config->enable_comment_height_resizable = Context::get('enable_comment_height_resizable');
$editor_config->enable_autosave = Context::get('enable_autosave');
if($editor_config->enable_height_resizable != 'Y') $editor_config->enable_height_resizable = 'N';
if($editor_config->enable_comment_height_resizable != 'Y') $editor_config->enable_comment_height_resizable = 'N';
if($editor_config->enable_autosave != 'Y') $editor_config->enable_autosave = 'N';
for($i=0;$i<count($module_srl);$i++) {
$srl = trim($module_srl[$i]);
if(!$srl) continue;
$config->module_config[$srl] = $editor_config;
}
// module Controller 객체 생성하여 입력
$oModuleController = &getController('module');
$output = $oModuleController->insertModuleConfig('editor',$config);
return $output;
$this->setError(-1);
$this->setMessage('success_updated');
}
/**

View file

@ -25,14 +25,32 @@
* @brief 모듈별 에디터 설정을 return
**/
function getEditorConfig($module_srl) {
// 선택된 모듈의 trackback설정을 가져옴
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('editor');
if(!$GLOBLAS['__editor_module_config__']) {
// 선택된 모듈의 trackback설정을 가져옴
$oModuleModel = &getModel('module');
$GLOBLAS['__editor_module_config__'] = $oModuleModel->getModuleConfig('editor');
}
$editor_skin = $config->module_config[$module_srl];
if(!$editor_skin) $editor_skin = "default";
$editor_config = $GLOBLAS['__editor_module_config__']->module_config[$module_srl];
return $editor_skin;
if(!is_object($editor_config)) $editor_config = null;
if(!is_array($editor_config->enable_html_grant)) $editor_config->enable_html_grant = array();
if(!is_array($editor_config->enable_comment_html_grant)) $editor_config->enable_comment_html_grant = array();
if(!is_array($editor_config->upload_file_grant)) $editor_config->upload_file_grant = array();
if(!is_array($editor_config->comment_upload_file_grant)) $editor_config->comment_upload_file_grant = array();
if(!is_array($editor_config->enable_default_component_grant)) $editor_config->enable_default_component_grant = array();
if(!is_array($editor_config->enable_comment_default_component_grant)) $editor_config->enable_comment_default_component_grant = array();
if(!is_array($editor_config->enable_component_grant)) $editor_config->enable_component_grant = array();
if(!is_array($editor_config->enable_comment_component_grant)) $editor_config->enable_comment_component_grant= array();
if(!$editor_config->editor_height) $editor_config->editor_height = 500;
if(!$editor_config->comment_editor_height) $editor_config->comment_editor_height = 200;
if($editor_config->enable_height_resizable!='N') $editor_config->enable_height_resizable= "Y";
if($editor_config->enable_comment_height_resizable!='Y') $editor_config->enable_comment_height_resizable= "N";
if($editor_config->enable_autosave!='N') $editor_config->enable_autosave = "Y";
return $editor_config;
}
/**
@ -73,11 +91,8 @@
else $editor_height = $option->height;
// 스킨 설정
if(!$option->skin) {
$module_srl = Context::get('module_srl');
$skin = $this->getEditorConfig($module_srl);
} else $skin = $option->skin;
$skin = $option->skin;
if(!$skin) $skin = 'default';
/**
* 자동백업 기능 체크 ( 수정일 경우는 사용하지 않음)
@ -179,6 +194,112 @@
return $oTemplate->compile($tpl_path, $tpl_file);
}
/**
* @brief 모듈별 설정이 반영된 에디터 template을 return
* getEditor() 동일한 결과물을 return하지만 getModuleEditor() 모듈별 추가 설정을 통해 직접 제어되는 설정을 이용하여 에디터를 생성함
*
* document/ comment 2가지 종류를 이용함.
* 굳이 나눈 이유는 하나의 모듈에서 2 종류의 에디터 사용을 위해서인데 게시판이나 블로그등 원글과 그에 연관된 (댓글) 위한 용도임.
**/
function getModuleEditor($type = 'document', $module_srl, $upload_target_srl, $primary_key_name, $content_key_name) {
// 지정된 모듈의 에디터 설정을 구해옴
$editor_config = $this->getEditorConfig($module_srl);
// type에 따른 설정 정리
if($type == 'document') {
$config->editor_skin = $editor_config->editor_skin;
$config->upload_file_grant = $editor_config->upload_file_grant;
$config->enable_default_component_grant = $editor_config->enable_default_component_grant;
$config->enable_component_grant = $editor_config->enable_component_grant;
$config->enable_html_grant = $editor_config->enable_html_grant;
$config->editor_height = $editor_config->editor_height;
$config->enable_height_resizable = $editor_config->enable_height_resizable;
$config->enable_autosave = $editor_config->enable_autosave;
} else {
$config->editor_skin = $editor_config->comment_editor_skin;
$config->upload_file_grant = $editor_config->comment_upload_file_grant;
$config->enable_default_component_grant = $editor_config->enable_comment_default_component_grant;
$config->enable_component_grant = $editor_config->enable_comment_component_grant;
$config->enable_html_grant = $editor_config->enable_comment_html_grant;
$config->editor_height = $editor_config->comment_editor_height;
$config->enable_height_resizable = $editor_config->enable_comment_height_resizable;
$config->enable_autosave = 'N';
}
// 권한 체크를 위한 현재 로그인 사용자의 그룹 설정 체크
if(Context::get('is_logged')) {
$logged_info = Context::get('logged_info');
$group_list = $logged_info->group_list;
} else {
$group_list = array();
}
// 에디터 옵션 변수를 미리 설정
$option->skin = $config->editor_skin;
// 파일 업로드 권한 체크
$option->allow_fileupload = false;
if(count($config->upload_file_grant)) {
foreach($group_list as $group_srl => $group_info) {
if(in_array($group_srl, $config->upload_file_grant)) {
$option->allow_fileupload = true;
break;
}
}
} else $option->allow_fileupload = true;
// 기본 컴포넌트 사용 권한
$option->enable_default_component = false;
if(count($config->enable_default_component_grant)) {
foreach($group_list as $group_srl => $group_info) {
if(in_array($group_srl, $config->enable_default_component_grant)) {
$option->enable_default_component = true;
break;
}
}
} else $option->enable_default_component = true;
// 확장 컴포넌트 사용 권한
$option->enable_component = false;
if(count($config->enable_component_grant)) {
foreach($group_list as $group_srl => $group_info) {
if(in_array($group_srl, $config->enable_component_grant)) {
$option->enable_component = true;
break;
}
}
} else $option->enable_component = true;
// HTML 편집 권한
$enable_html = false;
if(count($config->enable_html_grant)) {
foreach($group_list as $group_srl => $group_info) {
if(in_array($group_srl, $config->enable_html_grant)) {
$enable_html = true;
break;
}
}
} else $enable_html = true;
if($enable_html) $option->disable_html = false;
else $option->disable_html = true;
// 높이 설정
$option->height = $config->editor_height;
// 높이 조절 옵션 설정
$option->resizable = $config->enable_height_resizable=='Y'?true:false;
// 자동 저장 유무 옵션 설정
$option->enable_autosave = $config->enable_autosave=='Y'?true:false;
// 기타 설정
$option->primary_key_name = $primary_key_name;
$option->content_key_name = $content_key_name;
return $this->getEditor($upload_target_srl, $option);
}
/**
* @brief 자동저장되어 있는 정보를 가져옴
**/

View file

@ -66,23 +66,29 @@
**/
function triggerDispEditorAdditionSetup(&$obj) {
$current_module_srl = Context::get('module_srl');
$current_module_srls = Context::get('module_srls');
if(!$current_module_srl) {
if(!$current_module_srl && !$current_module_srls) {
// 선택된 모듈의 정보를 가져옴
$current_module_info = Context::get('current_module_info');
$current_module_srl = $current_module_info->module_srl;
if(!$current_module_srl) return new Object();
}
if(!$current_module_srl) return new Object();
// 에디터 설정을 구함
$oEditorModel = &getModel('editor');
$editor_skin = $oEditorModel->getEditorConfig($current_module_srl);
Context::set('editor_skin', $editor_skin);
$editor_config = $oEditorModel->getEditorConfig($current_module_srl);
Context::set('editor_config', $editor_config);
// 에디터 스킨 목록을 구함
$editor_skin_list = FileHandler::readDir('./modules/editor/skins');
Context::set('editor_skin_list', $editor_skin_list);
// 그룹 목록을 구함
$oMemberModel = &getModel('member');
$group_list = $oMemberModel->getGroups();
Context::set('group_list', $group_list);
// 템플릿 파일 지정
$oTemplate = &TemplateHandler::getInstance();

View file

@ -28,6 +28,24 @@
$lang->cmd_disable = "Inactive";
$lang->cmd_enable = "Active";
$lang->editor_skin = '에디터 스킨';
$lang->upload_file_grant = '파일 첨부 권한';
$lang->enable_default_component_grant = '기본 컴포넌트 사용 권한';
$lang->enable_component_grant = '컴포넌트 사용 권한';
$lang->enable_html_grant = 'HTML편집 권한';
$lang->enable_autosave = '자동저장 사용';
$lang->height_resizable = '높이 조절 가능';
$lang->editor_height = '에디터 높이';
$lang->about_editor_skin = '에디터 스킨을 선택하실 수 있습니다';
$lang->about_upload_file_grant = '파일을 첨부할 수 있는 권한을 지정하실 수 있습니다 (모두 해제시 아무나 첨부 가능합니다)';
$lang->about_default_component_grant = '에디터에서 사용되는 기본 컴포넌트를 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)';
$lang->about_component_grant = '기본 컴포넌트외의 확장 컴포넌트 기능을 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)';
$lang->about_editor_height = '에디터의 기본 높이를 지정하실 수 있습니다';
$lang->about_editor_height_resizable = '에디터의 높이를 직접 변경할 수 있도록 허용합니다';
$lang->about_enable_html_grant = 'HTML편집 권한을 부여할 수 있습니다.';
$lang->about_enable_autosave = '글작성시 자동 저장 기능을 활성화 시킬 수 있습니다';
$lang->edit->fontname = 'Font';
$lang->edit->fontsize = 'Size';
$lang->edit->use_paragraph = 'Paragraph Function';

View file

@ -28,6 +28,24 @@
$lang->cmd_disable = "Desactivado";
$lang->cmd_enable = "activado";
$lang->editor_skin = '에디터 스킨';
$lang->upload_file_grant = '파일 첨부 권한';
$lang->enable_default_component_grant = '기본 컴포넌트 사용 권한';
$lang->enable_component_grant = '컴포넌트 사용 권한';
$lang->enable_html_grant = 'HTML편집 권한';
$lang->enable_autosave = '자동저장 사용';
$lang->height_resizable = '높이 조절 가능';
$lang->editor_height = '에디터 높이';
$lang->about_editor_skin = '에디터 스킨을 선택하실 수 있습니다';
$lang->about_upload_file_grant = '파일을 첨부할 수 있는 권한을 지정하실 수 있습니다 (모두 해제시 아무나 첨부 가능합니다)';
$lang->about_default_component_grant = '에디터에서 사용되는 기본 컴포넌트를 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)';
$lang->about_component_grant = '기본 컴포넌트외의 확장 컴포넌트 기능을 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)';
$lang->about_editor_height = '에디터의 기본 높이를 지정하실 수 있습니다';
$lang->about_editor_height_resizable = '에디터의 높이를 직접 변경할 수 있도록 허용합니다';
$lang->about_enable_html_grant = 'HTML편집 권한을 부여할 수 있습니다.';
$lang->about_enable_autosave = '글작성시 자동 저장 기능을 활성화 시킬 수 있습니다';
$lang->edit->fontname = 'Fuente';
$lang->edit->fontsize = 'Tamaño';
$lang->edit->use_paragraph = 'Párrafo';

View file

@ -28,6 +28,24 @@
$lang->cmd_disable = "未使用";
$lang->cmd_enable = "使用";
$lang->editor_skin = '에디터 스킨';
$lang->upload_file_grant = '파일 첨부 권한';
$lang->enable_default_component_grant = '기본 컴포넌트 사용 권한';
$lang->enable_component_grant = '컴포넌트 사용 권한';
$lang->enable_html_grant = 'HTML편집 권한';
$lang->enable_autosave = '자동저장 사용';
$lang->height_resizable = '높이 조절 가능';
$lang->editor_height = '에디터 높이';
$lang->about_editor_skin = '에디터 스킨을 선택하실 수 있습니다';
$lang->about_upload_file_grant = '파일을 첨부할 수 있는 권한을 지정하실 수 있습니다 (모두 해제시 아무나 첨부 가능합니다)';
$lang->about_default_component_grant = '에디터에서 사용되는 기본 컴포넌트를 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)';
$lang->about_component_grant = '기본 컴포넌트외의 확장 컴포넌트 기능을 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)';
$lang->about_editor_height = '에디터의 기본 높이를 지정하실 수 있습니다';
$lang->about_editor_height_resizable = '에디터의 높이를 직접 변경할 수 있도록 허용합니다';
$lang->about_enable_html_grant = 'HTML편집 권한을 부여할 수 있습니다.';
$lang->about_enable_autosave = '글작성시 자동 저장 기능을 활성화 시킬 수 있습니다';
$lang->edit->fontname = 'フォント';
$lang->edit->fontsize = 'フォントサイズ';
$lang->edit->use_paragraph = '段落機能';

View file

@ -28,6 +28,24 @@
$lang->cmd_disable = "비활성";
$lang->cmd_enable = "활성";
$lang->editor_skin = '에디터 스킨';
$lang->upload_file_grant = '파일 첨부 권한';
$lang->enable_default_component_grant = '기본 컴포넌트 사용 권한';
$lang->enable_component_grant = '컴포넌트 사용 권한';
$lang->enable_html_grant = 'HTML편집 권한';
$lang->enable_autosave = '자동저장 사용';
$lang->height_resizable = '높이 조절 가능';
$lang->editor_height = '에디터 높이';
$lang->about_editor_skin = '에디터 스킨을 선택하실 수 있습니다';
$lang->about_upload_file_grant = '파일을 첨부할 수 있는 권한을 지정하실 수 있습니다 (모두 해제시 아무나 첨부 가능합니다)';
$lang->about_default_component_grant = '에디터에서 사용되는 기본 컴포넌트를 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)';
$lang->about_component_grant = '기본 컴포넌트외의 확장 컴포넌트 기능을 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)';
$lang->about_editor_height = '에디터의 기본 높이를 지정하실 수 있습니다';
$lang->about_editor_height_resizable = '에디터의 높이를 직접 변경할 수 있도록 허용합니다';
$lang->about_enable_html_grant = 'HTML편집 권한을 부여할 수 있습니다.';
$lang->about_enable_autosave = '글작성시 자동 저장 기능을 활성화 시킬 수 있습니다';
$lang->edit->fontname = '글꼴';
$lang->edit->fontsize = '크기';
$lang->edit->use_paragraph = '문단기능';

View file

@ -28,6 +28,24 @@
$lang->cmd_disable = "Неавтивно";
$lang->cmd_enable = "Активно";
$lang->editor_skin = '에디터 스킨';
$lang->upload_file_grant = '파일 첨부 권한';
$lang->enable_default_component_grant = '기본 컴포넌트 사용 권한';
$lang->enable_component_grant = '컴포넌트 사용 권한';
$lang->enable_html_grant = 'HTML편집 권한';
$lang->enable_autosave = '자동저장 사용';
$lang->height_resizable = '높이 조절 가능';
$lang->editor_height = '에디터 높이';
$lang->about_editor_skin = '에디터 스킨을 선택하실 수 있습니다';
$lang->about_upload_file_grant = '파일을 첨부할 수 있는 권한을 지정하실 수 있습니다 (모두 해제시 아무나 첨부 가능합니다)';
$lang->about_default_component_grant = '에디터에서 사용되는 기본 컴포넌트를 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)';
$lang->about_component_grant = '기본 컴포넌트외의 확장 컴포넌트 기능을 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)';
$lang->about_editor_height = '에디터의 기본 높이를 지정하실 수 있습니다';
$lang->about_editor_height_resizable = '에디터의 높이를 직접 변경할 수 있도록 허용합니다';
$lang->about_enable_html_grant = 'HTML편집 권한을 부여할 수 있습니다.';
$lang->about_enable_autosave = '글작성시 자동 저장 기능을 활성화 시킬 수 있습니다';
$lang->edit->fontname = 'Шрифт';
$lang->edit->fontsize = 'Размер';
$lang->edit->use_paragraph = 'Функции параграфа';

View file

@ -28,6 +28,24 @@
$lang->cmd_disable = "非激活";
$lang->cmd_enable = "激活";
$lang->editor_skin = '에디터 스킨';
$lang->upload_file_grant = '파일 첨부 권한';
$lang->enable_default_component_grant = '기본 컴포넌트 사용 권한';
$lang->enable_component_grant = '컴포넌트 사용 권한';
$lang->enable_html_grant = 'HTML편집 권한';
$lang->enable_autosave = '자동저장 사용';
$lang->height_resizable = '높이 조절 가능';
$lang->editor_height = '에디터 높이';
$lang->about_editor_skin = '에디터 스킨을 선택하실 수 있습니다';
$lang->about_upload_file_grant = '파일을 첨부할 수 있는 권한을 지정하실 수 있습니다 (모두 해제시 아무나 첨부 가능합니다)';
$lang->about_default_component_grant = '에디터에서 사용되는 기본 컴포넌트를 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)';
$lang->about_component_grant = '기본 컴포넌트외의 확장 컴포넌트 기능을 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)';
$lang->about_editor_height = '에디터의 기본 높이를 지정하실 수 있습니다';
$lang->about_editor_height_resizable = '에디터의 높이를 직접 변경할 수 있도록 허용합니다';
$lang->about_enable_html_grant = 'HTML편집 권한을 부여할 수 있습니다.';
$lang->about_enable_autosave = '글작성시 자동 저장 기능을 활성화 시킬 수 있습니다';
$lang->edit->fontname = '字体';
$lang->edit->fontsize = '大小';
$lang->edit->use_paragraph = '段落功能';

View file

@ -27,9 +27,9 @@
.xeEditor .textAreaDragIndicator { text-align:center; background:url(../images/lineTextAreaDrag.gif) repeat-x left center; padding:5px 0 5px 0; }
.xeEditor .textAreaDragIndicatorBar { background:url(../images/buttonTextAreaDrag.gif) no-repeat center; cursor:move;height:14px;}
.xeEditor .editor_info { clear:both; padding:5px 20px 0 10px; overflow:hidden;}
.xeEditor .editor_info { clear:both; padding:5px 10px 0 10px; overflow:hidden;}
.xeEditor .editor_info .editor_option { float:left; color:#888888; }
.xeEditor .editor_info .editor_autosaved_message { color:#888888; float:right; }
.xeEditor .editor_info .editor_autosaved_message { display:none; color:#888888; float:right; }
.xeEditor .inputTypeTextArea { background:#fbfbfb; padding:1em; width:94%;}
.xeEditor #textAreaDrag {}

View file

@ -138,7 +138,7 @@
</div>
<!--@end-->
<!--@if($enable_autosave)-->
<div class="editor_autosaved_message" id="editor_autosaved_message_{$editor_sequence}">&nbsp;</div>
<div class="editor_autosaved_message" id="editor_autosaved_message_{$editor_sequence}"></div>
<!--@end-->
</div>
<!--@end-->

View file

@ -36,7 +36,7 @@
.xeEditor .editor_info { clear:both; padding:5px 10px 5px 10px; overflow:hidden;}
.xeEditor .editor_info .editor_option { float:left; color:#888888; }
.xeEditor .editor_info .editor_autosaved_message { color:#888888; float:right; }
.xeEditor .editor_info .editor_autosaved_message { color:#888888; float:right; display:none;}
.xeEditor .inputTypeTextArea { background:#fbfbfb; padding:1em; width:94%;}
.xeEditor #textAreaDrag {}

View file

@ -121,19 +121,27 @@
<!--@end-->
<!-- HTML 모드 사용 기능 및 자동저장 메세지 출력용 -->
<!--@if($html_mode || $enable_autosave)-->
<div class="editor_info">
<!--@if($html_mode)-->
<div class="editor_option">
<input type="checkbox" id="use_html_{$editor_sequence}" value="Y" onclick="editorChangeMode(this, '{$editor_sequence}');" /> <label for="use_html_{$editor_sequence}">HTML</label>
</div>
<!--@end-->
<!--@if($enable_autosave)-->
<div class="editor_autosaved_message" id="editor_autosaved_message_{$editor_sequence}">&nbsp;</div>
<!--@end-->
</div>
<!--@end-->
<!-- 에디터 출력 -->
<div class="editor_iframe_box"><iframe id="editor_iframe_{$editor_sequence}" frameborder="0" width="100%" height="{$editor_height}" style="background-color:transparent;"></iframe></div>
<textarea id="editor_textarea_{$editor_sequence}" class="editor_iframe_textarea" style="display:none; height:{$editor_height}" rows="10" cols="10"></textarea>
<!-- 에디터 크기 조절 bar -->
<!--@if($enable_resizable)-->
<div class="textAreaDragIndicator"><div class="textAreaDragIndicatorBar" id="editor_drag_bar_{$editor_sequence}"></div></div>
<!--@end-->
<!--@if($allow_fileupload)-->
<!-- 첨부파일 영역 -->

View file

@ -1,6 +1,6 @@
@charset "utf-8";
.xeEditor .editor_info .editor_autosaved_message { color:#888888; text-align:right; }
.xeEditor .optionDE { width:100%; clear:both; overflow:hidden; background:#f8f8f8; border-bottom:1px solid #e1e1e1; height:29px;}
.xeEditor .editor_info .editor_autosaved_message { display:none; color:#888888; text-align:right; }
.xeEditor .optionDE { width:100%; clear:both; overflow:hidden; background:#f8f8f8; height:29px;}
.xeEditor .optionDE .buttonGroup { white-space:nowrap; position:relative; display:block; float:left; height:21px; overflow:hidden; padding-left:2px;}
.xeEditor .optionDE img { float:left; display:block; margin-right:.5em; cursor:pointer;}
.xeEditor .optionD { padding:.5em 0 .5em .8em; overflow:hidden; float:left; border-right:1px solid #e0e0e0;}

View file

@ -119,4 +119,4 @@
.xed table.datatable td {
border-bottom: 1px solid #000;
border-right: 1px solid #000;
}
}

View file

@ -230,4 +230,4 @@
.xqQuickSearch li.selected {
background-color: #ffd;
}
}

View file

@ -44,7 +44,6 @@
</div>
<!--@end-->
<!-- HTML 모드 사용 기능 및 자동저장 메세지 출력용 -->
<div class="editor_info">
<div class="editor_autosaved_message" id="editor_autosaved_message_{$editor_sequence}">&nbsp;</div>
@ -55,7 +54,9 @@
<textarea id="editor_textarea_{$editor_sequence}" class="editor_iframe_textarea" style="display:none; height:{$editor_height}" rows="10" cols="10"></textarea>
<!-- 에디터 크기 조절 bar -->
<!--@if($enable_resizable)-->
<div class="textAreaDragIndicator"><div class="textAreaDragIndicatorBar" id="editor_drag_bar_{$editor_sequence}"></div></div>
<!--@end-->
<!--@if($allow_fileupload)-->
<!-- 첨부파일 영역 -->

View file

@ -1,23 +1,135 @@
<!--%import("filter/insert_editor_module_config.xml")-->
<form action="./" method="post" onsubmit="return procFilter(this, insert_editor_module_config)">
<input type="hidden" name="target_module_srl" value="{$module_info->module_srl}" />
<input type="hidden" name="target_module_srl" value="{$module_info->module_srl?$module_info->module_srl:$module_srls}" />
<table cellspacing="0" class="adminTable">
<col width="150" />
<col />
<col width="100" />
<col />
<caption>{$lang->editor}</caption>
<tr>
<th scope="row">{$lang->editor}</th>
<th scope="col">&nbsp;</th>
<th scope="col">{$lang->document}</td>
<th scope="col">{$lang->comment}</td>
</tr>
<tr>
<th rowspan="2">{$lang->editor_skin}</th>
<td>
<select name="editor_skin">
<!--@foreach($editor_skin_list as $editor)-->
<option value="{$editor}" <!--@if($editor==$editor_skin)-->selected="selected"<!--@end-->>{$editor}</option>
<option value="{$editor}" <!--@if($editor==$editor_config->editor_skin)-->selected="selected"<!--@end-->>{$editor}</option>
<!--@end-->
</select>
</td>
<th class="centerButton">
<td>
<select name="comment_editor_skin">
<!--@foreach($editor_skin_list as $editor)-->
<option value="{$editor}" <!--@if($editor==$editor_config->comment_editor_skin)-->selected="selected"<!--@end-->>{$editor}</option>
<!--@end-->
</select>
</td>
</tr>
<tr>
<td colspan="2">{$lang->about_editor_skin}</td>
</tr>
<tr>
<th rowspan="2">{$lang->enable_html_grant}</th>
<td>
<!--@foreach($group_list as $k => $v)-->
<input type="checkbox" name="enable_html_grant" value="{$k}" id="enable_html_{$k}" <!--@if(in_array($k, $editor_config->enable_html_grant))-->checked="checked"<!--@end-->/> <label for="enable_html_{$k}">{$v->title}</label> <br />
<!--@end-->
</td>
<td>
<!--@foreach($group_list as $k => $v)-->
<input type="checkbox" name="enable_comment_html_grant" value="{$k}" id="enable_comment_html_{$k}" <!--@if(in_array($k, $editor_config->enable_comment_html_grant))-->checked="checked"<!--@end-->/> <label for="enable_comment_html_{$k}">{$v->title}</label> <br />
<!--@end-->
</td>
</tr>
<tr>
<td colspan="2">{$lang->about_enable_html_grant}</td>
</tr>
<tr>
<th rowspan="2">{$lang->upload_file_grant}</th>
<td>
<!--@foreach($group_list as $k => $v)-->
<input type="checkbox" name="upload_file_grant" value="{$k}" id="fileupload_{$k}" <!--@if(in_array($k, $editor_config->upload_file_grant))-->checked="checked"<!--@end-->/> <label for="fileupload_{$k}">{$v->title}</label> <br />
<!--@end-->
</td>
<td>
<!--@foreach($group_list as $k => $v)-->
<input type="checkbox" name="comment_upload_file_grant" value="{$k}" id="comment_fileupload_{$k}" <!--@if(in_array($k, $editor_config->comment_upload_file_grant))-->checked="checked"<!--@end-->/> <label for="comment_fileupload_{$k}">{$v->title}</label> <br />
<!--@end-->
</td>
</tr>
<tr>
<td colspan="2">{$lang->about_upload_file_grant}</td>
</tr>
<tr>
<th rowspan="2">{$lang->enable_default_component_grant}</th>
<td>
<!--@foreach($group_list as $k => $v)-->
<input type="checkbox" name="enable_default_component_grant" value="{$k}" id="default_componen_{$k}" <!--@if(in_array($k, $editor_config->enable_default_component_grant))-->checked="checked"<!--@end-->/> <label for="default_componen_{$k}">{$v->title}</label> <br />
<!--@end-->
</td>
<td>
<!--@foreach($group_list as $k => $v)-->
<input type="checkbox" name="enable_comment_default_component_grant" value="{$k}" id="comment_default_component_{$k}" <!--@if(in_array($k, $editor_config->enable_comment_default_component_grant))-->checked="checked"<!--@end-->/> <label for="comment_default_component_{$k}">{$v->title}</label> <br />
<!--@end-->
</td>
</tr>
<tr>
<td colspan="2">{$lang->about_default_component_grant}</td>
</tr>
<tr>
<th rowspan="2">{$lang->enable_component_grant}</th>
<td>
<!--@foreach($group_list as $k => $v)-->
<input type="checkbox" name="enable_component_grant" value="{$k}" id="componen_{$k}" <!--@if(in_array($k, $editor_config->enable_component_grant))-->checked="checked"<!--@end-->/> <label for="componen_{$k}">{$v->title}</label> <br />
<!--@end-->
</td>
<td>
<!--@foreach($group_list as $k => $v)-->
<input type="checkbox" name="enable_comment_component_grant" value="{$k}" id="comment_component_{$k}" <!--@if(in_array($k, $editor_config->enable_comment_component_grant))-->checked="checked"<!--@end-->/> <label for="comment_component_{$k}">{$v->title}</label> <br />
<!--@end-->
</td>
</tr>
<tr>
<td colspan="2">{$lang->about_component_grant}</td>
</tr>
<tr>
<th rowspan="2">{$lang->editor_height}</th>
<td>
<input type="text" name="editor_height" value="{$editor_config->editor_height}" class="inputTypeText w80" />px
</td>
<td>
<input type="text" name="comment_editor_height" value="{$editor_config->comment_editor_height}" class="inputTypeText w80" />px
</td>
</tr>
<tr>
<td colspan="2">{$lang->about_editor_height}</td>
</tr>
<tr>
<th rowspan="2">{$lang->height_resizable}</th>
<td>
<input type="checkbox" value="Y" name="enable_height_resizable" <!--@if($editor_config->enable_height_resizable=='Y')-->checked="checked"<!--@end-->/>
</td>
<td>
<input type="checkbox" value="Y" name="enable_comment_height_resizable" <!--@if($editor_config->enable_comment_height_resizable=='Y')-->checked="checked"<!--@end-->/>
</td>
</tr>
<tr>
<td colspan="2">{$lang->about_editor_height_resizable}</td>
</tr>
<tr>
<th rowspan="2">{$lang->enable_autosave}</th>
<td colspan="2"><input type="checkbox" value="Y" name="enable_autosave" <!--@if($editor_config->enable_autosave=='Y')-->checked="checked"<!--@end-->/></td>
</tr>
<tr>
<td colspan="2">{$lang->about_enable_autosave}</td>
</tr>
<tr>
<th class="button" colspan="3">
<span class="button"><input type="submit" value="{$lang->cmd_save}"/></span>
</th>
</tr>

View file

@ -121,7 +121,7 @@ function editorStart(editor_sequence, primary_key, content_key, editor_height) {
//'<link rel="stylesheet" href="'+request_uri+'common/css/default.css" type="text/css" />'+
//'<link rel="stylesheet" href="'+request_uri+editor_path+'css/editor.css" type="text/css" />'+
'<style type="text/css">'+
'body {font-size:9pt;height:'+editor_height+'px; padding:0; margin:0; background-color:transparent; line-height:140%;}'+
'body {font-size:9pt;height:'+editor_height+'px; padding:5px; margin:0; background-color:transparent; line-height:140%;}'+
'</style>'+
'</head><body editor_sequence="'+editor_sequence+'">'+
content+

View file

@ -66,6 +66,7 @@ function _editorAutoSave() {
editorAutoSaveObj.content = content;
var obj = xGetElementById("editor_autosaved_message_"+editor_sequence);
obj.style.display = 'block';
var oDate = new Date();
html = oDate.getHours()+':'+oDate.getMinutes()+' '+auto_saved_msg;
xInnerHtml(obj, html);

View file

@ -77,6 +77,11 @@
function procFileAdminInsertModuleConfig() {
// 필요한 변수를 받아옴
$module_srl = Context::get('target_module_srl');
// 여러개의 모듈 일괄 설정일 경우
if(preg_match('/^([0-9,]+)$/',$module_srl)) $module_srl = explode(',',$module_srl);
else $module_srl = array($module_srl);
$download_grant = trim(Context::get('download_grant'));
// 설정 정보를 받아옴 (module model 객체를 이용)
@ -89,12 +94,19 @@
$module_file_config->allowed_filetypes = Context::get('allowed_filetypes');
if($download_grant) $module_file_config->download_grant = explode('|@|',$download_grant);
else $module_file_config->download_grant = array();
$config->module_config[$module_srl] = $module_file_config;
for($i=0;$i<count($module_srl);$i++) {
$srl = trim($module_srl[$i]);
if(!$srl) continue;
$config->module_config[$srl] = $module_file_config;
}
// module Controller 객체 생성하여 입력
$oModuleController = &getController('module');
$output = $oModuleController->insertModuleConfig('file',$config);
return $output;
$this->setError(-1);
$this->setMessage('success_updated');
}
}
?>

View file

@ -22,15 +22,15 @@
**/
function triggerDispFileAdditionSetup(&$obj) {
$current_module_srl = Context::get('module_srl');
$current_module_srls = Context::get('module_srls');
if(!$current_module_srl) {
if(!$current_module_srl && !$current_module_srls) {
// 선택된 모듈의 정보를 가져옴
$current_module_info = Context::get('current_module_info');
$current_module_srl = $current_module_info->module_srl;
if(!$current_module_srl) return new Object();
}
if(!$current_module_srl) return new Object();
// 선택된 모듈의 file설정을 가져옴
$oFileModel = &getModel('file');
$file_config = $oFileModel->getFileModuleConfig($current_module_srl);

View file

@ -1,7 +1,7 @@
<!--%import("filter/insert_file_module_config.xml")-->
<form action="./" method="get" onsubmit="return procFilter(this, insert_file_module_config)">
<input type="hidden" name="target_module_srl" value="{$file_config->module_srl}" />
<input type="hidden" name="target_module_srl" value="{$file_config->module_srl?$file_config->module_srl:$module_srls}" />
<table cellspacing="0" class="adminTable">
<col width="150" />

View file

@ -110,6 +110,7 @@
$option->enable_default_component = true;
$option->enable_component = false;
$option->resizable = false;
$option->disable_html = true;
$option->height = 200;
$editor = $oEditorModel->getEditor($member_info->member_srl, $option);
Context::set('editor', $editor);
@ -381,6 +382,7 @@
$option->enable_default_component = false;
$option->enable_component = false;
$option->resizable = false;
$option->disable_html = true;
$option->height = 300;
$editor = $oEditorModel->getEditor($logged_info->member_srl, $option);
Context::set('editor', $editor);

View file

@ -60,6 +60,17 @@
return $module_info;
}
/**
* @brief 여러개의 module_srl에 해당하는 모듈의 정보를 구함
**/
function getModulesInfo($module_srls) {
// 데이터를 가져옴
$args->module_srls = $module_srls;
$output = executeQueryArray('module.getModulesInfo', $args);
if(!$output->toBool()) return;
return $output->data;
}
/**
* @brief DB에서 가져온 모듈 정보에서 grant, extraVar등의 정리
**/

View file

@ -6,6 +6,6 @@
<column name="grants" var="grants" />
</columns>
<conditions>
<condition operation="equal" column="module_srl" var="module_srl" filter="number" notnull="notnull"/>
<condition operation="in" column="module_srl" var="module_srl" filter="number" notnull="notnull"/>
</conditions>
</query>

View file

@ -113,20 +113,30 @@
$module_srl = Context::get('target_module_srl');
if(!$module_srl) return new Object(-1, 'msg_invalid_request');
// 여러개의 모듈 일괄 설정일 경우
if(preg_match('/^([0-9,]+)$/',$module_srl)) $module_srl = explode(',',$module_srl);
else $module_srl = array($module_srl);
// 설정 정보 가져오기
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('point');
$config->module_point[$module_srl]['insert_document'] = (int)Context::get('insert_document');
$config->module_point[$module_srl]['insert_comment'] = (int)Context::get('insert_comment');
$config->module_point[$module_srl]['upload_file'] = (int)Context::get('upload_file');
$config->module_point[$module_srl]['download_file'] = (int)Context::get('download_file');
$config->module_point[$module_srl]['read_document'] = (int)Context::get('read_document');
// 설정 저장
for($i=0;$i<count($module_srl);$i++) {
$srl = trim($module_srl[$i]);
if(!$srl) continue;
$config->module_point[$srl]['insert_document'] = (int)Context::get('insert_document');
$config->module_point[$srl]['insert_comment'] = (int)Context::get('insert_comment');
$config->module_point[$srl]['upload_file'] = (int)Context::get('upload_file');
$config->module_point[$srl]['download_file'] = (int)Context::get('download_file');
$config->module_point[$srl]['read_document'] = (int)Context::get('read_document');
}
$oModuleController = &getController('module');
$oModuleController->insertModuleConfig('point', $config);
return new Object(0, 'success_registed');
$this->setError(-1);
$this->setMessage('success_updated');
}
/**

View file

@ -22,15 +22,15 @@
**/
function triggerDispPointAdditionSetup(&$obj) {
$current_module_srl = Context::get('module_srl');
$current_module_srls = Context::get('module_srls');
if(!$current_module_srl) {
if(!$current_module_srl && !$current_module_srls) {
// 선택된 모듈의 정보를 가져옴
$current_module_info = Context::get('current_module_info');
$current_module_srl = $current_module_info->module_srl;
if(!$current_module_srl) return new Object();
}
if(!$current_module_srl) return new Object();
// 설정 정보 가져오기
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('point');

View file

@ -1,9 +1,11 @@
<!--%import("filter/insert_point_module_config.xml")-->
<form action="./" method="get" onsubmit="return procFilter(this, insert_point_module_config);" id="fo_point">
<input type="hidden" name="target_module_srl" value="{$module_config['module_srl']}" />
<input type="hidden" name="target_module_srl" value="{$module_config['module_srl']?$module_srl['module_srl']:$module_srls}" />
<table cellspacing="0" class="adminTable">
<col width="200" />
<col />
<caption>{$lang->point}</caption>
<tr>
<th>{$lang->point_insert_document}</th>

View file

@ -20,17 +20,27 @@
* @brief RSS 모듈별 설정
**/
function procRssAdminInsertModuleConfig() {
// 필요한 변수를 받아옴
// 대상을 구함
$module_srl = Context::get('target_module_srl');
// 여러개의 모듈 일괄 설정일 경우
if(preg_match('/^([0-9,]+)$/',$module_srl)) $module_srl = explode(',',$module_srl);
else $module_srl = array($module_srl);
$open_rss = Context::get('open_rss');
if(!$module_srl || !$open_rss) return new Object(-1, 'msg_invalid_request');
if(!in_array($open_rss, array('Y','H','N'))) $open_rss = 'N';
// 설정 저장
$output = $this->setRssModuleConfig($module_srl, $open_rss);
for($i=0;$i<count($module_srl);$i++) {
$srl = trim($module_srl[$i]);
if(!$srl) continue;
$output = $this->setRssModuleConfig($srl, $open_rss);
}
$this->setMessage('success_registed');
$this->setError(-1);
$this->setMessage('success_updated');
}
/**

View file

@ -154,15 +154,15 @@
**/
function triggerDispRssAdditionSetup(&$obj) {
$current_module_srl = Context::get('module_srl');
$current_module_srls = Context::get('module_srls');
if(!$current_module_srl) {
if(!$current_module_srl && !$current_module_srls) {
// 선택된 모듈의 정보를 가져옴
$current_module_info = Context::get('current_module_info');
$current_module_srl = $current_module_info->module_srl;
if(!$current_module_srl) return new Object();
}
if(!$current_module_srl) return new Object();
// 선택된 모듈의 rss설정을 가져옴
$oRssModel = &getModel('rss');
$rss_config = $oRssModel->getRssModuleConfig($current_module_srl);

View file

@ -1,7 +1,7 @@
<!--%import("filter/insert_rss_module_config.xml")-->
<form action="./" method="post" onsubmit="return procFilter(this, insert_rss_module_config)">
<input type="hidden" name="target_module_srl" value="{$rss_config->module_srl}" />
<input type="hidden" name="target_module_srl" value="{$rss_config->module_srl?$rss_config->module_srl:$module_srls}" />
<table cellspacing="0" class="adminTable">
<col width="150" />

View file

@ -1,7 +1,7 @@
<!--%import("filter/insert_trackback_module_config.xml")-->
<form action="./" method="post" onsubmit="return procFilter(this, insert_trackback_module_config)">
<input type="hidden" name="target_module_srl" value="{$trackback_config->module_srl}" />
<input type="hidden" name="target_module_srl" value="{$trackback_config->module_srl?$trackback_config->module_srl:$module_srls}" />
<table cellspacing="0" class="adminTable">
<col width="150" />

View file

@ -60,15 +60,24 @@
function procTrackbackAdminInsertModuleConfig() {
// 필요한 변수를 받아옴
$module_srl = Context::get('target_module_srl');
if(preg_match('/^([0-9,]+)$/',$module_srl)) $module_srl = explode(',',$module_srl);
else $module_srl = array($module_srl);
$enable_trackback = Context::get('enable_trackback');
if(!in_array($enable_trackback, array('Y','N'))) $enable_trackback = 'N';
if(!$module_srl || !$enable_trackback) return new Object(-1, 'msg_invalid_request');
// 설정 저장
$output = $this->setTrackbackModuleConfig($module_srl, $enable_trackback);
// 설정 저장
for($i=0;$i<count($module_srl);$i++) {
$srl = trim($module_srl[$i]);
if(!$srl) continue;
$output = $this->setTrackbackModuleConfig($srl, $enable_trackback);
}
$this->setMessage('success_registed');
$this->setError(-1);
$this->setMessage('success_updated');
}
/**

View file

@ -45,15 +45,15 @@
**/
function triggerDispTrackbackAdditionSetup(&$obj) {
$current_module_srl = Context::get('module_srl');
$current_module_srls = Context::get('module_srls');
if(!$current_module_srl) {
if(!$current_module_srl && !$current_module_srls) {
// 선택된 모듈의 정보를 가져옴
$current_module_info = Context::get('current_module_info');
$current_module_srl = $current_module_info->module_srl;
if(!$current_module_srl) return new Object();
}
if(!$current_module_srl) return new Object();
// 선택된 모듈의 trackback설정을 가져옴
$oTrackbackModel = &getModel('trackback');
$trackback_config = $oTrackbackModel->getTrackbackModuleConfig($current_module_srl);