mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-05-02 00:32:15 +09:00
1. 회원/게시글/댓글 팝업메뉴를 controller의 method를 이용하여 손쉽게 추가할 수 있도록 변경
2. 게시글/ 댓글 팝업메뉴에 아이콘 추가 3. 쪽지 발송/ 친구 관련 메뉴의 on/off를 member_communication 애드온으로 활성/비활성 할 수 있도록 변경 4. IE에서 페이지를 찾을 수 없다는 오류가 발생하는 window onload이전에 DOM을 건드리는 코드에 대한 보완책 적용 5. XML RPC 결과 출력시 1depth이상의 배열 또는 오브젝트 데이터를 Simple XML 형식으로 출력할 수 있도록 하고 Javascript에서 이를 다차원 배열로 parsing하도록 코드 변경 git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4230 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
bc963aa72f
commit
4cdce7e4cf
26 changed files with 422 additions and 115 deletions
|
|
@ -309,18 +309,27 @@ function setFixedPopupSize() {
|
|||
/**
|
||||
* @brief 이름, 게시글등을 클릭하였을 경우 팝업 메뉴를 보여주는 함수
|
||||
**/
|
||||
xAddEventListener(window, 'load', createPopupMenu);
|
||||
xAddEventListener(document, 'click', chkPopupMenu);
|
||||
var loaded_popup_menu_list = new Array();
|
||||
|
||||
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';
|
||||
document.body.appendChild(area);
|
||||
}
|
||||
|
||||
/* 클릭 이벤트 발생시 이벤트가 일어난 대상을 검사하여 적절한 규칙에 맞으면 처리 */
|
||||
function chkPopupMenu(evt) {
|
||||
// 이전에 호출되었을지 모르는 팝업메뉴 숨김
|
||||
var area = xGetElementById("popup_menu_area");
|
||||
if(!area) {
|
||||
area = xCreateElement("div");
|
||||
area.id = "popup_menu_area";
|
||||
document.body.appendChild(area);
|
||||
}
|
||||
if(!area) return;
|
||||
|
||||
if(area.style.visibility!="hidden") area.style.visibility="hidden";
|
||||
|
||||
// 이벤트 대상이 없으면 무시
|
||||
|
|
@ -332,9 +341,7 @@ function chkPopupMenu(evt) {
|
|||
if(!obj) return;
|
||||
|
||||
// obj의 nodeName이 div나 span이 아니면 나올대까지 상위를 찾음
|
||||
if(obj && obj.nodeName != 'DIV' && obj.nodeName != 'SPAN') {
|
||||
obj = obj.parentNode;
|
||||
}
|
||||
if(obj && obj.nodeName != 'DIV' && obj.nodeName != 'SPAN') obj = obj.parentNode;
|
||||
if(!obj || (obj.nodeName != 'DIV' && obj.nodeName != 'SPAN')) return;
|
||||
|
||||
// 객체의 className값을 구함
|
||||
|
|
@ -371,10 +378,9 @@ function chkPopupMenu(evt) {
|
|||
params["page_x"] = e.pageX;
|
||||
params["page_y"] = e.pageY;
|
||||
|
||||
var response_tags = new Array("error","message","menu_list");
|
||||
var response_tags = new Array("error","message","menus");
|
||||
|
||||
if(loaded_popup_menu_list[menu_id]) {
|
||||
params["menu_list"] = loaded_popup_menu_list[menu_id];
|
||||
if(loaded_popup_menus[menu_id]) {
|
||||
displayPopupMenu(params, response_tags, params);
|
||||
return;
|
||||
}
|
||||
|
|
@ -385,44 +391,50 @@ function chkPopupMenu(evt) {
|
|||
}
|
||||
|
||||
function displayPopupMenu(ret_obj, response_tags, params) {
|
||||
var area = xGetElementById("popup_menu_area");
|
||||
|
||||
var menu_list = ret_obj['menu_list'];
|
||||
|
||||
var target_srl = params["target_srl"];
|
||||
var menu_id = params["menu_id"];
|
||||
|
||||
var menus = ret_obj['menus'];
|
||||
var html = "";
|
||||
|
||||
if(loaded_popup_menu_list[menu_id]) {
|
||||
html = loaded_popup_menu_list[menu_id];
|
||||
if(loaded_popup_menus[menu_id]) {
|
||||
html = loaded_popup_menus[menu_id];
|
||||
} else {
|
||||
var infos = menu_list.split("\n");
|
||||
if(infos.length) {
|
||||
for(var i=0;i<infos.length;i++) {
|
||||
var info_str = infos[i];
|
||||
var pos = info_str.indexOf(",");
|
||||
var icon = info_str.substr(0,pos).trim();
|
||||
var item = menus['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;
|
||||
|
||||
info_str = info_str.substr(pos+1, info_str.length).trim();
|
||||
var pos = info_str.indexOf(",");
|
||||
var str = info_str.substr(0,pos).trim();
|
||||
var func = info_str.substr(pos+1, info_str.length).trim();
|
||||
var styleText = "";
|
||||
|
||||
var className = "item";
|
||||
if(icon) styleText = " style=\"background:url('"+icon+"') no-repeat left center; padding-left:18px; \"";
|
||||
switch(target) {
|
||||
case "popup" :
|
||||
click_str = " onclick=\"popopen('"+url+"','"+target+"')\"; return false;";
|
||||
break;
|
||||
case "self" :
|
||||
click_str = " onclick=\"location.href='"+url+"'\"; return false;";
|
||||
break;
|
||||
case "javascript" :
|
||||
click_str = " onclick=\""+url+"\"; return false;";
|
||||
break;
|
||||
default :
|
||||
click_str = " onclick=\"window.open('"+url+"')\"; return false;";
|
||||
break;
|
||||
}
|
||||
|
||||
if(!str || !func) continue;
|
||||
|
||||
if(icon) html += "<div class=\""+className+"\" onmouseover=\"this.className='"+className+"_on'\" onmouseout=\"this.className='"+className+"'\" style=\"background:url("+icon+") no-repeat left center; padding-left:18px;\" onclick=\""+func+"\">"+str+"</div>";
|
||||
else html += "<div class=\""+className+"\" onmouseover=\"this.className='"+className+"_on'\" onmouseout=\"this.className='"+className+"'\" onclick=\""+func+"\">"+str+"</div>";
|
||||
html += '<div class="item" onmouseover="this.className=\'item_on\'" onmouseout="this.className=\'item\'"'+styleText+click_str+'>'+str+'</div> ';
|
||||
}
|
||||
}
|
||||
loaded_popup_menu_list[menu_id] = html;
|
||||
}
|
||||
loaded_popup_menus[menu_id] = html;
|
||||
}
|
||||
|
||||
// 레이어 출력
|
||||
if(html) {
|
||||
// 레이어 출력
|
||||
xInnerHtml('popup_menu_area', "<div class=\"box\">"+html+"</div>");
|
||||
var area = xGetElementById("popup_menu_area");
|
||||
xInnerHtml(area, "<div class=\"box\">"+html+"</div>");
|
||||
xLeft(area, params["page_x"]);
|
||||
xTop(area, params["page_y"]);
|
||||
if(xWidth(area)+xLeft(area)>xClientWidth()+xScrollLeft()) xLeft(area, xClientWidth()-xWidth(area)+xScrollLeft());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue