모듈 선택기능 추가 (위젯의 단일/다수 위젯 선택, 첵크된 게시글 이동/복사시) 사용되며 virtualSite외의 사이트들도 검색후 선택이 가능하도록 개선

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@5298 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2009-01-09 09:37:43 +00:00
parent 3345d21c4e
commit 906bb46d19
83 changed files with 970 additions and 543 deletions

View file

@ -3,7 +3,6 @@
.widget_title { border:1px solid #DDDDDD; margin:10px 5px 5px 0; padding:3px; }
.widget_mid_list { margin:0 0 5px 10px; }
.widget_description { color:#AAAAAA; border-top:1px dotted #EEEEEE; margin:5px 0 0 0; padding:5px 0 0 0; }
#colorset_area { margin-top:.5em; }
#colorset_area .header { float:left; margin-right:.5em; padding-top:.2em;}
@ -52,3 +51,6 @@
div.editor { width:700px; }
.help { padding:5px 0; background-color:#EFEFEF; border-top:1px solid #CCCCCC; }
ul.midCommand { float:left; margin:0 0 0 10px;; padding:0;}
ul.midCommand li { display:block; margin-bottom:5px; list-style:none;}

View file

@ -90,6 +90,7 @@ function doFillWidgetVars() {
fo_obj.widget_padding_top.value = selected_node.getAttribute("widget_padding_top");
for(var name in fo_obj) {
if(name.indexOf('_')==0) continue;
var node = fo_obj[name];
if(!node || typeof(node)=="undefined") continue;
@ -99,6 +100,7 @@ function doFillWidgetVars() {
else length = 0;
switch(type) {
case "hidden" :
case "text" :
case "textarea" :
var val = selected_node.getAttribute(name);
@ -165,3 +167,140 @@ function checkFixType(obj) {
if(width>100) fo_obj.widget_width.value = 100;
}
}
// 위젯의 대상 모듈 입력기 (단일 선택)
function insertSelectedModule(id, module_srl, mid, browser_title) {
var obj= xGetElementById('_'+id);
var sObj = xGetElementById(id);
sObj.value = module_srl;
obj.value = browser_title+' ('+mid+')';
}
// 위젯의 대상 모듈 입력기 (다중 선택)
function insertSelectedModules(id, module_srl, mid, browser_title) {
var sel_obj = xGetElementById('_'+id);
for(var i=0;i<sel_obj.options.length;i++) if(sel_obj.options[i].value==module_srl) return;
var opt = new Option(browser_title+' ('+mid+')', module_srl, false, false);
sel_obj.options[sel_obj.options.length] = opt;
if(sel_obj.options.length>8) sel_obj.size = sel_obj.options.length;
syncMid(id);
}
function midMoveUp(id) {
var sel_obj = xGetElementById('_'+id);
if(sel_obj.selectedIndex<0) return;
var idx = sel_obj.selectedIndex;
if(idx < 1) return;
var s_obj = sel_obj.options[idx];
var t_obj = sel_obj.options[idx-1];
var value = s_obj.value;
var text = s_obj.text;
s_obj.value = t_obj.value;
s_obj.text = t_obj.text;
t_obj.value = value;
t_obj.text = text;
sel_obj.selectedIndex = idx-1;
syncMid(id);
}
function midMoveDown(id) {
var sel_obj = xGetElementById('_'+id);
if(sel_obj.selectedIndex<0) return;
var idx = sel_obj.selectedIndex;
if(idx == sel_obj.options.length-1) return;
var s_obj = sel_obj.options[idx];
var t_obj = sel_obj.options[idx+1];
var value = s_obj.value;
var text = s_obj.text;
s_obj.value = t_obj.value;
s_obj.text = t_obj.text;
t_obj.value = value;
t_obj.text = text;
sel_obj.selectedIndex = idx+1;
syncMid(id);
}
function midRemove(id) {
var sel_obj = xGetElementById('_'+id);
if(sel_obj.selectedIndex<0) return;
var idx = sel_obj.selectedIndex;
sel_obj.remove(idx);
idx = idx-1;
if(idx < 0) idx = 0;
if(sel_obj.options.length) sel_obj.selectedIndex = idx;
syncMid(id);
}
function syncMid(id) {
var sel_obj = xGetElementById('_'+id);
var valueArray = new Array();
for(var i=0;i<sel_obj.options.length;i++) valueArray[valueArray.length] = sel_obj.options[i].value;
xGetElementById(id).value = valueArray.join(',');
}
function getModuleSrlList(id) {
var obj = xGetElementById(id);
if(!obj.value) return;
var value = obj.value;
var params = new Array();
params["module_srls"] = obj.value;
params["id"] = id;
var response_tags = new Array("error","message","module_list","id");
exec_xml("widget", "getWidgetAdminModuleList", params, completeGetModuleSrlList, response_tags, params);
}
function completeGetModuleSrlList(ret_obj, response_tags) {
var id = ret_obj['id'];
var sel_obj = xGetElementById('_'+id);
if(!sel_obj) return;
var module_list = ret_obj['module_list'];
if(!module_list) return;
var item = module_list['item'];
if(typeof(item.length)=='undefined' || item.length<1) item = new Array(item);
for(var i=0;i<item.length;i++) {
var module_srl = item[i].module_srl;
var mid = item[i].mid;
var browser_title = item[i].browser_title;
var opt = new Option(browser_title+' ('+mid+')', module_srl);
sel_obj.options.add(opt);
}
}
function getModuleSrl(id) {
var obj = xGetElementById(id);
if(!obj.value) return;
var value = obj.value;
var params = new Array();
params["module_srls"] = obj.value;
params["id"] = id;
var response_tags = new Array("error","message","module_list","id");
exec_xml("widget", "getWidgetAdminModuleList", params, completeGetModuleSrl, response_tags, params);
}
function completeGetModuleSrl(ret_obj, response_tags) {
var id = ret_obj['id'];
var obj = xGetElementById('_'+id);
var sObj = xGetElementById(id);
if(!sObj || !obj) return;
var module_list = ret_obj['module_list'];
if(!module_list) return;
var item = module_list['item'];
if(typeof(item.length)=='undefined' || item.length<1) item = new Array(item);
sObj.value = item[0].module_srl;
obj.value = item[0].browser_title+' ('+item[0].mid+')';
}

View file

@ -11,117 +11,11 @@
</div>
<div id="popBody">
<table cellspacing="0" class="adminTable">
<caption>{nl2br($lang->about_widget_code)}</caption>
<tr>
<th scope="row"><div>{$lang->widget}</div></th>
<td>{$widget_info->title} ver {$widget_info->version}</td>
</tr>
<!--@if(count($skin_list))-->
<tr>
<th scope="row"><div>{$lang->skin}</div></th>
<td>
<select name="skin" onchange="doDisplaySkinColorset(this);return false;">
<option value="">&nbsp;</option>
<!--@foreach($skin_list as $key => $val)-->
<option value="{$key}">{$val->title} ({$key})</option>
<!--@end-->
</select>
<div id="colorset_area" style="display:none">
<div class="header">{$lang->colorset}</div>
<div class="footer">
<select name="colorset" id="widget_colorset">
</select>
</div>
</div>
</td>
</tr>
<!--@end-->
<tr>
<th scope="row"><div>{$lang->widget_cache}</div></th>
<td>
<input type="text" name="widget_cache" value="0" class="inputTypeText" size="2" />{$lang->unit_min}
<p>{$lang->about_widget_cache}</p>
</td>
</tr>
<!--@foreach($widget_info->extra_var as $id => $var)-->
<!--@if($var->group && ((!$group) || $group != $var->group))-->
{@$group = $var->group}
</table>
<table cellspacing="0" class="adminTable">
<caption>{$group}</caption>
<!--@end-->
<tr class="row{$cycle_idx}">
<th scope="row"><div>
{$var->name}
<!--@if($var->type == "mid_list")-->
<input type="checkbox" onclick="XE.checkboxToggleAll('{$id}'); return false;" />
<!--@end-->
</div></th>
<td>
<!--@if($var->type == "text")-->
<input type="text" name="{$id}" value="" class="inputTypeText w400" />
<!--@elseif($var->type == "textarea")-->
<textarea name="{$id}" class="inputTypeTextArea w200"></textarea>
<!--@elseif($var->type == "select")-->
<select name="{$id}">
<!--@foreach($var->options as $key => $val)-->
<option value="{$key}">{$val}</option>
<!--@end-->
</select>
<!--@elseif($var->type == "mid_list")-->
<!--@foreach($mid_list as $module_category_srl => $modules)-->
<!--@if($modules->title)-->
<div class="widget_title">{$modules->title}</div>
<!--@else-->
<div class="widget_title">{$lang->none_category}</div>
<!--@end-->
<!--@foreach($modules->list as $key => $val)-->
<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-->
<!--@elseif($var->type == "mid")-->
<select name="{$id}">
<!--@foreach($mid_list as $module_category_srl => $modules)-->
<!--@if($modules->title)-->
<option disabled="disabled">{$modules->title}</option>
<!--@else-->
<option disabled="disabled">{$lang->none_category}</option>
<!--@end-->
<!--@foreach($modules->list as $key => $val)-->
<option value="{$key}">&nbsp; {$key} ({$val->browser_title})</option>
<!--@end-->
<!--@end-->
</select>
<!--@end-->
<p class="clear">{nl2br($var->description)}</p>
</td>
</tr>
<!--@end-->
<!--@if($group)-->
</table>
{@ $_caption = $lang->about_widget_code}
<!--#include("widget_generate_code.include.html")-->
<table cellspacing="0" class="adminTable">
<col width="100" />
<col width="*" />
<!--@end-->
<tr>
<th><div>{$lang->widget_code}</div></th>
<td><textarea readonly="true" id="widget_code" class="inputTypeTextArea w400"></textarea></td>
@ -130,8 +24,8 @@
</div>
<div id="popFooter" class="tCenter gap1">
<span class="button"><input type="submit" value="{$lang->cmd_generate_code}" /></span>
<a href="#" onclick="window.close(); return false;" class="button"><span>{$lang->cmd_close}</span></a>
<span class="button green"><input type="submit" value="{$lang->cmd_generate_code}" /></span>
<a href="#" onclick="window.close(); return false;" class="button red"><span>{$lang->cmd_close}</span></a>
</div>
</form>

View file

@ -0,0 +1,116 @@
<table cellspacing="0" class="adminTable">
<caption>{nl2br($_caption)}</caption>
<tr>
<th scope="row"><div>{$lang->widget}</div></th>
<td>
{$widget_info->title} ver {$widget_info->version}
<!--@if($widget_info->author->description)-->
<div class="widget_description">{nl2br(trim($widget_info->author->description))}</div>
<!--@end-->
</td>
</tr>
<!--@if(count($skin_list))-->
<tr>
<th scope="row"><div>{$lang->skin}</div></th>
<td>
<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>
<!--@end-->
</select>
<div id="colorset_area" style="display:none">
<div class="header">{$lang->colorset}</div>
<div class="footer">
<select name="colorset" id="widget_colorset">
</select>
</div>
</div>
</td>
</tr>
<!--@end-->
<tr>
<th scope="row"><div>{$lang->widget_cache}</div></th>
<td>
<input type="text" name="widget_cache" value="0" class="inputTypeText" size="2" />{$lang->unit_min}
<p>{$lang->about_widget_cache}</p>
</td>
</tr>
<!--@foreach($widget_info->extra_var as $id => $var)-->
<!--@if($var->group && ((!$group) || $group != $var->group))-->
{@$group = $var->group}
</table>
<table cellspacing="0" class="adminTable">
<caption>{$group}</caption>
<!--@end-->
<tr class="row{$cycle_idx}">
<th scope="row">
<div>
{$var->name}
<!--@if($var->type == "mid_list")-->
<input type="checkbox" onclick="XE.checkboxToggleAll('{$id}'); return false;" />
<!--@end-->
</div>
</th>
<td>
<!--@if($var->type == "text")-->
<input type="text" name="{$id}" value="" class="inputTypeText w400" />
<!--@elseif($var->type == "textarea")-->
<textarea name="{$id}" class="inputTypeTextArea w400"></textarea>
<!--@elseif($var->type == "select")-->
<select name="{$id}">
<!--@foreach($var->options as $key => $val)-->
<option value="{$key}">{$val}</option>
<!--@end-->
</select>
<!--@elseif($var->type == "mid_list")-->
<!--@foreach($mid_list as $module_category_srl => $modules)-->
<!--@if($modules->title)-->
<div class="widget_title">{$modules->title}</div>
<!--@else-->
<div class="widget_title">{$lang->none_category}</div>
<!--@end-->
<!--@foreach($modules->list as $key => $val)-->
<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-->
<!--@elseif($var->type == "module_srl_list")-->
<input type="hidden" name="{$id}" id="{$id}" value="" />
<select name="_{$id}" id="_{$id}" size="8" class="w300 fl"></select>
<ul class="midCommand">
<li><a href="{getUrl('','module','module','act','dispModuleAdminSelectList','id',$id)}" onclick="popopen(this.href, 'ModuleSelect');return false;" class="button blue"><span>{$lang->cmd_insert}</span></a></li>
<li><a href="#" onclick="midMoveUp('{$id}');return false;" class="button black"><span>{$lang->cmd_move_up}</span></a></li>
<li><a href="#" onclick="midMoveDown('{$id}');return false;" class="button black"><span>{$lang->cmd_move_down}</span></a></li>
<li><a href="#" onclick="midRemove('{$id}');return false;" class="button red"><span>{$lang->cmd_delete}</span></a></li>
</ul>
<script type="text/javascript">
if(typeof(getModuleSrlList)!=='undefined') {
xAddEventListener(window,'load',function() { getModuleSrlList('{$id}'); });
}
</script>
<!--@elseif($var->type == "mid")-->
<input type="hidden" name="{$id}" id="{$id}" value="" />
<input type="text" name="_{$id}" id="_{$id}" value="" class="inputTypeText w300" readonly="readonly"/><a href="{getUrl('','module','module','act','dispModuleAdminSelectList','id',$id,'type','single')}" onclick="popopen(this.href, 'ModuleSelect');return false;" class="button blue"><span>{$lang->cmd_select}</span></a>
<script type="text/javascript">
if(typeof(getModuleSrlList)!=='undefined') {
xAddEventListener(window,'load',function() { getModuleSrl('{$id}'); });
}
</script>
<!--@end-->
<p class="clear">{nl2br($var->description)}</p>
</td>
</tr>
<!--@end-->
</table>

View file

@ -3,6 +3,10 @@
<!--%import("css/widget.css")-->
<!--%import("../../admin/tpl/css/admin.css")-->
<script type="text/javascript">
xAddEventListener(window, "load", doFillWidgetVars);
</script>
<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}" />
@ -18,122 +22,11 @@
</div>
<div id="popBody">
<table cellspacing="0" class="adminTable">
<caption>{nl2br($lang->about_widget_code_in_page)}</caption>
<tr>
<th scope="row"><div>{$lang->widget}</div></th>
<td>
{$widget_info->title} ver {$widget_info->version}
<!--@if($widget_info->author->description)-->
<div class="widget_description">{nl2br(trim($widget_info->author->description))}</div>
<!--@end-->
</td>
</tr>
<!--@if(count($skin_list))-->
<tr>
<th scope="row"><div>{$lang->skin}</div></th>
<td>
<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>
<!--@end-->
</select>
<div id="colorset_area" style="display:none">
<div class="header">{$lang->colorset}</div>
<div class="footer">
<select name="colorset" id="widget_colorset">
</select>
</div>
</div>
</td>
</tr>
<!--@end-->
<tr>
<th scope="row"><div>{$lang->widget_cache}</div></th>
<td>
<input type="text" name="widget_cache" value="0" class="inputTypeText" size="2" />{$lang->unit_min}
<p>{$lang->about_widget_cache}</p>
</td>
</tr>
<!--@foreach($widget_info->extra_var as $id => $var)-->
<!--@if($var->group && ((!$group) || $group != $var->group))-->
{@$group = $var->group}
</table>
<table cellspacing="0" class="adminTable">
<caption>{$group}</caption>
<!--@end-->
<tr class="row{$cycle_idx}">
<th scope="row"><div>
{$var->name}
<!--@if($var->type == "mid_list")-->
<input type="checkbox" onclick="XE.checkboxToggleAll('{$id}'); return false;" />
<!--@end-->
</div></th>
<td>
<!--@if($var->type == "text")-->
<input type="text" name="{$id}" value="" class="inputTypeText w400" />
<!--@elseif($var->type == "textarea")-->
<textarea name="{$id}" class="inputTypeTextArea w100"></textarea>
<!--@elseif($var->type == "select")-->
<select name="{$id}">
<!--@foreach($var->options as $key => $val)-->
<option value="{$key}">{$val}</option>
<!--@end-->
</select>
<!--@elseif($var->type == "mid_list")-->
<!--@foreach($mid_list as $module_category_srl => $modules)-->
<!--@if($modules->title)-->
<div class="widget_title">{$modules->title}</div>
<!--@else-->
<div class="widget_title">{$lang->none_category}</div>
<!--@end-->
<!--@foreach($modules->list as $key => $val)-->
<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-->
<!--@elseif($var->type == "mid")-->
<select name="{$id}">
<!--@foreach($mid_list as $module_category_srl => $modules)-->
<!--@if($modules->title)-->
<option disabled="disabled">{$modules->title}</option>
<!--@else-->
<option disabled="disabled">{$lang->none_category}</option>
<!--@end-->
<!--@foreach($modules->list as $key => $val)-->
<option value="{$key}">&nbsp; {$key} ({$val->browser_title})</option>
<!--@end-->
<!--@end-->
</select>
<!--@end-->
<p class="clear">{nl2br($var->description)}</p>
</td>
</tr>
<!--@end-->
</table>
{@ $_caption = $lang->about_widget_code_in_page}
<!--#include("widget_generate_code.include.html")-->
</div>
<div id="popFooter" class="tCenter gap1">
<span class="button"><input type="submit" value="{$lang->cmd_generate_code}" /></span>
<a href="#" onclick="window.close(); return false;" class="button"><span>{$lang->cmd_close}</span></a>
<span class="button green"><input type="submit" value="{$lang->cmd_generate_code}" /></span>
<a href="#" onclick="window.close(); return false;" class="button red"><span>{$lang->cmd_close}</span></a>
</div>
</form>
<script type="text/javascript">
xAddEventListener(window, "load", doFillWidgetVars);
</script>