mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-05-03 17:22:20 +09:00
17523934 * r5047 이전으로 되돌리고 다시 정리
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@5052 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
cc088e7e3b
commit
202f6392a8
1 changed files with 283 additions and 332 deletions
|
|
@ -50,6 +50,18 @@ window.XE = {
|
||||||
}) (jQuery);
|
}) (jQuery);
|
||||||
|
|
||||||
|
|
||||||
|
/* jQuery(document).ready() */
|
||||||
|
jQuery(function($) {
|
||||||
|
/* 팝업메뉴 레이어 생성 */
|
||||||
|
if(!$('#popup_menu_area').length) {
|
||||||
|
var menuObj = $('<div>')
|
||||||
|
.attr('id', 'popup_menu_area')
|
||||||
|
.css({visibility:'hidden', zIndex:9999});
|
||||||
|
$(document.body).append(menuObj);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief location.href에서 특정 key의 값을 return
|
* @brief location.href에서 특정 key의 값을 return
|
||||||
|
|
@ -87,7 +99,7 @@ String.prototype.setQuery = function(key, val) {
|
||||||
for(var i in args) {
|
for(var i in args) {
|
||||||
if( !args.hasOwnProperty(i) ) continue;
|
if( !args.hasOwnProperty(i) ) continue;
|
||||||
var arg = args[i];
|
var arg = args[i];
|
||||||
if(!arg || !arg.toString().trim()) continue;
|
if(!arg.toString().trim()) continue;
|
||||||
|
|
||||||
q_list[q_list.length] = i+'='+arg;
|
q_list[q_list.length] = i+'='+arg;
|
||||||
}
|
}
|
||||||
|
|
@ -116,6 +128,45 @@ String.prototype.trim = function() {
|
||||||
return this.replace(/(^\s*)|(\s*$)/g, "");
|
return this.replace(/(^\s*)|(\s*$)/g, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @breif replace outerHTML
|
||||||
|
**/
|
||||||
|
function replaceOuterHTML(obj, html) {
|
||||||
|
if(obj.outerHTML) {
|
||||||
|
obj.outerHTML = html;
|
||||||
|
} else {
|
||||||
|
var dummy = xCreateElement("div");
|
||||||
|
xInnerHtml(dummy, html);
|
||||||
|
var parent = obj.parentNode;
|
||||||
|
while(dummy.firstChild) {
|
||||||
|
parent.insertBefore(dummy.firstChild, obj);
|
||||||
|
}
|
||||||
|
parent.removeChild(obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @breif get outerHTML
|
||||||
|
**/
|
||||||
|
function getOuterHTML(obj) {
|
||||||
|
if(obj.outerHTML) return obj.outerHTML;
|
||||||
|
var dummy = xCreateElement("div");
|
||||||
|
dummy.insertBefore(obj, dummy.lastChild);
|
||||||
|
return xInnerHtml(dummy);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief xSleep(micro time)
|
||||||
|
**/
|
||||||
|
function xSleep(sec) {
|
||||||
|
sec = sec / 1000;
|
||||||
|
var now = new Date();
|
||||||
|
var sleep = new Date();
|
||||||
|
while( sleep.getTime() - now.getTime() < sec) {
|
||||||
|
sleep = new Date();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 주어진 인자가 하나라도 defined되어 있지 않으면 false return
|
* @brief 주어진 인자가 하나라도 defined되어 있지 않으면 false return
|
||||||
|
|
@ -183,71 +234,7 @@ function move_url(url, open_wnidow) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief 특정 Element의 display 옵션 토글
|
|
||||||
**/
|
|
||||||
function toggleDisplay(obj, display_type) {
|
|
||||||
var obj = xGetElementById(obj);
|
|
||||||
if(!obj) return;
|
|
||||||
if(!obj.style.display || obj.style.display != 'none') {
|
|
||||||
obj.style.display = 'none';
|
|
||||||
} else {
|
|
||||||
if(display_type) obj.style.display = display_type;
|
|
||||||
else obj.style.display = '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* jQuery의 extend. */
|
|
||||||
/* TODO:jQuery 등 자바스크립트 프레임웍 차용시 대체 가능하면 제거 대상 */
|
|
||||||
objectExtend = function() {
|
|
||||||
// copy reference to target object
|
|
||||||
var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
|
|
||||||
|
|
||||||
// Handle a deep copy situation
|
|
||||||
if ( target.constructor == Boolean ) {
|
|
||||||
deep = target;
|
|
||||||
target = arguments[1] || {};
|
|
||||||
// skip the boolean and the target
|
|
||||||
i = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle case when target is a string or something (possible in deep copy)
|
|
||||||
if ( typeof target != "object" && typeof target != "function" )
|
|
||||||
target = {};
|
|
||||||
|
|
||||||
// extend jQuery itself if only one argument is passed
|
|
||||||
if ( length == i ) {
|
|
||||||
target = this;
|
|
||||||
--i;
|
|
||||||
}
|
|
||||||
|
|
||||||
for ( ; i < length; i++ )
|
|
||||||
// Only deal with non-null/undefined values
|
|
||||||
if ( (options = arguments[ i ]) != null )
|
|
||||||
// Extend the base object
|
|
||||||
for ( var name in options ) {
|
|
||||||
var src = target[ name ], copy = options[ name ];
|
|
||||||
|
|
||||||
// Prevent never-ending loop
|
|
||||||
if ( target === copy )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// Recurse if we're merging object values
|
|
||||||
if ( deep && copy && typeof copy == "object" && !copy.nodeType )
|
|
||||||
target[ name ] = objectExtend( deep,
|
|
||||||
// Never move original objects, clone them
|
|
||||||
src || ( copy.length != null ? [ ] : { } )
|
|
||||||
, copy );
|
|
||||||
|
|
||||||
// Don't bring in undefined values
|
|
||||||
else if ( copy !== undefined )
|
|
||||||
target[ name ] = copy;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return the modified object
|
|
||||||
return target;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 멀티미디어 출력용 (IE에서 플래쉬/동영상 주변에 점선 생김 방지용)
|
* @brief 멀티미디어 출력용 (IE에서 플래쉬/동영상 주변에 점선 생김 방지용)
|
||||||
|
|
@ -259,15 +246,13 @@ function displayMultimedia(src, width, height, options) {
|
||||||
wmode : 'transparent',
|
wmode : 'transparent',
|
||||||
allowScriptAccess : 'sameDomain',
|
allowScriptAccess : 'sameDomain',
|
||||||
quality : 'high',
|
quality : 'high',
|
||||||
flashvars : ''
|
flashvars : '',
|
||||||
|
autostart : false
|
||||||
};
|
};
|
||||||
|
|
||||||
if(options) {
|
var params = jQuery.extend(defaults, options || {});
|
||||||
var autostart = (options.autostart) ? 'true' : 'false';
|
var autostart = (params.autostart && params.autostart != 'false') ? 'true' : 'false';
|
||||||
delete(options.autostart);
|
delete(params.autostart);
|
||||||
}
|
|
||||||
|
|
||||||
var params = objectExtend(defaults, options || {});
|
|
||||||
|
|
||||||
var clsid = "";
|
var clsid = "";
|
||||||
var codebase = "";
|
var codebase = "";
|
||||||
|
|
@ -294,6 +279,22 @@ function displayMultimedia(src, width, height, options) {
|
||||||
document.writeln(html);
|
document.writeln(html);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 에디터에서 사용되는 내용 여닫는 코드 (고정, zbxe용)
|
||||||
|
**/
|
||||||
|
function zbxe_folder_open(id) {
|
||||||
|
jQuery("#folder_open_"+id).hide();
|
||||||
|
jQuery("#folder_close_"+id).show();
|
||||||
|
jQuery("#folder_"+id).show();
|
||||||
|
}
|
||||||
|
function zbxe_folder_close(id) {
|
||||||
|
jQuery("#folder_open_"+id).show();
|
||||||
|
jQuery("#folder_close_"+id).hide();
|
||||||
|
jQuery("#folder_"+id).hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 팝업의 경우 내용에 맞춰 현 윈도우의 크기를 조절해줌
|
* @brief 팝업의 경우 내용에 맞춰 현 윈도우의 크기를 조절해줌
|
||||||
* 팝업의 내용에 맞게 크기를 늘리는 것은... 쉽게 되지는 않음.. ㅡ.ㅜ
|
* 팝업의 내용에 맞게 크기를 늘리는 것은... 쉽게 되지는 않음.. ㅡ.ㅜ
|
||||||
|
|
@ -334,165 +335,7 @@ function setFixedPopupSize() {
|
||||||
window.scrollTo(0,0);
|
window.scrollTo(0,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief 이름, 게시글등을 클릭하였을 경우 팝업 메뉴를 보여주는 함수
|
|
||||||
**/
|
|
||||||
xAddEventListener(window, 'load', createPopupMenu);
|
|
||||||
xAddEventListener(document, 'click', chkPopupMenu);
|
|
||||||
|
|
||||||
var loaded_popup_menus = new Array();
|
|
||||||
|
|
||||||
/* 멤버 팝업 메뉴 레이어를 생성하는 함수 (문서 출력이 완료되었을때 동작) */
|
|
||||||
function createPopupMenu(evt) {
|
|
||||||
var area = xGetElementById("popup_menu_area");
|
|
||||||
if(area) return;
|
|
||||||
area = xCreateElement("div");
|
|
||||||
area.id = "popup_menu_area";
|
|
||||||
area.style.visibility = 'hidden';
|
|
||||||
area.style.zIndex = 9999;
|
|
||||||
document.body.appendChild(area);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 클릭 이벤트 발생시 이벤트가 일어난 대상을 검사하여 적절한 규칙에 맞으면 처리 */
|
|
||||||
function chkPopupMenu(evt) {
|
|
||||||
|
|
||||||
// 이전에 호출되었을지 모르는 팝업메뉴 숨김
|
|
||||||
var area = xGetElementById("popup_menu_area");
|
|
||||||
if(!area) return;
|
|
||||||
|
|
||||||
if(area.style.visibility != "hidden") area.style.visibility = "hidden";
|
|
||||||
|
|
||||||
// 이벤트 대상이 없으면 무시
|
|
||||||
var e = new xEvent(evt);
|
|
||||||
|
|
||||||
if(!e) return;
|
|
||||||
|
|
||||||
// 대상의 객체 구함
|
|
||||||
var obj = e.target;
|
|
||||||
if(!obj) return;
|
|
||||||
|
|
||||||
|
|
||||||
// obj의 nodeName이 div나 span이 아니면 나올대까지 상위를 찾음
|
|
||||||
if(obj && obj.nodeName != 'DIV' && obj.nodeName != 'SPAN' && obj.nodeName != 'A') obj = obj.parentNode;
|
|
||||||
if(!obj || (obj.nodeName != 'DIV' && obj.nodeName != 'SPAN' && obj.nodeName != 'A')) return;
|
|
||||||
|
|
||||||
// 객체의 className값을 구함
|
|
||||||
var class_name = obj.className;
|
|
||||||
if(!class_name) return;
|
|
||||||
// className을 분리
|
|
||||||
var class_name_list = class_name.split(' ');
|
|
||||||
|
|
||||||
var menu_id = '';
|
|
||||||
var menu_id_regx = /^([a-zA-Z]+)_([0-9]+)$/;
|
|
||||||
|
|
||||||
|
|
||||||
for(var i=0,c=class_name_list.length;i<c;i++) {
|
|
||||||
if(menu_id_regx.test(class_name_list[i])) {
|
|
||||||
menu_id = class_name_list[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if(!menu_id) return;
|
|
||||||
|
|
||||||
// module명과 대상 번호가 없으면 return
|
|
||||||
var tmp_arr = menu_id.split('_');
|
|
||||||
var module_name = tmp_arr[0];
|
|
||||||
var target_srl = tmp_arr[1];
|
|
||||||
if(!module_name || !target_srl || target_srl < 1) return;
|
|
||||||
|
|
||||||
// action이름을 규칙에 맞게 작성
|
|
||||||
var action_name = "get" + module_name.substr(0,1).toUpperCase() + module_name.substr(1,module_name.length-1) + "Menu";
|
|
||||||
|
|
||||||
|
|
||||||
// 서버에 메뉴를 요청
|
|
||||||
var params = new Array();
|
|
||||||
params["target_srl"] = target_srl;
|
|
||||||
params["cur_mid"] = current_mid;
|
|
||||||
params["cur_act"] = current_url.getQuery('act');
|
|
||||||
params["menu_id"] = menu_id;
|
|
||||||
params["page_x"] = e.pageX >0 ? e.pageX : GetObjLeft(obj);
|
|
||||||
params["page_y"] = e.pageY >0 ? e.pageY : GetObjTop(obj)+ xHeight(obj);
|
|
||||||
|
|
||||||
var response_tags = new Array("error","message","menus");
|
|
||||||
|
|
||||||
if(loaded_popup_menus[menu_id]) {
|
|
||||||
displayPopupMenu(params, response_tags, params);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
show_waiting_message = false;
|
|
||||||
exec_xml(module_name, action_name, params, displayPopupMenu, response_tags, params);
|
|
||||||
show_waiting_message = true;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function GetObjTop(obj) {
|
|
||||||
if(obj.offsetParent == document.body) return xOffsetTop(obj);
|
|
||||||
else return xOffsetTop(obj) + GetObjTop(obj.offsetParent);
|
|
||||||
}
|
|
||||||
function GetObjLeft(obj) {
|
|
||||||
if(obj.offsetParent == document.body) return xOffsetLeft(obj);
|
|
||||||
else return xOffsetLeft(obj) + GetObjLeft(obj.offsetParent);
|
|
||||||
}
|
|
||||||
|
|
||||||
function displayPopupMenu(ret_obj, response_tags, params) {
|
|
||||||
|
|
||||||
var target_srl = params["target_srl"];
|
|
||||||
var menu_id = params["menu_id"];
|
|
||||||
var menus = ret_obj['menus'];
|
|
||||||
var html = "";
|
|
||||||
|
|
||||||
if(loaded_popup_menus[menu_id]) {
|
|
||||||
html = loaded_popup_menus[menu_id];
|
|
||||||
|
|
||||||
} else {
|
|
||||||
if(menus) {
|
|
||||||
var item = menus['item'];
|
|
||||||
if(typeof(item.length)=='undefined' || item.length<1) item = new Array(item);
|
|
||||||
if(item.length) {
|
|
||||||
for(var i=0;i<item.length;i++) {
|
|
||||||
var url = item[i].url;
|
|
||||||
var str = item[i].str;
|
|
||||||
var icon = item[i].icon;
|
|
||||||
var target = item[i].target;
|
|
||||||
|
|
||||||
var styleText = "";
|
|
||||||
var click_str = "";
|
|
||||||
if(icon) styleText = " style=\"background-image:url('"+icon+"')\" ";
|
|
||||||
switch(target) {
|
|
||||||
case "popup" :
|
|
||||||
click_str = " onclick=\"popopen(this.href,'"+target+"'); return false;\"";
|
|
||||||
break;
|
|
||||||
case "self" :
|
|
||||||
//click_str = " onclick=\"location.href='"+url+"' return false;\"";
|
|
||||||
break;
|
|
||||||
case "javascript" :
|
|
||||||
click_str = " onclick=\""+url+"; return false; \"";
|
|
||||||
url="#";
|
|
||||||
break;
|
|
||||||
default :
|
|
||||||
click_str = " onclick=\"window.open(this.href); return false;\"";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
html += '<li '+styleText+'><a href="'+url+'"'+click_str+'>'+str+'</a></li> ';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
loaded_popup_menus[menu_id] = html;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 레이어 출력
|
|
||||||
if(html) {
|
|
||||||
var area = xGetElementById("popup_menu_area");
|
|
||||||
xInnerHtml(area, '<ul>'+html+'</ul>');
|
|
||||||
xLeft(area, params["page_x"]);
|
|
||||||
xTop(area, params["page_y"]);
|
|
||||||
if(xWidth(area)+xLeft(area)>xClientWidth()+xScrollLeft()) xLeft(area, xClientWidth()-xWidth(area)+xScrollLeft());
|
|
||||||
if(xHeight(area)+xTop(area)>xClientHeight()+xScrollTop()) xTop(area, xClientHeight()-xHeight(area)+xScrollTop());
|
|
||||||
area.style.visibility = "visible";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 추천/비추천,스크랩,신고기능등 특정 srl에 대한 특정 module/action을 호출하는 함수
|
* @brief 추천/비추천,스크랩,신고기능등 특정 srl에 대한 특정 module/action을 호출하는 함수
|
||||||
|
|
@ -514,19 +357,7 @@ function completeMessage(ret_obj) {
|
||||||
location.reload();
|
location.reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief 날짜 선택 (달력 열기)
|
|
||||||
**/
|
|
||||||
function open_calendar(fo_id, day_str, callback_func) {
|
|
||||||
if(typeof(day_str)=="undefined") day_str = "";
|
|
||||||
|
|
||||||
var url = "./common/tpl/calendar.php?";
|
|
||||||
if(fo_id) url+="fo_id="+fo_id;
|
|
||||||
if(day_str) url+="&day_str="+day_str;
|
|
||||||
if(callback_func) url+="&callback_func="+callback_func;
|
|
||||||
|
|
||||||
popopen(url, 'Calendar');
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 언어코드 (lang_type) 쿠키값 변경 */
|
/* 언어코드 (lang_type) 쿠키값 변경 */
|
||||||
function doChangeLangType(obj) {
|
function doChangeLangType(obj) {
|
||||||
|
|
@ -628,7 +459,6 @@ function viewSkinInfo(module, skin) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* 관리자가 문서를 관리하기 위해서 선택시 세션에 넣음 */
|
/* 관리자가 문서를 관리하기 위해서 선택시 세션에 넣음 */
|
||||||
var addedDocument = new Array();
|
var addedDocument = new Array();
|
||||||
function doAddDocumentCart(obj) {
|
function doAddDocumentCart(obj) {
|
||||||
|
|
@ -856,107 +686,33 @@ function toggleSecuritySignIn() {
|
||||||
else location.href = href.replace(/^http/i,'https');
|
else location.href = href.replace(/^http/i,'https');
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 하위호환성 문제 */
|
|
||||||
if(typeof(resizeImageContents) == 'undefined')
|
|
||||||
{
|
|
||||||
function resizeImageContents() {}
|
|
||||||
}
|
|
||||||
|
|
||||||
function reloadDocument() {
|
function reloadDocument() {
|
||||||
location.reload();
|
location.reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* --------------------------
|
|
||||||
* XE 2.0에서 제거될 함수
|
|
||||||
* This feature has been DEPRECATED and REMOVED as of XE 2.0.
|
|
||||||
* -------------------------- */
|
/* ----------------------------------------------
|
||||||
/**
|
* 하위호환용으로 남겨 놓음
|
||||||
* @brief 에디터에서 사용되는 내용 여닫는 코드 (고정, zbxe용)
|
* ------------------------------------------- */
|
||||||
* This feature has been DEPRECATED and REMOVED as of XE 2.0.
|
|
||||||
**/
|
if(typeof(resizeImageContents) == 'undefined') {
|
||||||
function zbxe_folder_open(id) {
|
function resizeImageContents() {}
|
||||||
jQuery("#folder_open_"+id).hide();
|
|
||||||
jQuery("#folder_close_"+id).show();
|
|
||||||
jQuery("#folder_"+id).show();
|
|
||||||
}
|
|
||||||
function zbxe_folder_close(id) {
|
|
||||||
jQuery("#folder_open_"+id).show();
|
|
||||||
jQuery("#folder_close_"+id).hide();
|
|
||||||
jQuery("#folder_"+id).hide();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
objectExtend = jQuery.extend;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 에디터에서 사용하되 내용 여닫는 코드 (zb5beta beta 호환용으로 남겨 놓음)
|
* @brief 특정 Element의 display 옵션 토글
|
||||||
* This feature has been DEPRECATED and REMOVED as of XE 2.0.
|
|
||||||
**/
|
**/
|
||||||
function svc_folder_open(id) {
|
function toggleDisplay(obj) {
|
||||||
jQuery("#_folder_open_"+id).hide();
|
jQuery('#'+obj).toggle();
|
||||||
jQuery("#_folder_close_"+id).show();
|
|
||||||
jQuery("#_folder_"+id).show();
|
|
||||||
}
|
|
||||||
function svc_folder_close(id) {
|
|
||||||
jQuery("#_folder_open_"+id).show();
|
|
||||||
jQuery("#_folder_close_"+id).hide();
|
|
||||||
jQuery("#_folder_"+id).hide();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/* 체크박스 선택 */
|
||||||
* @breif replace outerHTML
|
|
||||||
* This feature has been DEPRECATED and REMOVED as of XE 2.0.
|
|
||||||
**/
|
|
||||||
function replaceOuterHTML(obj, html) {
|
|
||||||
if(obj.outerHTML) {
|
|
||||||
obj.outerHTML = html;
|
|
||||||
} else {
|
|
||||||
var dummy = xCreateElement("div");
|
|
||||||
xInnerHtml(dummy, html);
|
|
||||||
var parent = obj.parentNode;
|
|
||||||
while(dummy.firstChild) {
|
|
||||||
parent.insertBefore(dummy.firstChild, obj);
|
|
||||||
}
|
|
||||||
parent.removeChild(obj);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @breif get outerHTML
|
|
||||||
* This feature has been DEPRECATED and REMOVED as of XE 2.0.
|
|
||||||
**/
|
|
||||||
function getOuterHTML(obj) {
|
|
||||||
if(obj.outerHTML) return obj.outerHTML;
|
|
||||||
var dummy = xCreateElement("div");
|
|
||||||
dummy.insertBefore(obj, dummy.lastChild);
|
|
||||||
return xInnerHtml(dummy);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief xSleep(micro time)
|
|
||||||
* This feature has been DEPRECATED and REMOVED as of XE 2.0.
|
|
||||||
**/
|
|
||||||
function xSleep(sec) {
|
|
||||||
sec = sec / 1000;
|
|
||||||
var now = new Date();
|
|
||||||
var sleep = new Date();
|
|
||||||
while( sleep.getTime() - now.getTime() < sec) {
|
|
||||||
sleep = new Date();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 체크박스를 실행
|
|
||||||
* This feature has been DEPRECATED and REMOVED as of XE 2.0.
|
|
||||||
*/
|
|
||||||
function clickCheckBoxAll(form, name) {
|
|
||||||
var fo_obj = xGetElementById(form);
|
|
||||||
for ( var i = 0; i < fo_obj.length; i++){
|
|
||||||
if(fo_obj[i].name == name) fo_obj[i].click();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 체크박스 선택
|
|
||||||
* This feature has been DEPRECATED and REMOVED as of XE 2.0.
|
|
||||||
*/
|
|
||||||
function checkboxSelectAll(form, name, option){
|
function checkboxSelectAll(form, name, option){
|
||||||
var value;
|
var value;
|
||||||
var fo_obj = xGetElementById(form);
|
var fo_obj = xGetElementById(form);
|
||||||
|
|
@ -976,4 +732,199 @@ function checkboxSelectAll(form, name, option){
|
||||||
|
|
||||||
if(fo_obj[i].name == name) fo_obj[i].checked = value;
|
if(fo_obj[i].name == name) fo_obj[i].checked = value;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 체크박스를 실행 */
|
||||||
|
function clickCheckBoxAll(form, name) {
|
||||||
|
var fo_obj = xGetElementById(form);
|
||||||
|
for ( var i = 0 ; i < fo_obj.length ; i++ ){
|
||||||
|
if(fo_obj[i].name == name) fo_obj[i].click();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 에디터에서 사용하되 내용 여닫는 코드 (zb5beta beta 호환용으로 남겨 놓음)
|
||||||
|
**/
|
||||||
|
function svc_folder_open(id) {
|
||||||
|
jQuery("#_folder_open_"+id).hide();
|
||||||
|
jQuery("#_folder_close_"+id).show();
|
||||||
|
jQuery("#_folder_"+id).show();
|
||||||
|
}
|
||||||
|
function svc_folder_close(id) {
|
||||||
|
jQuery("#_folder_open_"+id).show();
|
||||||
|
jQuery("#_folder_close_"+id).hide();
|
||||||
|
jQuery("#_folder_"+id).hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 날짜 선택 (달력 열기)
|
||||||
|
**/
|
||||||
|
function open_calendar(fo_id, day_str, callback_func) {
|
||||||
|
if(typeof(day_str)=="undefined") day_str = "";
|
||||||
|
|
||||||
|
var url = "./common/tpl/calendar.php?";
|
||||||
|
if(fo_id) url+="fo_id="+fo_id;
|
||||||
|
if(day_str) url+="&day_str="+day_str;
|
||||||
|
if(callback_func) url+="&callback_func="+callback_func;
|
||||||
|
|
||||||
|
popopen(url, 'Calendar');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 이름, 게시글등을 클릭하였을 경우 팝업 메뉴를 보여주는 함수
|
||||||
|
**/
|
||||||
|
//xAddEventListener(window, 'load', createPopupMenu);
|
||||||
|
xAddEventListener(document, 'click', chkPopupMenu);
|
||||||
|
|
||||||
|
var loaded_popup_menus = new Array();
|
||||||
|
|
||||||
|
/* 멤버 팝업 메뉴 레이어를 생성하는 함수 (문서 출력이 완료되었을때 동작) */
|
||||||
|
function createPopupMenu(evt) {
|
||||||
|
if(!jQuery('#popup_menu_area').length) {
|
||||||
|
var menuObj = jQuery('<div>')
|
||||||
|
.attr('id', 'popup_menu_area')
|
||||||
|
.css({visibility:'hidden', zIndex:9999});
|
||||||
|
jQuery(document.body).append(menuObj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 클릭 이벤트 발생시 이벤트가 일어난 대상을 검사하여 적절한 규칙에 맞으면 처리 */
|
||||||
|
function chkPopupMenu(evt) {
|
||||||
|
|
||||||
|
// 이전에 호출되었을지 모르는 팝업메뉴 숨김
|
||||||
|
var area = xGetElementById("popup_menu_area");
|
||||||
|
if(!area) return;
|
||||||
|
|
||||||
|
if(area.style.visibility != "hidden") area.style.visibility = "hidden";
|
||||||
|
|
||||||
|
// 이벤트 대상이 없으면 무시
|
||||||
|
var e = new xEvent(evt);
|
||||||
|
|
||||||
|
if(!e) return;
|
||||||
|
|
||||||
|
// 대상의 객체 구함
|
||||||
|
var obj = e.target;
|
||||||
|
if(!obj) return;
|
||||||
|
|
||||||
|
|
||||||
|
// obj의 nodeName이 div나 span이 아니면 나올대까지 상위를 찾음
|
||||||
|
if(obj && obj.nodeName != 'DIV' && obj.nodeName != 'SPAN' && obj.nodeName != 'A') obj = obj.parentNode;
|
||||||
|
if(!obj || (obj.nodeName != 'DIV' && obj.nodeName != 'SPAN' && obj.nodeName != 'A')) return;
|
||||||
|
|
||||||
|
// 객체의 className값을 구함
|
||||||
|
var class_name = obj.className;
|
||||||
|
if(!class_name) return;
|
||||||
|
// className을 분리
|
||||||
|
var class_name_list = class_name.split(' ');
|
||||||
|
|
||||||
|
var menu_id = '';
|
||||||
|
var menu_id_regx = /^([a-zA-Z]+)_([0-9]+)$/;
|
||||||
|
|
||||||
|
|
||||||
|
for(var i=0,c=class_name_list.length;i<c;i++) {
|
||||||
|
if(menu_id_regx.test(class_name_list[i])) {
|
||||||
|
menu_id = class_name_list[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(!menu_id) return;
|
||||||
|
|
||||||
|
// module명과 대상 번호가 없으면 return
|
||||||
|
var tmp_arr = menu_id.split('_');
|
||||||
|
var module_name = tmp_arr[0];
|
||||||
|
var target_srl = tmp_arr[1];
|
||||||
|
if(!module_name || !target_srl || target_srl < 1) return;
|
||||||
|
|
||||||
|
// action이름을 규칙에 맞게 작성
|
||||||
|
var action_name = "get" + module_name.substr(0,1).toUpperCase() + module_name.substr(1,module_name.length-1) + "Menu";
|
||||||
|
|
||||||
|
|
||||||
|
// 서버에 메뉴를 요청
|
||||||
|
var params = new Array();
|
||||||
|
params["target_srl"] = target_srl;
|
||||||
|
params["cur_mid"] = current_mid;
|
||||||
|
params["cur_act"] = current_url.getQuery('act');
|
||||||
|
params["menu_id"] = menu_id;
|
||||||
|
params["page_x"] = e.pageX >0 ? e.pageX : GetObjLeft(obj);
|
||||||
|
params["page_y"] = e.pageY >0 ? e.pageY : GetObjTop(obj)+ xHeight(obj);
|
||||||
|
|
||||||
|
var response_tags = new Array("error","message","menus");
|
||||||
|
|
||||||
|
if(loaded_popup_menus[menu_id]) {
|
||||||
|
displayPopupMenu(params, response_tags, params);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
show_waiting_message = false;
|
||||||
|
exec_xml(module_name, action_name, params, displayPopupMenu, response_tags, params);
|
||||||
|
show_waiting_message = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function GetObjTop(obj) {
|
||||||
|
if(obj.offsetParent == document.body) return xOffsetTop(obj);
|
||||||
|
else return xOffsetTop(obj) + GetObjTop(obj.offsetParent);
|
||||||
|
}
|
||||||
|
function GetObjLeft(obj) {
|
||||||
|
if(obj.offsetParent == document.body) return xOffsetLeft(obj);
|
||||||
|
else return xOffsetLeft(obj) + GetObjLeft(obj.offsetParent);
|
||||||
|
}
|
||||||
|
|
||||||
|
function displayPopupMenu(ret_obj, response_tags, params) {
|
||||||
|
|
||||||
|
var target_srl = params["target_srl"];
|
||||||
|
var menu_id = params["menu_id"];
|
||||||
|
var menus = ret_obj['menus'];
|
||||||
|
var html = "";
|
||||||
|
|
||||||
|
if(loaded_popup_menus[menu_id]) {
|
||||||
|
html = loaded_popup_menus[menu_id];
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if(menus) {
|
||||||
|
var item = menus['item'];
|
||||||
|
if(typeof(item.length)=='undefined' || item.length<1) item = new Array(item);
|
||||||
|
if(item.length) {
|
||||||
|
for(var i=0;i<item.length;i++) {
|
||||||
|
var url = item[i].url;
|
||||||
|
var str = item[i].str;
|
||||||
|
var icon = item[i].icon;
|
||||||
|
var target = item[i].target;
|
||||||
|
|
||||||
|
var styleText = "";
|
||||||
|
var click_str = "";
|
||||||
|
if(icon) styleText = " style=\"background-image:url('"+icon+"')\" ";
|
||||||
|
switch(target) {
|
||||||
|
case "popup" :
|
||||||
|
click_str = " onclick=\"popopen(this.href,'"+target+"'); return false;\"";
|
||||||
|
break;
|
||||||
|
case "self" :
|
||||||
|
//click_str = " onclick=\"location.href='"+url+"' return false;\"";
|
||||||
|
break;
|
||||||
|
case "javascript" :
|
||||||
|
click_str = " onclick=\""+url+"; return false; \"";
|
||||||
|
url="#";
|
||||||
|
break;
|
||||||
|
default :
|
||||||
|
click_str = " onclick=\"window.open(this.href); return false;\"";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
html += '<li '+styleText+'><a href="'+url+'"'+click_str+'>'+str+'</a></li> ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
loaded_popup_menus[menu_id] = html;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 레이어 출력
|
||||||
|
if(html) {
|
||||||
|
var area = xGetElementById("popup_menu_area");
|
||||||
|
xInnerHtml(area, '<ul>'+html+'</ul>');
|
||||||
|
xLeft(area, params["page_x"]);
|
||||||
|
xTop(area, params["page_y"]);
|
||||||
|
if(xWidth(area)+xLeft(area)>xClientWidth()+xScrollLeft()) xLeft(area, xClientWidth()-xWidth(area)+xScrollLeft());
|
||||||
|
if(xHeight(area)+xTop(area)>xClientHeight()+xScrollTop()) xTop(area, xClientHeight()-xHeight(area)+xScrollTop());
|
||||||
|
area.style.visibility = "visible";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue