rhymix/modules/menu/tpl/js/menu_admin.js
2009-03-06 05:33:56 +00:00

237 lines
7 KiB
JavaScript

/* 메뉴 삭제 */
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() {
jQuery("#menu_zone_info").html("");
}
function completeGetMenuItemTplInfo(ret_obj, response_tags) {
var obj = xGetElementById('menu_zone_info');
if(xScrollTop()>200) {
obj.style.marginTop = ( xScrollTop() - 210 )+'px';
} else {
obj.style.marginTop = '0px';
}
var tpl = ret_obj['tpl'];
xInnerHtml(obj, tpl);
obj.style.display = 'block';
var fo_obj = xGetElementById("fo_menu");
/*
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();
*/
}
/* 메뉴를 드래그하여 이동한 후 실행할 함수 , 이동하는 item_srl과 대상 item_srl을 받음 */
function doMoveTree(menu_id, source_item, target_item) {
var fo_obj = xGetElementById("fo_move_menu");
fo_obj.menu_id.value = menu_id;
fo_obj.source_item.value = source_item;
fo_obj.target_item.value = target_item;
// 이동 취소를 선택하였을 경우 다시 그림;;
if(!procFilter(fo_obj, move_menu_item)) {
var params = new Array();
params["xml_file"] = xGetElementById('fo_menu').xml_file.value;
params["source_item"] = source_item;
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();
}
/* 각 메뉴의 버튼 이미지 등록 */
function doMenuUploadButton(obj) {
// 이미지인지 체크
if(!/\.(gif|jpg|jpeg|png)$/i.test(obj.value)) return alert(alertImageOnly);
var fo_obj = xGetElementById("fo_menu");
fo_obj.act.value = "procMenuAdminUploadButton";
fo_obj.target.value = obj.name;
fo_obj.submit();
fo_obj.act.value = "";
fo_obj.target.value = "";
}
/* 메뉴 이미지 업로드 후처리 */
function completeMenuUploadButton(target, filename) {
var column_name = target.replace(/^menu_/,'');
var fo_obj = xGetElementById("fo_menu");
var zone_obj = xGetElementById(target+'_zone');
var img_obj = xGetElementById(target+'_img');
fo_obj[column_name].value = filename;
var img = new Image();
img.src = filename;
img_obj.src = img.src;
zone_obj.style.display = "block";
}
/* 업로드된 메뉴 이미지 삭제 */
function doDeleteButton(target) {
var fo_obj = xGetElementById("fo_menu");
var col_name = target.replace(/^menu_/,'');
var params = new Array();
params['target'] = target;
params['menu_srl'] = fo_obj.menu_srl.value;
params['menu_item_srl'] = fo_obj.menu_item_srl.value;
params['filename'] = fo_obj[col_name].value;
var response_tags = new Array('error','message', 'target');
exec_xml('menu','procMenuAdminDeleteButton', params, completeDeleteButton, response_tags);
}
function completeDeleteButton(ret_obj, response_tags) {
var target = ret_obj['target'];
var column_name = target.replace(/^menu_/,'');
var fo_obj = xGetElementById("fo_menu");
var zone_obj = xGetElementById(target+'_zone');
var img_obj = xGetElementById(target+'_img');
fo_obj[column_name].value = "";
img_obj.src = "";
zone_obj.style.display = "none";
}
/* 메뉴 입력후 */
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);
}