git-svn-id: http://xe-core.googlecode.com/svn/sandbox@2327 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2007-08-12 03:59:52 +00:00
commit 8326004cb2
2773 changed files with 91485 additions and 0 deletions

View file

@ -0,0 +1,12 @@
@charset "utf-8";
h3 { margin:0 20px 0 20px; }
.menuManagement { margin:20px; }
.menuListZone td { vertical-align:top; }
.menuListZone td.category_zone { padding-right:10px; }
#category_list { padding:.5em 0 .5em 0; margin-bottom:2em; }
#category_list .checkbox { margin-top:1em; border:0px; }
#menu_zone_info { background-color:#FFFFFF; z-index:999; display:none; overflow:hidden; padding-left:10px; border-left:1px dashed #CCCCCC; }
#category_info { background-color:#FFFFFF; z-index:999; display:none; overflow:hidden; padding-left:10px; border-left:1px dashed #CCCCCC; }

View file

@ -0,0 +1,9 @@
<filter name="delete_menu" module="menu" act="procMenuAdminDelete" confirm_msg_code="confirm_delete">
<form>
<node target="menu_srl" required="true" />
</form>
<response callback_func="completeDeleteMenu">
<tag name="error" />
<tag name="message" />
</response>
</filter>

View file

@ -0,0 +1,13 @@
<filter name="delete_menu_item" module="menu" act="procMenuAdminDeleteItem" confirm_msg_code="confirm_delete">
<form>
<node target="menu_srl" required="true" />
</form>
<response callback_func="completeDeleteMenuItem">
<tag name="error" />
<tag name="message" />
<tag name="menu_title" />
<tag name="xml_file" />
<tag name="menu_srl" />
<tag name="menu_item_srl" />
</response>
</filter>

View file

@ -0,0 +1,10 @@
<filter name="insert_menu" module="menu" act="procMenuAdminInsert" confirm_msg_code="confirm_submit">
<form>
<node target="title" required="true" />
</form>
<response callback_func="completeInsertMenu">
<tag name="error" />
<tag name="message" />
<tag name="menu_srl" />
</response>
</filter>

View file

@ -0,0 +1,14 @@
<filter name="insert_menu_item" module="menu" act="procMenuAdminInsertItem" confirm_msg_code="confirm_submit">
<form>
<node target="menu_srl" required="true" />
</form>
<response callback_func="completeInsertMenuItem">
<tag name="error" />
<tag name="message" />
<tag name="menu_srl" />
<tag name="xml_file" />
<tag name="menu_title" />
<tag name="menu_item_srl" />
<tag name="parent_srl" />
</response>
</filter>

View file

@ -0,0 +1,10 @@
<filter name="move_menu_item" module="menu" act="procMenuAdminMoveItem" confirm_msg_code="confirm_move">
<form />
<parameter />
<response callback_func="completeMoveMenuItem">
<tag name="error" />
<tag name="message" />
<tag name="xml_file" />
<tag name="source_item_srl" />
</response>
</filter>

View file

@ -0,0 +1,9 @@
<filter name="update_menu_title" module="menu" act="procMenuAdminUpdate" confirm_msg_code="confirm_modify">
<form>
<node target="menu_srl" required="true" />
</form>
<response>
<tag name="error" />
<tag name="message" />
</response>
</filter>

View file

@ -0,0 +1,3 @@
<!--%import("js/board_admin.js")-->
<h3>{$lang->menu} <span class="gray">{$lang->cmd_management}</span></h3>

View file

@ -0,0 +1,55 @@
<!--%import("filter/delete_menu.xml")-->
<!--%import("js/menu_admin.js")-->
<!--#include("header.html")-->
<div class="infoText">{nl2br($lang->about_menu)}</div>
<!-- 정보 -->
<div class="tableSummaryType1">
Total <strong>{number_format($total_count)}</strong>, Page <strong>{number_format($page)}</strong>/{number_format($total_page)}
</div>
<!-- 삭제를 위한 임시 form -->
<form id="fo_menu" action="./" method="get">
<input type="hidden" name="menu_srl" value="" />
</form>
<!-- 목록 -->
<table cellspacing="0" class="tableType1">
<thead>
<tr>
<th scope="col">{$lang->no}</th>
<th scope="col">{$lang->title}</th>
<th scope="col">{$lang->regdate}</th>
<th scope="col">{$lang->cmd_delete}</th>
</tr>
</thead>
<tbody>
<!--@foreach($menu_list as $no => $val)-->
<tr>
<td class="tahoma">{$no}</td>
<td class="blue"><a href="{getUrl('act','dispMenuAdminManagement','menu_srl',$val->menu_srl)}" onclick="winopen(this.href,'MenuManage','width=850,height=800,resizable=yes,scrollbars=yes,toolbars=no');return false;">{htmlspecialchars($val->title)}</a></td>
<td class="tahoma">{zdate($val->regdate,"Y-m-d")}</td>
<td class="red"><a href="#" onclick="doDeleteMenu('{$val->menu_srl}');return false;">{$lang->cmd_delete}</a></td>
</tr>
<!--@end-->
</tbody>
</table>
<!-- 버튼 -->
<div class="fr gap1">
<a href="{getUrl('act','dispMenuAdminInsert','module_srl','')}" class="button"><span>{$lang->cmd_make}</span></a>
</div>
<!-- 페이지 네비게이션 -->
<div class="pageNavigation">
<a href="{getUrl('page','','module_srl','')}" class="goToFirst"><img src="../../admin/tpl/images/bottomGotoFirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
<!--@while($page_no = $page_navigation->getNextPage())-->
<!--@if($page == $page_no)-->
<span class="current">{$page_no}</span>
<!--@else-->
<a href="{getUrl('page',$page_no,'module_srl','')}">{$page_no}</a>
<!--@end-->
<!--@end-->
<a href="{getUrl('page',$page_navigation->last_page,'module_srl','')}" class="goToLast"><img src="../../admin/tpl/images/bottomGotoLast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
</div>

View file

@ -0,0 +1,197 @@
/* 메뉴 입력후 */
function completeInsertMenu(ret_obj) {
var menu_srl = ret_obj['menu_srl'];
alert(ret_obj['message']);
location.href = current_url.setQuery('act','dispMenuAdminContent');
//var url = current_url.setQuery('act','dispMenuAdminManagement').setQuery('menu_srl',menu_srl);
//window.open(url);
}
/* 메뉴 삭제 */
function doDeleteMenu(menu_srl) {
var fo_obj = xGetElementById("fo_menu");
if(!fo_obj) return;
fo_obj.menu_srl.value = menu_srl;
procFilter(fo_obj, delete_menu);
}
/* 메뉴 삭제 후 */
function completeDeleteMenu(ret_obj) {
var menu_srl = ret_obj['menu_srl'];
alert(ret_obj['message']);
location.href = current_url.setQuery('act','dispMenuAdminContent').setQuery('menu_srl','');
}
/* 빈 메뉴 아이템 추가 */
function doInsertMenuItem(parent_srl) {
if(typeof(parent_srl)=='undefined') parent_srl = 0;
var params = {node_srl:0, parent_srl:parent_srl}
doGetMenuItemInfo('menu', params);
deSelectNode();
}
/* 메뉴 클릭시 적용할 함수 */
function doGetMenuItemInfo(menu_id, obj) {
// menu, menu_id, node_srl을 추출
var fo_obj = xGetElementById("fo_menu");
var node_srl = 0;
var parent_srl = 0;
if(typeof(obj)!="undefined") {
if(typeof(obj.getAttribute)!="undefined") {
node_srl = obj.getAttribute("node_srl");
} else {
node_srl = obj.node_srl;
parent_srl = obj.parent_srl;
}
}
var params = new Array();
params["menu_item_srl"] = node_srl;
params["parent_srl"] = parent_srl;
// 서버에 요청하여 해당 노드의 정보를 수정할 수 있도록 한다.
var response_tags = new Array('error','message','tpl');
exec_xml('menu', 'getMenuAdminTplInfo', params, completeGetMenuItemTplInfo, response_tags, params);
}
/* 서버로부터 받아온 메뉴 정보를 출력 */
/*
xAddEventListener(document,'mousedown',checkMousePosition);
var _xPos = 0;
var _yPos = 0;
function checkMousePosition(e) {
var evt = new xEvent(e);
_xPos = evt.pageX;
_yPos = evt.pageY;
}
*/
function hideCategoryInfo() {
var obj = xGetElementById('menu_zone_info');
xInnerHtml(obj,'');
obj.style.display = "none";
}
function completeGetMenuItemTplInfo(ret_obj, response_tags) {
var obj = xGetElementById('menu_zone_info');
var tpl = ret_obj['tpl'];
xInnerHtml(obj, tpl);
obj.style.display = 'block';
var fo_obj = xGetElementById("fo_menu");
fo_obj.menu_name.focus();
/*
var x = _xPos + 50;
var y = _yPos - xHeight(obj)/2 + 80 + xScrollTop();
xLeft(obj, x);
xTop(obj, y);
xRemoveEventListener(document,'mousedown',checkMousePosition);
if(xGetElementById('cBody') && xHeight('cBody')< y+xHeight(obj)+50) {
xHeight('cBody', y + xHeight(obj) + 50);
}
if(typeof('fixAdminLayoutFooter')=="function") fixAdminLayoutFooter();
*/
}
/* 메뉴 아이템 입력후 */
function completeInsertMenuItem(ret_obj) {
var menu_id = ret_obj['menu_id'];
var xml_file = ret_obj['xml_file'];
var menu_title = ret_obj['menu_title'];
var menu_srl = ret_obj['menu_srl'];
var menu_item_srl = ret_obj['menu_item_srl'];
var parent_srl = ret_obj['parent_srl'];
if(!xml_file) return;
loadTreeMenu(xml_file, 'menu', 'menu_zone_menu', menu_title, '', doGetMenuItemInfo, menu_item_srl, doMoveTree);
if(!menu_srl) xInnerHtml("menu_zone_info", "");
else {
var params = {node_srl:menu_item_srl, parent_srl:parent_srl}
doGetMenuItemInfo('menu', params)
}
if(typeof('fixAdminLayoutFooter')=="function") fixAdminLayoutFooter();
}
/* 메뉴를 드래그하여 이동한 후 실행할 함수 , 이동하는 item_srl과 대상 item_srl을 받음 */
function doMoveTree(menu_id, source_item_srl, target_item_srl) {
var fo_obj = xGetElementById("fo_move_menu");
fo_obj.menu_id.value = menu_id;
fo_obj.source_item_srl.value = source_item_srl;
fo_obj.target_item_srl.value = target_item_srl;
// 이동 취소를 선택하였을 경우 다시 그림;;
if(!procFilter(fo_obj, move_menu_item)) {
var params = new Array();
params["xml_file"] = xGetElementById('fo_menu').xml_file.value;
params["source_item_srl"] = source_item_srl;
completeMoveMenuItem(params);
}
}
function completeMoveMenuItem(ret_obj) {
var source_item_srl = ret_obj['source_item_srl'];
var xml_file = ret_obj['xml_file'];
var fo_menu = xGetElementById("fo_menu");
if(!fo_menu) return;
var title = fo_menu.title.value;
loadTreeMenu(xml_file, 'menu', "menu_zone_menu", title, '', doGetMenuItemInfo, source_item_srl, doMoveTree);
}
/* 메뉴 목록 갱신 */
function doReloadTreeMenu(menu_srl) {
var params = new Array();
params["menu_srl"] = menu_srl;
// 서버에 요청하여 해당 노드의 정보를 수정할 수 있도록 한다.
var response_tags = new Array('error','message', 'xml_file', 'menu_title');
exec_xml('menu', 'procMenuAdminMakeXmlFile', params, completeInsertMenuItem, response_tags, params);
}
/* 메뉴 삭제 */
function doDeleteMenuItem(menu_item_srl) {
var fo_obj = xGetElementById("fo_menu");
if(!fo_obj) return;
procFilter(fo_obj, delete_menu_item);
}
/* 메뉴 아이템 삭제 후 */
function completeDeleteMenuItem(ret_obj) {
var menu_title = ret_obj['menu_title'];
var menu_srl = ret_obj['menu_srl'];
var menu_item_srl = ret_obj['menu_item_srl'];
var xml_file = ret_obj['xml_file'];
alert(ret_obj['message']);
loadTreeMenu(xml_file, 'menu', 'menu_zone_menu', menu_title, '', doGetMenuItemInfo, menu_item_srl, doMoveTree);
xInnerHtml("menu_zone_info", "");
}
/* 레이아웃의 메뉴에 mid 추가 */
function doInsertMid(mid, menu_id) {
if(!opener) {
window.close();
return;
}
var fo_obj = opener.xGetElementById("fo_menu");
if(!fo_obj) {
window.close();
return;
}
fo_obj.menu_url.value = mid;
window.close();
}

View file

@ -0,0 +1,26 @@
<!--%import("filter/insert_menu.xml")-->
<!--%import("js/menu_admin.js")-->
<!--#include("header.html")-->
<form action="./" method="get" onsubmit="return procFilter(this, insert_menu)">
<table cellspacing="0" class="tableType2 gap1">
<tr>
<th scope="col">{$lang->cmd_menu_insert}</th>
<td>{nl2br($lang->about_menu_management)}</td>
</tr>
<tr>
<th scope="col">{$lang->title}</th>
<td>
<input type="text" name="title" value="{$menu_info->title}" class="inputTypeText" />
<p>{$lang->about_title}</p>
</td>
</tr>
</table>
<!-- 버튼 -->
<div class="tRight gap1">
<span class="button"><input type="submit" value="{$lang->cmd_submit}" accesskey="s" /></span>
</div>
</form>

View file

@ -0,0 +1,82 @@
<input type="hidden" name="menu_item_srl" value="{$item_info->menu_item_srl}" />
<input type="hidden" name="parent_srl" value="{$item_info->parent_srl}" />
<table cellspacing="0" class="tableType2">
<col width="140" />
<col width="*" />
<!--@if($item_info->parent_menu_name)-->
<tr>
<th scope="row">{$lang->parent_menu_name}</th>
<td>{$item_info->parent_menu_name}</td>
</tr>
<!--@end-->
<tr>
<th scope="row" scope="row">{$lang->menu_name}</th>
<td>
<input type="text" name="menu_name" value="{htmlspecialchars($item_info->name)}" class="inputTypeText"/>
<p>{$lang->about_menu_name}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->menu_url}</th>
<td>
<input type="text" name="menu_url" value="{htmlspecialchars($item_info->url)}" class="inputTypeText" />
<a href="{getUrl('module','menu','act','dispMenuAdminMidList')}" onclick="popopen(this.href);return false;" class="button"/><span>{$lang->cmd_search_mid}</span></a>
<p class="clear">{$lang->about_menu_url}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->menu_open_window}</th>
<td>
<input type="checkbox" name="menu_open_window" value="Y" <!--@if($item_info->open_window=="Y")-->checked="checked"<!--@end--> />
<p>{$lang->about_menu_open_window}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->menu_expand}</th>
<td>
<input type="checkbox" name="menu_expand" value="Y" <!--@if($item_info->expand=="Y")-->checked="checked"<!--@end--> />
<p>{$lang->about_menu_expand}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->menu_img_btn}</th>
<td>{$lang->about_menu_img_btn}</td>
</tr>
<tr>
<th scope="row">{$lang->menu_normal_btn}</th>
<td><input type="text" name="menu_normal_btn" value="{htmlspecialchars($item_info->normal_btn)}" class="inputTypeText" /></td>
</tr>
<tr>
<th scope="row">{$lang->menu_hover_btn}</th>
<td><input type="text" name="menu_hover_btn" value="{htmlspecialchars($item_info->hover_btn)}" class="inputTypeText" /></td>
</tr>
<tr>
<th scope="row">{$lang->menu_active_btn}</th>
<td><input type="text" name="menu_active_btn" value="{htmlspecialchars($item_info->active_btn)}" class="inputTypeText" /></td>
</tr>
<tr>
<th scope="row">{$lang->menu_group_srls}</th>
<td>
<!--@foreach($group_list as $key=>$val)-->
<input type="checkbox" name="group_srls" value="{$key}" id="group_{$key}" <!--@if(is_array($item_info->group_srls)&&in_array($key, $item_info->group_srls))-->checked="checked"<!--@end-->/>
<label for="group_{$key}">{$val->title}</label>
<!--@end-->
<p>{$lang->about_menu_group_srls}</p>
</td>
</tr>
</table>
<div class="fl gap1">
<!--@if($item_info->name)-->
<a href="#" onclick="doDeleteMenuItem('{$menu_item_srl}');return false" class="button"><span>{$lang->cmd_delete}</span></a>
<!--@end-->
<a href="#" onclick="hideCategoryInfo();return false" class="button"><span>{$lang->cmd_close}</span></a>
</div>
<div class="fr gap1">
<span class="button"><input type="submit" value="{$lang->cmd_save}" /></span>
<!--@if($item_info->name)-->
<a href="#" onclick="doInsertMenuItem('{$item_info->menu_item_srl}');return false" class="button"><span>{$lang->cmd_make_child}</span></a>
<!--@end-->
</div>

View file

@ -0,0 +1,91 @@
<!--%import("filter/update_menu_title.xml")-->
<!--%import("filter/insert_menu_item.xml")-->
<!--%import("filter/delete_menu_item.xml")-->
<!--%import("filter/move_menu_item.xml")-->
<!--%import("css/menu.css")-->
<!--%import("js/menu_admin.js")-->
<!--#include("header.html")-->
<div class="menuManagement">
<!-- 메뉴 이동을 위해 임시로 사용하는 form -->
<form id="fo_move_menu" action="./" method="get">
<input type="hidden" name="menu_id" />
<input type="hidden" name="source_item_srl" />
<input type="hidden" name="target_item_srl" />
</form>
<!--@if($module == 'admin')-->
<form action="./" method="get" onsubmit="return procFilter(this, update_menu_title)">
<input type="hidden" name="menu_srl" value="{$menu_info->menu_srl}" />
<table cellspacing="0" class="tableType3">
<tr>
<th scope="col">{$lang->title}</th>
<td>
<div class="fl">
<input type="text" name="title" value="{htmlspecialchars($menu_info->title)}" class="inputTypeText" />
</div>
<div class="fr">
<span class="button"><input type="submit" value="{$lang->cmd_modify}" /></span>
<a href="#" onclick="window.close();return false;" class="button"><span>{$lang->cmd_close}</span></a>
</div>
</td>
</tr>
<tr>
<th scope="col">{$lang->menu_management}</th>
<td class="left">{nl2br($lang->about_menu_management)}</td>
</tr>
</table>
</form>
<!--@else-->
<table cellspacing="0" class="tableType3">
<tr>
<th scope="col">{$lang->title}</th>
<td class="left">
{$menu_info->title}
</td>
</tr>
<tr>
<th scope="col">{$lang->menu_management}</th>
<td class="left">{nl2br($lang->about_menu_management)}</td>
</tr>
</table>
<!--@end-->
<div class="gap1">
<form id="fo_menu" action="./" method="get" onsubmit="return procFilter(this, insert_menu_item)" class="clear">
<input type="hidden" name="title" value="{$menu_info->title}" />
<input type="hidden" name="menu_srl" value="{$menu_info->menu_srl}" />
<input type="hidden" name="xml_file" value="{$menu_info->xml_file}" />
<input type="hidden" name="php_file" value="{$menu_info->php_file}" />
<table class="menuListZone">
<tr>
<td class="category_zone">
<div id="category_list">
<div id="menu_zone_menu"></div>
<p><input type="checkbox" id="menu_enable_move" class="checkbox" /> <label for="menu_enable_move">{$lang->cmd_enable_move_menu}</label></p>
</div>
</td>
<td class="menu_zone">
<div id="menu_zone_info"></div>
</td>
</tr>
</table>
<div class="fl gap1">
<a href="#" onclick="doInsertMenuItem(0);return false;" class="button"><span>{$lang->cmd_insert}</span></a>
<a href="#" onclick="openAllTreeMenu('menu');return false;" class="button"><span>{$lang->cmd_open_all}</span></a>
<a href="#" onclick="closeAllTreeMenu('menu');return false;" class="button"><span>{$lang->cmd_close_all}</span></a>
<a href="#" onclick="doReloadTreeMenu('{$menu_info->menu_srl}');return false;" class="button"><span>{$lang->cmd_remake_cache}</span></a>
</div>
</form>
<script type="text/javascript">
loadTreeMenu("{$menu_info->xml_file}", "menu", "menu_zone_menu", "{$menu_info->title}", '', doGetMenuItemInfo, 0, doMoveTree);
</script>
</div>
</div>

View file

@ -0,0 +1,58 @@
<!--%import("js/menu_admin.js")-->
<div id="popHeadder" class="w700">
<h1>{$lang->cmd_search_mid}</h1>
</div>
<div id="popBody" class="w700">
<form action="./" method="get">
<input type="hidden" name="module" value="{$module}" />
<input type="hidden" name="act" value="{$act}" />
<table cellspacing="0" class="tableType5">
<thead>
<tr>
<th scope="row" colspan="2" class="nowrap">
<select name="module_category_srl" class="w5">
<option value="">{$lang->module_category}</option>
<!--@foreach($module_category as $key => $val)-->
<option value="{$key}" <!--@if($module_category_srl==$key)-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
</select>
<select name="target_module" class="w5">
<option value="">{$lang->module}</option>
<!--@foreach($module_list as $key => $val)-->
<option value="{$val->module}" <!--@if($target_module ==$val->module)-->selected="selected"<!--@end-->>{$val->module}</option>
<!--@end-->
</select>
<span class="button"><input type="submit" name="go_button" value="GO" /></span>
</th>
<th scope="row">{$lang->mid}</th>
<th scope="row">{$lang->cmd_select}</th>
</tr>
</thead>
<tbody>
<!--@foreach($mid_list as $key => $val)-->
<tr>
<td>
<!--@if(!$val->module_category_srl)-->
{$lang->not_exists}
<!--@else-->
{$module_category[$val->module_category_srl]->title}
<!--@end-->
</td>
<td class="tahoma">{$val->module}</td>
<td class="tahoma">{$val->browser_title} ({$key})</td>
<td class="blue tCenter"><a href="#" onclick="doInsertMid('{$key}','{$menu_id}'); return false;">{$lang->cmd_select}</a></td>
</tr>
<!--@end-->
</tbody>
</table>
</form>
</div>
<div id="popFooter" class="w700">
<div class="tCenter gap1">
<a href="#" onclick="window.close(); return false;" class="button"><span>{$lang->cmd_close}</span></a>
</div>
</div>