삭제
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@2327 201d5d3c-b55e-5fd7-737f-ddc643e51545
167
common/css/button.css
Normal file
|
|
@ -0,0 +1,167 @@
|
|||
/*
|
||||
http://www.hedgerwow.com/360/dhtml/css-round-button/demo.php
|
||||
*/
|
||||
|
||||
a.button, span.button, del.button {
|
||||
display:-moz-inline-box;
|
||||
display:inline-block;
|
||||
cursor:pointer;
|
||||
border:none;
|
||||
font-size:0;
|
||||
line-height:0;
|
||||
|
||||
/*
|
||||
for Safari, read this first
|
||||
http://creativebits.org/webdev/safari_background_repeat_bug_fix
|
||||
*/
|
||||
background-position:0 -3px;
|
||||
background-repeat:no-repeat;
|
||||
height:24px;
|
||||
text-decoration:none;
|
||||
color:#2e523b;
|
||||
font-style:normal;
|
||||
margin:0 6px 0px 0;
|
||||
padding:0 10px 0 0;
|
||||
vertical-align:middle;
|
||||
|
||||
padding-top:-2px;
|
||||
position:relative;
|
||||
_width:10px;
|
||||
_overflow-y:hidden;
|
||||
}
|
||||
|
||||
a.button, span.button, del.button, a.button span, span.button button, span.button input, del.button span {
|
||||
background-image:url(../tpl/images/form_buttons.png);
|
||||
_background-image:url(../tpl/images/form_buttons.gif);
|
||||
}
|
||||
|
||||
|
||||
a.button span, span.button button, span.button input, del.button span {
|
||||
white-space:nowrap;
|
||||
cursor:pointer;
|
||||
color:#222;
|
||||
display:-moz-inline-box;
|
||||
display:inline-block;
|
||||
line-height:1;
|
||||
letter-spacing:0 !important;
|
||||
font-size:12px !important;
|
||||
font-style:normal;
|
||||
background-color:transparent;
|
||||
background-position:100% -3px;
|
||||
background-repeat:no-repeat;
|
||||
height:24px;
|
||||
padding:4px 11px 0 7px;
|
||||
margin:0 -18px 0 6px;
|
||||
border:none;
|
||||
vertical-align:text-top;
|
||||
zoom:1;
|
||||
_position:relative;
|
||||
_padding:3px 13px 0 4px;
|
||||
_margin:0 -10px 0 4px;
|
||||
_display:block;
|
||||
_top:0;
|
||||
_right:-5px;
|
||||
}
|
||||
|
||||
*:first-child+html a.button span, span.button button, span.button input, del.button span { padding-top:6px; }
|
||||
|
||||
|
||||
span.button button {
|
||||
line-height:2.5;/*Opera need this*/
|
||||
}
|
||||
|
||||
html.safari a.button span, html.safari del.button span {
|
||||
line-height:1.3;
|
||||
}
|
||||
|
||||
html.safari span.button button {
|
||||
line-height:2.6;
|
||||
}
|
||||
|
||||
html.safari a.button:focus, html.safari span.button button:focus {
|
||||
outline:none;
|
||||
}
|
||||
|
||||
del.button{
|
||||
/* cursor:not-allowed; */
|
||||
background-position:0 -123px;
|
||||
|
||||
}
|
||||
|
||||
del.button span {
|
||||
cursor:default;
|
||||
color:#aaa !important;
|
||||
background-position:100% -123px;
|
||||
}
|
||||
|
||||
a.button span {
|
||||
_padding-top:7px;
|
||||
}
|
||||
*:first-child+html a.button span { padding-top:7px; }
|
||||
|
||||
span.button button, span.button input {
|
||||
padding:0 6px 0 0;
|
||||
line-height:2.5;/*Opera need this*/
|
||||
}
|
||||
|
||||
/** optional **/
|
||||
/*
|
||||
a.button:visited{
|
||||
color:#aaa;
|
||||
}
|
||||
*/
|
||||
|
||||
/*Hover Style*/
|
||||
a.button:hover, span.button:hover, a.button:focus, a.dom-button-focus, span.button-behavior-hover {
|
||||
background-position:0 -63px;
|
||||
color:#222;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
a.button:hover span, span.button:hover input, span.button:hover button, a.button:focus span, span.button-behavior-hover button, span.button-behavior-hover input {
|
||||
background-position:100% -63px;
|
||||
}
|
||||
|
||||
|
||||
a.button:active, a.button:focus span {
|
||||
color:#444;
|
||||
}
|
||||
|
||||
del.button-behavior-hover, del.button:hover {
|
||||
background-position:0 -183px;
|
||||
/* cursor:not-allowed; */
|
||||
}
|
||||
|
||||
del.button-behavior-hover span, del.button:hover span {
|
||||
background-position:100% -183px;
|
||||
/* cursor:not-allowed; */
|
||||
}
|
||||
|
||||
/*Optional hack for IE6 to simulate :hover selector*/
|
||||
|
||||
span.button button, del.button span, span.button input {
|
||||
_behavior:expression(
|
||||
(function(el){
|
||||
if( typeof( behavior_onMouseEnter) == 'undefined'){
|
||||
behavior_onMouseEnter = function(el) {
|
||||
var dEl = this.parentNode;
|
||||
var sClass = dEl.className ;
|
||||
dEl.__defaultClassName = sClass ;
|
||||
dEl.className = sClass + ' button-behavior-hover';
|
||||
this.setCapture();
|
||||
};
|
||||
|
||||
behavior_onMouseLeave = function(el) {
|
||||
var dEl = this.parentNode;
|
||||
dEl.className = dEl.__defaultClassName ;
|
||||
dEl.__defaultClassName = undefined;
|
||||
this.releaseCapture();
|
||||
};
|
||||
};
|
||||
|
||||
el.runtimeStyle.behavior = 'none';
|
||||
el.onmouseenter = behavior_onMouseEnter;
|
||||
el.onmouseleave = behavior_onMouseLeave;
|
||||
}
|
||||
)(this));
|
||||
}
|
||||
79
common/css/default.css
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
@charset "utf-8";
|
||||
|
||||
/*
|
||||
Used Hack
|
||||
IE6 & Below
|
||||
{ property:value; _property:value; }
|
||||
IE7 Only
|
||||
*:first-child+html #selector
|
||||
IE7 & IE6 & Below
|
||||
*:first-child+html #selector,
|
||||
* html #selector {}
|
||||
*/
|
||||
|
||||
/* Special Class Selector */
|
||||
.fr { float:right; }
|
||||
.fl { float:left; }
|
||||
.clear { clear:both; }
|
||||
.fwB { font-weight:bold;}
|
||||
.tCenter { text-align:center; }
|
||||
.tRight { text-align:right; }
|
||||
.tLeft { text-align:left; }
|
||||
.gap1 { margin-top:.8em; }
|
||||
|
||||
/* default.css - Type Selector Definition */
|
||||
* { margin:0; padding:0; }
|
||||
html { width:100%; position:relative;}
|
||||
body { margin:0; font-size:.75em; font-family:sans-serif;}
|
||||
img { border:none; }
|
||||
label { cursor:pointer; }
|
||||
form { margin:0; padding:0; }
|
||||
|
||||
.iePngFix { behavior:url(./common/js/iePngFix.htc); }
|
||||
.zbxe_info { vertical-align:middle; behavior:url(./common/js/iePngFix.htc); }
|
||||
|
||||
/* Input Style Definition */
|
||||
.inputTypeText { border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:1.4em; padding:.2em 0 0 .3em; background:#ffffff; font-size:1em; }
|
||||
.inputTypeText:hover,
|
||||
.inputTypeText:focus { background:#f4f4f4; }
|
||||
.inputTypeTextArea { border:1px solid !important; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6 !important; background:#ffffff; font-size:1em;}
|
||||
|
||||
.w40 { width:40px; }
|
||||
.w60 { width:60px; }
|
||||
.w80 { width:80px; }
|
||||
.w100 { width:100px; }
|
||||
.w120 { width:120px; }
|
||||
.w140 { width:140px; }
|
||||
.w200 { width:200px; }
|
||||
.w300 { width:300px; }
|
||||
.w400 { width:400px; }
|
||||
|
||||
|
||||
/* editor style */
|
||||
a.bold { font-weight:bold; }
|
||||
|
||||
.editor_blue_text { color: #145ff9; text-decoration:underline; }
|
||||
.editor_blue_text a { color: #145ff9; text-decoration:underline; }
|
||||
.editor_red_text { color: #f42126; text-decoration:underline; }
|
||||
.editor_red_text a { color: #f42126; text-decoration:underline; }
|
||||
.editor_yellow_text { color: #c9bd00; text-decoration:underline; }
|
||||
.editor_yellow_text a { color: #c9bd00; text-decoration:underline; }
|
||||
.editor_green_text { color: #08830B; text-decoration:underline; }
|
||||
.editor_green_text a { color: #08830B; text-decoration:underline; }
|
||||
|
||||
.folder_opener { display: block; }
|
||||
.folder_closer { display: none; }
|
||||
.folder_area { display: none; }
|
||||
|
||||
.zbxe_widget_output { background-image:url(../tpl/images/widget_text.gif) no-repeat center bottom; display:block;}
|
||||
.member_signature { margin-top:10px; border:1px solid #DDDDDD; padding:10px; }
|
||||
|
||||
#waitingforserverresponse { display:inline; border:2px solid #444444; background-color:#FFFFFF; padding:15px 20px 13px 20px; font-weight:bold; color:#444444; top:40px; left:40px; position:absolute; z-index:100; visibility:hidden; }
|
||||
#fororiginalimageareabg { z-index:1001; background-color:#FFFFFF; width:100%; height:100%; top:0px; left:0px; position:relative; padding:20px 10px 10px 10px; border:8px solid #DDDDDD; }
|
||||
#fororiginalimagearea { visibility:hidden; padding:0px; margin:0px; width:100%; height:100%; top:0px; left:0px; position:absolute; z-index:1000; text-align:left; overflow:hidden; }
|
||||
#fororiginalimage { z-index:1002; }
|
||||
#closeOriginalImageBtn { position:absolute; right:8px; top:5px; cursor:pointer; width:50px; height:12px; z-index:1003; }
|
||||
#membermenuarea { position:absolute; left:0px; top:0px; z-index:1003; visibility:hidden; border:2px solid #D9D9D9; background-color:#FFFFFF; padding:0; }
|
||||
#membermenuarea .box { border:1px solid #CACACA; background-color:#FFFFFF; padding:7px; line-height:22px;}
|
||||
#membermenuarea .item { color:#333333; cursor:pointer; margin:0; padding:3px 0 3px 18px; white-space:nowrap; height:22px;}
|
||||
#membermenuarea .item_on { color:#333333; font-weight:bold; margin:0; cursor:pointer; padding:3px 0 3px 18px; height:22px; letter-spacing:-1px; white-space:nowrap;}
|
||||
614
common/js/common.js
Normal file
|
|
@ -0,0 +1,614 @@
|
|||
/**
|
||||
* @file common.js
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief 몇가지 유용한 & 기본적으로 자주 사용되는 자바스크립트 함수들 모음
|
||||
**/
|
||||
|
||||
/**
|
||||
* @brief location.href에서 특정 key의 값을 return
|
||||
**/
|
||||
String.prototype.getQuery = function(key) {
|
||||
var idx = this.indexOf('?');
|
||||
if(idx == -1) return null;
|
||||
var query_string = this.substr(idx+1, this.length);
|
||||
var args = {}
|
||||
query_string.replace(/([^=]+)=([^&]*)(&|$)/g, function() { args[arguments[1]] = arguments[2]; });
|
||||
|
||||
var q = args[key];
|
||||
if(typeof(q)=="undefined") q = "";
|
||||
|
||||
return q;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief location.href에서 특정 key의 값을 return
|
||||
**/
|
||||
String.prototype.setQuery = function(key, val) {
|
||||
var idx = this.indexOf('?');
|
||||
var uri = this;
|
||||
uri = uri.replace(/#$/,'');
|
||||
if(idx != -1) {
|
||||
uri = this.substr(0, idx);
|
||||
var query_string = this.substr(idx+1, this.length);
|
||||
var args = new Array();
|
||||
query_string.replace(/([^=]+)=([^&]*)(&|$)/g, function() { args[arguments[1]] = arguments[2]; });
|
||||
|
||||
args[key] = val;
|
||||
|
||||
var q_list = new Array();
|
||||
for(var i in args) {
|
||||
var arg = args[i];
|
||||
if(!arg.toString().trim()) continue;
|
||||
|
||||
q_list[q_list.length] = i+'='+arg;
|
||||
}
|
||||
return uri+"?"+q_list.join("&");
|
||||
} else {
|
||||
if(val.toString().trim()) return uri+"?"+key+"="+val;
|
||||
else return uri;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief string prototype으로 trim 함수 추가
|
||||
**/
|
||||
String.prototype.trim = function() {
|
||||
return this.replace(/(^\s*)|(\s*$)/g, "");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 주어진 인자가 하나라도 defined되어 있지 않으면 false return
|
||||
**/
|
||||
function isDef() {
|
||||
for(var i=0; i<arguments.length; ++i) {
|
||||
if(typeof(arguments[i])=="undefined") return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 윈도우 오픈
|
||||
* 열려진 윈도우의 관리를 통해 window.focus()등을 FF에서도 비슷하게 구현함
|
||||
**/
|
||||
var winopen_list = new Array();
|
||||
function winopen(url, target, attribute) {
|
||||
try {
|
||||
if(target != "_blank" && winopen_list[target]) {
|
||||
winopen_list[target].close();
|
||||
winopen_list[target] = null;
|
||||
}
|
||||
} catch(e) {
|
||||
}
|
||||
|
||||
if(typeof(target)=='undefined') target = '_blank';
|
||||
if(typeof(attribute)=='undefined') attribute = '';
|
||||
var win = window.open(url, target, attribute);
|
||||
win.focus();
|
||||
if(target != "_blank") winopen_list[target] = win;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 팝업으로만 띄우기
|
||||
* common/tpl/popup_layout.html이 요청되는 제로보드 XE내의 팝업일 경우에 사용
|
||||
**/
|
||||
function popopen(url, target) {
|
||||
if(typeof(target)=="undefined") target = "_blank";
|
||||
winopen(url, target, "left=10,top=10,width=10,height=10,scrollbars=no,resizable=no,toolbars=no");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 메일 보내기용
|
||||
**/
|
||||
function sendMailTo(to) {
|
||||
location.href="mailto:"+to;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief url이동 (open_window 값이 N 가 아니면 새창으로 띄움)
|
||||
**/
|
||||
function move_url(url, open_wnidow) {
|
||||
if(!url) return false;
|
||||
if(typeof(open_wnidow)=='undefined') open_wnidow = 'N';
|
||||
if(open_wnidow=='N') open_wnidow = false;
|
||||
else open_wnidow = true;
|
||||
|
||||
if(/^\./.test(url)) url = request_uri+url;
|
||||
|
||||
if(open_wnidow) {
|
||||
winopen(url);
|
||||
} else {
|
||||
location.href=url;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 div(or span...)의 display옵션 토글
|
||||
**/
|
||||
function toggleDisplay(obj, opt) {
|
||||
obj = xGetElementById(obj);
|
||||
if(typeof(opt)=="undefined") opt = "inline";
|
||||
if(obj.style.display == "none") obj.style.display = opt;
|
||||
else obj.style.display = "none";
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 멀티미디어 출력용 (IE에서 플래쉬/동영상 주변에 점선 생김 방지용)
|
||||
**/
|
||||
function displayMultimedia(src, width, height, auto_start) {
|
||||
if(src.indexOf('files')==0) src = request_uri+src;
|
||||
if(auto_start) auto_start = "true";
|
||||
else auto_start = "false";
|
||||
|
||||
var clsid = "";
|
||||
var codebase = "";
|
||||
var html = "";
|
||||
|
||||
if(/\.swf/i.test(src)) {
|
||||
clsid = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";
|
||||
codebase = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0";
|
||||
html = ""+
|
||||
"<object classid=\""+clsid+"\" codebase=\""+codebase+"\" width=\""+width+"\" height=\""+height+"\" >"+
|
||||
"<param name=\"wmode\" value=\"transparent\" />"+
|
||||
"<param name=\"allowScriptAccess\" value=\"always\" />"+
|
||||
"<param name=\"movie\" value=\""+src+"\" />"+
|
||||
"<param name=\"quality\" value=\"high\" />"+
|
||||
"<embed src=\""+src+"\" autostart=\""+auto_start+"\" width=\""+width+"\" height=\""+height+"\"></embed>"+
|
||||
"<\/object>";
|
||||
} else if(/\.flv/i.test(src)) {
|
||||
html = "<embed src=\""+request_uri+"common/tpl/images/flvplayer.swf?autoStart="+auto_start+"&file="+src+"\" width=\""+width+"\" height=\""+height+"\" type=\"application/x-shockwave-flash\"></embed>";
|
||||
} else {
|
||||
html = "<embed src=\""+src+"\" autostart=\""+auto_start+"\" width=\""+width+"\" height=\""+height+"\"></embed>";
|
||||
}
|
||||
|
||||
document.writeln(html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 화면내에서 상위 영역보다 이미지가 크면 리사이즈를 하고 클릭시 원본을 보여줄수 있도록 변경
|
||||
**/
|
||||
function resizeImageContents() {
|
||||
var objs = xGetElementsByTagName("IMG");
|
||||
for(var i in objs) {
|
||||
var obj = objs[i];
|
||||
var parent = obj.parentNode;
|
||||
if(!obj||!parent) continue;
|
||||
while(parent.parentNode && parent.nodeName != "TD" && parent.nodeName != "DIV") {
|
||||
parent = parent.parentNode;
|
||||
}
|
||||
if(parent.nodeName != "TD" && parent.nodeName != "DIV") continue;
|
||||
|
||||
if(obj.parentNode.nodeName =='A') continue;
|
||||
if(/\/modules\//i.test(obj.src)) continue;
|
||||
if(/\/layouts\//i.test(obj.src)) continue;
|
||||
if(/\/widgets\//i.test(obj.src)) continue;
|
||||
if(/\/classes\//i.test(obj.src)) continue;
|
||||
if(/\/common\/tpl\//i.test(obj.src)) continue;
|
||||
if(/\/member_extra_info\//i.test(obj.src)) continue;
|
||||
|
||||
var parent_width = xWidth(parent);
|
||||
var obj_width = xWidth(obj);
|
||||
var orig_img = new Image();
|
||||
orig_img.src = obj.src;
|
||||
|
||||
if(parent_width<1 || obj_width <1) continue;
|
||||
if(parent_width>=obj_width && orig_img.width <= obj_width) continue;
|
||||
|
||||
obj.style.cursor = "pointer";
|
||||
|
||||
obj.source_width = orig_img.width;
|
||||
obj.source_height = orig_img.height;
|
||||
|
||||
if(obj_width >= parent_width) {
|
||||
var per = parent_width/obj_width;
|
||||
xWidth(obj, xWidth(parent)-1);
|
||||
xHeight(obj, xHeight(obj)*per);
|
||||
}
|
||||
|
||||
xAddEventListener(obj,"click", showOriginalImage);
|
||||
}
|
||||
}
|
||||
xAddEventListener(window, "load", resizeImageContents);
|
||||
|
||||
/**
|
||||
* @brief 에디터에서 사용되는 내용 여닫는 코드 (고정, zbxe용)
|
||||
**/
|
||||
function zbxe_folder_open(id) {
|
||||
var open_text_obj = xGetElementById("folder_open_"+id);
|
||||
var close_text_obj = xGetElementById("folder_close_"+id);
|
||||
var folder_obj = xGetElementById("folder_"+id);
|
||||
open_text_obj.style.display = "none";
|
||||
close_text_obj.style.display = "block";
|
||||
folder_obj.style.display = "block";
|
||||
}
|
||||
|
||||
function zbxe_folder_close(id) {
|
||||
var open_text_obj = xGetElementById("folder_open_"+id);
|
||||
var close_text_obj = xGetElementById("folder_close_"+id);
|
||||
var folder_obj = xGetElementById("folder_"+id);
|
||||
open_text_obj.style.display = "block";
|
||||
close_text_obj.style.display = "none";
|
||||
folder_obj.style.display = "none";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 에디터에서 사용하되 내용 여닫는 코드 (zb5beta beta 호환용으로 남겨 놓음)
|
||||
**/
|
||||
function svc_folder_open(id) {
|
||||
var open_text_obj = xGetElementById("_folder_open_"+id);
|
||||
var close_text_obj = xGetElementById("_folder_close_"+id);
|
||||
var folder_obj = xGetElementById("_folder_"+id);
|
||||
open_text_obj.style.display = "none";
|
||||
close_text_obj.style.display = "block";
|
||||
folder_obj.style.display = "block";
|
||||
}
|
||||
|
||||
function svc_folder_close(id) {
|
||||
var open_text_obj = xGetElementById("_folder_open_"+id);
|
||||
var close_text_obj = xGetElementById("_folder_close_"+id);
|
||||
var folder_obj = xGetElementById("_folder_"+id);
|
||||
open_text_obj.style.display = "block";
|
||||
close_text_obj.style.display = "none";
|
||||
folder_obj.style.display = "none";
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 팝업의 경우 내용에 맞춰 현 윈도우의 크기를 조절해줌
|
||||
* 팝업의 내용에 맞게 크기를 늘리는 것은... 쉽게 되지는 않음.. ㅡ.ㅜ
|
||||
* popup_layout 에서 window.onload 시 자동 요청됨.
|
||||
**/
|
||||
function setFixedPopupSize() {
|
||||
|
||||
if(xGetElementById('popBody')) {
|
||||
if(xHeight('popBody')>600) {
|
||||
xGetElementById('popBody').style.overflowY = 'scroll';
|
||||
xGetElementById('popBody').style.overflowX = 'hidden';
|
||||
xHeight('popBody', 600);
|
||||
}
|
||||
}
|
||||
|
||||
var w = xWidth("popup_content");
|
||||
var h = xHeight("popup_content");
|
||||
|
||||
var obj_list = xGetElementsByTagName('div');
|
||||
for(i=0;i<obj_list.length;i++) {
|
||||
var ww = xWidth(obj_list[i]);
|
||||
var id = obj_list[i].id;
|
||||
if(id == 'waitingforserverresponse' || id == 'fororiginalimagearea' || id == 'fororiginalimageareabg') continue;
|
||||
if(ww>w) w = ww;
|
||||
}
|
||||
|
||||
// 윈도우에서는 브라우저 상관없이 가로 픽셀이 조금 더 늘어나야 한다.
|
||||
if(xUA.indexOf('windows')>0) {
|
||||
if(xOp7Up) w += 10;
|
||||
else if(xIE4Up) w += 10;
|
||||
else w += 6;
|
||||
}
|
||||
window.resizeTo(w,h);
|
||||
|
||||
var h1 = xHeight(window.document.body);
|
||||
window.resizeBy(0,h-h1);
|
||||
|
||||
window.scrollTo(0,0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 본문내에서 컨텐츠 영역보다 큰 이미지의 경우 원본 크기를 보여줌
|
||||
**/
|
||||
function showOriginalImage(evt) {
|
||||
var e = new xEvent(evt);
|
||||
var obj = e.target;
|
||||
var src = obj.src;
|
||||
|
||||
var orig_image = xGetElementById("fororiginalimage");
|
||||
var tmp_image = new Image();
|
||||
tmp_image.src = src;
|
||||
var image_width = tmp_image.width;
|
||||
var image_height = tmp_image.height;
|
||||
|
||||
orig_image.style.margin = "0px 0px 0px 0px";
|
||||
orig_image.style.cursor = "move";
|
||||
orig_image.src = src;
|
||||
|
||||
var areabg = xGetElementById("fororiginalimageareabg");
|
||||
xWidth(areabg, image_width+36);
|
||||
xHeight(areabg, image_height+46);
|
||||
|
||||
var area = xGetElementById("fororiginalimagearea");
|
||||
xLeft(area, xScrollLeft());
|
||||
xTop(area, xScrollTop());
|
||||
xWidth(area, xWidth(document));
|
||||
xHeight(area, xHeight(document));
|
||||
area.style.visibility = "visible";
|
||||
var area_width = xWidth(area);
|
||||
var area_height = xHeight(area);
|
||||
|
||||
var x = parseInt((area_width-image_width)/2,10);
|
||||
var y = parseInt((area_height-image_height)/2,10);
|
||||
if(x<0) x = 0;
|
||||
if(y<0) y = 0;
|
||||
xLeft(areabg, x);
|
||||
xTop(areabg, y);
|
||||
|
||||
var sel_list = xGetElementsByTagName("select");
|
||||
for (var i = 0; i < sel_list.length; ++i) sel_list[i].style.visibility = "hidden";
|
||||
|
||||
xAddEventListener(orig_image, "mousedown", origImageDragEnable);
|
||||
xAddEventListener(orig_image, "dblclick", closeOriginalImage);
|
||||
xAddEventListener(window, "scroll", closeOriginalImage);
|
||||
xAddEventListener(window, "resize", closeOriginalImage);
|
||||
|
||||
areabg.style.visibility = 'visible';
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 원본 이미지 보여준 후 닫는 함수
|
||||
**/
|
||||
function closeOriginalImage(evt) {
|
||||
var area = xGetElementById("fororiginalimagearea");
|
||||
if(area.style.visibility != "visible") return;
|
||||
area.style.visibility = "hidden";
|
||||
xGetElementById("fororiginalimageareabg").style.visibility = "hidden";
|
||||
|
||||
var sel_list = xGetElementsByTagName("select");
|
||||
for (var i = 0; i < sel_list.length; ++i) sel_list[i].style.visibility = "visible";
|
||||
|
||||
xRemoveEventListener(area, "mousedown", closeOriginalImage);
|
||||
xRemoveEventListener(window, "scroll", closeOriginalImage);
|
||||
xRemoveEventListener(window, "resize", closeOriginalImage);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 원본 이미지 드래그
|
||||
**/
|
||||
var origDragManager = {obj:null, isDrag:false}
|
||||
function origImageDragEnable(evt) {
|
||||
var e = new xEvent(evt);
|
||||
var obj = e.target;
|
||||
if(obj.id != "fororiginalimage") return;
|
||||
|
||||
obj.draggable = true;
|
||||
obj.startX = e.pageX;
|
||||
obj.startY = e.pageY;
|
||||
|
||||
if(!origDragManager.isDrag) {
|
||||
origDragManager.isDrag = true;
|
||||
xAddEventListener(document, "mousemove", origImageDragMouseMove, false);
|
||||
}
|
||||
|
||||
xAddEventListener(document, "mousedown", origImageDragMouseDown, false);
|
||||
}
|
||||
|
||||
function origImageDrag(obj, px, py) {
|
||||
var x = px - obj.startX;
|
||||
var y = py - obj.startY;
|
||||
|
||||
var areabg = xGetElementById("fororiginalimageareabg");
|
||||
xLeft(areabg, xLeft(areabg)+x);
|
||||
xTop(areabg, xTop(areabg)+y);
|
||||
|
||||
obj.startX = px;
|
||||
obj.startY = py;
|
||||
}
|
||||
|
||||
function origImageDragMouseDown(evt) {
|
||||
var e = new xEvent(evt);
|
||||
var obj = e.target;
|
||||
if(obj.id != "fororiginalimage" || !obj.draggable) return;
|
||||
|
||||
if(obj) {
|
||||
xPreventDefault(evt);
|
||||
obj.startX = e.pageX;
|
||||
obj.startY = e.pageY;
|
||||
origDragManager.obj = obj;
|
||||
xAddEventListener(document, 'mouseup', origImageDragMouseUp, false);
|
||||
origImageDrag(obj, e.pageX, e.pageY);
|
||||
}
|
||||
}
|
||||
|
||||
function origImageDragMouseUp(evt) {
|
||||
if(origDragManager.obj) {
|
||||
xPreventDefault(evt);
|
||||
xRemoveEventListener(document, 'mouseup', origImageDragMouseUp, false);
|
||||
xRemoveEventListener(document, 'mousemove', origImageDragMouseMove, false);
|
||||
xRemoveEventListener(document, 'mousemdown', origImageDragMouseDown, false);
|
||||
origDragManager.obj.draggable = false;
|
||||
origDragManager.obj = null;
|
||||
origDragManager.isDrag = false;
|
||||
}
|
||||
}
|
||||
|
||||
function origImageDragMouseMove(evt) {
|
||||
var e = new xEvent(evt);
|
||||
var obj = e.target;
|
||||
if(!obj) return;
|
||||
if(obj.id != "fororiginalimage") {
|
||||
xPreventDefault(evt);
|
||||
xRemoveEventListener(document, 'mouseup', origImageDragMouseUp, false);
|
||||
xRemoveEventListener(document, 'mousemove', origImageDragMouseMove, false);
|
||||
xRemoveEventListener(document, 'mousemdown', origImageDragMouseDown, false);
|
||||
origDragManager.obj.draggable = false;
|
||||
origDragManager.obj = null;
|
||||
origDragManager.isDrag = false;
|
||||
return;
|
||||
}
|
||||
|
||||
xPreventDefault(evt);
|
||||
origDragManager.obj = obj;
|
||||
xAddEventListener(document, 'mouseup', origImageDragMouseUp, false);
|
||||
origImageDrag(obj, e.pageX, e.pageY);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 이름을 클릭하였을 경우 메뉴를 보여주는 함수
|
||||
* 이름 클릭시 MemberModel::getMemberMenu 를 호출하여 그 결과를 보여줌 (사용자의 속성에 따라 메뉴가 달라지고 애드온의 연결을 하기 위해서임)
|
||||
**/
|
||||
xAddEventListener(document, 'click', chkMemberMenu);
|
||||
xAddEventListener(window, 'load', function() { setMemberMenuObjCursor(xGetElementsByTagName("div")); xGetElementsByTagName("span"); } );
|
||||
var loaded_member_menu_list = new Array();
|
||||
|
||||
// className = "member_*" 일 경우의 object가 클릭되면 해당 회원의 메뉴를 출력함
|
||||
function chkMemberMenu(evt) {
|
||||
var area = xGetElementById("membermenuarea");
|
||||
if(!area) return;
|
||||
if(area.style.visibility!="hidden") area.style.visibility="hidden";
|
||||
|
||||
var e = new xEvent(evt);
|
||||
if(!e) return;
|
||||
|
||||
var obj = e.target;
|
||||
while(obj) {
|
||||
if(obj && obj.className && obj.className.search("member_")!=-1) break;
|
||||
obj = obj.parentNode;
|
||||
}
|
||||
if(!obj || !obj.className || obj.className.search("member_")==-1) return;
|
||||
|
||||
if(obj.className.indexOf('member_-1')>=0) return;
|
||||
|
||||
var member_srl = parseInt(obj.className.replace(/member_([0-9]+)/ig,'$1').replace(/([^0-9]*)/ig,''),10);
|
||||
if(!member_srl) return;
|
||||
|
||||
// 현재 글의 mid, module를 구함
|
||||
var mid = current_mid;
|
||||
|
||||
// 서버에 메뉴를 요청
|
||||
var params = new Array();
|
||||
params["member_srl"] = member_srl;
|
||||
params["cur_mid"] = mid;
|
||||
params["cur_act"] = current_url.getQuery('act');
|
||||
params["page_x"] = e.pageX;
|
||||
params["page_y"] = e.pageY;
|
||||
|
||||
var response_tags = new Array("error","message","menu_list");
|
||||
|
||||
if(loaded_member_menu_list[member_srl]) {
|
||||
params["menu_list"] = loaded_member_menu_list[member_srl];
|
||||
displayMemberMenu(params, response_tags, params);
|
||||
return;
|
||||
}
|
||||
show_waiting_message = false;
|
||||
exec_xml("member", "getMemberMenu", params, displayMemberMenu, response_tags, params);
|
||||
show_waiting_message = true;
|
||||
}
|
||||
|
||||
function displayMemberMenu(ret_obj, response_tags, params) {
|
||||
var area = xGetElementById("membermenuarea");
|
||||
var menu_list = ret_obj['menu_list'];
|
||||
var member_srl = params["member_srl"];
|
||||
|
||||
var html = "";
|
||||
|
||||
if(loaded_member_menu_list[member_srl]) {
|
||||
html = loaded_member_menu_list[member_srl];
|
||||
} 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();
|
||||
|
||||
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 className = "item";
|
||||
//if(i==infos.length-1) className = "item";
|
||||
|
||||
if(!str || !func) continue;
|
||||
|
||||
html += "<span class=\""+className+"\" onmouseover=\"this.className='"+className+"_on'\" onmouseout=\"this.className='"+className+"'\" style=\"background:url("+icon+") no-repeat left center;\" onclick=\""+func+"\">"+str+"</span><br />";
|
||||
}
|
||||
}
|
||||
loaded_member_menu_list[member_srl] = html;
|
||||
}
|
||||
|
||||
if(html) {
|
||||
xInnerHtml('membermenuarea', "<div class=\"box\">"+html+"</div>");
|
||||
xWidth(area, xWidth(area));
|
||||
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";
|
||||
}
|
||||
}
|
||||
|
||||
// className = "member_*" 의 object의 cursor를 pointer로 본경
|
||||
function setMemberMenuObjCursor(obj) {
|
||||
for (var i = 0; i < obj.length; ++i) {
|
||||
var node = obj[i];
|
||||
if(node.className && node.className.search(/member_([0-9]+)/ig)!=-1) {
|
||||
var member_srl = parseInt(node.className.replace(/member_([0-9]+)/ig,'$1').replace(/([^0-9]*)/ig,''),10);
|
||||
if(member_srl<1) continue;
|
||||
node.style.cursor = "pointer";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 날짜 선택 (달력 열기)
|
||||
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) 쿠키값 변경
|
||||
function doChangeLangType(obj) {
|
||||
if(typeof(obj)=="string") {
|
||||
setLangType(obj);
|
||||
} else {
|
||||
var val = obj.options[obj.selectedIndex].value;
|
||||
setLangType(val);
|
||||
}
|
||||
location.reload();
|
||||
}
|
||||
function setLangType(lang_type) {
|
||||
var expire = new Date();
|
||||
expire.setTime(expire.getTime()+ (7000 * 24 * 3600000));
|
||||
xSetCookie('lang_type', lang_type, expire);
|
||||
}
|
||||
|
||||
/* 미리보기 */
|
||||
function doDocumentPreview(obj) {
|
||||
var fo_obj = obj;
|
||||
while(fo_obj.nodeName != "FORM") {
|
||||
fo_obj = fo_obj.parentNode;
|
||||
}
|
||||
if(fo_obj.nodeName != "FORM") return;
|
||||
|
||||
var content = fo_obj.content.value;
|
||||
|
||||
var win = window.open("","previewDocument","toolbars=no,width=700px;height=800px,scrollbars=yes,resizable=yes");
|
||||
|
||||
var dummy_obj = xGetElementById("previewDocument");
|
||||
|
||||
if(!dummy_obj) {
|
||||
var fo_code = '<form id="previewDocument" target="previewDocument" method="post" action="'+request_uri+'">'+
|
||||
'<input type="hidden" name="module" value="document" />'+
|
||||
'<input type="hidden" name="act" value="dispDocumentPreview" />'+
|
||||
'<input type="hidden" name="content" />'+
|
||||
'</form>';
|
||||
var dummy = xCreateElement("DIV");
|
||||
xInnerHtml(dummy, fo_code);
|
||||
window.document.body.insertBefore(dummy,window.document.body.lastChild);
|
||||
dummy_obj = xGetElementById("previewDocument");
|
||||
}
|
||||
|
||||
if(dummy_obj) {
|
||||
dummy_obj.content.value = content;
|
||||
dummy_obj.submit();
|
||||
}
|
||||
}
|
||||
|
||||
/* 스킨 정보 */
|
||||
function viewSkinInfo(module, skin) {
|
||||
popopen("./?module=module&act=dispModuleSkinInfo&selected_module="+module+"&skin="+skin, 'SkinInfo');
|
||||
}
|
||||
64
common/js/iePngFix.htc
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
<public:component>
|
||||
<public:attach event="onpropertychange" onevent="doFix()" />
|
||||
|
||||
<script type="text/javascript">
|
||||
// IE5.5+ PNG Alpha Fix v1.0RC4
|
||||
// (c) 2004-2005 Angus Turnbull http://www.twinhelix.com
|
||||
// This is licensed under the CC-GNU LGPL, version 2.1 or later.
|
||||
// For details, see: http://creativecommons.org/licenses/LGPL/2.1/
|
||||
// This must be a path to a blank image. That's all the configuration you need.
|
||||
|
||||
if (typeof blankImg == 'undefined') var blankImg = './common/tpl/images/blank.gif'; // 1x1px 짜리 투명 이미지(blank.gif)의 경로를 변경.
|
||||
var f = 'DXImageTransform.Microsoft.AlphaImageLoader';
|
||||
|
||||
function filt(s, m)
|
||||
{
|
||||
if (filters[f])
|
||||
{
|
||||
filters[f].enabled = s ? true : false;
|
||||
if (s) with (filters[f]) { src = s; sizingMethod = m }
|
||||
}
|
||||
else if (s) style.filter = 'progid:'+f+'(src="'+s+'",sizingMethod="'+m+'")';
|
||||
}
|
||||
|
||||
function doFix()
|
||||
{
|
||||
// Assume IE7 is OK.
|
||||
if (!/MSIE (5\.5|6\.)/.test(navigator.userAgent) ||
|
||||
(event && !/(background|src)/.test(event.propertyName))) return;
|
||||
|
||||
var bgImg = currentStyle.backgroundImage || style.backgroundImage;
|
||||
|
||||
if (tagName == 'IMG')
|
||||
{
|
||||
if ((/\.png$/i).test(src))
|
||||
{
|
||||
if (currentStyle.width == 'auto' && currentStyle.height == 'auto')
|
||||
style.width = offsetWidth + 'px';
|
||||
filt(src, 'image');
|
||||
// 'scale' 을 'image' 으로 변경하면 padding 적용시 나타나는 이미지 크기의 변화(잘못된 렌더링)를 방지할 수 있다. 하지만 border 표현에 문제가 생긴다.
|
||||
src = blankImg;
|
||||
}
|
||||
else if (src.indexOf(blankImg) < 0) filt();
|
||||
}
|
||||
else if (bgImg && bgImg != 'none')
|
||||
{
|
||||
if (bgImg.match(/^url[("']+(.*\.png)[)"']+$/i))
|
||||
{
|
||||
var s = RegExp.$1;
|
||||
if (currentStyle.width == 'auto' && currentStyle.height == 'auto')
|
||||
style.width = offsetWidth + 'px';
|
||||
style.backgroundImage = 'none';
|
||||
filt(s, 'crop');
|
||||
// IE link fix.
|
||||
for (var n = 0; n < childNodes.length; n++)
|
||||
if (childNodes[n].style) childNodes[n].style.position = 'relative';
|
||||
}
|
||||
else filt();
|
||||
}
|
||||
}
|
||||
|
||||
doFix();
|
||||
|
||||
</script>
|
||||
</public:component>
|
||||
636
common/js/tree_menu.js
Normal file
|
|
@ -0,0 +1,636 @@
|
|||
/**
|
||||
* @file tree_menu.js
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief xml파일을 읽어서 트리 메뉴를 그려줌
|
||||
*
|
||||
* 일단 이것 저것 꽁수가 좀 들어간 것이긴 한데 속도나 기타 면에서 쓸만함...\n
|
||||
* 다만 제로보드에 좀 특화되어 있어서....\n
|
||||
* GPL License 를 따릅니당~~~\n
|
||||
* 언제나 그렇듯 필요하신 분은 가져가서 쓰세요.\n
|
||||
* 더 좋게 개량하시면 공유해주세요~\n
|
||||
**/
|
||||
|
||||
// 트리메뉴에서 사용될 아이콘의 위치
|
||||
var tree_menu_icon_path = "./common/tpl/images/";
|
||||
|
||||
// 아이콘을 미리 생성해 놓음
|
||||
var tree_folder_icon = new Image();
|
||||
tree_folder_icon.src = tree_menu_icon_path+"page.gif";
|
||||
var tree_open_folder_icon = new Image();
|
||||
tree_open_folder_icon.src = tree_menu_icon_path+"page.gif";
|
||||
|
||||
var tree_minus_icon = new Image();
|
||||
tree_minus_icon.src = tree_menu_icon_path+"minus.gif";
|
||||
var tree_minus_bottom_icon = new Image();
|
||||
tree_minus_bottom_icon.src = tree_menu_icon_path+"minusbottom.gif";
|
||||
var tree_plus_icon = new Image();
|
||||
tree_plus_icon.src = tree_menu_icon_path+"plus.gif";
|
||||
var tree_plus_bottom_icon = new Image();
|
||||
tree_plus_bottom_icon.src = tree_menu_icon_path+"plusbottom.gif";
|
||||
|
||||
// 폴더를 모두 열고/닫기 위한 변수 설정
|
||||
var tree_menu_folder_list = new Array();
|
||||
|
||||
// 노드의 정보를 가지고 있을 변수
|
||||
var node_info_list = new Array();
|
||||
|
||||
// menu_id별로 요청된 클릭시 실행 될 callback_func
|
||||
var node_callback_func = new Array();
|
||||
|
||||
// menu_id별로 요청된 드래그시 실행될 callback_func
|
||||
var node_move_callback_func = new Array();
|
||||
|
||||
// 트리메뉴의 정보를 담고 있는 xml파일을 읽고 drawTreeMenu()를 호출하는 함수
|
||||
function loadTreeMenu(url, menu_id, zone_id, title, index_url , callback_func, manual_select_node_srl, callback_move_func) {
|
||||
// 일단 그릴 곳을 찾아서 사전 작업을 함 (그릴 곳이 없다면 아예 시도를 안함)
|
||||
var zone = xGetElementById(zone_id);
|
||||
if(typeof(zone)=="undefined") return;
|
||||
|
||||
// 관리가 아닌 사용일경우는 menu_id를 변경
|
||||
if(typeof(callback_func)=='undefined') menu_id = 'display_'+menu_id;
|
||||
|
||||
// 노드 정보들을 담을 변수 세팅
|
||||
node_info_list[menu_id] = new Array();
|
||||
|
||||
if(typeof(title)=='undefined') title = '';
|
||||
|
||||
// 사용자 정의 함수가 없다면 moveTreeMenu()라는 기본적인 동작을 하는 함수를 대입
|
||||
if(typeof(callback_func)=='undefined') {
|
||||
callback_func = moveTreeMenu;
|
||||
}
|
||||
|
||||
if(typeof(callback_move_func)=='undefined') {
|
||||
callback_move_func = null;
|
||||
}
|
||||
|
||||
// 한 페이지에 다수의 menu_id가 있을 수 있으므로 menu_id별로 함수를 저장
|
||||
node_callback_func[menu_id] = callback_func;
|
||||
node_move_callback_func[menu_id] = callback_move_func;
|
||||
|
||||
// 직접 선택시키려는 메뉴 인자값이 없으면 초기화
|
||||
if(typeof(manual_select_node_srl)=='undefined') manual_select_node_srl = '';
|
||||
|
||||
// xml_handler를 이용해서 직접 메뉴 xml파일(layout module에서 생성)을 읽음
|
||||
if(!url) return;
|
||||
|
||||
var oXml = new xml_handler();
|
||||
oXml.reset();
|
||||
oXml.xml_path = url;
|
||||
|
||||
if(!index_url) index_url= "#";
|
||||
|
||||
// menu_id, zone_id는 계속 달고 다녀야함
|
||||
var param = {"menu_id":menu_id, "zone_id":zone_id, "title":title, "index_url":index_url, "manual_select_node_srl":manual_select_node_srl}
|
||||
|
||||
// 요청후 drawTreeMenu()함수를 호출 (xml_handler.js에서 request method를 직접 이용)
|
||||
oXml.request(drawTreeMenu, oXml, null, null, null, param);
|
||||
}
|
||||
|
||||
// 트리메뉴 XML정보를 이용해서 정해진 zone에 출력
|
||||
var manual_select_node_srl = '';
|
||||
function drawTreeMenu(oXml, callback_func, resopnse_tags, null_func, param) {
|
||||
// 그리기 위한 object를 찾아 놓음
|
||||
var menu_id = param.menu_id;
|
||||
var zone_id = param.zone_id;
|
||||
var title = param.title;
|
||||
var index_url = param.index_url;
|
||||
if(param.manual_select_node_srl) manual_select_node_srl = param.manual_select_node_srl;
|
||||
var zone = xGetElementById(zone_id);
|
||||
var html = "";
|
||||
|
||||
if(title) html = '<div style="cursor:pointer;padding-left:18px;margin-bottom:5px;background:url('+tree_menu_icon_path+'folder.gif) no-repeat left;" onclick="location.href=\''+index_url+'\';return false;" >'+title+'</div>';
|
||||
|
||||
var xmlDoc = oXml.getResponseXml();
|
||||
if(!xmlDoc) {
|
||||
xInnerHtml(zone, html);
|
||||
return null;
|
||||
}
|
||||
|
||||
tree_menu_folder_list[menu_id] = new Array();
|
||||
|
||||
// node 태그에 해당하는 값들을 가져와서 html을 작성
|
||||
var node_list = xmlDoc.getElementsByTagName("node");
|
||||
if(node_list.length>0) {
|
||||
var root = xmlDoc.getElementsByTagName("root")[0];
|
||||
var output = drawNode(root, menu_id);
|
||||
html += output.html;
|
||||
}
|
||||
|
||||
// 출력하려는 zone이 없다면 load후에 출력하도록 함
|
||||
if(!zone) {
|
||||
xAddEventListener(window, 'load', function() { drawTeeMenu(zone_id, menu_id, html); });
|
||||
|
||||
// 출력하려는 zone을 찾아졌다면 바로 출력
|
||||
} else {
|
||||
xInnerHtml(zone, html);
|
||||
if(manual_select_node_srl) manualSelectNode(menu_id, manual_select_node_srl);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// 페이지 랜더링 중에 메뉴의 html이 완성되었을때 window.onload event 후에 그리기 재시도를 하게 될 함수
|
||||
function drawTeeMenu(zone_id, menu_id, html) {
|
||||
xInnerHtml(zone_id, html);
|
||||
if(manual_select_node_srl) manualSelectNode(menu_id, manual_select_node_srl);
|
||||
}
|
||||
|
||||
// root부터 시작해서 recursive하게 노드를 표혐
|
||||
function drawNode(parent_node, menu_id) {
|
||||
var output = {html:"", expand:"N"}
|
||||
|
||||
for (var i=0; i< parent_node.childNodes.length; i++) {
|
||||
var html = "";
|
||||
|
||||
// nodeName이 node가 아니면 패스~
|
||||
var node = parent_node.childNodes.item(i);
|
||||
if(node.nodeName!="node") continue;
|
||||
|
||||
// node의 기본 변수들 체크
|
||||
var node_srl = node.getAttribute("node_srl");
|
||||
var text = node.getAttribute("text");
|
||||
var url = node.getAttribute("url");
|
||||
var expand = node.getAttribute("expand");
|
||||
|
||||
if(!text) continue;
|
||||
|
||||
// 자식 노드가 있는지 확인
|
||||
var hasChild = false;
|
||||
if(node.hasChildNodes()) hasChild = true;
|
||||
|
||||
// nextSibling가 있는지 확인
|
||||
var hasNextSibling = false;
|
||||
if(i==parent_node.childNodes.length-1) hasNextSibling = true;
|
||||
|
||||
// 후에 사용하기 위해 node_info_list에 node_srl을 값으로 하여 node object 추가
|
||||
node_info_list[menu_id][node_srl] = node;
|
||||
|
||||
// zone_id 값을 세팅
|
||||
var zone_id = "menu_"+menu_id+"_"+node_srl;
|
||||
tree_menu_folder_list[menu_id][tree_menu_folder_list[menu_id].length] = zone_id;
|
||||
|
||||
// url을 확인하여 현재의 url과 동일하다고 판단되면 manual_select_node_srl 에 값을 추가 (관리자페이지일 경우는 무시함)
|
||||
if(node_callback_func[menu_id] == moveTreeMenu && url && current_url.getQuery('mid') == url) manual_select_node_srl = node_srl;
|
||||
|
||||
// manual_select_node_srl이 node_srl과 같으면 펼침으로 처리
|
||||
if(manual_select_node_srl == node_srl) expand = "Y";
|
||||
|
||||
// 아이콘 설정
|
||||
var line_icon = null;
|
||||
var folder_icon = null;
|
||||
|
||||
// 자식 노드가 있을 경우 자식 노드의 html을 구해옴
|
||||
var child_output = null;
|
||||
var child_html = "";
|
||||
if(hasChild) {
|
||||
// 자식 노드의 zone id를 세팅
|
||||
var child_zone_id = zone_id+"_child";
|
||||
tree_menu_folder_list[menu_id][tree_menu_folder_list[menu_id].length] = child_zone_id;
|
||||
|
||||
// html을 받아옴
|
||||
child_output = drawNode(node, menu_id);
|
||||
var chtml = child_output.html;
|
||||
var cexpand = child_output.expand;
|
||||
if(cexpand == "Y") expand = "Y";
|
||||
|
||||
// 무조건 펼침이 아닐 경우
|
||||
if(expand!="Y") {
|
||||
if(!hasNextSibling) child_html += '<div id="'+child_zone_id+'"style="display:none;padding-left:16px;background:url('+tree_menu_icon_path+'line.gif) repeat-y left;">'+chtml+'</div>';
|
||||
else child_html += '<div id="'+child_zone_id+'" style="display:none;padding-left:16px;">'+chtml+'</div>';
|
||||
// 무조건 펼침일 경우
|
||||
} else {
|
||||
if(!hasNextSibling) child_html += '<div id="'+child_zone_id+'"style="display:block;padding-left:16px;background:url('+tree_menu_icon_path+'line.gif) repeat-y left;">'+chtml+'</div>';
|
||||
else child_html += '<div id="'+child_zone_id+'" style="display:block;padding-left:16px;">'+chtml+'</div>';
|
||||
}
|
||||
}
|
||||
|
||||
// 자식 노드가 있는지 확인하여 있으면 아이콘을 바꿈
|
||||
if(hasChild) {
|
||||
// 무조건 펼침이 아닐 경우
|
||||
if(expand != "Y") {
|
||||
if(!hasNextSibling) {
|
||||
line_icon = "plus";
|
||||
folder_icon = "page";
|
||||
} else {
|
||||
line_icon = "plusbottom";
|
||||
folder_icon = "page";
|
||||
}
|
||||
// 무조건 펼침일 경우
|
||||
} else {
|
||||
if(!hasNextSibling) {
|
||||
line_icon = "minus";
|
||||
folder_icon = "page";
|
||||
} else {
|
||||
line_icon = "minusbottom";
|
||||
folder_icon = "page";
|
||||
}
|
||||
}
|
||||
|
||||
// 자식 노드가 없을 경우
|
||||
} else {
|
||||
if(hasNextSibling) {
|
||||
line_icon = "joinbottom";
|
||||
folder_icon = "page";
|
||||
} else {
|
||||
line_icon = "join";
|
||||
folder_icon = "page";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// html 작성
|
||||
html += '<div id="'+zone_id+'" style="margin:0px;font-size:9pt;">';
|
||||
|
||||
if(hasChild) html+= '<span style="cursor:pointer;" onclick="toggleFolder(\''+zone_id+'\');return false;">';
|
||||
else html+= '<span>';
|
||||
|
||||
html += '<img id="'+zone_id+'_line_icon" src="'+tree_menu_icon_path+line_icon+'.gif" alt="line" align="top" /><img id="'+zone_id+'_folder_icon" src="'+tree_menu_icon_path+folder_icon+'.gif" alt="folder" align="top" /></span>';
|
||||
|
||||
var chk_enable = xGetElementById(menu_id+"_enable_move");
|
||||
if(chk_enable) {
|
||||
html += '<span><span id="'+zone_id+'_node" style="cursor:move;padding:1px 2px 1px 2px;margin-top:1px;cursor:pointer;" onmousedown="doNodeFunc(this, \''+menu_id+'\','+node_srl+',\''+zone_id+'\');">';
|
||||
} else {
|
||||
html += '<span><span id="'+zone_id+'_node" style="cursor:move;padding:1px 2px 1px 2px;margin-top:1px;cursor:pointer;" onclick="selectNode(\''+menu_id+'\','+node_srl+',\''+zone_id+'\')" ondblclick="toggleFolder(\''+zone_id+'\')">';
|
||||
}
|
||||
|
||||
html += text+'</span></span>';
|
||||
|
||||
html += child_html;
|
||||
|
||||
html += '</div>';
|
||||
|
||||
output.html += html;
|
||||
|
||||
if(expand=="Y") output.expand = "Y";
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
// 관리자 모드일 경우 *_enable_move 의 값에 따라 메뉴 이동을 시키거나 정보를 보여주도록 변경
|
||||
function doNodeFunc(obj, menu_id, node_srl, zone_id) {
|
||||
var chk_enable = xGetElementById(menu_id+"_enable_move");
|
||||
if(!chk_enable || chk_enable.checked!=true || !obj) {
|
||||
selectNode(menu_id,node_srl,zone_id);
|
||||
return;
|
||||
}
|
||||
|
||||
deSelectNode();
|
||||
tree_drag_enable(obj,tree_drag_start,tree_drag,tree_drag_end);
|
||||
}
|
||||
|
||||
// 수동으로 메뉴를 선택하도록 함
|
||||
function manualSelectNode(menu_id, node_srl) {
|
||||
var zone_id = "menu_"+menu_id+"_"+node_srl;
|
||||
selectNode(menu_id,node_srl,zone_id,false);
|
||||
return;
|
||||
}
|
||||
|
||||
// 노드의 폴더 아이콘 클릭시
|
||||
function toggleFolder(zone_id) {
|
||||
// 아이콘을 클릭한 대상을 찾아봄
|
||||
var child_zone = xGetElementById(zone_id+"_child");
|
||||
if(!child_zone) return;
|
||||
|
||||
// 대상의 아이콘들 찾음
|
||||
var line_icon = xGetElementById(zone_id+'_line_icon');
|
||||
var folder_icon = xGetElementById(zone_id+'_folder_icon');
|
||||
|
||||
var height = 0;
|
||||
|
||||
// 대상의 자식 노드들이 숨겨져 있다면 열고 아니면 닫기
|
||||
if(child_zone.style.display == "block") {
|
||||
height = xHeight(child_zone)*-1;
|
||||
child_zone.style.display = "none";
|
||||
if(line_icon.src.indexOf('bottom')>0) line_icon.src = tree_plus_bottom_icon.src;
|
||||
else line_icon.src = tree_plus_icon.src;
|
||||
folder_icon.src = tree_folder_icon.src;
|
||||
} else {
|
||||
if(line_icon.src.indexOf('bottom')>0) line_icon.src = tree_minus_bottom_icon.src;
|
||||
else line_icon.src = tree_minus_icon.src;
|
||||
folder_icon.src = tree_open_folder_icon.src;
|
||||
child_zone.style.display = "block";
|
||||
height = xHeight(child_zone);
|
||||
}
|
||||
if(typeof(fixAdminLayoutFooter)=='function') fixAdminLayoutFooter( height );
|
||||
}
|
||||
|
||||
// 노드의 글자 선택시
|
||||
var prev_selected_node = null;
|
||||
function selectNode(menu_id, node_srl, zone_id, move_url) {
|
||||
// 선택된 노드를 찾아봄
|
||||
var node_zone = xGetElementById(zone_id+'_node');
|
||||
if(!node_zone) return;
|
||||
|
||||
// 이전에 선택된 노드가 있었다면 원래데로 돌림
|
||||
if(prev_selected_node) {
|
||||
var prev_zone = xGetElementById(prev_selected_node.id);
|
||||
if(prev_zone) {
|
||||
prev_zone.style.backgroundColor = "#ffffff";
|
||||
prev_zone.style.fontWeight = "normal";
|
||||
prev_zone.style.color = "#000000";
|
||||
}
|
||||
}
|
||||
|
||||
// 선택된 노드의 글자를 변경
|
||||
prev_selected_node = node_zone;
|
||||
node_zone.style.backgroundColor = "#0e078f";
|
||||
node_zone.style.fontWeight = "bold";
|
||||
node_zone.style.color = "#FFFFFF";
|
||||
|
||||
// 함수 실행
|
||||
if(typeof(move_url)=="undefined"||move_url==true) {
|
||||
var func = node_callback_func[menu_id];
|
||||
func(menu_id, node_info_list[menu_id][node_srl]);
|
||||
//toggleFolder(zone_id);
|
||||
}
|
||||
}
|
||||
|
||||
// 선택된 노드의 표시를 없앰
|
||||
function deSelectNode() {
|
||||
// 이전에 선택된 노드가 있었다면 원래데로 돌림
|
||||
if(!prev_selected_node) return;
|
||||
prev_selected_node.style.backgroundColor = "#ffffff";
|
||||
prev_selected_node.style.fontWeight = "normal";
|
||||
prev_selected_node.style.color = "#000000";
|
||||
}
|
||||
|
||||
|
||||
// 모두 닫기
|
||||
function closeAllTreeMenu(menu_id) {
|
||||
for(var i in tree_menu_folder_list[menu_id]) {
|
||||
var zone_id = tree_menu_folder_list[menu_id][i];
|
||||
var zone = xGetElementById(zone_id);
|
||||
if(!zone) continue;
|
||||
var child_zone = xGetElementById(zone_id+"_child");
|
||||
if(!child_zone) continue;
|
||||
|
||||
child_zone.style.display = "block";
|
||||
toggleFolder(zone_id);
|
||||
}
|
||||
}
|
||||
|
||||
// 모두 열기
|
||||
function openAllTreeMenu(menu_id) {
|
||||
for(var i in tree_menu_folder_list[menu_id]) {
|
||||
var zone_id = tree_menu_folder_list[menu_id][i];
|
||||
var zone = xGetElementById(zone_id);
|
||||
if(!zone) continue;
|
||||
var child_zone = xGetElementById(zone_id+"_child");
|
||||
if(!child_zone) continue;
|
||||
|
||||
child_zone.style.display = "none";
|
||||
toggleFolder(zone_id);
|
||||
}
|
||||
}
|
||||
|
||||
// 메뉴 클릭시 기본으로 동작할 함수 (사용자 임의 함수로 대체될 수 있음)
|
||||
function moveTreeMenu(menu_id, node) {
|
||||
// url과 open_window값을 구함
|
||||
var node_srl = node.getAttribute("node_srl");
|
||||
var url = node.getAttribute("url");
|
||||
var open_window = node.getAttribute("open_window");
|
||||
var hasChild = false;
|
||||
if(node.hasChildNodes()) hasChild = true;
|
||||
|
||||
// url이 없고 child가 있으면 해당 폴더 토글한다
|
||||
if(!url && hasChild) {
|
||||
var zone_id = "menu_"+menu_id+"_"+node_srl;
|
||||
toggleFolder(zone_id);
|
||||
return;
|
||||
}
|
||||
|
||||
// url이 있으면 url을 분석한다 (제로보드 특화된 부분. url이 http나 ftp등으로 시작하면 그냥 해당 url 열기)
|
||||
if(url) {
|
||||
// http, ftp등의 연결이 아닌 경우 제로보드용으로 처리
|
||||
if(url.indexOf('://')==-1) url = "./?"+url;
|
||||
|
||||
// open_window에 따라서 처리
|
||||
if(open_window != "Y") location.href=url;
|
||||
else {
|
||||
var win = window.open(url);
|
||||
win.focus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 메뉴 드래그 중이라는 상황을 간직할 변수
|
||||
var tree_drag_manager = {obj:null, isDrag:false}
|
||||
var tree_tmp_object = new Array();
|
||||
var tree_disappear = 0;
|
||||
|
||||
/**
|
||||
* 메뉴 드래깅을 위한 함수들
|
||||
**/
|
||||
// 드래깅시 보여줄 임시 object를 생성하는 함수
|
||||
function tree_create_tmp_object(obj) {
|
||||
var tmp_obj = tree_tmp_object[obj.id];
|
||||
if(tmp_obj) return tmp_obj;
|
||||
|
||||
tmp_obj = xCreateElement('DIV');
|
||||
tmp_obj.id = obj.id + '_tmp';
|
||||
tmp_obj.style.display = 'none';
|
||||
tmp_obj.style.position = 'absolute';
|
||||
tmp_obj.style.backgroundColor = obj.style.backgroundColor;
|
||||
tmp_obj.style.fontSize = obj.style.fontSize;
|
||||
tmp_obj.style.fontFamlily = obj.style.fontFamlily;
|
||||
tmp_obj.style.color = "#5277ff";
|
||||
tmp_obj.style.opacity = 1;
|
||||
tmp_obj.style.filter = 'alpha(opacity=100)';
|
||||
|
||||
document.body.appendChild(tmp_obj);
|
||||
tree_tmp_object[obj.id] = tmp_obj;
|
||||
return tmp_obj;
|
||||
}
|
||||
|
||||
// 기생성된 임시 object를 찾아서 return, 없으면 만들어서 return
|
||||
function tree_get_tmp_object(obj) {
|
||||
var tmp_obj = tree_tmp_object[obj.id];
|
||||
if(!tmp_obj) tmp_obj = tree_create_tmp_object(obj);
|
||||
return tmp_obj;
|
||||
}
|
||||
|
||||
// 메뉴에 마우스 클릭이 일어난 시점에 드래그를 위한 제일 첫 동작 (해당 object에 각종 함수나 상태변수 설정)
|
||||
function tree_drag_enable(child_obj, funcDragStart, funcDrag, funcDragEnd) {
|
||||
// 클릭이 일어난 메뉴의 상위 object를 찾음
|
||||
var obj = child_obj.parentNode.parentNode;
|
||||
|
||||
// 상위 object에 드래그 가능하다는 상태와 각 드래그 관련 함수를 설정
|
||||
obj.draggable = true;
|
||||
obj.drag_start = funcDragStart;
|
||||
obj.drag = funcDrag;
|
||||
obj.drag_end = funcDragEnd;
|
||||
obj.target_id = null;
|
||||
|
||||
// 드래그 가능하지 않다면 드래그 가능하도록 상태 지정하고 mousemove이벤트 등록
|
||||
if (!tree_drag_manager.isDrag) {
|
||||
tree_drag_manager.isDrag = true;
|
||||
xAddEventListener(document, 'mousemove', tree_drag_mouse_move, false);
|
||||
}
|
||||
|
||||
// mousedown이벤트 값을 지정
|
||||
xAddEventListener(obj, 'mousedown', tree_mouse_down, false);
|
||||
}
|
||||
|
||||
// 드래그를 시작할때 호출되는 함수 (이동되는 형태를 보여주기 위한 작업을 함)
|
||||
function tree_drag_start(tobj, px, py) {
|
||||
var obj = tree_get_tmp_object(tobj);
|
||||
|
||||
xInnerHtml(obj, xInnerHtml(tobj));
|
||||
|
||||
tobj.source_color = tobj.style.color;
|
||||
tobj.style.color = "#BBBBBB";
|
||||
|
||||
xLeft(obj, xPageX(tobj));
|
||||
xTop(obj, xPageY(tobj));
|
||||
xWidth(obj, xWidth(tobj));
|
||||
xHeight(obj, xHeight(tobj));
|
||||
|
||||
xDisplay(obj, 'block');
|
||||
}
|
||||
|
||||
// 드래그 시작후 마우스를 이동할때 발생되는 이벤트에 의해 실행되는 함수
|
||||
function tree_drag(tobj, dx, dy) {
|
||||
var obj = tree_get_tmp_object(tobj);
|
||||
xLeft(obj, parseInt(xPageX(obj),10) + parseInt(dx,10));
|
||||
xTop(obj, parseInt(xPageY(obj),10) + parseInt(dy,10));
|
||||
|
||||
var menu_id = tobj.id.replace(/menu_/,'');
|
||||
menu_id = menu_id.replace(/_([0-9]+)$/,'');
|
||||
if(!menu_id) return;
|
||||
|
||||
for(var node_srl in node_info_list[menu_id]) {
|
||||
var zone_id = "menu_"+menu_id+"_"+node_srl;
|
||||
var target_obj = xGetElementById(zone_id);
|
||||
|
||||
var hh = parseInt(xHeight(target_obj),10);
|
||||
var h = parseInt(parseInt(xHeight(target_obj),10)/2,10);
|
||||
|
||||
var l = xPageX(target_obj);
|
||||
var t = xPageY(target_obj);
|
||||
var ll = parseInt(l,10) + parseInt(xWidth(target_obj),10);
|
||||
var tt = parseInt(t,10) + hh;
|
||||
|
||||
if( tobj != target_obj && tobj.xDPX >= l && tobj.xDPX <= ll) {
|
||||
if(tobj.xDPY >= t && tobj.xDPY < tt-h) {
|
||||
try {
|
||||
target_obj.parentNode.insertBefore(tobj, target_obj);
|
||||
tobj.target_id = target_obj.id;
|
||||
} catch(e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 드래그 종료 (이동되는 object가 이동할 곳에 서서히 이동되는 것처럼 보이는 효과)
|
||||
function tree_drag_end(tobj, px, py) {
|
||||
var obj = tree_get_tmp_object(tobj);
|
||||
tree_disappear = tree_disapear_object(obj, tobj);
|
||||
tree_drag_disable(tobj.id);
|
||||
}
|
||||
|
||||
// 스르르 사라지게 함;;
|
||||
function tree_disapear_object(obj, tobj) {
|
||||
var it = 150;
|
||||
var ib = 15;
|
||||
|
||||
var x = parseInt(xPageX(obj),10);
|
||||
var y = parseInt(xPageY(obj),10);
|
||||
var ldt = (x - parseInt(xPageX(tobj),10)) / ib;
|
||||
var tdt = (y - parseInt(xPageY(tobj),10)) / ib;
|
||||
|
||||
return setInterval(function() {
|
||||
if(ib < 1) {
|
||||
clearInterval(tree_disappear);
|
||||
xInnerHtml(tobj,xInnerHtml(obj));
|
||||
xInnerHtml(obj,'');
|
||||
xDisplay(obj, 'none');
|
||||
return;
|
||||
}
|
||||
ib -= 5;
|
||||
x-=ldt;
|
||||
y-=tdt;
|
||||
xLeft(obj, x);
|
||||
xTop(obj, y);
|
||||
}, it/ib);
|
||||
}
|
||||
|
||||
// 마우스다운 이벤트 발생시 호출됨
|
||||
function tree_mouse_down(e) {
|
||||
var evt = new xEvent(e);
|
||||
var obj = evt.target;
|
||||
|
||||
while(obj && !obj.draggable) {
|
||||
obj = xParent(obj, true);
|
||||
}
|
||||
|
||||
if(obj) {
|
||||
xPreventDefault(e);
|
||||
obj.xDPX = evt.pageX;
|
||||
obj.xDPY = evt.pageY;
|
||||
tree_drag_manager.obj = obj;
|
||||
xAddEventListener(document, 'mouseup', tree_mouse_up, false);
|
||||
if (obj.drag_start) obj.drag_start(obj, evt.pageX, evt.pageY);
|
||||
}
|
||||
}
|
||||
|
||||
// 마우스 버튼을 놓았을때 동작될 함수 (각종 이벤트 해제 및 변수 설정 초기화)
|
||||
function tree_mouse_up(e) {
|
||||
if (tree_drag_manager.obj) {
|
||||
xPreventDefault(e);
|
||||
xRemoveEventListener(document, 'mouseup', tree_mouse_up, false);
|
||||
|
||||
if (tree_drag_manager.obj.drag_end) {
|
||||
var evt = new xEvent(e);
|
||||
tree_drag_manager.obj.drag_end(tree_drag_manager.obj, evt.pageX, evt.pageY);
|
||||
}
|
||||
|
||||
tree_drag_manager.obj = null;
|
||||
tree_drag_manager.isDrag = false;
|
||||
}
|
||||
}
|
||||
|
||||
// 드래그할때의 object이동등을 담당
|
||||
function tree_drag_mouse_move(e) {
|
||||
var evt = new xEvent(e);
|
||||
|
||||
if (tree_drag_manager.obj) {
|
||||
xPreventDefault(e);
|
||||
|
||||
var obj = tree_drag_manager.obj;
|
||||
var dx = evt.pageX - obj.xDPX;
|
||||
var dy = evt.pageY - obj.xDPY;
|
||||
|
||||
obj.xDPX = evt.pageX;
|
||||
obj.xDPY = evt.pageY;
|
||||
|
||||
if (obj.drag) {
|
||||
obj.drag(obj, dx, dy);
|
||||
} else {
|
||||
xMoveTo(obj, xLeft(obj) + dx, xTop(obj) + dy);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 해당 object 에 더 이상 drag가 되지 않도록 설정
|
||||
function tree_drag_disable(id) {
|
||||
if (!tree_drag_manager) return;
|
||||
var obj = xGetElementById(id);
|
||||
obj.draggable = false;
|
||||
obj.drag_start = null;
|
||||
obj.drag = null;
|
||||
obj.drag_end = null;
|
||||
obj.style.color = obj.source_color;
|
||||
|
||||
xRemoveEventListener(obj, 'mousedown', tree_mouse_down, false);
|
||||
|
||||
if(obj.id && obj.target_id && obj.id!=obj.target_id) {
|
||||
var menu_id = obj.id.replace(/menu_/,'');
|
||||
menu_id = menu_id.replace(/_([0-9]+)$/,'');
|
||||
if(menu_id) {
|
||||
var callback_move_func = node_move_callback_func[menu_id];
|
||||
if(callback_move_func) callback_move_func(menu_id, obj.id, obj.target_id);
|
||||
}
|
||||
}
|
||||
obj.target_id = null;
|
||||
}
|
||||
621
common/js/x.js
Normal file
|
|
@ -0,0 +1,621 @@
|
|||
/**
|
||||
* x.js compiled from X 4.0 with XC 0.27b.
|
||||
* Distributed by GNU LGPL. For copyrights, license, documentation and more visit Cross-Browser.com
|
||||
* Copyright 2001-2005 Michael Foster (Cross-Browser.com)
|
||||
**/
|
||||
|
||||
var xOp7Up,xOp6Dn,xIE4Up,xIE4,xIE5,xIE6,xNN4,xUA=navigator.userAgent.toLowerCase();
|
||||
if(window.opera){
|
||||
var i=xUA.indexOf('opera');
|
||||
if(i!=-1){
|
||||
var v=parseInt(xUA.charAt(i+6));
|
||||
xOp7Up=v>=7;
|
||||
xOp6Dn=v<7;
|
||||
}
|
||||
}
|
||||
else if(navigator.vendor!='KDE' && document.all && xUA.indexOf('msie')!=-1){
|
||||
xIE4Up=parseFloat(navigator.appVersion)>=4;
|
||||
xIE4=xUA.indexOf('msie 4')!=-1;
|
||||
xIE5=xUA.indexOf('msie 5')!=-1;
|
||||
xIE6=xUA.indexOf('msie 6')!=-1;
|
||||
}
|
||||
else if(document.layers){xNN4=true;}
|
||||
var xMac=xUA.indexOf('mac')!=-1;
|
||||
|
||||
// (element, event(without 'on'), event listener(function name)[, caption])
|
||||
function xAddEventListener(e,eT,eL,cap)
|
||||
{
|
||||
if(!(e=xGetElementById(e))) return;
|
||||
eT=eT.toLowerCase();
|
||||
if((!xIE4Up && !xOp7Up) && e==window) {
|
||||
if(eT=='resize') { window.xPCW=xClientWidth(); window.xPCH=xClientHeight(); window.xREL=eL; xResizeEvent(); return; }
|
||||
if(eT=='scroll') { window.xPSL=xScrollLeft(); window.xPST=xScrollTop(); window.xSEL=eL; xScrollEvent(); return; }
|
||||
}
|
||||
var eh='e.on'+eT+'=eL';
|
||||
if(e.addEventListener) e.addEventListener(eT,eL,cap);
|
||||
else if(e.attachEvent) e.attachEvent('on'+eT,eL);
|
||||
else eval(eh);
|
||||
}
|
||||
// called only from the above
|
||||
function xResizeEvent()
|
||||
{
|
||||
if (window.xREL) setTimeout('xResizeEvent()', 250);
|
||||
var cw = xClientWidth(), ch = xClientHeight();
|
||||
if (window.xPCW != cw || window.xPCH != ch) { window.xPCW = cw; window.xPCH = ch; if (window.xREL) window.xREL(); }
|
||||
}
|
||||
|
||||
function xScrollEvent()
|
||||
{
|
||||
if (window.xSEL) setTimeout('xScrollEvent()', 250);
|
||||
var sl = xScrollLeft(), st = xScrollTop();
|
||||
if (window.xPSL != sl || window.xPST != st) { window.xPSL = sl; window.xPST = st; if (window.xSEL) window.xSEL(); }
|
||||
}
|
||||
|
||||
function xAppendChild(oParent, oChild)
|
||||
{
|
||||
if (oParent.appendChild) return oParent.appendChild(oChild);
|
||||
else return null;
|
||||
}
|
||||
|
||||
function xClientHeight()
|
||||
{
|
||||
var h=0;
|
||||
if(xOp6Dn) h=window.innerHeight;
|
||||
else if(document.compatMode == 'CSS1Compat' && !window.opera && document.documentElement && document.documentElement.clientHeight)
|
||||
h=document.documentElement.clientHeight;
|
||||
else if(document.body && document.body.clientHeight)
|
||||
h=document.body.clientHeight;
|
||||
else if(xDef(window.innerWidth,window.innerHeight,document.width)) {
|
||||
h=window.innerHeight;
|
||||
if(document.width>window.innerWidth) h-=16;
|
||||
}
|
||||
return h;
|
||||
}
|
||||
|
||||
function xClientWidth()
|
||||
{
|
||||
var w=0;
|
||||
if(xOp6Dn) w=window.innerWidth;
|
||||
else if(document.compatMode == 'CSS1Compat' && !window.opera && document.documentElement && document.documentElement.clientWidth)
|
||||
w=document.documentElement.clientWidth;
|
||||
else if(document.body && document.body.clientWidth)
|
||||
w=document.body.clientWidth;
|
||||
else if(xDef(window.innerWidth,window.innerHeight,document.height)) {
|
||||
w=window.innerWidth;
|
||||
if(document.height>window.innerHeight) w-=16;
|
||||
}
|
||||
return w;
|
||||
}
|
||||
|
||||
function xCreateElement(sTag)
|
||||
{
|
||||
if (document.createElement) return document.createElement(sTag);
|
||||
else return null;
|
||||
}
|
||||
|
||||
function xDef()
|
||||
{
|
||||
for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])=='undefined') return false;}
|
||||
return true;
|
||||
}
|
||||
|
||||
function xDeleteCookie(name, path)
|
||||
{
|
||||
if (xGetCookie(name)) {
|
||||
document.cookie = name + "=" +
|
||||
"; path=" + ((!path) ? "/" : path) +
|
||||
"; expires=" + new Date(0).toGMTString();
|
||||
}
|
||||
}
|
||||
|
||||
function xDisplay(e,s)
|
||||
{
|
||||
if(!(e=xGetElementById(e))) return null;
|
||||
if(e.style && xDef(e.style.display)) {
|
||||
if (xStr(s)) e.style.display = s;
|
||||
return e.style.display;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function xEvent(evt) // object prototype
|
||||
{
|
||||
var e = evt || window.event;
|
||||
if(!e) return;
|
||||
if(e.type) this.type = e.type;
|
||||
if(e.target) this.target = e.target;
|
||||
else if(e.srcElement) this.target = e.srcElement;
|
||||
|
||||
// Section B
|
||||
if (e.relatedTarget) this.relatedTarget = e.relatedTarget;
|
||||
else if (e.type == 'mouseover' && e.fromElement) this.relatedTarget = e.fromElement;
|
||||
else if (e.type == 'mouseout') this.relatedTarget = e.toElement;
|
||||
// End Section B
|
||||
|
||||
if(xOp6Dn) { this.pageX = e.clientX; this.pageY = e.clientY; }
|
||||
else if(xDef(e.pageX,e.pageY)) { this.pageX = e.pageX; this.pageY = e.pageY; }
|
||||
else if(xDef(e.clientX,e.clientY)) { this.pageX = e.clientX + xScrollLeft(); this.pageY = e.clientY + xScrollTop(); }
|
||||
|
||||
// Section A
|
||||
if (xDef(e.offsetX,e.offsetY)) {
|
||||
this.offsetX = e.offsetX;
|
||||
this.offsetY = e.offsetY;
|
||||
}
|
||||
else if (xDef(e.layerX,e.layerY)) {
|
||||
this.offsetX = e.layerX;
|
||||
this.offsetY = e.layerY;
|
||||
}
|
||||
else {
|
||||
this.offsetX = this.pageX - xPageX(this.target);
|
||||
this.offsetY = this.pageY - xPageY(this.target);
|
||||
}
|
||||
// End Section A
|
||||
|
||||
if (e.keyCode) { this.keyCode = e.keyCode; } // for moz/fb, if keyCode==0 use which
|
||||
else if (xDef(e.which) && e.type.indexOf('key')!=-1) { this.keyCode = e.which; }
|
||||
|
||||
this.shiftKey = e.shiftKey;
|
||||
this.ctrlKey = e.ctrlKey;
|
||||
this.altKey = e.altKey;
|
||||
}
|
||||
|
||||
function xFirstChild(e, t)
|
||||
{
|
||||
var c = e ? e.firstChild : null;
|
||||
if (t) while (c && c.nodeName != t) { c = c.nextSibling; }
|
||||
else while (c && c.nodeType != 1) { c = c.nextSibling; }
|
||||
return c;
|
||||
}
|
||||
|
||||
function xGetBodyWidth() {
|
||||
var cw = xClientWidth();
|
||||
var sw = window.document.body.scrollWidth;
|
||||
return cw>sw?cw:sw;
|
||||
}
|
||||
|
||||
function xGetBodyHeight() {
|
||||
var cw = xClientHeight();
|
||||
var sw = window.document.body.scrollHeight;
|
||||
return cw>sw?cw:sw;
|
||||
}
|
||||
|
||||
function xGetComputedStyle(oEle, sProp, bInt)
|
||||
{
|
||||
var s, p = 'undefined';
|
||||
var dv = document.defaultView;
|
||||
if(dv && dv.getComputedStyle){
|
||||
s = dv.getComputedStyle(oEle,'');
|
||||
if (s) p = s.getPropertyValue(sProp);
|
||||
}
|
||||
else if(oEle.currentStyle) {
|
||||
// convert css property name to object property name for IE
|
||||
var a = sProp.split('-');
|
||||
sProp = a[0];
|
||||
for (var i=1; i<a.length; ++i) {
|
||||
c = a[i].charAt(0);
|
||||
sProp += a[i].replace(c, c.toUpperCase());
|
||||
}
|
||||
p = oEle.currentStyle[sProp];
|
||||
}
|
||||
else return null;
|
||||
return bInt ? (parseInt(p) || 0) : p;
|
||||
}
|
||||
|
||||
function xGetCookie(name)
|
||||
{
|
||||
var value=null, search=name+"=";
|
||||
if (document.cookie.length > 0) {
|
||||
var offset = document.cookie.indexOf(search);
|
||||
if (offset != -1) {
|
||||
offset += search.length;
|
||||
var end = document.cookie.indexOf(";", offset);
|
||||
if (end == -1) end = document.cookie.length;
|
||||
value = unescape(document.cookie.substring(offset, end));
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
function xGetElementById(e)
|
||||
{
|
||||
if(typeof(e)!='string') return e;
|
||||
if(document.getElementById) e=document.getElementById(e);
|
||||
else if(document.all) e=document.all[e];
|
||||
else e=null;
|
||||
return e;
|
||||
}
|
||||
|
||||
function xGetElementsByAttribute(sTag, sAtt, sRE, fn)
|
||||
{
|
||||
var a, list, found = new Array(), re = new RegExp(sRE, 'i');
|
||||
list = xGetElementsByTagName(sTag);
|
||||
for (var i = 0; i < list.length; ++i) {
|
||||
a = list[i].getAttribute(sAtt);
|
||||
if (!a) {a = list[i][sAtt];}
|
||||
if (typeof(a)=='string' && a.search(re) != -1) {
|
||||
found[found.length] = list[i];
|
||||
if (fn) fn(list[i]);
|
||||
}
|
||||
}
|
||||
return found;
|
||||
}
|
||||
|
||||
function xGetElementsByClassName(c,p,t,f)
|
||||
{
|
||||
var found = new Array();
|
||||
var re = new RegExp('\\b'+c+'\\b', 'i');
|
||||
var list = xGetElementsByTagName(t, p);
|
||||
for (var i = 0; i < list.length; ++i) {
|
||||
if (list[i].className && list[i].className.search(re) != -1) {
|
||||
found[found.length] = list[i];
|
||||
if (f) f(list[i]);
|
||||
}
|
||||
}
|
||||
return found;
|
||||
}
|
||||
|
||||
function xGetElementsByTagName(t,p)
|
||||
{
|
||||
var list = null;
|
||||
t = t || '*';
|
||||
p = p || document;
|
||||
if (xIE4 || xIE5) {
|
||||
if (t == '*') list = p.all;
|
||||
else list = p.all.tags(t);
|
||||
}
|
||||
else if (p.getElementsByTagName) list = p.getElementsByTagName(t);
|
||||
return list || new Array();
|
||||
}
|
||||
|
||||
function xGetURLArguments()
|
||||
{
|
||||
var idx = location.href.indexOf('?');
|
||||
var params = new Array();
|
||||
if (idx != -1) {
|
||||
var pairs = location.href.substring(idx+1, location.href.length).split('&');
|
||||
for (var i=0; i<pairs.length; i++) {
|
||||
nameVal = pairs[i].split('=');
|
||||
params[i] = nameVal[1];
|
||||
params[nameVal[0]] = nameVal[1];
|
||||
}
|
||||
}
|
||||
return params;
|
||||
}
|
||||
|
||||
function xHeight(e,h)
|
||||
{
|
||||
if(!(e=xGetElementById(e))) return 0;
|
||||
if (xNum(h)) {
|
||||
if (h<0) h = 0;
|
||||
else h=Math.round(h);
|
||||
}
|
||||
else h=-1;
|
||||
var css=xDef(e.style);
|
||||
if (e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {
|
||||
h = xClientHeight();
|
||||
}
|
||||
else if(css && xDef(e.offsetHeight) && xStr(e.style.height)) {
|
||||
if(h>=0) {
|
||||
var pt=0,pb=0,bt=0,bb=0;
|
||||
if (document.compatMode=='CSS1Compat') {
|
||||
var gcs = xGetComputedStyle;
|
||||
pt=gcs(e,'padding-top',1);
|
||||
if (pt !== null) {
|
||||
pb=gcs(e,'padding-bottom',1);
|
||||
bt=gcs(e,'border-top-width',1);
|
||||
bb=gcs(e,'border-bottom-width',1);
|
||||
}
|
||||
// Should we try this as a last resort?
|
||||
// At this point getComputedStyle and currentStyle do not exist.
|
||||
else if(xDef(e.offsetHeight,e.style.height)){
|
||||
e.style.height=h+'px';
|
||||
pt=e.offsetHeight-h;
|
||||
}
|
||||
}
|
||||
h-=(pt+pb+bt+bb);
|
||||
if(isNaN(h)||h<0) return null;
|
||||
else e.style.height=h+'px';
|
||||
}
|
||||
h=e.offsetHeight;
|
||||
}
|
||||
else if(css && xDef(e.style.pixelHeight)) {
|
||||
if(h>=0) e.style.pixelHeight=h;
|
||||
h=e.style.pixelHeight;
|
||||
}
|
||||
return h;
|
||||
}
|
||||
|
||||
function xHex(sn, digits, prefix)
|
||||
{
|
||||
var p = '';
|
||||
var n = Math.ceil(sn);
|
||||
if (prefix) p = prefix;
|
||||
n = n.toString(16);
|
||||
for (var i=0; i < digits - n.length; ++i) {
|
||||
p += '0';
|
||||
}
|
||||
return p + n;
|
||||
}
|
||||
|
||||
function xHide(e){return xVisibility(e,0);}
|
||||
|
||||
function xInnerHtml(e,h)
|
||||
{
|
||||
if(!(e=xGetElementById(e)) || !xStr(e.innerHTML)) return null;
|
||||
var s = e.innerHTML;
|
||||
if (xStr(h)) {e.innerHTML = h;}
|
||||
return s;
|
||||
}
|
||||
|
||||
function xLeft(e, iX)
|
||||
{
|
||||
if(!(e=xGetElementById(e))) return 0;
|
||||
var css=xDef(e.style);
|
||||
if (css && xStr(e.style.left)) {
|
||||
if(xNum(iX)) e.style.left=iX+'px';
|
||||
else {
|
||||
iX=parseInt(e.style.left);
|
||||
if(isNaN(iX)) iX=0;
|
||||
}
|
||||
}
|
||||
else if(css && xDef(e.style.pixelLeft)) {
|
||||
if(xNum(iX)) e.style.pixelLeft=iX;
|
||||
else iX=e.style.pixelLeft;
|
||||
}
|
||||
return iX;
|
||||
}
|
||||
|
||||
function xMoveTo(e,x,y)
|
||||
{
|
||||
xLeft(e,x);
|
||||
xTop(e,y);
|
||||
}
|
||||
|
||||
function xName(e)
|
||||
{
|
||||
if (!e) return e;
|
||||
else if (e.id && e.id != "") return e.id;
|
||||
else if (e.name && e.name != "") return e.name;
|
||||
else if (e.nodeName && e.nodeName != "") return e.nodeName;
|
||||
else if (e.tagName && e.tagName != "") return e.tagName;
|
||||
else return e;
|
||||
}
|
||||
|
||||
function xNextSib(e,t)
|
||||
{
|
||||
var s = e ? e.nextSibling : null;
|
||||
if (t) while (s && s.nodeName != t) { s = s.nextSibling; }
|
||||
else while (s && s.nodeType != 1) { s = s.nextSibling; }
|
||||
return s;
|
||||
}
|
||||
|
||||
function xNum()
|
||||
{
|
||||
for(var i=0; i<arguments.length; ++i){if(isNaN(arguments[i]) || typeof(arguments[i])!='number') return false;}
|
||||
return true;
|
||||
}
|
||||
|
||||
function xOffsetLeft(e)
|
||||
{
|
||||
if (!(e=xGetElementById(e))) return 0;
|
||||
if (xDef(e.offsetLeft)) return e.offsetLeft;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
function xOffsetTop(e)
|
||||
{
|
||||
if (!(e=xGetElementById(e))) return 0;
|
||||
if (xDef(e.offsetTop)) return e.offsetTop;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
function xPad(s,len,c,left)
|
||||
{
|
||||
if(typeof s != 'string') s=s+'';
|
||||
if(left) {for(var i=s.length; i<len; ++i) s=c+s;}
|
||||
else {for (i=s.length; i<len; ++i) s+=c;}
|
||||
return s;
|
||||
}
|
||||
|
||||
function xPageX(e)
|
||||
{
|
||||
if (!(e=xGetElementById(e))) return 0;
|
||||
var x = 0;
|
||||
while (e) {
|
||||
if (xDef(e.offsetLeft)) x += e.offsetLeft;
|
||||
e = xDef(e.offsetParent) ? e.offsetParent : null;
|
||||
}
|
||||
return x;
|
||||
}
|
||||
|
||||
function xPageY(e)
|
||||
{
|
||||
if (!(e=xGetElementById(e))) return 0;
|
||||
var y = 0;
|
||||
while (e) {
|
||||
if (xDef(e.offsetTop)) y += e.offsetTop;
|
||||
e = xDef(e.offsetParent) ? e.offsetParent : null;
|
||||
}
|
||||
// if (xOp7Up) return y - document.body.offsetTop; // v3.14, temporary hack for opera bug 130324 (reported 1nov03)
|
||||
return y;
|
||||
}
|
||||
|
||||
function xParent(e, bNode)
|
||||
{
|
||||
if (!(e=xGetElementById(e))) return null;
|
||||
var p=null;
|
||||
if (!bNode && xDef(e.offsetParent)) p=e.offsetParent;
|
||||
else if (xDef(e.parentNode)) p=e.parentNode;
|
||||
else if (xDef(e.parentElement)) p=e.parentElement;
|
||||
return p;
|
||||
}
|
||||
|
||||
function xPreventDefault(e)
|
||||
{
|
||||
if (e && e.preventDefault) e.preventDefault()
|
||||
else if (window.event) window.event.returnValue = false;
|
||||
}
|
||||
|
||||
function xPrevSib(e,t)
|
||||
{
|
||||
var s = e ? e.previousSibling : null;
|
||||
if (t) while(s && s.nodeName != t) {s=s.previousSibling;}
|
||||
else while(s && s.nodeType != 1) {s=s.previousSibling;}
|
||||
return s;
|
||||
}
|
||||
|
||||
function xRemoveEventListener(e,eT,eL,cap)
|
||||
{
|
||||
if(!(e=xGetElementById(e))) return;
|
||||
eT=eT.toLowerCase();
|
||||
if((!xIE4Up && !xOp7Up) && e==window) {
|
||||
if(eT=='resize') { window.xREL=null; return; }
|
||||
if(eT=='scroll') { window.xSEL=null; return; }
|
||||
}
|
||||
var eh='e.on'+eT+'=null';
|
||||
if(e.removeEventListener) e.removeEventListener(eT,eL,cap);
|
||||
else if(e.detachEvent) e.detachEvent('on'+eT,eL);
|
||||
else eval(eh);
|
||||
}
|
||||
|
||||
function xResizeTo(e,w,h)
|
||||
{
|
||||
xWidth(e,w);
|
||||
xHeight(e,h);
|
||||
}
|
||||
|
||||
function xScrollLeft(e, bWin)
|
||||
{
|
||||
var offset=0;
|
||||
if (!xDef(e) || bWin || e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {
|
||||
var w = window;
|
||||
if (bWin && e) w = e;
|
||||
if(w.document.documentElement && w.document.documentElement.scrollLeft) offset=w.document.documentElement.scrollLeft;
|
||||
else if(w.document.body && xDef(w.document.body.scrollLeft)) offset=w.document.body.scrollLeft;
|
||||
}
|
||||
else {
|
||||
e = xGetElementById(e);
|
||||
if (e && xNum(e.scrollLeft)) offset = e.scrollLeft;
|
||||
}
|
||||
return offset;
|
||||
}
|
||||
|
||||
function xScrollTop(e, bWin)
|
||||
{
|
||||
var offset=0;
|
||||
if (!xDef(e) || bWin || e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {
|
||||
var w = window;
|
||||
if (bWin && e) w = e;
|
||||
if(w.document.documentElement && w.document.documentElement.scrollTop) offset=w.document.documentElement.scrollTop;
|
||||
else if(w.document.body && xDef(w.document.body.scrollTop)) offset=w.document.body.scrollTop;
|
||||
}
|
||||
else {
|
||||
e = xGetElementById(e);
|
||||
if (e && xNum(e.scrollTop)) offset = e.scrollTop;
|
||||
}
|
||||
return offset;
|
||||
}
|
||||
|
||||
function xSetCookie(name, value, expire, path)
|
||||
{
|
||||
document.cookie = name + "=" + escape(value) +
|
||||
((!expire) ? "" : ("; expires=" + expire.toGMTString())) +
|
||||
"; path=" + ((!path) ? "/" : path);
|
||||
}
|
||||
|
||||
function xShow(e) {return xVisibility(e,1);}
|
||||
|
||||
|
||||
function xStr(s)
|
||||
{
|
||||
for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])!='string') return false;}
|
||||
return true;
|
||||
}
|
||||
|
||||
function xTop(e, iY)
|
||||
{
|
||||
if(!(e=xGetElementById(e))) return 0;
|
||||
var css=xDef(e.style);
|
||||
if(css && xStr(e.style.top)) {
|
||||
if(xNum(iY)) e.style.top=iY+'px';
|
||||
else {
|
||||
iY=parseInt(e.style.top);
|
||||
if(isNaN(iY)) iY=0;
|
||||
}
|
||||
}
|
||||
else if(css && xDef(e.style.pixelTop)) {
|
||||
if(xNum(iY)) e.style.pixelTop=iY;
|
||||
else iY=e.style.pixelTop;
|
||||
}
|
||||
return iY;
|
||||
}
|
||||
|
||||
function xVisibility(e, bShow)
|
||||
{
|
||||
if(!(e=xGetElementById(e))) return null;
|
||||
if(e.style && xDef(e.style.visibility)) {
|
||||
if (xDef(bShow)) e.style.visibility = bShow ? 'visible' : 'hidden';
|
||||
return e.style.visibility;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function xWidth(e,w)
|
||||
{
|
||||
if(!(e=xGetElementById(e))) return 0;
|
||||
if (xNum(w)) {
|
||||
if (w<0) w = 0;
|
||||
else w=Math.round(w);
|
||||
}
|
||||
else w=-1;
|
||||
var css=xDef(e.style);
|
||||
if (e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {
|
||||
w = xClientWidth();
|
||||
}
|
||||
else if(css && xDef(e.offsetWidth) && xStr(e.style.width)) {
|
||||
if(w>=0) {
|
||||
var pl=0,pr=0,bl=0,br=0;
|
||||
if (document.compatMode=='CSS1Compat') {
|
||||
var gcs = xGetComputedStyle;
|
||||
pl=gcs(e,'padding-left',1);
|
||||
if (pl !== null) {
|
||||
pr=gcs(e,'padding-right',1);
|
||||
bl=gcs(e,'border-left-width',1);
|
||||
br=gcs(e,'border-right-width',1);
|
||||
}
|
||||
// Should we try this as a last resort?
|
||||
// At this point getComputedStyle and currentStyle do not exist.
|
||||
else if(xDef(e.offsetWidth,e.style.width)){
|
||||
e.style.width=w+'px';
|
||||
pl=e.offsetWidth-w;
|
||||
}
|
||||
}
|
||||
w-=(pl+pr+bl+br);
|
||||
if(isNaN(w)||w<0) return null;
|
||||
else e.style.width=w+'px';
|
||||
}
|
||||
w=e.offsetWidth;
|
||||
}
|
||||
else if(css && xDef(e.style.pixelWidth)) {
|
||||
if(w>=0) e.style.pixelWidth=w;
|
||||
w=e.style.pixelWidth;
|
||||
}
|
||||
return w;
|
||||
}
|
||||
|
||||
function xZIndex(e,uZ)
|
||||
{
|
||||
if(!(e=xGetElementById(e))) return 0;
|
||||
if(e.style && xDef(e.style.zIndex)) {
|
||||
if(xNum(uZ)) e.style.zIndex=uZ;
|
||||
uZ=parseInt(e.style.zIndex);
|
||||
}
|
||||
return uZ;
|
||||
}
|
||||
|
||||
function xStopPropagation(evt)
|
||||
{
|
||||
if (evt && evt.stopPropagation) evt.stopPropagation();
|
||||
else if (window.event) window.event.cancelBubble = true;
|
||||
}
|
||||
|
||||
147
common/js/xml_handler.js
Normal file
|
|
@ -0,0 +1,147 @@
|
|||
/**
|
||||
* @file common/js/xml_handler.js
|
||||
* @author zero <zero@nzeo.com>
|
||||
* @brief zbxe내에서 ajax기능을 이용함에 있어 module, act를 잘 사용하기 위한 자바스크립트
|
||||
**/
|
||||
|
||||
// xml handler을 이용하는 user function
|
||||
var show_waiting_message = true;
|
||||
function exec_xml(module, act, params, callback_func, response_tags, callback_func_arg, fo_obj) {
|
||||
var oXml = new xml_handler();
|
||||
oXml.reset();
|
||||
for(var key in params) {
|
||||
var val = params[key];
|
||||
oXml.addParam(key, val);
|
||||
}
|
||||
oXml.addParam("module", module);
|
||||
oXml.addParam("act", act);
|
||||
|
||||
if(typeof(response_tags)=="undefined" || response_tags.length<1) response_tags = new Array('error','message');
|
||||
|
||||
var waiting_obj = xGetElementById("waitingforserverresponse");
|
||||
if(show_waiting_message && waiting_obj) {
|
||||
xInnerHtml(waiting_obj, wating_message);
|
||||
xTop(waiting_obj, xScrollTop()+20);
|
||||
xLeft(waiting_obj, xScrollLeft()+20);
|
||||
waiting_obj.style.visibility = "visible";
|
||||
}
|
||||
oXml.request(xml_response_filter, oXml, callback_func, response_tags, callback_func_arg, fo_obj);
|
||||
}
|
||||
|
||||
// 결과 처리 후 callback_func에 넘겨줌
|
||||
function xml_response_filter(oXml, callback_func, response_tags, callback_func_arg, fo_obj) {
|
||||
var xmlDoc = oXml.getResponseXml();
|
||||
if(!xmlDoc) return null;
|
||||
|
||||
var waiting_obj = xGetElementById("waitingforserverresponse");
|
||||
waiting_obj.style.visibility = "hidden";
|
||||
xInnerHtml(waiting_obj, '');
|
||||
|
||||
var ret_obj = oXml.toZMsgObject(xmlDoc, response_tags);
|
||||
if(ret_obj["error"]!=0) {
|
||||
alert(ret_obj["message"]);
|
||||
return null;
|
||||
}
|
||||
|
||||
if(!callback_func) return null;
|
||||
|
||||
callback_func(ret_obj, response_tags, callback_func_arg, fo_obj);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// xml handler
|
||||
function xml_handler() {
|
||||
this.obj_xmlHttp = null;
|
||||
this.method_name = null;
|
||||
this.xml_path = request_uri+"index.php";
|
||||
|
||||
this.params = new Array();
|
||||
|
||||
this.reset = xml_handlerReset;
|
||||
this.getXmlHttp = zGetXmlHttp;
|
||||
this.request = xml_handlerRequest;
|
||||
this.setPath = xml_handlerSetPath;
|
||||
this.addParam = xml_handlerAddParam;
|
||||
this.getResponseXml = xml_handlerGetResponseXML;
|
||||
this.toZMsgObject = xml_handlerToZMsgObject;
|
||||
|
||||
this.obj_xmlHttp = this.getXmlHttp();
|
||||
}
|
||||
|
||||
function zGetXmlHttp() {
|
||||
if (window.XMLHttpRequest) return new XMLHttpRequest();
|
||||
else if (window.ActiveXObject) {
|
||||
try {
|
||||
return new ActiveXObject("Msxml2.XMLHTTP");
|
||||
} catch (e) {
|
||||
return new ActiveXObject("Microsoft.XMLHTTP");
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function xml_handlerRequest(callBackFunc, xmlObj, callBackFunc2, response_tags, callback_func_arg, fo_obj) {
|
||||
var rd = "";
|
||||
rd += "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n"
|
||||
+ "<methodCall>\n"
|
||||
+ "<params>\n"
|
||||
|
||||
for (var key in this.params) {
|
||||
var val = this.params[key];
|
||||
rd += "<"+key+"><![CDATA["+val+"]]></"+key+">\n";
|
||||
}
|
||||
|
||||
rd += "</params>\n"
|
||||
+ "</methodCall>\n";
|
||||
|
||||
if(this.obj_xmlHttp.readyState!=0) {
|
||||
this.obj_xmlHttp.abort();
|
||||
this.obj_xmlHttp = this.getXmlHttp();
|
||||
}
|
||||
this.obj_xmlHttp.onreadystatechange = function () {callBackFunc(xmlObj, callBackFunc2, response_tags, callback_func_arg, fo_obj)};
|
||||
this.obj_xmlHttp.open("POST", this.xml_path, true);
|
||||
this.obj_xmlHttp.send(rd);
|
||||
}
|
||||
|
||||
function xml_handlerSetPath(path) {
|
||||
this.xml_path = "./"+path;
|
||||
}
|
||||
|
||||
|
||||
function xml_handlerReset() {
|
||||
this.obj_xmlHttp = this.getXmlHttp();
|
||||
this.params = new Array();
|
||||
}
|
||||
|
||||
function xml_handlerAddParam(key, val) {
|
||||
this.params[key] = val;
|
||||
}
|
||||
|
||||
function xml_handlerGetResponseXML() {
|
||||
if(this.obj_xmlHttp && this.obj_xmlHttp.readyState == 4 && isDef(this.obj_xmlHttp.responseXML)) {
|
||||
var xmlDoc = this.obj_xmlHttp.responseXML;
|
||||
this.reset();
|
||||
return xmlDoc;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function xml_handlerToZMsgObject(xmlDoc, tags) {
|
||||
if(!xmlDoc) return null;
|
||||
if(!tags) tags = new Array("error","message");
|
||||
tags[tags.length] = "redirect_url";
|
||||
tags[tags.length] = "act";
|
||||
|
||||
var obj_ret = new Array();
|
||||
for(var i=0; i<tags.length; i++) {
|
||||
var key = tags[i];
|
||||
if(obj_ret[key]) continue;
|
||||
try {
|
||||
obj_ret[key] = xmlDoc.getElementsByTagName(tags[i])[0].firstChild.nodeValue;
|
||||
} catch(e) {
|
||||
obj_ret[key] = "";
|
||||
}
|
||||
}
|
||||
return obj_ret;
|
||||
}
|
||||
305
common/js/xml_js_filter.js
Normal file
|
|
@ -0,0 +1,305 @@
|
|||
/**
|
||||
* @file common/js/xml_js_filter.js
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief xml filter에서 사용될 js
|
||||
*
|
||||
* zbxe 에서 form의 동작시 필수입력 여부등을 선처리하고 xml_handler.js의 exec_xml()을 통해서
|
||||
* 특정 모듈과의 ajax 통신을 통해 process를 진행시킴
|
||||
**/
|
||||
|
||||
var alertMsg = new Array();
|
||||
var target_type_list = new Array();
|
||||
var notnull_list = new Array();
|
||||
var extra_vars = new Array();
|
||||
|
||||
/**
|
||||
* @function filterAlertMessage
|
||||
* @brief ajax로 서버에 요청후 결과를 처리할 callback_function을 지정하지 않았을 시 호출되는 기본 함수
|
||||
**/
|
||||
function filterAlertMessage(ret_obj) {
|
||||
var error = ret_obj["error"];
|
||||
var message = ret_obj["message"];
|
||||
var act = ret_obj["act"];
|
||||
var redirect_url = ret_obj["redirect_url"];
|
||||
var url = location.href;
|
||||
|
||||
if(url.substr(-1)=="#") url = url.substr(0,url.length-1);
|
||||
|
||||
if(typeof(message)!="undefined"&&message&&message!="success") alert(message);
|
||||
|
||||
if(typeof(act)!="undefined" && act) url = current_url.setQuery("act", act);
|
||||
else if(typeof(redirect_url)!="undefined" && redirect_url) url = redirect_url;
|
||||
|
||||
location.href = url;
|
||||
}
|
||||
|
||||
/**
|
||||
* @class XmlJsFilter
|
||||
* @authro zero (zero@nzeo.com)
|
||||
* @brief form elements, module/act, callback_user_func을 이용하여 서버에 ajax로 form 데이터를 넘기고 결과를 받아오는 js class
|
||||
**/
|
||||
function XmlJsFilter(form_object, module, act, callback_user_func) {
|
||||
this.field = new Array();
|
||||
this.parameter = new Array();
|
||||
this.response = new Array();
|
||||
|
||||
this.fo_obj = form_object;
|
||||
this.module = module;
|
||||
this.act = act;
|
||||
this.user_func = callback_user_func;
|
||||
this.setFocus = XmlJsFilterSetFocus;
|
||||
this.addFieldItem = XmlJsFilterAddFieldItem;
|
||||
this.addParameterItem = XmlJsFilterAddParameterItem;
|
||||
this.addResponseItem = XmlJsFilterAddResponseItem;
|
||||
this.getValue = XmlJsFilterGetValue;
|
||||
this.executeFilter = XmlJsFilterExecuteFilter;
|
||||
this.checkFieldItem = XmlJsFilterCheckFieldItem;
|
||||
this.getParameterParam = XmlJsFilterGetParameterParam;
|
||||
this.alertMsg = XmlJsFilterAlertMsg;
|
||||
this.proc = XmlJsFilterProc;
|
||||
}
|
||||
|
||||
function XmlJsFilterSetFocus(target_name) {
|
||||
var obj = this.fo_obj[target_name];
|
||||
if(typeof(obj)=='undefined' || !obj) return;
|
||||
|
||||
var length = obj.length;
|
||||
try {
|
||||
if(typeof(length)!='undefined') {
|
||||
obj[0].focus();
|
||||
} else {
|
||||
obj.focus();
|
||||
}
|
||||
} catch(e) {
|
||||
}
|
||||
}
|
||||
|
||||
function XmlJsFilterAddFieldItem(target, required, minlength, maxlength, equalto, filter) {
|
||||
var obj = new Array(target, required, minlength, maxlength, equalto, filter);
|
||||
this.field[this.field.length] = obj;
|
||||
}
|
||||
|
||||
function XmlJsFilterAddParameterItem(param, target) {
|
||||
var obj = new Array(param, target);
|
||||
this.parameter[this.parameter.length] = obj;
|
||||
}
|
||||
|
||||
function XmlJsFilterAddResponseItem(name) {
|
||||
this.response[this.response.length] = name;
|
||||
}
|
||||
|
||||
function XmlJsFilterGetValue(target_name) {
|
||||
var obj = this.fo_obj[target_name];
|
||||
if(typeof(obj)=='undefined' || !obj) return '';
|
||||
var value = '';
|
||||
var length = obj.length;
|
||||
var type = obj.type;
|
||||
if((typeof(type)=='undefined'||!type) && typeof(length)!='undefined' && typeof(obj[0])!='undefined' && length>0) type = obj[0].type;
|
||||
else length = 0;
|
||||
|
||||
switch(type) {
|
||||
case 'checkbox' :
|
||||
if(length>0) {
|
||||
var value_list = new Array();
|
||||
for(var i=0;i<length;i++) {
|
||||
if(obj[i].checked) value_list[value_list.length] = obj[i].value;
|
||||
}
|
||||
value = value_list.join('|@|');
|
||||
} else {
|
||||
if(obj.checked) value = obj.value;
|
||||
else value = '';
|
||||
}
|
||||
break;
|
||||
case 'radio' :
|
||||
if(length>0) {
|
||||
for(var i=0;i<length;i++) {
|
||||
if(obj[i].checked) value = obj[i].value;
|
||||
}
|
||||
} else {
|
||||
if(obj.checked) value = obj.value;
|
||||
else value = '';
|
||||
}
|
||||
break;
|
||||
case 'select' :
|
||||
case 'select-one' :
|
||||
if(obj.selectedIndex>=0) value = obj.options[obj.selectedIndex].value;
|
||||
break;
|
||||
default :
|
||||
if(length>0 && target_type_list[target_name]) {
|
||||
switch(target_type_list[target_name]) {
|
||||
case 'kr_zip' :
|
||||
var val1 = obj[0].value;
|
||||
var val2 = obj[1].value;
|
||||
if(val1&&val2) {
|
||||
value = val1+'|@|'+val2;
|
||||
}
|
||||
break;
|
||||
case 'tel' :
|
||||
var val1 = obj[0].value;
|
||||
var val2 = obj[1].value;
|
||||
var val3 = obj[2].value;
|
||||
if(val1&&val2&&val3) {
|
||||
value = val1+'|@|'+val2+'|@|'+val3;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
} else {
|
||||
value = obj.value;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if(typeof(value)=='undefined'||!value) return '';
|
||||
return value.trim();
|
||||
}
|
||||
|
||||
function XmlJsFilterExecuteFilter(filter, value) {
|
||||
switch(filter) {
|
||||
case "email" :
|
||||
case "email_address" :
|
||||
var regx = /^[_0-9a-zA-Z-]+(\.[_0-9a-zA-Z-]+)*@[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*$/;
|
||||
return regx.test(value);
|
||||
break;
|
||||
case "userid" :
|
||||
case "user_id" :
|
||||
var regx = /^[a-zA-Z]+([_0-9a-zA-Z]+)*$/;
|
||||
return regx.test(value);
|
||||
break;
|
||||
case "homepage" :
|
||||
var regx = /^(http|https|ftp|mms):\/\/[0-9a-z-]+(\.[_0-9a-z-\/\~]+)+(:[0-9]{2,4})*$/;
|
||||
return regx.test(value);
|
||||
break;
|
||||
case "korean" :
|
||||
var regx = /^[가-힣]*$/;
|
||||
return regx.test(value);
|
||||
break;
|
||||
case "korean_number" :
|
||||
var regx = /^[가-힣0-9]*$/;
|
||||
return regx.test(value);
|
||||
break;
|
||||
case "alpha" :
|
||||
var regx = /^[a-zA-Z]*$/;
|
||||
return regx.test(value);
|
||||
break;
|
||||
case "alpha_number" :
|
||||
var regx = /^[a-zA-Z0-9\_]*$/;
|
||||
return regx.test(value);
|
||||
break;
|
||||
case "number" :
|
||||
return !isNaN(value);
|
||||
break;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
function XmlJsFilterAlertMsg(target, msg_code, minlength, maxlength) {
|
||||
var target_msg = "";
|
||||
|
||||
if(alertMsg[target]!='undefined') target_msg = alertMsg[target];
|
||||
else target_msg = target;
|
||||
|
||||
var msg = "";
|
||||
if(typeof(alertMsg[msg_code])!='undefined') {
|
||||
if(alertMsg[msg_code].indexOf('%s')>=0) msg = alertMsg[msg_code].replace('%s',target_msg);
|
||||
else msg = target_msg+alertMsg[msg_code];
|
||||
} else {
|
||||
msg = msg_code;
|
||||
}
|
||||
|
||||
if(typeof(minlength)!='undefined' && typeof(maxlength)!='undefined') msg += "("+minlength+"~"+maxlength+")";
|
||||
|
||||
alert(msg);
|
||||
this.setFocus(target);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function XmlJsFilterCheckFieldItem() {
|
||||
for(var i=0; i<extra_vars.length;i++) {
|
||||
var name = extra_vars[i];
|
||||
this.addFieldItem(name, false, 0, 0, "", "");
|
||||
}
|
||||
|
||||
for(var i=0; i<this.field.length;i++) {
|
||||
var item = this.field[i];
|
||||
var target = item[0];
|
||||
var required = item[1];
|
||||
var minlength = item[2];
|
||||
var maxlength = item[3];
|
||||
var equalto = item[4];
|
||||
var filter = item[5].split(",");
|
||||
|
||||
for(var j=0; j<notnull_list.length; j++) {
|
||||
if(notnull_list[j]==target) required = true;
|
||||
}
|
||||
|
||||
var value = this.getValue(target);
|
||||
if(!required && !value) continue;
|
||||
if(required && !value && this.fo_obj[target]) return this.alertMsg(target,'isnull');
|
||||
|
||||
if(minlength>0 && maxlength>0 && (value.length < minlength || value.length > maxlength)) return this.alertMsg(target, 'outofrange', minlength, maxlength);
|
||||
|
||||
if(equalto) {
|
||||
var equalto_value = this.getValue(equalto);
|
||||
if(equalto_value != value) return this.alertMsg(target, 'equalto');
|
||||
}
|
||||
|
||||
if(filter.length && filter[0]) {
|
||||
for(var j=0;j<filter.length;j++) {
|
||||
var filter_item = filter[j];
|
||||
if(!this.executeFilter(filter_item, value)) return this.alertMsg(target, "invalid_"+filter_item);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function XmlJsFilterGetParameterParam() {
|
||||
if(!this.fo_obj) return new Array();
|
||||
|
||||
var prev_name = '';
|
||||
if(this.parameter.length<1) {
|
||||
for(var i=0;i<this.fo_obj.length;i++) {
|
||||
var name = this.fo_obj[i].name;
|
||||
if(typeof(name)=='undefined'||!name||name==prev_name) continue;
|
||||
this.addParameterItem(name, name);
|
||||
prev_name = name;
|
||||
}
|
||||
}
|
||||
|
||||
var params = new Array();
|
||||
for(var i=0; i<this.parameter.length;i++) {
|
||||
var item = this.parameter[i];
|
||||
var param = item[0];
|
||||
var target = item[1];
|
||||
var value = this.getValue(target);
|
||||
params[param] = value;
|
||||
}
|
||||
return params;
|
||||
}
|
||||
|
||||
function XmlJsFilterProc(confirm_msg) {
|
||||
var result = this.checkFieldItem();
|
||||
if(!result) return false;
|
||||
|
||||
if(typeof(confirm_msg)=='undefined') confirm_msg = '';
|
||||
|
||||
var params = this.getParameterParam();
|
||||
var response = this.response;
|
||||
if(confirm_msg && !confirm(confirm_msg)) return false;
|
||||
if(!this.act) {
|
||||
this.user_func(this.fo_obj, params);
|
||||
return true;
|
||||
}
|
||||
exec_xml(this.module, this.act, params, this.user_func, response, params, this.fo_obj);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// form proc
|
||||
function procFilter(fo_obj, filter_func) {
|
||||
filter_func(fo_obj);
|
||||
return false;
|
||||
}
|
||||
221
common/lang/en.lang.php
Normal file
|
|
@ -0,0 +1,221 @@
|
|||
<?php
|
||||
/**
|
||||
* @file common/lang/en.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief English Language Pack (Only basic words are included here)
|
||||
**/
|
||||
|
||||
// words for action, which is basically used
|
||||
$lang->cmd_write = 'Write';
|
||||
$lang->cmd_reply = 'Reply';
|
||||
$lang->cmd_delete = 'Delete';
|
||||
$lang->cmd_modify = 'Modify';
|
||||
$lang->cmd_edit = 'Edit';
|
||||
$lang->cmd_view = 'View';
|
||||
$lang->cmd_view_all = 'View All';
|
||||
$lang->cmd_list = 'List';
|
||||
$lang->cmd_prev = 'Prev';
|
||||
$lang->cmd_next = 'Next';
|
||||
$lang->cmd_send_trackback = 'Send Trackback';
|
||||
$lang->cmd_registration = $lang->cmd_submit = 'Submit';
|
||||
$lang->cmd_comment_registration = 'Add Comment';
|
||||
$lang->cmd_insert = 'Insert';
|
||||
$lang->cmd_save = 'Save';
|
||||
$lang->cmd_input = 'Input';
|
||||
$lang->cmd_search = 'Search';
|
||||
$lang->cmd_cancel = 'Cancel';
|
||||
$lang->cmd_back = 'Go Back';
|
||||
$lang->cmd_vote = 'Vote';
|
||||
$lang->cmd_move = 'Move';
|
||||
$lang->cmd_move_up = 'Up';
|
||||
$lang->cmd_move_down = 'Down';
|
||||
$lang->cmd_add_indent = 'Indent';
|
||||
$lang->cmd_remove_indent = 'Outdent';
|
||||
$lang->cmd_management = 'Manage';
|
||||
$lang->cmd_make = 'Create';
|
||||
$lang->cmd_select = 'Select';
|
||||
$lang->cmd_select_all = 'Select All';
|
||||
$lang->cmd_unselect_all = 'Deselect All';
|
||||
$lang->cmd_close_all = 'Close All';
|
||||
$lang->cmd_open_all = 'Open All';
|
||||
$lang->cmd_reload = 'Reload';
|
||||
$lang->cmd_close = 'Close';
|
||||
$lang->cmd_open = 'Open';
|
||||
$lang->cmd_setup = 'Configure';
|
||||
$lang->cmd_option = 'Option';
|
||||
$lang->cmd_apply = 'Apply';
|
||||
$lang->cmd_open_calendar = 'Select a Date';
|
||||
$lang->cmd_send = 'Send';
|
||||
$lang->cmd_print = 'Print';
|
||||
$lang->cmd_scrap = 'Scrap';
|
||||
$lang->cmd_preview = 'Preview';
|
||||
$lang->cmd_reset = 'Reset';
|
||||
$lang->cmd_remake_cache = "Re-create cache file";
|
||||
|
||||
$lang->enable = 'Enable';
|
||||
$lang->disable = 'Disable';
|
||||
|
||||
// Essential Words
|
||||
$lang->no = 'No.';
|
||||
$lang->notice = 'Notice';
|
||||
$lang->secret = 'Secret';
|
||||
$lang->category = 'Category';
|
||||
$lang->document_srl = 'Doc. No.';
|
||||
$lang->user_id = 'User ID';
|
||||
$lang->author = 'Developer';
|
||||
$lang->password = 'Password';
|
||||
$lang->password1 = 'Password';
|
||||
$lang->password2 = 'Confirm Password';
|
||||
$lang->admin_id = 'Admin ID';
|
||||
$lang->writer = 'Author';
|
||||
$lang->user_name = 'User Name';
|
||||
$lang->nick_name = 'Nick Name';
|
||||
$lang->email_address = 'Email';
|
||||
$lang->homepage = 'Homepage';
|
||||
$lang->blog = 'Blog';
|
||||
$lang->birthday = 'Birthdate';
|
||||
$lang->browser_title = 'Browser Title';
|
||||
$lang->title = 'Subject';
|
||||
$lang->title_content = 'Title+Content';
|
||||
$lang->content = 'Content';
|
||||
$lang->document = 'Article';
|
||||
$lang->comment = 'Comment';
|
||||
$lang->description = 'Description';
|
||||
$lang->trackback = 'Trackback';
|
||||
$lang->tag = 'Tag';
|
||||
$lang->allow_comment = 'Allow Comment';
|
||||
$lang->lock_comment = 'Block Comment';
|
||||
$lang->allow_trackback = 'Allow Trackback';
|
||||
$lang->uploaded_file = 'Attachment';
|
||||
$lang->grant = 'Permission';
|
||||
$lang->target = 'Target';
|
||||
$lang->total = 'Total';
|
||||
$lang->total_count = 'Count Total';
|
||||
$lang->ipaddress = 'IP Address';
|
||||
$lang->path = 'Path';
|
||||
$lang->cart = 'Selected Item';
|
||||
$lang->friend = 'Friends';
|
||||
$lang->notify = 'Notification';
|
||||
|
||||
$lang->mid = 'Module Name';
|
||||
$lang->layout = 'Layout';
|
||||
$lang->widget = 'Widget';
|
||||
$lang->module = 'Module';
|
||||
$lang->skin = 'Theme';
|
||||
$lang->colorset = 'Colorset';
|
||||
$lang->extra_vars = 'Extra Vars';
|
||||
|
||||
$lang->document_url = 'Entry URL';
|
||||
$lang->trackback_url = 'Trackback URL';
|
||||
$lang->blog_name = 'Blog Title';
|
||||
$lang->excerpt = 'Quotation';
|
||||
|
||||
$lang->document_count = 'Total Articles';
|
||||
$lang->page_count = 'Page Count';
|
||||
$lang->list_count = 'List Count';
|
||||
$lang->readed_count = 'Hit';
|
||||
$lang->voted_count = 'Votes';
|
||||
$lang->member_count = 'Member Count';
|
||||
$lang->date = 'Date';
|
||||
$lang->regdate = 'Registered Date';
|
||||
$lang->last_update = 'Latest Update';
|
||||
$lang->signup_date = 'Join Date';
|
||||
$lang->last_login = 'Latest Login';
|
||||
$lang->first_page = 'First Page';
|
||||
$lang->last_page = 'Last Page';
|
||||
$lang->search_target = 'Searching Target';
|
||||
$lang->search_keyword = 'Searching Keyword';
|
||||
$lang->is_default = 'Default';
|
||||
|
||||
$lang->no_documents = 'No Articles';
|
||||
|
||||
$lang->board_manager = 'Board Settings';
|
||||
$lang->member_manager = 'Member Settings';
|
||||
$lang->layout_manager = 'Layout Settings';
|
||||
|
||||
$lang->use = 'Use';
|
||||
$lang->notuse = 'Disuse';
|
||||
$lang->not_exists = "Does not exist";
|
||||
|
||||
$lang->unit_sec = 'sec';
|
||||
$lang->unit_min = 'min';
|
||||
$lang->unit_hour = 'hr';
|
||||
$lang->unit_day = 'day';
|
||||
$lang->unit_week = 'week';
|
||||
$lang->unit_month = 'month';
|
||||
$lang->unit_year = 'year';
|
||||
|
||||
// Descriptions
|
||||
$lang->about_tag = 'You can submit multiple tags by inserting comma(,) between each tags';
|
||||
$lang->about_layout = 'Layouts decorate an appearance of your module. you could configure it from Layout menu on the top';
|
||||
|
||||
// Messages
|
||||
$lang->msg_call_server = 'Requesting to the server, please wait';
|
||||
$lang->msg_db_not_setted = 'DB configuration has not been set';
|
||||
$lang->msg_invalid_queryid = 'Specified query ID value is invalid';
|
||||
$lang->msg_not_permitted = 'You are not permitted to continue';
|
||||
$lang->msg_input_password = 'Please enter your password';
|
||||
$lang->msg_invalid_document = 'Invalid Article Number';
|
||||
$lang->msg_invalid_request = 'Invalid Request';
|
||||
$lang->msg_invalid_password = 'Invalid Password';
|
||||
$lang->msg_error_occured = 'Error has occured';
|
||||
$lang->msg_not_founded = 'Target could not be found';
|
||||
$lang->msg_no_result = 'Nothing found';
|
||||
|
||||
$lang->msg_not_permitted_act = 'You are not permitted to execute requested action';
|
||||
$lang->msg_module_is_not_exists = 'Requested module could not be found';
|
||||
$lang->msg_module_is_not_standalone = 'Requested module cannot be executed independently';
|
||||
|
||||
$lang->success_registed = 'Registered successfully';
|
||||
$lang->success_updated = 'Updated successfully';
|
||||
$lang->success_deleted = 'Deleted successfully';
|
||||
$lang->success_voted = 'Voted successfully';
|
||||
$lang->success_moved = 'Moved successfully';
|
||||
$lang->success_sended = 'Sent successfully';
|
||||
$lang->success_reset = 'Reset successfully';
|
||||
$lang->success_leaved = 'Seceded successfully';
|
||||
|
||||
$lang->fail_to_delete = 'Could not be deleted';
|
||||
$lang->fail_to_move = 'Could not be moved';
|
||||
|
||||
$lang->failed_voted = 'Could not be voted';
|
||||
$lang->fail_to_delete_have_children = 'Please try again after removing replies first';
|
||||
|
||||
$lang->confirm_submit = 'Are you sure to submit?';
|
||||
$lang->confirm_logout = 'Are you sure to logout?';
|
||||
$lang->confirm_vote = 'Are you sure to vote?';
|
||||
$lang->confirm_delete = 'Are you sure to delete?';
|
||||
$lang->confirm_move = 'Are you sure to move?';
|
||||
$lang->confirm_reset = 'Are you sure to reset?';
|
||||
$lang->confirm_leave = 'Are you sure to leave?';
|
||||
|
||||
$lang->column_type = 'Column Type';
|
||||
$lang->column_type_list['text'] = 'one-line text';
|
||||
$lang->column_type_list['homepage'] = 'url';
|
||||
$lang->column_type_list['email_address'] = 'email';
|
||||
$lang->column_type_list['tel'] = 'phone number';
|
||||
$lang->column_type_list['textarea'] = 'multi-line textarea';
|
||||
$lang->column_type_list['checkbox'] = 'checkbox (multiple selection)';
|
||||
$lang->column_type_list['select'] = 'select box (single selection)';
|
||||
$lang->column_type_list['kr_zip'] = 'zip code (Korean)';
|
||||
$lang->column_type_list['date'] = 'date (yyyy/mm/dd)';
|
||||
//$lang->column_type_list['jp_zip'] = 'zip code (Japanese)';
|
||||
$lang->column_name = 'Column Name';
|
||||
$lang->column_title = 'Column Title';
|
||||
$lang->default_value = 'Default Value';
|
||||
$lang->is_active = 'Active';
|
||||
$lang->is_required = 'Required Field';
|
||||
|
||||
// Alert messages for Javascript using by XML filter
|
||||
$lang->filter->isnull = 'Please input a value for %s';
|
||||
$lang->filter->outofrange = 'Please align the text length of %s';
|
||||
$lang->filter->equalto = "%s's value is invalid";
|
||||
$lang->filter->invalid_email = "%s's format is invalid. ex) zbxe@zeroboard.com";
|
||||
$lang->filter->invalid_user_id = $lang->filter->invalid_userid = "%s's format is invalid.\\nAll values should consist of alphabets, numbers or underscore(_) and the first letter should be English alphabet";
|
||||
$lang->filter->invalid_homepage = "%s's format is invalid. ex) http://www.zeroboard.com";
|
||||
$lang->filter->invalid_korean = "%s's format is invalid. Please input only Korean";
|
||||
$lang->filter->invalid_korean_number = "%s's format is invalid. Please input Korean or numbers";
|
||||
$lang->filter->invalid_alpha = "%s's format is invalid. Please input only alphabets";
|
||||
$lang->filter->invalid_alpha_number = "%s's format is invalid. Please input alphabets or numbers";
|
||||
$lang->filter->invalid_number = "%s's format is invalid. Please input only numbers";
|
||||
?>
|
||||
220
common/lang/es.lang.php
Normal file
|
|
@ -0,0 +1,220 @@
|
|||
<?php
|
||||
/**
|
||||
* @file common/lang/en.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief English Language Pack (Only basic words are included here)
|
||||
**/
|
||||
|
||||
// words for action, which is basically used
|
||||
$lang->cmd_write = 'Escribir';
|
||||
$lang->cmd_reply = 'Contestación';
|
||||
$lang->cmd_delete = 'Cancelación';
|
||||
$lang->cmd_modify = 'Modificar';
|
||||
$lang->cmd_edit = 'Corregir';
|
||||
$lang->cmd_view = 'Ver';
|
||||
$lang->cmd_view_all = 'Ver Toda';
|
||||
$lang->cmd_list = 'List';
|
||||
$lang->cmd_prev = 'Prev';
|
||||
$lang->cmd_next = 'Adelante';
|
||||
$lang->cmd_send_trackback = 'Enviar Trackback';
|
||||
$lang->cmd_registration = $lang->cmd_submit = 'Someter';
|
||||
$lang->cmd_comment_registration = 'Agregar El Commentario';
|
||||
$lang->cmd_insert = 'Insertar';
|
||||
$lang->cmd_save = 'Guardar';
|
||||
$lang->cmd_input = 'Entrdada';
|
||||
$lang->cmd_search = 'Búsqueda';
|
||||
$lang->cmd_cancel = 'Cancelar';
|
||||
$lang->cmd_back = 'Ir Detrás';
|
||||
$lang->cmd_vote = 'Votar';
|
||||
$lang->cmd_move = 'Mover';
|
||||
$lang->cmd_move_up = 'Arriba';
|
||||
$lang->cmd_move_down = 'Abajo';
|
||||
$lang->cmd_add_indent = 'Agregar Pedido';
|
||||
$lang->cmd_remove_indent = 'Eliminar Pedido';
|
||||
$lang->cmd_management = 'Manejar';
|
||||
$lang->cmd_make = 'Crear';
|
||||
$lang->cmd_select = 'Seleccionar';
|
||||
$lang->cmd_select_all = 'Seleccionar Todos';
|
||||
$lang->cmd_unselect_all = 'Deseleccionar Todos';
|
||||
$lang->cmd_close_all = 'Cerrar Todos';
|
||||
$lang->cmd_open_all = 'Abrir Todos';
|
||||
$lang->cmd_reload = 'Actualizar';
|
||||
$lang->cmd_close = 'Cerrar';
|
||||
$lang->cmd_open = 'Abrir';
|
||||
$lang->cmd_setup = 'Configuración';
|
||||
$lang->cmd_option = 'Opción';
|
||||
$lang->cmd_apply = 'Applicar';
|
||||
$lang->cmd_open_calendar = 'Seleccionar la fecha';
|
||||
$lang->cmd_send = 'Enviar';
|
||||
$lang->cmd_print = 'Print';
|
||||
$lang->cmd_scrap = 'Scrap';
|
||||
$lang->cmd_preview = 'Preview';
|
||||
$lang->cmd_reset = 'Reset';
|
||||
|
||||
$lang->enable = 'Enable';
|
||||
$lang->disable = 'Disable';
|
||||
|
||||
// Essencial Words
|
||||
$lang->no = 'No';
|
||||
$lang->notice = 'Aviso';
|
||||
$lang->secret = 'Secreto';
|
||||
$lang->category = 'Categoría';
|
||||
$lang->document_srl = 'Doc.Num';
|
||||
$lang->user_id = 'Usuario';
|
||||
$lang->author = 'Autor';
|
||||
$lang->password = 'Contraseña';
|
||||
$lang->password1 = 'Contraseña';
|
||||
$lang->password2 = 'Confirmar la Contraseña';
|
||||
$lang->admin_id = 'Identificación Del Admin';
|
||||
$lang->writer = 'Escritor';
|
||||
$lang->user_name = 'Nombre Del Usuario';
|
||||
$lang->nick_name = 'Nombre De la Mella';
|
||||
$lang->email_address = 'Correo Electrónico';
|
||||
$lang->homepage = 'Página web';
|
||||
$lang->blog = 'Blog';
|
||||
$lang->birthday = 'Fecha de Nacimiento';
|
||||
$lang->browser_title = 'Título del navegador';
|
||||
$lang->title = 'Título';
|
||||
$lang->title_content = 'Título+Contenido';
|
||||
$lang->content = 'Contenido';
|
||||
$lang->document = 'Entrada';
|
||||
$lang->comment = 'Commentario';
|
||||
$lang->description = 'Descripción';
|
||||
$lang->trackback = 'Trackback';
|
||||
$lang->tag = 'Etiqueta';
|
||||
$lang->allow_comment = 'Permitir Commentarios';
|
||||
$lang->lock_comment = 'Cerrar Commentarios';
|
||||
$lang->allow_trackback = 'Permitir Trackback';
|
||||
$lang->uploaded_file = 'Ajuntos';
|
||||
$lang->grant = 'Autoridad';
|
||||
$lang->target = 'Objetivo';
|
||||
$lang->total = 'Total';
|
||||
$lang->total_count = 'Visitos en Total';
|
||||
$lang->ipaddress = 'Dirección IP';
|
||||
$lang->path = 'Paso';
|
||||
$lang->cart = 'Artículo Selecciónado';
|
||||
$lang->friend = 'Amigos';
|
||||
$lang->notify = 'Notify';
|
||||
|
||||
$lang->mid = 'Module Name';
|
||||
$lang->layout = 'Layout';
|
||||
$lang->widget = 'Widget';
|
||||
$lang->module = 'Módulo';
|
||||
$lang->skin = 'Tema';
|
||||
$lang->colorset = 'Colección de colores';
|
||||
$lang->extra_vars = 'Variables Extra';
|
||||
|
||||
$lang->document_url = 'Entrada URL';
|
||||
$lang->trackback_url = 'Trackback URL';
|
||||
$lang->blog_name = 'Titulo del Blog';
|
||||
$lang->excerpt = 'Quotación';
|
||||
|
||||
$lang->document_count = 'Numeros de la Entradas';
|
||||
$lang->page_count = 'Cuentas de las Pagínas';
|
||||
$lang->list_count = 'Cuentas del Listos';
|
||||
$lang->readed_count = 'Cuentas Referidos';
|
||||
$lang->voted_count = 'Cuentas Votadas';
|
||||
$lang->member_count = 'Cuentas de Miembros';
|
||||
$lang->date = 'Fecha';
|
||||
$lang->regdate = 'Fecha Publicado';
|
||||
$lang->last_update = 'Última actualización';
|
||||
$lang->signup_date = 'Fecha Inscribido';
|
||||
$lang->last_login = 'Último Entrada';
|
||||
$lang->first_page = 'Primera Pagína';
|
||||
$lang->last_page = 'Última Pagína';
|
||||
$lang->search_target = 'Buscando Objectivo';
|
||||
$lang->search_keyword = 'Buscando Palabra Clave';
|
||||
$lang->is_default = 'Prefijado';
|
||||
|
||||
$lang->no_documents = 'No Entradas!';
|
||||
|
||||
$lang->board_manager = 'Configuración Tablón';
|
||||
$lang->member_manager = 'Configuración Miembros';
|
||||
$lang->layout_manager = 'Configuración Diseño';
|
||||
|
||||
$lang->use = 'Usar';
|
||||
$lang->notuse = 'Desusar';
|
||||
$lang->not_exists = 'No existe';
|
||||
|
||||
$lang->unit_sec = 'sec';
|
||||
$lang->unit_min = 'min';
|
||||
$lang->unit_hour = 'hr';
|
||||
$lang->unit_day = 'dia';
|
||||
$lang->unit_week = 'semana';
|
||||
$lang->unit_month = 'mes';
|
||||
$lang->unit_year = 'año';
|
||||
|
||||
// Related to Description
|
||||
$lang->about_tag = 'cuando mecanografiar las etiquetas, insertando un comma() entre cada etiqueta permite que usted entre las etiquetas múltiples';
|
||||
$lang->about_layout = 'disposición adorna un aspecto de su módulo que usted podría configurarlo de menú de la disposición en la tapa';
|
||||
|
||||
// Related to Message
|
||||
$lang->msg_call_server = 'Solicitando al servidor, espere por favor';
|
||||
$lang->msg_db_not_setted = 'No tiene la Configuración del DB';
|
||||
$lang->msg_invalid_queryid = 'El valor de Query ID especificado mal';
|
||||
$lang->msg_not_permitted = 'Usted no tiene permiso';
|
||||
$lang->msg_input_password = 'Por favor escribe sus contraseña';
|
||||
$lang->msg_invalid_document = 'Numero de entrada invalido';
|
||||
$lang->msg_invalid_request = 'Requesta Invalido';
|
||||
$lang->msg_invalid_password = 'Contraseñn Invalido';
|
||||
$lang->msg_error_occured = 'Occurrido Errores';
|
||||
$lang->msg_not_founded = 'Objetivo no encontrado';
|
||||
$lang->msg_no_result = 'Esta búsqueda no hay resultado';
|
||||
|
||||
$lang->msg_not_permitted_act = 'Usted no tiene permiso para ejecutar la action';
|
||||
$lang->msg_module_is_not_exists = 'No podía encontrar el modulo que usted solicitado';
|
||||
$lang->msg_module_is_not_standalone = 'El modulo usted solicitado no puede ejecutado independientemente';
|
||||
|
||||
$lang->success_registed = 'Registrado con Éxito';
|
||||
$lang->success_updated = 'Actualizado con Éxito';
|
||||
$lang->success_deleted = 'Boarrado con Éxito';
|
||||
$lang->success_voted = 'Votado con Éxito';
|
||||
$lang->success_moved = 'Movido con Éxito';
|
||||
$lang->success_sended = 'Enviado con Éxito';
|
||||
$lang->success_reset = 'Reajustado con Éxito';
|
||||
$lang->success_leaved = 'Abandonó con Éxito';
|
||||
|
||||
$lang->fail_to_delete = 'Supresión Fallada';
|
||||
$lang->fail_to_move = 'Mover Fallada';
|
||||
|
||||
$lang->failed_voted = 'No podía ser votado';
|
||||
$lang->fail_to_delete_have_children = 'Supresión Fallda. Hay unas o más contestaciones';
|
||||
|
||||
$lang->confirm_submit = 'Confirmar para someter?';
|
||||
$lang->confirm_logout = 'Confirmar para salir?';
|
||||
$lang->confirm_vote = 'Confirmar para voto?';
|
||||
$lang->confirm_delete = 'Confirmar de supresión?';
|
||||
$lang->confirm_move = 'Confirmar para Movido?';
|
||||
$lang->confirm_reset = 'Confirmar para reajustar?';
|
||||
$lang->confirm_leave = 'Confirmar para Éxito?';
|
||||
|
||||
$lang->column_type = 'Tipo de la Columna';
|
||||
$lang->column_type_list['text'] = 'Texto una linea';
|
||||
$lang->column_type_list['homepage'] = 'url';
|
||||
$lang->column_type_list['email_address'] = 'Correo Electrónico';
|
||||
$lang->column_type_list['tel'] = 'Numero de fono';
|
||||
$lang->column_type_list['textarea'] = 'Texto multi-linea';
|
||||
$lang->column_type_list['checkbox'] = 'checkbox (selecciónes multiples)';
|
||||
$lang->column_type_list['select'] = 'select box (selección singlar)';
|
||||
//$lang->column_type_list['kr_zip'] = 'zip code (Korean)';
|
||||
$lang->column_type_list['date'] = 'fecha (dd/mm/aaaa)';
|
||||
//$lang->column_type_list['jp_zip'] = 'zip code (Japanese)';
|
||||
$lang->column_name = 'Nombre de la Columna';
|
||||
$lang->column_title = 'Título de la Columna';
|
||||
$lang->default_value = 'Valor Prefijado';
|
||||
$lang->is_active = 'Activado';
|
||||
$lang->is_required = 'Entrada Necesario';
|
||||
|
||||
// Alert messages for Javascript using by XML filter
|
||||
$lang->filter->isnull = 'Entrar un valor para %s';
|
||||
$lang->filter->outofrange = 'Alinear el lenghth del texto de %s';
|
||||
$lang->filter->equalto = 'Valor inválido asignado para %s';
|
||||
$lang->filter->invalid_email = '%s es formateo inválido (eg. zbxe@zeroboard.com)';
|
||||
$lang->filter->invalid_user_id = $lang->filter->invalid_userid = "%s es formeto inválido.\\nTomas letras, números, y el underbar(ingleses _) de cuál debe comenzar con las letras Alfabeto";
|
||||
$lang->filter->invalid_homepage = '%s es formateo inválido. (?: http://www.zeroboard.com)';
|
||||
$lang->filter->invalid_korean = '%s got an invalid format. Solo aceptan las letras Coreanas';
|
||||
$lang->filter->invalid_korean_number = '%s es formateo inválido. Solamente combinación de letras y de números coreanos se acepta';
|
||||
$lang->filter->invalid_alpha = '%s es formateo inválido. Solamente se aceptan las alfabeto';
|
||||
$lang->filter->invalid_alpha_number = '%s es formateo inválido. Solamente se aceptan las alfabeto y números';
|
||||
$lang->filter->invalid_number = '%s es formateo inválido. Solo aceptan los números.';
|
||||
?>
|
||||
216
common/lang/fr.lang.php
Normal file
|
|
@ -0,0 +1,216 @@
|
|||
<?php
|
||||
/**
|
||||
* @file common/lang/fr.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief Paquet Francais de Langue (mots de base seulement)
|
||||
**/
|
||||
|
||||
// verbes et mots de base decrivant des actions
|
||||
$lang->cmd_write = 'Ecrire';
|
||||
$lang->cmd_reply = 'Répondre';
|
||||
$lang->cmd_delete = 'Supprimer';
|
||||
$lang->cmd_modify = 'Modifier';
|
||||
$lang->cmd_edit = 'Editer';
|
||||
$lang->cmd_view = 'Regarder';
|
||||
$lang->cmd_view_all = 'Regarder Tous';
|
||||
$lang->cmd_list = 'Liste';
|
||||
$lang->cmd_prev = 'Précédent ';
|
||||
$lang->cmd_next = 'Après';
|
||||
$lang->cmd_send_trackback = 'Envoyer Trackback';
|
||||
$lang->cmd_registration = $lang->cmd_submit = 'Soumettre';
|
||||
$lang->cmd_comment_registration = 'Ajouter le Commentaire';
|
||||
$lang->cmd_insert = 'Insérer';
|
||||
$lang->cmd_save = 'Economiser';
|
||||
$lang->cmd_input = 'Entrer';
|
||||
$lang->cmd_search = 'Rechercher';
|
||||
$lang->cmd_cancel = 'Decommander';
|
||||
$lang->cmd_back = 'Retour';
|
||||
$lang->cmd_vote = 'Voter';
|
||||
$lang->cmd_move = 'Deplacer';
|
||||
$lang->cmd_move_up = 'Relever';
|
||||
$lang->cmd_move_down = 'Abaisser';
|
||||
$lang->cmd_add_indent = 'Ajouter le Creux';
|
||||
$lang->cmd_remove_indent = 'Enlever le Creux';
|
||||
$lang->cmd_management = 'Gestion';
|
||||
$lang->cmd_make = 'Creer';
|
||||
$lang->cmd_select = 'Choisir';
|
||||
$lang->cmd_select_all = 'Choisir Tous';
|
||||
$lang->cmd_unselect_all = 'Ne pas Selectionner Tous';
|
||||
$lang->cmd_close_all = 'Cloturer Tous';
|
||||
$lang->cmd_open_all = 'Ouvrir Tous';
|
||||
$lang->cmd_reload = 'Recharger';
|
||||
$lang->cmd_close = 'Fermer';
|
||||
$lang->cmd_open = 'Cloturer';
|
||||
$lang->cmd_setup = 'Configurer';
|
||||
$lang->cmd_option = 'Option';
|
||||
$lang->cmd_apply = 'Appliquer';
|
||||
$lang->cmd_open_calendar = 'Choisir la Date';
|
||||
$lang->cmd_send = 'Envoyer';
|
||||
$lang->cmd_print = 'Imprimer';
|
||||
|
||||
$lang->enable = 'Permettre';
|
||||
$lang->disable = 'Neutraliser';
|
||||
|
||||
// Mots essentiels
|
||||
$lang->no = 'numéro';
|
||||
$lang->notice = 'Notification';
|
||||
$lang->secret = 'Secret';
|
||||
$lang->category = 'Categorie';
|
||||
$lang->document_srl = 'numéro du Document';
|
||||
$lang->user_id = 'Pseudo';
|
||||
$lang->author = 'Auteur';
|
||||
$lang->password = 'Mot de Passe';
|
||||
$lang->password1 = 'Mot de Passe';
|
||||
$lang->password2 = 'Confirmer le Mot de Passe';
|
||||
$lang->admin_id = 'Pseudo d\'Administrateur';
|
||||
$lang->writer = 'Auteur';
|
||||
$lang->user_name = 'Nom d\'utilisateur';
|
||||
$lang->nick_name = 'Surnom';
|
||||
$lang->email_address = 'E-mail';
|
||||
$lang->homepage = 'Site Web';
|
||||
$lang->blog = 'Blog';
|
||||
$lang->birthday = 'Anniversaire';
|
||||
$lang->browser_title = 'Titre de Navigateur';
|
||||
$lang->title = 'Titre';
|
||||
$lang->title_content = 'Titre + Contenu';
|
||||
$lang->content = 'Contenu';
|
||||
$lang->document = 'Article';
|
||||
$lang->comment = 'Commentaire';
|
||||
$lang->description = 'Description';
|
||||
$lang->trackback = 'Trackback';
|
||||
$lang->tag = 'Tag';
|
||||
$lang->allow_comment = 'Permettre les Commentaires';
|
||||
$lang->lock_comment = 'Rejeter les Commentaires';
|
||||
$lang->allow_trackback = 'Permettre la Trackback';
|
||||
$lang->uploaded_file = 'Dossier Téléchargé';
|
||||
$lang->grant = 'Autorité';
|
||||
$lang->target = 'Cible';
|
||||
$lang->total = 'Total';
|
||||
$lang->total_count = 'Comptage Total';
|
||||
$lang->ipaddress = 'IP Address';
|
||||
$lang->path = 'Chemin';
|
||||
$lang->cart = 'Article Choisi';
|
||||
$lang->friend = 'Les Amis';
|
||||
|
||||
$lang->mid = 'Titre de Module';
|
||||
$lang->layout = 'Disposition';
|
||||
$lang->widget = 'Widget';
|
||||
$lang->module = 'Module';
|
||||
$lang->skin = 'Thème';
|
||||
$lang->colorset = 'Arrangement de couleur';
|
||||
$lang->extra_vars = 'Variables Supplementaires';
|
||||
|
||||
$lang->document_url = 'URL du Document';
|
||||
$lang->trackback_url = 'URL de la Trackback';
|
||||
$lang->blog_name = 'Nom du Blog';
|
||||
$lang->excerpt = 'Citation';
|
||||
|
||||
$lang->document_count = 'Nombre Total des Articles';
|
||||
$lang->page_count = 'Nombre de Pages';
|
||||
$lang->list_count = 'Nombre de Listes';
|
||||
$lang->readed_count = 'Nombre de Fois Lues';
|
||||
$lang->voted_count = 'Nombre de Voix';
|
||||
$lang->member_count = 'Nombre de Membres';
|
||||
$lang->date = 'Date';
|
||||
$lang->regdate = 'Date d\'Enregistrement';
|
||||
$lang->last_update = 'La Dernière Mise a Jour';
|
||||
$lang->signup_date = 'Date d\'Enregistrement';
|
||||
$lang->last_login = 'La Dernière Ouverture';
|
||||
$lang->first_page = 'Première Page';
|
||||
$lang->last_page = 'Dernière Page';
|
||||
$lang->search_target = 'Cible de Recherche';
|
||||
$lang->search_keyword = 'Mot-clé de Recherche';
|
||||
$lang->is_default = 'défaut';
|
||||
|
||||
$lang->no_documents = 'Aucunes Entrées';
|
||||
|
||||
$lang->board_manager = 'Arrangements des Conseils';
|
||||
$lang->member_manager = 'Arrangements des Membres';
|
||||
$lang->layout_manager = 'Arrangements de Dispositions';
|
||||
|
||||
$lang->use = 'Utiliser';
|
||||
$lang->notuse = 'Ne pas Utiliser';
|
||||
$lang->not_exists = 'n\'Existe Pas';
|
||||
|
||||
$lang->unit_sec = 'sec';
|
||||
$lang->unit_min = 'min';
|
||||
$lang->unit_hour = 'heur';
|
||||
$lang->unit_day = 'jour';
|
||||
$lang->unit_week = 'semaine';
|
||||
$lang->unit_month = 'mois';
|
||||
$lang->unit_year = 'année';;
|
||||
|
||||
// Descriptions et information
|
||||
$lang->about_tag = 'Quand l\'insertion des tags, insérent une virgule(,) entre chaque tags te permet d\'entrer les tags multiples.';
|
||||
$lang->about_layout = 'es dispositions décorent l\'aspect d\'un module. Vous pouvez les configurer du menu de disposition ci-dessus.';
|
||||
|
||||
// Messages et alertes
|
||||
$lang->msg_call_server = 'En demandant le serveur pour information, attendre svp.';
|
||||
$lang->msg_db_not_setted = 'Les informations de DB n\'ont pas été placees.';
|
||||
$lang->msg_invalid_queryid = 'La valeur indiquee d\'identification de question est inadmissi.';
|
||||
$lang->msg_not_permitted = 'Vous n\'etes pas autorises a continuer.';
|
||||
$lang->msg_input_password = 'Veuillez entrer votre mot de passe.';
|
||||
$lang->msg_invalid_document = 'Vous avez demandé pour un article inadmissible.';
|
||||
$lang->msg_invalid_request = 'Votre demande est inadmissible.';
|
||||
$lang->msg_invalid_password = 'Vous avez entré un mot de passe inadmissible.';
|
||||
$lang->msg_error_occured = 'Une erreur s\'est produite.';
|
||||
$lang->msg_not_founded = 'La cible demandée n\'a pas pu être trouvée.';
|
||||
$lang->msg_no_result = 'Aucun Resultat';
|
||||
|
||||
$lang->msg_not_permitted_act = 'Vous n\'êtes pas autorisés pour exécuter l\'action priée.';
|
||||
$lang->msg_module_is_not_exists = 'Le module demandé n\'a pas pu être trouvé.';
|
||||
$lang->msg_module_is_not_standalone = 'Le module demandé ne peut pas être exécuté indépendamment.';
|
||||
|
||||
$lang->success_registed = 'L\'enregistrement a été avec succès exécuté.';
|
||||
$lang->success_updated = 'Avec succès mis a jour.';
|
||||
$lang->success_deleted = 'Avec succès supprime';
|
||||
$lang->success_voted = 'Avec succès voté';
|
||||
$lang->success_moved = 'Avec succès deplacé';
|
||||
$lang->success_sended = 'Avec succès envoyé';
|
||||
$lang->success_reset = 'Avec succès remisé';
|
||||
$lang->success_leaved = 'Avec succès fait cécession';
|
||||
|
||||
$lang->fail_to_delete = 'N\'a pas pu être supprimé.';
|
||||
$lang->fail_to_move = 'N\'a pas pu être déplacé';
|
||||
|
||||
$lang->failed_voted = 'La demande de voter a échoué';
|
||||
$lang->fail_to_delete_have_children = 'Une ou plusieurs reponses existent et ne pourraient pas être supprimees ainsi';
|
||||
|
||||
$lang->confirm_submit = 'Etes-vous sur vous voulez-vous soumettre?';
|
||||
$lang->confirm_logout = 'Etes-vous sur vous voulez-vous se deconnecter?';
|
||||
$lang->confirm_vote = 'Etes-vous sur vous voulez-vous voter?';
|
||||
$lang->confirm_delete = 'Etes-vous sur vous voulez-vous supprimer?';
|
||||
$lang->confirm_move = 'Etes-vous sur vous voulez-vous deplacer ceci?';
|
||||
$lang->confirm_reset = 'Etes-vous sur vous voulez-vous remettre a zero ceci?';
|
||||
$lang->confirm_leave = 'Etes-vous sur vous voulez-vous partir?';
|
||||
|
||||
$lang->column_type = 'Type de Colonne';
|
||||
$lang->column_type_list['text'] = 'un-ligne texte';
|
||||
$lang->column_type_list['homepage'] = 'url';
|
||||
$lang->column_type_list['email_address'] = 'e-mail';
|
||||
$lang->column_type_list['tel'] = 'numéro de telephone';
|
||||
$lang->column_type_list['textarea'] = 'secteur multiligne des textes';
|
||||
$lang->column_type_list['checkbox'] = 'boite de controle (choix multiple)';
|
||||
$lang->column_type_list['select'] = 'boite choisie (choix simple)';
|
||||
$lang->column_type_list['kr_zip'] = 'code postal (coréen)';
|
||||
$lang->column_type_list['date'] = 'date (yyyy/mm/dd)';
|
||||
//$lang->column_type_list['jp_zip'] = 'code postal (japonais)';
|
||||
$lang->column_name = 'Nom de colonne';
|
||||
$lang->column_title = 'Titre de colonne';
|
||||
$lang->default_value = 'Valeur par défaut';
|
||||
$lang->is_active = 'Actif';
|
||||
$lang->is_required = 'Champ requis';
|
||||
|
||||
// Messages alertes pour le Javascript a l'aide des filtres de XML
|
||||
$lang->filter->isnull = 'Entrer une valeur pour %s';
|
||||
$lang->filter->outofrange = 'Aligner la longueur des textes de %s';
|
||||
$lang->filter->equalto = "La valeur de %s est inadmissible.";
|
||||
$lang->filter->invalid_email = "La format de %s est inadmissible. ex) zbxe@zeroboard.com";
|
||||
$lang->filter->invalid_user_id = $lang->filter->invalid_userid = "La format de %s est inadmissible.\\nToutes les valeurs devraient se composer des alphabets, des nombres ou du soulignage (_) avec la premiere lettre etant un caractere de l'alphabet.";
|
||||
$lang->filter->invalid_homepage = "La format de %s est inadmissible. ex) http://www.zeroboard.com";
|
||||
$lang->filter->invalid_korean = "La format de %s est inadmissible. On permet seulement le coréen";
|
||||
$lang->filter->invalid_korean_number = "La format de %s est inadmissible. Svp caracteres ou nombres coréens d'entrée seulement.";
|
||||
$lang->filter->invalid_alpha = "La format de %s est inadmissible. Svp alphabets d'entrée seulement.";
|
||||
$lang->filter->invalid_alpha_number = "La format de %s est inadmissible. Svp alphabets ou nombres d'entrée seulement.";
|
||||
$lang->filter->invalid_number = "La format de %s est inadmissible. Svp l'entrée numérote seulement.";
|
||||
?>
|
||||
221
common/lang/jp.lang.php
Normal file
|
|
@ -0,0 +1,221 @@
|
|||
<?php
|
||||
/**
|
||||
* @file common/lang/jp.lang.php
|
||||
* @author zero (zero@nzeo.com) 翻訳:RisaPapa
|
||||
* @brief 日本語言語パッケージ(基本的な実行関連の用語がまとめられている)
|
||||
**/
|
||||
|
||||
// 基本的な実行に用いる用語
|
||||
$lang->cmd_write = '書き込む';
|
||||
$lang->cmd_reply = '返信';
|
||||
$lang->cmd_delete = '削除';
|
||||
$lang->cmd_modify = '修正';
|
||||
$lang->cmd_edit = '編集';
|
||||
$lang->cmd_view = '表示';
|
||||
$lang->cmd_view_all = 'すべて表示';
|
||||
$lang->cmd_list = 'リスト';
|
||||
$lang->cmd_prev = '前へ';
|
||||
$lang->cmd_next = '次へ';
|
||||
$lang->cmd_send_trackback = 'TB送信';
|
||||
$lang->cmd_registration = $lang->cmd_submit = '登録';
|
||||
$lang->cmd_comment_registration = 'コメント登録';
|
||||
$lang->cmd_insert = '挿入';
|
||||
$lang->cmd_save = '保存';
|
||||
$lang->cmd_input = '入力';
|
||||
$lang->cmd_search = '検索';
|
||||
$lang->cmd_cancel = 'キャンセル';
|
||||
$lang->cmd_back = '戻る';
|
||||
$lang->cmd_vote = '推薦';
|
||||
$lang->cmd_move = '移動';
|
||||
$lang->cmd_move_up = '上へ';
|
||||
$lang->cmd_move_down = '下へ';
|
||||
$lang->cmd_add_indent = '字下げ';
|
||||
$lang->cmd_remove_indent = '字下げ解除';
|
||||
$lang->cmd_management = '管理';
|
||||
$lang->cmd_make = '作成';
|
||||
$lang->cmd_select = '選択';
|
||||
$lang->cmd_select_all = 'すべて選択';
|
||||
$lang->cmd_unselect_all = 'すべて解除';
|
||||
$lang->cmd_close_all = 'すべて閉じる';
|
||||
$lang->cmd_open_all = 'すべて開く';
|
||||
$lang->cmd_reload = 'リロード';
|
||||
$lang->cmd_close = '閉じる';
|
||||
$lang->cmd_open = '開く';
|
||||
$lang->cmd_setup = '設定';
|
||||
$lang->cmd_apply = '適用';
|
||||
$lang->cmd_option = 'オプション';
|
||||
$lang->cmd_open_calendar = 'カレンダーを開く';
|
||||
$lang->cmd_send = '送信';
|
||||
$lang->cmd_print = '印刷';
|
||||
$lang->cmd_scrap = 'スクラップ';
|
||||
$lang->cmd_preview = 'プレビュー';
|
||||
$lang->cmd_reset = '初期化';
|
||||
$lang->cmd_remake_cache = "キャッシュファイル再生成";
|
||||
|
||||
$lang->enable = '可能';
|
||||
$lang->disable = '不可';
|
||||
|
||||
// 基本用語
|
||||
$lang->no = '番号';
|
||||
$lang->notice = 'お知らせ';
|
||||
$lang->secret = '非公開';
|
||||
$lang->category = 'カテゴリ';
|
||||
$lang->document_srl = '書き込み番号';
|
||||
$lang->user_id = 'ユーザID';
|
||||
$lang->author = '作者';
|
||||
$lang->password = 'パスワード';
|
||||
$lang->password1 = 'パスワード';
|
||||
$lang->password2 = 'パスワード確認';
|
||||
$lang->admin_id = '管理者ID';
|
||||
$lang->writer = '投稿者';
|
||||
$lang->user_name = '名前';
|
||||
$lang->nick_name = 'ニックネーム';
|
||||
$lang->email_address = 'メールアドレス';
|
||||
$lang->homepage = 'ホームページ';
|
||||
$lang->blog = 'ブログ';
|
||||
$lang->birthday = '誕生日';
|
||||
$lang->browser_title = 'ブラウザタイトル';
|
||||
$lang->title = 'タイトル';
|
||||
$lang->title_content = 'タイトル+内容';
|
||||
$lang->content = '内容';
|
||||
$lang->document = '書き込み';
|
||||
$lang->comment = 'コメント';
|
||||
$lang->description = '説明';
|
||||
$lang->trackback = 'トラックバック';
|
||||
$lang->tag = 'タグ';
|
||||
$lang->allow_comment = 'コメント許可';
|
||||
$lang->lock_comment = 'コメントロック';
|
||||
$lang->allow_trackback = 'トラックバック許可';
|
||||
$lang->uploaded_file = '添付';
|
||||
$lang->grant = '権限';
|
||||
$lang->target = '対象';
|
||||
$lang->total = 'すべて';
|
||||
$lang->total_count = 'トータル数';
|
||||
$lang->ipaddress = 'IPアドレス';
|
||||
$lang->path = 'パス';
|
||||
$lang->cart = '選択項目';
|
||||
$lang->friend = '友達';
|
||||
$lang->notify = 'お知らせ';
|
||||
|
||||
$lang->mid = 'モジュール名';
|
||||
$lang->layout = 'レイアウト';
|
||||
$lang->widget = 'ウィジェット';
|
||||
$lang->module = 'モジュール';
|
||||
$lang->skin = 'スキン';
|
||||
$lang->colorset = 'カラーセット';
|
||||
$lang->extra_vars = '拡張変数';
|
||||
|
||||
$lang->document_url = '書き込みURL';
|
||||
$lang->trackback_url = 'トラックバックURL';
|
||||
$lang->blog_name = 'ブログ名';
|
||||
$lang->excerpt = '要約';
|
||||
|
||||
$lang->document_count = '書き込み数';
|
||||
$lang->page_count = 'ページ数';
|
||||
$lang->list_count = 'リスト数';
|
||||
$lang->readed_count = '照合数';
|
||||
$lang->voted_count = '推薦数';
|
||||
$lang->member_count = '会員数';
|
||||
$lang->date = '年月日';
|
||||
$lang->regdate = '登録日';
|
||||
$lang->last_update = '最近修正日';
|
||||
$lang->signup_date = '加入日';
|
||||
$lang->last_login = '最近ログイン';
|
||||
$lang->first_page = '最初のページ';
|
||||
$lang->last_page = '最後のページ';
|
||||
$lang->search_target = '検索対象';
|
||||
$lang->search_keyword = 'キーワード';
|
||||
$lang->is_default = 'デフォルト';
|
||||
|
||||
$lang->no_documents = '書き込みがありません。';
|
||||
|
||||
$lang->board_manager = '掲示板管理';
|
||||
$lang->member_manager = '会員管理';
|
||||
$lang->layout_manager = 'レイアウト';
|
||||
|
||||
$lang->use = '使用';
|
||||
$lang->notuse = '未使用';
|
||||
$lang->not_exists = 'なし';
|
||||
|
||||
$lang->unit_sec = '秒';
|
||||
$lang->unit_min = '分';
|
||||
$lang->unit_hour = '時';
|
||||
$lang->unit_day = '日';
|
||||
$lang->unit_week = '週';
|
||||
$lang->unit_month = '月';
|
||||
$lang->unit_year = '年';
|
||||
|
||||
// 説明関連
|
||||
$lang->about_tag = 'タグを入力する時、「,」を使うと複数登録できます。';
|
||||
$lang->about_layout = 'レイアウトでモジュールの枠をデザインします。上のレイアウトメニューで管理できます。';
|
||||
|
||||
// メッセージ関連
|
||||
$lang->msg_call_server = 'サーバへ問合わせ中です。しばらくお待ちください。';
|
||||
$lang->msg_db_not_setted = 'DBが設定されていません。';
|
||||
$lang->msg_invalid_queryid = 'クエリIDの値が無効です。';
|
||||
$lang->msg_not_permitted = '権限がありません。';
|
||||
$lang->msg_input_password = 'パスワードを入力してください。';
|
||||
$lang->msg_invalid_document = '無効な書き込み番号です。';
|
||||
$lang->msg_invalid_request = '無効なリクエストです。';
|
||||
$lang->msg_invalid_password = 'パスワードが正しくありません。';
|
||||
$lang->msg_error_occured = 'エラーが発生しました。';
|
||||
$lang->msg_not_founded = '見つかりません。';
|
||||
$lang->msg_no_result = '検索結果がありません。';
|
||||
|
||||
$lang->msg_not_permitted_act = '現在の操作は実行する権限がありません。';
|
||||
$lang->msg_module_is_not_exists = 'モジュールが見つかりません。';
|
||||
$lang->msg_module_is_not_standalone = 'このモジュールはスタンドアローンでは作動しません。';
|
||||
|
||||
$lang->success_registed = '登録しました。';
|
||||
$lang->success_updated = '修正しました。';
|
||||
$lang->success_deleted = '削除しました。';
|
||||
$lang->success_voted = '推薦しました。';
|
||||
$lang->success_moved = '移動しました。';
|
||||
$lang->success_sended = '送信しました。';
|
||||
$lang->success_reset = '初期化しました。';
|
||||
$lang->success_leaved = '脱会しました。';
|
||||
|
||||
$lang->fail_to_delete = '削除に失敗しました。';
|
||||
$lang->fail_to_move = '移動に失敗しました。';
|
||||
|
||||
$lang->failed_voted = '推薦できません。';
|
||||
$lang->fail_to_delete_have_children = '返信の書き込みがあり、削除できません。';
|
||||
|
||||
$lang->confirm_submit = '登録しますか?';
|
||||
$lang->confirm_logout = 'ログアウトしますか?';
|
||||
$lang->confirm_vote = '推薦しますか?';
|
||||
$lang->confirm_delete = '削除しますか?';
|
||||
$lang->confirm_move = '移動しますか?';
|
||||
$lang->confirm_reset = '初期化しますか?';
|
||||
$lang->confirm_leave = '脱会しますか?';
|
||||
|
||||
$lang->column_type = 'タイプ';
|
||||
$lang->column_type_list['text'] = '入力フィールド(text)';
|
||||
$lang->column_type_list['homepage'] = 'ホームページタイプ(url)';
|
||||
$lang->column_type_list['email_address'] = 'メールタイプ(email)';
|
||||
$lang->column_type_list['tel'] = '電話番号タイプ(phone)';
|
||||
$lang->column_type_list['textarea'] = 'テキストエリア(textarea)';
|
||||
$lang->column_type_list['checkbox'] = 'チェックボックス(checkbox)';
|
||||
$lang->column_type_list['select'] = '選択(select)';
|
||||
$lang->column_type_list['kr_zip'] = '韓国住所(zip)';
|
||||
$lang->column_type_list['date'] = '年月日';
|
||||
//$lang->column_type_list['jp_zip'] = '日本住所(zip)';
|
||||
$lang->column_name = 'コラム名';
|
||||
$lang->column_title = 'コラムタイトル';
|
||||
$lang->default_value = 'デフォルト値';
|
||||
$lang->is_active = '活性化';
|
||||
$lang->is_required = '必須項目';
|
||||
|
||||
// xml filterで用いられているjavascript用のアラートメッセージ
|
||||
$lang->filter->isnull = '%sを入力してください';
|
||||
$lang->filter->outofrange = '%sの文字の長さを合わせてください';
|
||||
$lang->filter->equalto = '%sが正しくありません';
|
||||
$lang->filter->invalid_email = '%sのパターンが正しくありません (例: zbxe@zeroboard.com)';
|
||||
$lang->filter->invalid_user_id = $lang->filter->invalid_userid = "%sの形式が正しくありません。\\n半角の英数と記号「_」を組み合わせて入力してください。最初の文字は半角英数でなければなりません。";
|
||||
$lang->filter->invalid_homepage = '%sの形式が正しくありません (例: http://www.zeroboard.com)';
|
||||
$lang->filter->invalid_korean = '%sの形式が正しくありません。ハングルのみ入力してください。';
|
||||
$lang->filter->invalid_korean_number = '%sの形式が正しくありません。ハングルと半角数字で入力してください。';
|
||||
$lang->filter->invalid_alpha = '%sの形式が正しくありません。半角英文字で入力してください。';
|
||||
$lang->filter->invalid_alpha_number = '%sの形式が正しくありません。半角英数で入力してください。';
|
||||
$lang->filter->invalid_number = '%sの形式が正しくありません。半角数字で入力してください。';
|
||||
?>
|
||||
221
common/lang/ko.lang.php
Normal file
|
|
@ -0,0 +1,221 @@
|
|||
<?php
|
||||
/**
|
||||
* @file common/lang/ko.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief 한국어 언어팩 (기본적인 내용만 수록)
|
||||
**/
|
||||
|
||||
// 기본적으로 사용되는 action 언어
|
||||
$lang->cmd_write = '쓰기';
|
||||
$lang->cmd_reply = '답글';
|
||||
$lang->cmd_delete = '삭제';
|
||||
$lang->cmd_modify = '수정';
|
||||
$lang->cmd_edit = '편집';
|
||||
$lang->cmd_view = '보기';
|
||||
$lang->cmd_view_all = '전체 보기';
|
||||
$lang->cmd_list = '목록';
|
||||
$lang->cmd_prev = '이전';
|
||||
$lang->cmd_next = '다음';
|
||||
$lang->cmd_send_trackback = '엮인글발송';
|
||||
$lang->cmd_registration = $lang->cmd_submit = '등록';
|
||||
$lang->cmd_comment_registration = '댓글 등록';
|
||||
$lang->cmd_insert = '추가';
|
||||
$lang->cmd_save = '저장';
|
||||
$lang->cmd_input = '입력';
|
||||
$lang->cmd_search = '검색';
|
||||
$lang->cmd_cancel = '취소';
|
||||
$lang->cmd_back = '돌아가기';
|
||||
$lang->cmd_vote = '추천';
|
||||
$lang->cmd_move = '이동';
|
||||
$lang->cmd_move_up = '위로';
|
||||
$lang->cmd_move_down = '아래로';
|
||||
$lang->cmd_add_indent = '들이기';
|
||||
$lang->cmd_remove_indent = '빼내기';
|
||||
$lang->cmd_management = '관리';
|
||||
$lang->cmd_make = '생성';
|
||||
$lang->cmd_select = '선택';
|
||||
$lang->cmd_select_all = '모두선택';
|
||||
$lang->cmd_unselect_all = '모두해제';
|
||||
$lang->cmd_close_all = '모두닫기';
|
||||
$lang->cmd_open_all = '모두열기';
|
||||
$lang->cmd_reload = '다시읽기';
|
||||
$lang->cmd_close = '닫기';
|
||||
$lang->cmd_open = '열기';
|
||||
$lang->cmd_setup = '설정';
|
||||
$lang->cmd_option = '옵션';
|
||||
$lang->cmd_apply = '적용';
|
||||
$lang->cmd_open_calendar = '날짜 선택';
|
||||
$lang->cmd_send = '발송';
|
||||
$lang->cmd_print = '인쇄';
|
||||
$lang->cmd_scrap = '스크랩';
|
||||
$lang->cmd_preview = '미리 보기';
|
||||
$lang->cmd_reset = '초기화';
|
||||
$lang->cmd_remake_cache = "캐시파일 재생성";
|
||||
|
||||
$lang->enable = '가능';
|
||||
$lang->disable = '불가능';
|
||||
|
||||
// 기본 단어
|
||||
$lang->no = '번호';
|
||||
$lang->notice = '공지';
|
||||
$lang->secret = '비밀';
|
||||
$lang->category = '분류';
|
||||
$lang->document_srl = '문서번호';
|
||||
$lang->user_id = '아이디';
|
||||
$lang->author = '작성자';
|
||||
$lang->password = '비밀번호';
|
||||
$lang->password1 = '비밀번호';
|
||||
$lang->password2 = '비밀번호 확인';
|
||||
$lang->admin_id = '관리자ID';
|
||||
$lang->writer = '글쓴이';
|
||||
$lang->user_name = '이름';
|
||||
$lang->nick_name = '닉네임';
|
||||
$lang->email_address = '이메일 주소';
|
||||
$lang->homepage = '홈페이지';
|
||||
$lang->blog = '블로그';
|
||||
$lang->birthday = '생일';
|
||||
$lang->browser_title = '브라우저 제목';
|
||||
$lang->title = '제목';
|
||||
$lang->title_content = '제목+내용';
|
||||
$lang->content = '내용';
|
||||
$lang->document = '게시물';
|
||||
$lang->comment = '댓글';
|
||||
$lang->description = '설명';
|
||||
$lang->trackback = '엮인글';
|
||||
$lang->tag = '태그';
|
||||
$lang->allow_comment = '댓글허용';
|
||||
$lang->lock_comment = '댓글잠금';
|
||||
$lang->allow_trackback = '엮인글허용';
|
||||
$lang->uploaded_file = '첨부';
|
||||
$lang->grant = '권한';
|
||||
$lang->target = '대상';
|
||||
$lang->total = '전체';
|
||||
$lang->total_count = '전체개수';
|
||||
$lang->ipaddress = 'IP 주소';
|
||||
$lang->path = '경로';
|
||||
$lang->cart = '선택항목';
|
||||
$lang->friend = '친구';
|
||||
$lang->notify = '알림';
|
||||
|
||||
$lang->mid = '모듈이름';
|
||||
$lang->layout = '레이아웃';
|
||||
$lang->widget = '위젯 ';
|
||||
$lang->module = '모듈';
|
||||
$lang->skin = '스킨';
|
||||
$lang->colorset = '컬러셋';
|
||||
$lang->extra_vars = '확장변수';
|
||||
|
||||
$lang->document_url = '게시글 주소';
|
||||
$lang->trackback_url = '엮인글 주소';
|
||||
$lang->blog_name = '블로그이름';
|
||||
$lang->excerpt = '발췌';
|
||||
|
||||
$lang->document_count = '글수';
|
||||
$lang->page_count = '페이지수';
|
||||
$lang->list_count = '목록 수';
|
||||
$lang->readed_count = '조회수';
|
||||
$lang->voted_count = '추천수';
|
||||
$lang->member_count = '회원수';
|
||||
$lang->date = '날짜';
|
||||
$lang->regdate = '등록일';
|
||||
$lang->last_update = '최근수정일';
|
||||
$lang->signup_date = '가입일';
|
||||
$lang->last_login = '최근로그인';
|
||||
$lang->first_page = '첫페이지';
|
||||
$lang->last_page = '끝페이지';
|
||||
$lang->search_target = '검색대상';
|
||||
$lang->search_keyword = '검색어';
|
||||
$lang->is_default = '기본';
|
||||
|
||||
$lang->no_documents = '등록된 글이 없습니다';
|
||||
|
||||
$lang->board_manager = '게시판 관리';
|
||||
$lang->member_manager = '회원 관리';
|
||||
$lang->layout_manager = '레이아웃 관리';
|
||||
|
||||
$lang->use = '사용';
|
||||
$lang->notuse = '미사용';
|
||||
$lang->not_exists = '없음';
|
||||
|
||||
$lang->unit_sec = '초';
|
||||
$lang->unit_min = '분';
|
||||
$lang->unit_hour = '시';
|
||||
$lang->unit_day = '일';
|
||||
$lang->unit_week = '주';
|
||||
$lang->unit_month = '월';
|
||||
$lang->unit_year = '년';
|
||||
|
||||
// 설명 관련
|
||||
$lang->about_tag = '태그 입력시 , (쉼표)를 이용하시면 복수 등록이 가능합니다';
|
||||
$lang->about_layout = '레이아웃은 모듈의 껍데기를 꾸며줍니다. 상단 레이아웃 메뉴에서 관리하실 수 있습니다';
|
||||
|
||||
// 메세지 관련
|
||||
$lang->msg_call_server = '서버에 요청중입니다. 잠시만 기다려주세요.';
|
||||
$lang->msg_db_not_setted = 'DB설정이 되어 있지 않습니다';
|
||||
$lang->msg_invalid_queryid = 'Query ID값이 잘못 지정되었습니다';
|
||||
$lang->msg_not_permitted = '권한이 없습니다';
|
||||
$lang->msg_input_password = '비밀번호를 입력하여 주세요';
|
||||
$lang->msg_invalid_document = '잘못된 문서번호입니다';
|
||||
$lang->msg_invalid_request = '잘못된 요청입니다';
|
||||
$lang->msg_invalid_password = '비밀번호가 올바르지 않습니다';
|
||||
$lang->msg_error_occured = '오류가 발생하였습니다';
|
||||
$lang->msg_not_founded = '대상을 찾을 수 없습니다';
|
||||
$lang->msg_no_result = '검색 결과가 없습니다';
|
||||
|
||||
$lang->msg_not_permitted_act = '요청하신 action을 실행할 수 있는 권한이 없습니다';
|
||||
$lang->msg_module_is_not_exists = '요청하신 모듈을 찾을 수 없습니다';
|
||||
$lang->msg_module_is_not_standalone = '요청하신 모듈은 독립적으로 동작할 수가 없습니다';
|
||||
|
||||
$lang->success_registed = '등록되었습니다';
|
||||
$lang->success_updated = '수정되었습니다';
|
||||
$lang->success_deleted = '삭제되었습니다';
|
||||
$lang->success_voted = '추천되었습니다';
|
||||
$lang->success_moved = '이동되었습니다';
|
||||
$lang->success_sended = '발송되었습니다';
|
||||
$lang->success_reset = '초기화되었습니다';
|
||||
$lang->success_leaved = '탈퇴되었습니다';
|
||||
|
||||
$lang->fail_to_delete = '삭제되었습니다';
|
||||
$lang->fail_to_move = '이동되었습니다';
|
||||
|
||||
$lang->failed_voted = '추천하실 수 없습니다';
|
||||
$lang->fail_to_delete_have_children = '답글이 있어서 삭제할 수 없습니다';
|
||||
|
||||
$lang->confirm_submit = '등록하시겠습니까?';
|
||||
$lang->confirm_logout = '로그아웃하시겠습니까?';
|
||||
$lang->confirm_vote = '추천하시겠습니까?';
|
||||
$lang->confirm_delete = '삭제하시겠습니까?';
|
||||
$lang->confirm_move = '이동하시겠습니까?';
|
||||
$lang->confirm_reset = '초기화 하시겠습니까??';
|
||||
$lang->confirm_leave = '탈퇴 하시겠습니까??';
|
||||
|
||||
$lang->column_type = '형식';
|
||||
$lang->column_type_list['text'] = '한줄 입력칸 (text)';
|
||||
$lang->column_type_list['homepage'] = '홈페이지 형식 (url)';
|
||||
$lang->column_type_list['email_address'] = '이메일 형식 (email)';
|
||||
$lang->column_type_list['tel'] = '전화번호 형식 (phone)';
|
||||
$lang->column_type_list['textarea'] = '여러줄 입력칸 (textarea)';
|
||||
$lang->column_type_list['checkbox'] = '다중 선택 (checkbox)';
|
||||
$lang->column_type_list['select'] = '단일 선택 (select)';
|
||||
$lang->column_type_list['kr_zip'] = '한국주소 (zip)';
|
||||
$lang->column_type_list['date'] = '일자 (년월일)';
|
||||
//$lang->column_type_list['jp_zip'] = '일본주소 (zip)';
|
||||
$lang->column_name = '입력항목 이름';
|
||||
$lang->column_title = '입력항목 제목';
|
||||
$lang->default_value = '기본 값';
|
||||
$lang->is_active = '활성';
|
||||
$lang->is_required = '필수항목';
|
||||
|
||||
// xml filter에서 사용되는 javascript용 alert msg
|
||||
$lang->filter->isnull = '%s의 값을 입력해주세요';
|
||||
$lang->filter->outofrange = '%s의 글자 길이를 맞추어 주세요.';
|
||||
$lang->filter->equalto = '%s의 값이 잘못 되었습니다.';
|
||||
$lang->filter->invalid_email = '%s의 형식이 잘못되었습니다. (예: zbxe@zeroboard.com)';
|
||||
$lang->filter->invalid_user_id = $lang->filter->invalid_userid = "%s의 형식이 잘못되었습니다.\\n영문,숫자와 _로 만드실 수 있으며 제일 앞은 영문이어야 합니다";
|
||||
$lang->filter->invalid_homepage = '%s의 형식이 잘못되었습니다. (예: http://www.zeroboard.com)';
|
||||
$lang->filter->invalid_korean = '%s의 형식이 잘못되었습니다. 한글로만 입력해주셔야 합니다';
|
||||
$lang->filter->invalid_korean_number = '%s의 형식이 잘못되었습니다. 한글과 숫자로만 입력해주셔야 합니다';
|
||||
$lang->filter->invalid_alpha = '%s의 형식이 잘못되었습니다. 영문으로만 입력해주셔야 합니다';
|
||||
$lang->filter->invalid_alpha_number = '%s의 형식이 잘못되었습니다. 영문과 숫자로만 입력해주셔야 합니다';
|
||||
$lang->filter->invalid_number = '%s의 형식이 잘못되었습니다. 숫자로만 입력해주셔야 합니다';
|
||||
?>
|
||||
221
common/lang/zh-CN.lang.php
Normal file
|
|
@ -0,0 +1,221 @@
|
|||
<?php
|
||||
/**
|
||||
* @file common/lang/zh-CN.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief 简体中文语言包 (只收录基本内容)
|
||||
**/
|
||||
|
||||
// 基本使用的 action 语言
|
||||
$lang->cmd_write = '发表新帖';
|
||||
$lang->cmd_reply = '回复';
|
||||
$lang->cmd_delete = '删除';
|
||||
$lang->cmd_modify = '修改';
|
||||
$lang->cmd_edit = '编辑';
|
||||
$lang->cmd_view = '查看';
|
||||
$lang->cmd_view_all = '全部查看';
|
||||
$lang->cmd_list = '目录';
|
||||
$lang->cmd_prev = '上一页';
|
||||
$lang->cmd_next = '下一页';
|
||||
$lang->cmd_send_trackback = '发送引用';
|
||||
$lang->cmd_registration = $lang->cmd_submit = '提交';
|
||||
$lang->cmd_comment_registration = '提交评论';
|
||||
$lang->cmd_insert = '添加';
|
||||
$lang->cmd_save = '保存';
|
||||
$lang->cmd_input = '输入';
|
||||
$lang->cmd_search = '搜索';
|
||||
$lang->cmd_cancel = '取消';
|
||||
$lang->cmd_back = '返回';
|
||||
$lang->cmd_vote = '推荐';
|
||||
$lang->cmd_move = '查看';
|
||||
$lang->cmd_move_up = '向上';
|
||||
$lang->cmd_move_down = '向下';
|
||||
$lang->cmd_add_indent = '拉长';
|
||||
$lang->cmd_remove_indent = '缩短';
|
||||
$lang->cmd_management = '管理';
|
||||
$lang->cmd_make = '生成';
|
||||
$lang->cmd_select = '选择';
|
||||
$lang->cmd_select_all = '全部选择';
|
||||
$lang->cmd_unselect_all = '全部解除';
|
||||
$lang->cmd_close_all = '全部关闭';
|
||||
$lang->cmd_open_all = '全部打开';
|
||||
$lang->cmd_reload = '从新载入';
|
||||
$lang->cmd_close = '关闭';
|
||||
$lang->cmd_open = '打开';
|
||||
$lang->cmd_setup = '设置';
|
||||
$lang->cmd_option = '选项';
|
||||
$lang->cmd_apply = '应用';
|
||||
$lang->cmd_open_calendar = '选择日期';
|
||||
$lang->cmd_send = '发送';
|
||||
$lang->cmd_print = '打印';
|
||||
$lang->cmd_scrap = '收藏';
|
||||
$lang->cmd_preview = '预览';
|
||||
$lang->cmd_reset = '初始化';
|
||||
$lang->cmd_remake_cache = "重新生成缓冲文件";
|
||||
|
||||
$lang->enable = '可用';
|
||||
$lang->disable = '禁用';
|
||||
|
||||
// 基本词语
|
||||
$lang->no = '编号';
|
||||
$lang->notice = '公告';
|
||||
$lang->secret = '密帖';
|
||||
$lang->category = '分类';
|
||||
$lang->document_srl = '文章编号';
|
||||
$lang->user_id = '用户名';
|
||||
$lang->author = '制作';
|
||||
$lang->password = '密码';
|
||||
$lang->password1 = '密码';
|
||||
$lang->password2 = '确认密码';
|
||||
$lang->admin_id = '管理员ID';
|
||||
$lang->writer = '作者';
|
||||
$lang->user_name = '姓名';
|
||||
$lang->nick_name = '昵称';
|
||||
$lang->email_address = '电子邮件';
|
||||
$lang->homepage = '主页';
|
||||
$lang->blog = '博客';
|
||||
$lang->birthday = '生日';
|
||||
$lang->browser_title = '浏览器标题';
|
||||
$lang->title = '标题';
|
||||
$lang->title_content = '标题+内容';
|
||||
$lang->content = '内容';
|
||||
$lang->document = '文章';
|
||||
$lang->comment = '评论';
|
||||
$lang->description = '说明';
|
||||
$lang->trackback = '引用';
|
||||
$lang->tag = '标签';
|
||||
$lang->allow_comment = '允许评论';
|
||||
$lang->lock_comment = '关闭评论';
|
||||
$lang->allow_trackback = '允许引用';
|
||||
$lang->uploaded_file = '附件';
|
||||
$lang->grant = '权限';
|
||||
$lang->target = '目标';
|
||||
$lang->total = '全部';
|
||||
$lang->total_count = '总数';
|
||||
$lang->ipaddress = 'IP地址';
|
||||
$lang->path = '路径';
|
||||
$lang->cart = '选择项目';
|
||||
$lang->friend = '好友';
|
||||
$lang->notify = '通告';
|
||||
|
||||
$lang->mid = '模块名称';
|
||||
$lang->layout = '布局';
|
||||
$lang->widget = '控件 ';
|
||||
$lang->module = '模块';
|
||||
$lang->skin = '皮肤';
|
||||
$lang->colorset = '颜色设定';
|
||||
$lang->extra_vars = '扩展变数';
|
||||
|
||||
$lang->document_url = '文章地址';
|
||||
$lang->trackback_url = '引用地址';
|
||||
$lang->blog_name = '博客名称';
|
||||
$lang->excerpt = '载自';
|
||||
|
||||
$lang->document_count = '帖子数';
|
||||
$lang->page_count = '页数';
|
||||
$lang->list_count = '目录数';
|
||||
$lang->readed_count = '查看';
|
||||
$lang->voted_count = '推荐';
|
||||
$lang->member_count = '会员数';
|
||||
$lang->date = '日期';
|
||||
$lang->regdate = '登录日期';
|
||||
$lang->last_update = '最后更新';
|
||||
$lang->signup_date = '注册日期';
|
||||
$lang->last_login = '最近登陆';
|
||||
$lang->first_page = '第一页';
|
||||
$lang->last_page = '最后一页';
|
||||
$lang->search_target = '搜索目标';
|
||||
$lang->search_keyword = '关键字';
|
||||
$lang->is_default = '默认';
|
||||
|
||||
$lang->no_documents = '现没有主题。';
|
||||
|
||||
$lang->board_manager = '版面管理';
|
||||
$lang->member_manager = '会员管理';
|
||||
$lang->layout_manager = '布局管理';
|
||||
|
||||
$lang->use = '使用';
|
||||
$lang->notuse = '未使用';
|
||||
$lang->not_exists = '无';
|
||||
|
||||
$lang->unit_sec = '秒';
|
||||
$lang->unit_min = '分';
|
||||
$lang->unit_hour = '时';
|
||||
$lang->unit_day = '日';
|
||||
$lang->unit_week = '周';
|
||||
$lang->unit_month = '月';
|
||||
$lang->unit_year = '年';
|
||||
|
||||
// 说明
|
||||
$lang->about_tag = '用逗号分隔多个标签';
|
||||
$lang->about_layout = '布局是布置模块的外观,在上端布局菜里单可以进行管理';
|
||||
|
||||
// 信息
|
||||
$lang->msg_call_server = '系统正在链接服务器,请稍后。';
|
||||
$lang->msg_db_not_setted = '还没有设定 DB';
|
||||
$lang->msg_invalid_queryid = 'Query ID值指定错误';
|
||||
$lang->msg_not_permitted = '没有权限';
|
||||
$lang->msg_input_password = '请输入密码';
|
||||
$lang->msg_invalid_document = '出错的文章编号';
|
||||
$lang->msg_invalid_request = '出错的请求';
|
||||
$lang->msg_invalid_password = '密码错误';
|
||||
$lang->msg_error_occured = '发生错误';
|
||||
$lang->msg_not_founded = '没有找到相关内容';
|
||||
$lang->msg_no_result = '找不到和您查询的相符结果';
|
||||
|
||||
$lang->msg_not_permitted_act = '没有权限执行 action命令';
|
||||
$lang->msg_module_is_not_exists = '找不到您查询的模块';
|
||||
$lang->msg_module_is_not_standalone = '您请求的模块不能单独执行';
|
||||
|
||||
$lang->success_registed = '提交成功!';
|
||||
$lang->success_updated = '修改成功!';
|
||||
$lang->success_deleted = '删除成功!';
|
||||
$lang->success_voted = '推荐成功!';
|
||||
$lang->success_moved = '移动成功!';
|
||||
$lang->success_sended = '发送成功!';
|
||||
$lang->success_reset = '初始化成功';
|
||||
$lang->success_leaved = '注销成功!';
|
||||
|
||||
$lang->fail_to_delete = '删除成功!';
|
||||
$lang->fail_to_move = '移动成功!';
|
||||
|
||||
$lang->failed_voted = '您不能推荐!';
|
||||
$lang->fail_to_delete_have_children = '不能删除有回复的评论!';
|
||||
|
||||
$lang->confirm_submit = '确定要提交吗?';
|
||||
$lang->confirm_logout = '确定要退出吗?';
|
||||
$lang->confirm_vote = '确定要推荐吗?';
|
||||
$lang->confirm_delete = '确定要删除吗?';
|
||||
$lang->confirm_move = '确定要移动吗?';
|
||||
$lang->confirm_reset = '确定要初始化吗?';
|
||||
$lang->confirm_leave = '确定要注销吗?';
|
||||
|
||||
$lang->column_type = '格式';
|
||||
$lang->column_type_list['text'] = '单行文本输入区(text)';
|
||||
$lang->column_type_list['homepage'] = '网址格式 (url)';
|
||||
$lang->column_type_list['email_address'] = '邮件格式 (email)';
|
||||
$lang->column_type_list['tel'] = '电话号码格式 (phone)';
|
||||
$lang->column_type_list['textarea'] = '多行文本框 (textarea)';
|
||||
$lang->column_type_list['checkbox'] = '复选框 (checkbox)';
|
||||
$lang->column_type_list['select'] = '下拉列表框 (select)';
|
||||
$lang->column_type_list['kr_zip'] = '韩国地址 (zip)';
|
||||
$lang->column_type_list['date'] = '日期 (年月日)';
|
||||
//$lang->column_type_list['jp_zip'] = '日本地址 (zip)';
|
||||
$lang->column_name = '项目名';
|
||||
$lang->column_title = '项目标题';
|
||||
$lang->default_value = '缺省值';
|
||||
$lang->is_active = '激活';
|
||||
$lang->is_required = '必填';
|
||||
|
||||
// 在xml filter使用的 javascript用 alert msg
|
||||
$lang->filter->isnull = '请输入%s';
|
||||
$lang->filter->outofrange = '请确认%s字数';
|
||||
$lang->filter->equalto = '%s值有误。';
|
||||
$lang->filter->invalid_email = '%s格式有误。(例:zbxe@zeroboard.com)';
|
||||
$lang->filter->invalid_user_id = $lang->filter->invalid_userid = "%s只能用英文,数字和 _,首个字符必须是英文字母。";
|
||||
$lang->filter->invalid_homepage = '%s格式有误。(例: http://www.zeroboard.com)';
|
||||
$lang->filter->invalid_korean = '%s只能输入中文';
|
||||
$lang->filter->invalid_korean_number = '%s只能输入中文或数字';
|
||||
$lang->filter->invalid_alpha = '%s只能输入英文字母';
|
||||
$lang->filter->invalid_alpha_number = '%s只能输入英文或数字';
|
||||
$lang->filter->invalid_number = '%s只能输入数字';
|
||||
?>
|
||||
189
common/tpl/calendar.php
Normal file
|
|
@ -0,0 +1,189 @@
|
|||
<?php
|
||||
$year = sprintf("%04d",$_REQUEST['year']);
|
||||
$month = sprintf("%02d",$_REQUEST['month']);
|
||||
|
||||
$method = $_REQUEST['method'];
|
||||
$fo_id = $_REQUEST['fo_id'];
|
||||
$callback_func = $_REQUEST['callback_func'];
|
||||
|
||||
$day_str = $_REQUEST['day_str'];
|
||||
if($day_str && strlen($day_str)) {
|
||||
$year = substr($day_str,0,4);
|
||||
$month = substr($day_str,4,2);
|
||||
}
|
||||
|
||||
if(!(int)$year) $year = date("Y");
|
||||
if(!(int)$month) $month = date("m");
|
||||
|
||||
switch($method) {
|
||||
case 'prev_year' :
|
||||
$year = date("Y", mktime(0,0,0,1,1,$year)-60*60*24);
|
||||
break;
|
||||
case 'prev_month' :
|
||||
$month --;
|
||||
if($month < 1) {
|
||||
$month = 12;
|
||||
$year --;
|
||||
}
|
||||
break;
|
||||
case 'next_month' :
|
||||
$month ++;
|
||||
if($month > 12) {
|
||||
$month = 1;
|
||||
$year ++;
|
||||
}
|
||||
break;
|
||||
case 'next_year' :
|
||||
$year = date("Y", mktime(0,0,0,12,31,$year)+60*60*24);
|
||||
break;
|
||||
}
|
||||
|
||||
$start_week = date("w", mktime(0,0,0,$month,1,$year));
|
||||
$month_day = date("t", mktime(0,0,0,$month,1,$year));
|
||||
$before_month_month_day = date("t", mktime(0,0,0,$month,1,$year)-60*60*24);
|
||||
|
||||
$next_year = date("m", mktime(0,0,0,12,31, $year)+60*60*24);
|
||||
$next_month = date("m", mktime(0,0,0,$month,$month_day, $year)+60*60*24);
|
||||
?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html lang="ko" xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="imagetoolbar" content="no" />
|
||||
<title>Calendar</title>
|
||||
<script type="text/javascript" src="../js/x.js"></script>
|
||||
<script type="text/javascript" src="../js/common.js"></script>
|
||||
<script type="text/javascript" src="../js/xml_handler.js"></script>
|
||||
|
||||
<link rel="stylesheet" href="../css/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../css/button.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../modules/admin/tpl/css/admin.css" type="text/css" />
|
||||
<link rel="stylesheet" href="./css/calendar.css" type="text/css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
function selectDate(date_str, date_val, callback_func) {
|
||||
if(!opener) {
|
||||
window.close();
|
||||
return;
|
||||
}
|
||||
|
||||
var date_obj = opener.xGetElementById("date_<?=$fo_id?>");
|
||||
var str_obj = opener.xGetElementById("str_<?=$fo_id?>");
|
||||
|
||||
if(date_obj) date_obj.value = date_val;
|
||||
|
||||
if(str_obj) xInnerHtml(str_obj, date_str);
|
||||
|
||||
if(callback_func) eval('opener.'+callback_func+'('+date_val+')');
|
||||
|
||||
window.close();
|
||||
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="popup_content" >
|
||||
<div id="popHeadder">
|
||||
<h1>Calendar</h1>
|
||||
</div>
|
||||
|
||||
<form action="./calendar.php" method="get">
|
||||
<input type="hidden" name="fo_id" value="<?=$fo_id?>"/>
|
||||
<input type="hidden" name="callback_func" value="<?=$callback_func?>"/>
|
||||
|
||||
<div id="popBody">
|
||||
|
||||
<div class="calendar">
|
||||
<div class="yymm">
|
||||
<div class="yy">
|
||||
<a href="./calendar.php?fo_id=<?=$fo_id?>&year=<?=$year?>&month=<?=$month?>&method=prev_year&callback_func=<?=$callback_func?>" class="left"><img src="./images/buttonLeft2.gif" alt="prev" width="11" height="11" /></a><?=$year?><a href="./calendar.php?fo_id=<?=$fo_id?>&year=<?=$year?>&month=<?=$month?>&method=next_year&callback_func=<?=$callback_func?>" class="right"><img src="./images/buttonRight2.gif" alt="next" width="11" height="11" /></a>
|
||||
</div>
|
||||
<div class="mm">
|
||||
<p><?=date("M", mktime(0,0,0,$month,1,$year))?></p>
|
||||
<a href="./calendar.php?fo_id=<?=$fo_id?>&year=<?=$year?>&month=<?=$month?>&method=prev_month&callback_func=<?=$callback_func?>" class="left"><img src="./images/buttonLeft2.gif" alt="prev" width="11" height="11" /></a><span><?=$month?></span><a href="./calendar.php?fo_id=<?=$fo_id?>&year=<?=$year?>&month=<?=$month?>&method=next_month&callback_func=<?=$callback_func?>" class="right"><img src="./images/buttonRight2.gif" alt="next" width="11" height="11" /></a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="go">
|
||||
<input type="text" name="year" class="inputTypeY" value="<?=$year?>" />
|
||||
<input type="text" name="month" class="inputTypeM" value="<?=$month?>" />
|
||||
<input type="image" src="./images/buttonGo.gif" alt="Go" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table cellspacing="0" class="dd">
|
||||
|
||||
<?php
|
||||
for($i=0;$i<6;$i++) {
|
||||
?>
|
||||
<tr class="<?if($i==0){?>first<?}elseif($i==5){?>last<?}?>">
|
||||
<?php
|
||||
for($j=0;$j<7;$j++) {
|
||||
$m = $month;
|
||||
$y = $year;
|
||||
|
||||
$cell_no = $i*7 + $j;
|
||||
|
||||
if($cell_no < $start_week) {
|
||||
$day = $before_month_month_day + $cell_no - $start_week + 1;
|
||||
$m = $month - 1;
|
||||
if($m<1) {
|
||||
$m = 12;
|
||||
$y = $year - 1;
|
||||
}
|
||||
} else {
|
||||
|
||||
$day = $cell_no - $start_week +1;
|
||||
$m = $month;
|
||||
|
||||
if($day > $month_day) {
|
||||
$day = $day - $month_day;
|
||||
$m = $month + 1;
|
||||
if($m>12) {
|
||||
$m = 1;
|
||||
$y = $year-1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($j==0) $class_name = "sun";
|
||||
else $class_name= "";
|
||||
|
||||
$date = date("Y. m. d", mktime(0,0,0,$m, $day, $y));
|
||||
$date_str = date("Ymd", mktime(0,0,0,$m, $day, $y));
|
||||
|
||||
?>
|
||||
<td class="<?=$class_name?>">
|
||||
<?if($m==$month){?>
|
||||
<?if(date("Ymd")==$date_str){?><strong><?}?>
|
||||
<?if($day){?><a href="#" onclick="selectDate('<?=$date?>','<?=$date_str?>','<?=$callback_func?>');return false;"><?=$day?></a><?}else{?> <?}?>
|
||||
<?if(date("Ymd")==$date_str){?></strong><?}?>
|
||||
<?}else{?>
|
||||
<span class="disable"><?if($day){?><a href="#" onclick="selectDate('<?=$date?>','<?=$date_str?>','<?=$callback_func?>');return false;"><?=$day?></a><?}else{?> <?}?></span>
|
||||
<?}?>
|
||||
</td>
|
||||
<?
|
||||
}
|
||||
?>
|
||||
</tr>
|
||||
<?
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
<div id="popFooter" class="tCenter">
|
||||
<a href="#" onclick="window.close();" class="button"><span>close</span></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
xAddEventListener(window,'load', setFixedPopupSize);
|
||||
var _isPoped = true;
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
47
common/tpl/common_layout.html
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html lang="{Context::getLangType()}" xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<meta name="generator" content="zeroboard xe (http://www.zeroboard.com)" />
|
||||
<!--@if($module_info->module)--><meta name="module" content="{$module_info->module}" />
|
||||
<!--@end--><!--@if($module_info->skin)--><meta name="module_skin" content="{$module_info->skin}" />
|
||||
<!--@end--><!--@if($layout_info->title)--><meta name="layout" content="{$layout_info->title} ({$layout_info->layout})" />
|
||||
<!--@end--><!--@if($layout->author)--><meta name="layout_maker" content="{$layout_info->author->name} ({$layout_info->author->homepage})" />
|
||||
<!--@end--><meta http-equiv="imagetoolbar" content="no" />
|
||||
<title>{Context::getBrowserTitle()}</title>
|
||||
<script type="text/javascript" src="./common/js/x.js"></script>
|
||||
<script type="text/javascript" src="./common/js/common.js"></script>
|
||||
<script type="text/javascript" src="./common/js/xml_handler.js"></script>
|
||||
<script type="text/javascript" src="./common/js/xml_js_filter.js"></script>
|
||||
<!--@foreach(Context::getJsFile() as $key => $js_file)--><script type="text/javascript" src="{$js_file}"></script>
|
||||
<!--@end--><!--@if($rss_url)--><link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="{$rss_url}" />
|
||||
<!--@end--><link rel="stylesheet" href="./common/css/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="./common/css/button.css" type="text/css" />
|
||||
<!--@foreach(Context::getCssFile() as $key => $css_file)--><link rel="stylesheet" href="{$css_file}" type="text/css" />
|
||||
<!--@end--><!--@if($module=='admin' || strpos($act,'Admin')>0)--><link rel="stylesheet" href="./modules/admin/tpl/css/admin.css" type="text/css" />
|
||||
<!--@end--><script type="text/javascript">//<![CDATA[
|
||||
var current_url = "{$current_url}";
|
||||
var request_uri = "{$request_uri}";
|
||||
var current_mid = "{$mid}";
|
||||
var wating_message = "{$lang->msg_call_server}";
|
||||
//]]></script>
|
||||
|
||||
{Context::getHtmlHeader()}
|
||||
|
||||
</head>
|
||||
<body>
|
||||
{$zbxe_final_content}
|
||||
|
||||
{Context::getHtmlFooter()}
|
||||
|
||||
<div id="waitingforserverresponse" style="visibility:hidden"></div>
|
||||
<div id="fororiginalimagearea" style="visibility:hidden">
|
||||
<div id="fororiginalimageareabg">
|
||||
<img src="./images/blank.gif" alt="original image" border="0" id="fororiginalimage" />
|
||||
<img src="./images/original_image_box_close.gif" alt="close original image" border="0" onclick="closeOriginalImage()" id="closeOriginalImageBtn"/>
|
||||
</div>
|
||||
</div>
|
||||
<div id="membermenuarea"></div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
33
common/tpl/css/calendar.css
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
@charset "utf-8";
|
||||
|
||||
body { margin:0; padding:0; }
|
||||
|
||||
#popup_content { width:370px; overflow:hidden;}
|
||||
#popHeadder { width:370px; }
|
||||
#popBody { width:350px; }
|
||||
#popFooter { width:370px; }
|
||||
|
||||
#popBody .calendar { width:350px; border:1px solid #c1c0bd; border-left:none; border-right:none; background:#f5f5f5; overflow:hidden; position:relative;}
|
||||
#popBody .calendar .yymm { width:143px; float:left;}
|
||||
#popBody .calendar .yymm .yy { padding:9px 0 6px 0; text-align:center; border-bottom:1px solid #ededed; margin:0 15px; font:bold 1.2em Tahoma; color:#444444;}
|
||||
#popBody .calendar .yymm .mm { margin:0 15px; border-top:1px solid #ffffff; border-bottom:1px solid #ededed; padding:10px 0 7px 0; text-align:center;}
|
||||
#popBody .calendar .yymm .mm p { color:#969696; font:1.6em "Times New Roman";}
|
||||
#popBody .calendar .yymm .mm span { font:4em "Times New Roman"; color:#158692; vertical-align:middle;}
|
||||
#popBody .calendar .yymm .go { padding:7px 0 0 0; margin:0 15px; text-align:center; border-top:1px solid #ffffff;}
|
||||
#popBody .calendar .yymm .go * { vertical-align:middle;}
|
||||
#popBody .calendar .yymm .go .inputTypeY { border:1px solid #c9c9c9; text-align:center; font:.9em Tahoma; color:#282828; width:31px; height:16px;}
|
||||
#popBody .calendar .yymm .go .inputTypeM { border:1px solid #c9c9c9; text-align:center; font:.9em Tahoma; color:#282828; width:20px; height:16px;}
|
||||
#popBody .calendar .yymm .left { vertical-align:middle; margin-right:14px;}
|
||||
#popBody .calendar .yymm .right { vertical-align:middle; margin-left:14px;}
|
||||
#popBody .calendar .yymm .left img,
|
||||
#popBody .calendar .yymm .right img { vertical-align:middle; position:relative; top:2px;}
|
||||
#popBody .calendar .dd { float:left; width:207px; background:#ffffff; border-left:10px solid #ffffff;}
|
||||
#popBody .calendar .dd td { border-bottom:1px solid #ededed; height:32px; text-align:center; color:#636363; font:.9em Tahoma;}
|
||||
#popBody .calendar .dd td a { color:#636363; font:.9em Tahoma;}
|
||||
#popBody .calendar .dd td strong { text-decoration:underline;}
|
||||
#popBody .calendar .dd td strong a { text-decoration:underline;}
|
||||
#popBody .calendar .dd td.sun { color:#c95b53;}
|
||||
#popBody .calendar .dd td.sun a { color:#c95b53;}
|
||||
#popBody .calendar .dd .first { height:35px;}
|
||||
#popBody .calendar .dd .last td { height:35px; border-bottom:none;}
|
||||
#popBody .calendar .dd td .disable a { color:#CCCCCC; }
|
||||
1
common/tpl/default_layout.html
Normal file
|
|
@ -0,0 +1 @@
|
|||
{$content}
|
||||
BIN
common/tpl/images/blank.gif
Normal file
|
After Width: | Height: | Size: 43 B |
BIN
common/tpl/images/buttonGo.gif
Normal file
|
After Width: | Height: | Size: 454 B |
BIN
common/tpl/images/buttonLeft2.gif
Normal file
|
After Width: | Height: | Size: 58 B |
BIN
common/tpl/images/buttonRight2.gif
Normal file
|
After Width: | Height: | Size: 58 B |
BIN
common/tpl/images/calendar.gif
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
common/tpl/images/flvplayer.swf
Normal file
BIN
common/tpl/images/folder.gif
Normal file
|
After Width: | Height: | Size: 372 B |
BIN
common/tpl/images/form_buttons.gif
Executable file
|
After Width: | Height: | Size: 4 KiB |
BIN
common/tpl/images/form_buttons.png
Executable file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
common/tpl/images/icon_next.gif
Normal file
|
After Width: | Height: | Size: 649 B |
BIN
common/tpl/images/icon_nnext.gif
Normal file
|
After Width: | Height: | Size: 650 B |
BIN
common/tpl/images/icon_pprev.gif
Normal file
|
After Width: | Height: | Size: 650 B |
BIN
common/tpl/images/icon_prev.gif
Normal file
|
After Width: | Height: | Size: 648 B |
BIN
common/tpl/images/imgfolder.gif
Normal file
|
After Width: | Height: | Size: 622 B |
BIN
common/tpl/images/info.png
Normal file
|
After Width: | Height: | Size: 386 B |
BIN
common/tpl/images/join.gif
Normal file
|
After Width: | Height: | Size: 69 B |
BIN
common/tpl/images/joinbottom.gif
Normal file
|
After Width: | Height: | Size: 66 B |
BIN
common/tpl/images/line.gif
Normal file
|
After Width: | Height: | Size: 66 B |
BIN
common/tpl/images/minus.gif
Normal file
|
After Width: | Height: | Size: 86 B |
BIN
common/tpl/images/minusbottom.gif
Normal file
|
After Width: | Height: | Size: 85 B |
BIN
common/tpl/images/original_image_box_close.gif
Normal file
|
After Width: | Height: | Size: 610 B |
BIN
common/tpl/images/page.gif
Normal file
|
After Width: | Height: | Size: 582 B |
BIN
common/tpl/images/plus.gif
Normal file
|
After Width: | Height: | Size: 89 B |
BIN
common/tpl/images/plusbottom.gif
Normal file
|
After Width: | Height: | Size: 88 B |
BIN
common/tpl/images/widget.gif
Normal file
|
After Width: | Height: | Size: 8.6 KiB |
BIN
common/tpl/images/widget_bg.jpg
Executable file
|
After Width: | Height: | Size: 24 KiB |
BIN
common/tpl/images/widget_text.gif
Executable file
|
After Width: | Height: | Size: 970 B |
7
common/tpl/popup_layout.html
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<!--%import("css/popup.css")-->
|
||||
<div id="popup_content">{$content}</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
xAddEventListener(window, 'load', setFixedPopupSize);
|
||||
var _isPoped = true;
|
||||
</script>
|
||||
3
common/tpl/refresh.html
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<script type="text/javascript">
|
||||
top.location.href = top.location.href;
|
||||
</script>
|
||||