css 및 js 호출순서 조정기능 추가

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@5785 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ngleader 2009-03-06 05:33:56 +00:00
parent 4f380d9c48
commit 61851f1dfe
2149 changed files with 109090 additions and 18689 deletions

View file

@ -89,3 +89,24 @@ span.button.blue input { background-image:url(../tpl/images/buttonBlue.gif); col
/* Offset Debug */
a.button,
span.button{ margin-right:2px;}
/* Button Set */
.buttonSet{ width:16px; height:16px; background-image:url(../tpl/images/buttonSet.gif); background-repeat:no-repeat; border:0; background-color:transparent; vertical-align:middle; display:inline-block; text-decoration:none;}
.buttonSet span{ z-index:-1; font-size:0; line-height:0; visibility:hidden;}
.buttonSet.buttonUp{ background-position:0 0;}
.buttonSet.buttonDown{ background-position:0 -16px;}
.buttonSet.buttonLeft{ background-position:0 -32px;}
.buttonSet.buttonRight{ background-position:0 -48px;}
.buttonSet.buttonInfo{ background-position:0 -64px;}
.buttonSet.buttonCopy{ background-position:0 -80px;}
.buttonSet.buttonSetting{ background-position:0 -96px;}
.buttonSet.buttonActive{ background-position:0 -112px;}
.buttonSet.buttonDisable{ background-position:0 -128px;}
.buttonSet.buttonDelete{ background-position:0 -144px;}
.buttonSet.buttonHomepage{ background-position:0 -160px;}
.buttonSet.buttonBlog{ background-position:0 -176px;}
.buttonSet.buttonCalendar{ background-position:0 -192px;}
.buttonSet.buttonLayoutEditor{ background-position:0 -208px;}
.buttonSet.buttonAddWidget{ background-position:0 -224px;}
.buttonSet.buttonAddContent{ background-position:0 -240px;}

View file

@ -88,3 +88,6 @@ a.bold { font-weight:bold; }
#popup_menu_area li a:hover,
#popup_menu_area li a:active,
#popup_menu_area li a:focus{ font-weight:bold; letter-spacing:-1px;}
/* xe faceoff */
.faceOffManager { position:fixed; _position:absolute; right:3px; top:3px; height:23px; }

View file

@ -7,7 +7,20 @@
/* jQuery 참조변수($) 제거 */
if(jQuery) jQuery.noConflict();
;(function($) {
(function($) {
/* OS check */
var UA = navigator.userAgent.toLowerCase();
$.os = {
Linux: /linux/.test(UA),
Unix: /x11/.test(UA),
Mac: /mac/.test(UA),
Windows: /win/.test(UA)
};
$.os.name = ($.os.Windows) ? 'Windows' :
($.os.Linux) ? 'Linux' :
($.os.Unix) ? 'Unix' :
($.os.Mac) ? 'Mac' : '';
/**
* @brief XE 공용 유틸리티 함수
* @namespace XE
@ -109,49 +122,46 @@ if(jQuery) jQuery.noConflict();
/* 레이어 출력 */
if(html) {
var area = jQuery("#popup_menu_area").html('<ul>'+html+'</ul>');
var area = $('#popup_menu_area').html('<ul>'+html+'</ul>');
var areaOffset = {top:params['page_y'], left:params['page_x']};
if(area.outerHeight()+areaOffset.top > jQuery(window).height()+jQuery(window).scrollTop())
areaOffset.top = jQuery(window).height() - area.outerHeight() + jQuery(window).scrollTop();
if(area.outerWidth()+areaOffset.left > jQuery(window).width()+jQuery(window).scrollLeft())
areaOffset.left = jQuery(window).width() - area.outerWidth() + jQuery(window).scrollLeft();
if(area.outerHeight()+areaOffset.top > $(window).height()+$(window).scrollTop())
areaOffset.top = $(window).height() - area.outerHeight() + $(window).scrollTop();
if(area.outerWidth()+areaOffset.left > $(window).width()+$(window).scrollLeft())
areaOffset.left = $(window).width() - area.outerWidth() + $(window).scrollLeft();
if($.browser.safari) {
areaOffset.top -= 16;
areaOffset.left -= 16;
}
area.css({ visibility:"visible", top:areaOffset.top, left:areaOffset.left });
area.css({ top:areaOffset.top, left:areaOffset.left }).show();
}
}
}
}) (jQuery);
/* jQuery(document).ready() */
jQuery(function($) {
/* 팝업메뉴 레이어 생성 */
if(!$('#popup_menu_area').length) {
var menuObj = $('<div>')
.attr('id', 'popup_menu_area')
.css({visibility:'hidden', zIndex:9999});
.css({display:'none', zIndex:9999});
$(document.body).append(menuObj);
}
$(document).click(function(evt) {
var area = jQuery("#popup_menu_area");
var area = $('#popup_menu_area');
if(!area.length) return;
// 이전에 호출되었을지 모르는 팝업메뉴 숨김
area.css('visibility', 'hidden');
area.hide();
var targetObj = $(evt.target);
if(!targetObj.length) return;
// obj의 nodeName이 div나 span이 아니면 나올대까지 상위를 찾음
if(targetObj.length && jQuery.inArray(targetObj.attr('nodeName'), ['DIV', 'SPAN', 'A']) == -1) targetObj = targetObj.parent();
if(!targetObj.length || jQuery.inArray(targetObj.attr('nodeName'), ['DIV', 'SPAN', 'A']) == -1) return;
if(targetObj.length && $.inArray(targetObj.attr('nodeName'), ['DIV', 'SPAN', 'A']) == -1) targetObj = targetObj.parent();
if(!targetObj.length || $.inArray(targetObj.attr('nodeName'), ['DIV', 'SPAN', 'A']) == -1) return;
// 객체의 className값을 구함
var class_name = targetObj.attr('className');
@ -239,38 +249,6 @@ jQuery(function($) {
}
});
/*
* jQuery 1.2.6
* Opera 브라우저에서 $(window).height() / width() 값을 잘못 가져오는 문제 수정
* jQuery 1.3에서 수정되었음
* @link http://dev.jquery.com/changeset/5938
*/
if(jQuery.fn.jquery == '1.2.6') {
jQuery.each([ "Height", "Width" ], function(i, name){
var type = name.toLowerCase();
jQuery.fn[ type ] = function( size ) {
return this[0] == window ?
// Opera 브라우저에서 $(window).height() / width() 값을 잘못 가져오는 문제 수정
jQuery.browser.opera && document.body.parentNode[ "client" + name ] ||
jQuery.browser.safari && window[ "inner" + name ] ||
document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] || document.body[ "client" + name ] :
this[0] == document ?
Math.max(
Math.max(document.body["scroll" + name], document.documentElement["scroll" + name]),
Math.max(document.body["offset" + name], document.documentElement["offset" + name])
) :
size == undefined ?
(this.length ? jQuery.css( this[0], type ) : null) :
this.css( type, size.constructor == String ? size : size + "px" );
};
});
}
/**
* @brief location.href에서 특정 key의 값을 return
@ -454,6 +432,10 @@ function move_url(url, open_wnidow) {
* @brief 멀티미디어 출력용 (IE에서 플래쉬/동영상 주변에 점선 생김 방지용)
**/
function displayMultimedia(src, width, height, options) {
var html = _displayMultimedia(src, width, height, options);
if(html) document.writeln(html);
}
function _displayMultimedia(src, width, height, options) {
if(src.indexOf('files') == 0) src = request_uri + src;
var defaults = {
@ -472,7 +454,9 @@ function displayMultimedia(src, width, height, options) {
var codebase = "";
var html = "";
if(/\.swf$/i.test(src)) {
if(/\.(gif|jpg|jpeg|bmp|png)$/i.test(src)){
html = '<img src="'+src+'" width="'+width+'" height="'+height+'" />';
} else 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+'" flashvars="'+params.flashvars+'">';
@ -494,7 +478,7 @@ function displayMultimedia(src, width, height, options) {
}
html += '></embed>';
}
document.writeln(html);
return html;
}
/**
@ -516,37 +500,54 @@ function zbxe_folder_close(id) {
* 팝업의 내용에 맞게 크기를 늘리는 것은... 쉽게 되지는 않음.. .
* popup_layout 에서 window.onload 자동 요청됨.
**/
var _popupHeight = 0;
function setFixedPopupSize() {
var bodyObj = jQuery('#popBody');
if(bodyObj.length) {
if(bodyObj.height() > 500) {
bodyObj.css({ overflowY:'scroll', overflowX:'hidden', height:500 });
if(bodyObj.height() > 400) {
bodyObj.css({ overflowY:'scroll', overflowX:'hidden', height:400 });
}
}
var w = jQuery("#popup_content").width();
w = w< 400 ? 400 : w;
var h = jQuery("#popup_content").height();
jQuery('div').each(function() {
var ww = jQuery(this).width();
if(jQuery.inArray(this.id, ['waitingforserverresponse', 'fororiginalimagearea', 'fororiginalimageareabg']) == -1) {
if(ww > w) w = ww;
if(h != _popupHeight) {
_popupHeight = h;
jQuery('div').each(function() { var ww = jQuery(this).width(); if(jQuery.inArray(this.id, ['waitingforserverresponse', 'fororiginalimagearea', 'fororiginalimageareabg']) == -1) { if(ww > w) w = ww; } });
jQuery('table').each(function() { var ww = jQuery(this).width(); if(ww > w) w = ww; });
jQuery('form').each(function() { var ww = jQuery(this).width(); if(ww > w) w = ww; });
jQuery("#popup_content").width(w-4);
jQuery("#popHeader").width(w-4);
jQuery("#popFooter").width(w-4);
window.resizeTo(w, h);
// 윈도우 OS에서는 브라우저별로 미세 조절이 필요
var moreW = 0;
if(navigator.userAgent.toLowerCase().indexOf('windows') > 0) {
if(jQuery.browser.opera) moreW += 9;
else if(jQuery.browser.msie) moreW += 10;
else if(jQuery.browser.mozilla) moreW += 8;
else if(jQuery.browser.safari) {
moreW += 4;
h -= 12;
}
}
});
// 윈도우에서는 브라우저 상관없이 가로 픽셀이 조금 더 늘어나야 한다.
if(navigator.userAgent.toLowerCase().indexOf('windows') > 0) {
if(jQuery.browser.opera) w += 10;
else if(jQuery.browser.msie) w += 10;
else w += 6;
var h1 = jQuery(window).height();
if(!/chrome/.test(navigator.userAgent.toLowerCase())) {
window.resizeBy(moreW, h-h1+5);
} else {
window.resizeBy(10,60);
}
window.scrollTo(0,0);
}
window.resizeTo(w, h);
var h1 = jQuery(window).height();
window.resizeBy(0, h-h1);
window.scrollTo(0,0);
setTimeout(setFixedPopupSize, 300);
}
/**
@ -584,7 +585,7 @@ function doChangeLangType(obj) {
function setLangType(lang_type) {
var expire = new Date();
expire.setTime(expire.getTime()+ (7000 * 24 * 3600000));
xSetCookie('lang_type', lang_type, expire);
xSetCookie('lang_type', lang_type, expire, '/');
}
/* 미리보기 */
@ -683,7 +684,7 @@ function callAddDocumentCart(document_length) {
if(addedDocument.length<1 || document_length != addedDocument.length) return;
var params = new Array();
params["srls"] = addedDocument.join(",");
exec_xml("document","procDocumentAdminAddCart", params, null);
exec_xml("document","procDocumentAddCart", params, null);
addedDocument = new Array();
}

43
common/js/jquery.js vendored

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,82 @@
;(function($) {
var defaults = {
};
var filebox = {
selected : null,
/**
* 파일 박스 팝업
*/
open : function(input_obj, filter) {
this.selected = input_obj;
var url = request_uri
.setQuery('module', 'module')
.setQuery('act', 'dispModuleFileBox')
.setQuery('input', this.selected.name)
.setQuery('filter', filter);
popopen(url, 'filebox');
},
/**
* 파일 선택
*/
selectFile : function(file_url, module_filebox_srl){
var target = $(opener.XE.filebox.selected);
var target_name = target.attr('name');
target.val(file_url);
var html = _displayMultimedia(file_url, '100%', '100%');
$('#filebox_preview_' + target_name, opener.document).html(html).show();
$('#filebox_cancel_' + target_name, opener.document).show();
window.close();
},
/**
* 파일 선택 취소
*/
cancel : function(name) {
$('[name=' + name + ']').val('');
$('#filebox_preview_' + name).hide().html('');
$('#filebox_cancel_' + name).hide();
},
/**
* 파일 삭제
*/
deleteFile : function(module_filebox_srl){
var params = {
'module_filebox_srl' : module_filebox_srl
};
$.exec_json('module.procModuleFileBoxDelete', params, function() { document.location.reload(); });
},
/**
* 초기화
*/
init : function(name) {
var file;
if(opener && opener.selectedWidget && opener.selectedWidget.getAttribute("widget")) {
file = opener.selectedWidget.getAttribute(name);
} else if($('[name=' + name + ']').val()) {
file = $('[name=' + name + ']').val();
}
if(file) {
var html = _displayMultimedia(file, '100%', '100%');
$('#filebox_preview_' + name).html(html).show();
$('#filebox_cancel_' + name).show();
}
}
};
// XE에 담기
$.extend(window.XE, {'filebox' : filebox});
}) (jQuery);

View file

@ -0,0 +1 @@
filebox.js

View file

@ -0,0 +1 @@
(function(B){B.fn.__bind__=B.fn.bind;B.fn.__unbind__=B.fn.unbind;B.fn.__find__=B.fn.find;var A={version:"0.7.8",override:/keydown|keypress|keyup/g,triggersMap:{},specialKeys:{27:"esc",9:"tab",32:"space",13:"return",8:"backspace",145:"scroll",20:"capslock",144:"numlock",19:"pause",45:"insert",36:"home",46:"del",35:"end",33:"pageup",34:"pagedown",37:"left",38:"up",39:"right",40:"down",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12"},shiftNums:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":":","'":'"',",":"<",".":">","/":"?","\\":"|"},newTrigger:function(E,D,F){var C={};C[E]={};C[E][D]={cb:F,disableInInput:false};return C}};if(B.browser.mozilla){A.specialKeys=B.extend(A.specialKeys,{96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"})}B.fn.find=function(C){this.query=C;return B.fn.__find__.apply(this,arguments)};B.fn.unbind=function(H,E,G){if(B.isFunction(E)){G=E;E=null}if(E&&typeof E==="string"){var F=((this.prevObject&&this.prevObject.query)||(this[0].id&&this[0].id)||this[0]).toString();var D=H.split(" ");for(var C=0;C<D.length;C++){delete A.triggersMap[F][D[C]][E]}}return this.__unbind__(H,G)};B.fn.bind=function(J,F,K){var H=J.match(A.override);if(B.isFunction(F)||!H){return this.__bind__(J,F,K)}else{var N=null,I=B.trim(J.replace(A.override,""));if(I){N=this.__bind__(I,F,K)}if(typeof F==="string"){F={combi:F}}if(F.combi){for(var M=0;M<H.length;M++){var D=H[M];var G=F.combi.toLowerCase(),E=A.newTrigger(D,G,K),L=((this.prevObject&&this.prevObject.query)||(this[0].id&&this[0].id)||this[0]).toString();E[D][G].disableInInput=F.disableInInput;if(!A.triggersMap[L]){A.triggersMap[L]=E}else{if(!A.triggersMap[L][D]){A.triggersMap[L][D]=E[D]}}var C=A.triggersMap[L][D][G];if(!C){A.triggersMap[L][D][G]=[E[D][G]]}else{if(C.constructor!==Array){A.triggersMap[L][D][G]=[C]}else{A.triggersMap[L][D][G][C.length]=E[D][G]}}this.each(function(){var O=B(this);if(O.attr("hkId")&&O.attr("hkId")!==L){L=O.attr("hkId")+";"+L}O.attr("hkId",L)});N=this.__bind__(H.join(" "),F,A.handler)}}return N}};A.findElement=function(C){if(!B(C).attr("hkId")){if(B.browser.opera||B.browser.safari){while(!B(C).attr("hkId")&&C.parentNode){C=C.parentNode}}}return C};A.handler=function(E){var O=A.findElement(E.currentTarget),I=B(O),D=I.attr("hkId");if(D){D=D.split(";");var G=E.which,Q=E.type,P=A.specialKeys[G],N=!P&&String.fromCharCode(G).toLowerCase(),H=E.shiftKey,C=E.ctrlKey,M=E.altKey||E.originalEvent.altKey,F=null;for(var R=0;R<D.length;R++){if(A.triggersMap[D[R]][Q]){F=A.triggersMap[D[R]][Q];break}}if(F){var J;if(!H&&!C&&!M){J=F[P]||(N&&F[N])}else{var L="";if(M){L+="alt+"}if(C){L+="ctrl+"}if(H){L+="shift+"}J=F[L+P];if(!J){if(N){J=F[L+N]||F[L+A.shiftNums[N]]||(L==="shift+"&&F[A.shiftNums[N]])}}}if(J){var S=false;for(var R=0;R<J.length;R++){if(J[R].disableInInput){var K=B(E.target);if(I.is("input")||I.is("textarea")||K.is("input")||K.is("textarea")){return true}}S=S||J[R].cb.apply(this,[E])}return S}}}};window.hotkeys=A;return B})(jQuery);

View file

@ -0,0 +1 @@
jquery.hotkeys-packed.js

View file

@ -0,0 +1,103 @@
<public:component>
<public:attach event="onpropertychange" onevent="iePNGFix(0)" />
<script type="text/javascript">
// IE5.5+ PNG Alpha Fix v1.0
// (c) 2004-2008 Angus Turnbull http://www.twinhelix.com
// This is licensed under the 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, relative to the HTML document(s).
// In production use I suggest '/images/blank.gif' or similar. That's all!
if (typeof blankImg == 'undefined') var blankImg = 'blank.gif';
function filt(s, b)
{
var f = 'DXImageTransform.Microsoft.AlphaImageLoader';
var sM = (currentStyle.backgroundRepeat == 'no-repeat') ? 'crop' : 'scale';
s = (s || '').replace(/\(/g, '%28').replace(/\)/g, '%29');
if (s && !(/IMG|INPUT/.test(nodeName) && !b) &&
currentStyle.width == 'auto' && currentStyle.height == 'auto')
{
style.width = offsetWidth + 'px';
style.height = clientHeight + 'px';
if (currentStyle.display == 'inline') style.display = 'inline-block';
}
if (filters[f])
{
filters[f].enabled = s ? true : false;
if (s) with (filters[f]) { src = s }
}
else if (s) style.filter = 'progid:'+f+'(src="'+s+'",sizingMethod="' + sM + '")';
}
function iePNGFix(init)
{
if (!/MSIE (5\.5|6)/.test(navigator.userAgent) || typeof filters == 'unknown') return;
var evt = init ? { propertyName: 'src,background' } : event;
var isSrc = /src/.test(evt.propertyName);
var isBg = /background/.test(evt.propertyName);
var isClass = !init &&
((this.className != this._png_class) && (this.className || this._png_class));
if (!(isSrc || isBg || isClass)) return;
this._png_class = this.className;
var blank = blankImg.match(/([^\/]+)$/)[1];
// Required for Whatever:hover support - erase any set BG if className changes.
if (isClass && ((style.backgroundImage.indexOf('url(') == -1) ||
(style.backgroundImage.indexOf(blank) > -1)))
{
setTimeout(function() { this.style.backgroundImage = '' }, 0);
return;
}
if (isSrc && this.src && /IMG|INPUT/.test(nodeName))
{
if ((/\.png/i).test(src))
{
filt(src, 1);
src = blankImg;
}
else if (src.indexOf(blank) == -1) filt();
}
var bgSrc = currentStyle.backgroundImage || style.backgroundImage;
if ((bgSrc + this.src).indexOf(blank) == -1)
{
var bgPNG = bgSrc.match(/^url[("']+(.*\.png[^\)"']*)[\)"']+[^\)]*$/i);
if (bgPNG)
{
style.backgroundImage = 'url("' + blankImg + '")';
filt(bgPNG[1], 0);
// Unclickable elements inside PNG backgrounds.
var tags = ['a', 'input', 'select', 'textarea', 'iframe', 'object'],
t = tags.length, tFix = [];
while (t--)
{
var elms = all.tags(tags[t]), e = elms.length;
while (e--) tFix.push(elms[e]);
}
var t = tFix.length;
if (t && (/relative|absolute/i).test(currentStyle.position))
alert('IEPNGFix: Children of positioned element are unclickable:\n\n<' +
nodeName + (id && ' id=' + id) + '>');
while (t--)
if (!(/relative|absolute/i).test(tFix[t].currentStyle.position))
tFix[t].style.position = 'relative';
}
else filt();
}
}
iePNGFix(1);
</script>
</public:component>

View file

@ -0,0 +1,79 @@
.colorpicker img, .colorpicker div {
behavior: url(iepngfix.htc);
}
.xe_colorpicker {
position:absolute;
width:194px;
height:183px;
overflow:hidden;
z-index:100;
}
.xe_colorpicker .colorpicker {
position:relative;
width:192px;
height:160px;
background-color:white;
border:1px solid silver;
}
.xe_colorpicker .colortable {
position:absolute;
left : 4px;
top : 4px;
border:1px solid #909090;
}
.xe_colorpicker .colortable .background {
position:relative;
width:150px;
height:150px;
background:url(../images/colorpicker_overlay.png) no-repeat;
overflow:hidden;
}
.xe_colorpicker .colortable .indicator {
position:absolute;
width:11px;
height:11px;
background:url(../images/colorpicker_select.gif) no-repeat;
}
.xe_colorpicker .huebar {
position:absolute;
right : 4px;
top : 4px;
border:1px solid #909090;
}
.xe_colorpicker .huebar .background {
width:20px;
height:150px;
background:url(../images/colorpicker_huebg.png) repeat-x;
}
.xe_colorpicker .huebar .indicator {
position:absolute;
width:35px;
height:9px;
left:-3px;
background:transparent url(../images/colorpicker_indic.gif) no-repeat;
}
.xe_colorpicker .buttons {
position:absolute;
width:194px;
background-color:black;
}
.xe_colorpicker .buttons button {
width:33%;
color:white;
height:22px;
border:0;
background-color:transparent;
padding:0;
margin:0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 B

View file

@ -0,0 +1,2 @@
css/xe_colorpicker.css
xe_colorpicker.js

View file

@ -0,0 +1,366 @@
/**
* @brief XE Colorpicker
* @author mygony (http://mygony.com)
**/
jQuery(function($){
var ready = false;
var tmp = $('<span>').hide();
// var panel = null;
$.fn.xe_colorpicker = function(settings){
var selection = this;
if (!ready) {
ColorPicker.init(settings);
ready = true;
}
this.each(function(){
var col = color($(this).val());
$(this).val( col ).css('background-color', col );
setTextColor( $(this) );
}).focus(function(event){
var t = this;
$(this).select();
// show color picker
ColorPicker.show(this);
}).keypress(function(event){
if (!ColorPicker.is(':visible')) return;
if (/^#?[0-9a-f]{6}$/i.test( event.target.value )) {
ColorPicker.color( event.target.value );
}
});
$(document).mousedown(function(event){
var target = event.target;
if (selection.index(target) > -1) return;
if ($(target).parents().add(target).index(ColorPicker.element) > -1) return;
if ($(target).parents().add(target).index(ColorPicker.buttons) > -1) return;
ColorPicker.hide();
});
return this;
};
var ColorPicker = {
element : null,
picker : null,
colpane: null,
buttons : null,
_target : null,
_backup : null,
_hsv : null,
_mode : 'none',
init : function() {
var cp = this;
this.element = $('<div class="xe_colorpicker"><div class="colorpicker"><div class="colortable"><div class="background"><div class="indicator"></div></div></div><div class="huebar"><div class="background"><div class="indicator"></div></div></div></div><div class="buttons"><button type="button" class="ok">OK</button><button type="button" class="cancel">Cancel</button><button type="button" class="none">None</button></div></div>');
this.picker = this.element.find('> div.colorpicker');
this.colpane = this.picker.find('div.colortable > div.background');
this.colpoint = this.colpane.find('> .indicator');
this.buttons = this.element.find('> div.buttons');
this.huepane = this.element.find('div.huebar > .background');
this.huepoint = this.huepane.find('> .indicator');
this._mousedown = method(this.onmousedown, this);
this._mousemove = method(this.onmousemove, this);
this._mouseup = method(this.onmouseup, this);
this.picker.find('.background').mousedown(this._mousedown);
this.buttons.find('button.ok').click(method(this.ok,this));
this.buttons.find('button.cancel').click(method(this.cancel,this));
this.buttons.find('button.none').click(method(this.none,this));
// only for IE6
if ($.browser.msie && parseInt($.browser.version) < 7) {
this.element.append( $('<iframe>').css({position:'absolute','z-index':-1,left:0,top:0,width:9999,height:9999}) );
}
},
show : function(input) {
var pos = (input=$(input)).offset(), pos_panel;
//var par = input.get(0).offsetParent;
var par = $("body").get(0);
var btn = this.buttons.hide();
var col = color(input.val());
this._target = input;
this._backup = col;
this.color(col);
this._target.val(col);
pos_panel = this.element.hide().css({'z-index':99999,left:0,top:0}).appendTo( par ).show(300,function(){btn.slideDown(150)}).offset();
this.element.css({left:pos.left-pos_panel.left,top:pos.top-pos_panel.top+input.get(0).offsetHeight});
},
hide : function() {
var e = this.element;
this._target = null;
this.buttons.slideUp(100, function(){e.hide(200)});
},
visible : function() {
return this.element.is(':visible');
},
color : function(sColor) {
if (typeof sColor == 'string') {
var col = color(sColor);
var hsv = _hsv(rgb2hsv(hex2rgb(col)));
this.hsv(hsv.h, hsv.s, hsv.v);
} else if (this._target) {
return color(this._target.val());
}
},
hsv : function(h, s, v) {
var col = rgb2hex(hsv2rgb(h, s, v));
this._hsv = _hsv(h, s, v);
// background color and text color
this._target.val(col).css('background-color', col);
setTextColor(this._target);
// hue bar indicator
if (this._hue_h) this.huepoint.css('top', limit(0, Math.round((360-this._hsv.h)/360*this._hue_h), this._hue_h-1) - 3 );
// color - background
this.colpane.css('background-color', rgb2hex(hsv2rgb(h, 100, 100)) );
// color - indicator
if (this._col_h && this._col_w) {
this.colpoint.css({
top : limit(0, Math.round((100-this._hsv.v)/100*this._col_h), this._col_h-1) - 5,
left : limit(0, Math.round(this._hsv.s/100*this._col_w), this._col_w-1 ) - 5
});
}
},
onmousedown : function(event) {
var cur = $(event.target);
var par = cur.parent();
var pos = cur.offset();
var hue, sat, val; // hue, saturation, value
this._height = cur.height();
this._width = cur.width();
this._top = pos.top;
this._left = pos.left;
this._col_w = this.colpane.width();
this._col_h = this.colpane.width();
this._hue_h = this.huepane.height();
if (par.is('.colortable')) {
this._mode = 'color';
hue = this._hsv.h;
sat = ( limit(0, (event.pageX - this._left), this._width ) / this._width * 100);
val = ( limit(0, (this._height - event.pageY + this._top), this._height ) / this._height * 100);
} else if (par.is('.huebar')) {
this._mode = 'hue';
hue = limit(0, (this._height - event.pageY + this._top), this._height) / this._height * 360;
sat = this._hsv.s;
val = this._hsv.v;
}
this.hsv( hue, sat, val );
$(document).bind('mousemove', this._mousemove).bind('mouseup', this._mouseup);
},
onmousemove : function(event) {
var hue, sat, val; // hue, saturation, value
switch(this._mode) {
case 'color':
hue = this._hsv.h;
sat = ( limit(0, (event.pageX - this._left), this._width ) / this._width * 100);
val = ( limit(0, (this._height - event.pageY + this._top), this._height ) / this._height * 100);
break;
case 'hue':
hue = limit(0, (this._height - event.pageY + this._top), this._height) / this._height * 360;
sat = this._hsv.s;
val = this._hsv.v;
break;
}
this.hsv( hue, sat, val );
},
onmouseup : function(event) {
this._mode = 'none';
$(document).unbind('mousemove', this._mousemove).unbind('mouseup', this._mouseup);
},
ok : function() {
this.hide();
},
cancel : function() {
this.color(this._backup);
this.hide();
},
none : function() {
this._target.attr('value','transparent');
this.hide();
}
};
function setTextColor(input) {
var hex = input.css('color', '').val(), hsv, rgb;
if (hex == 'transparent' || hex == '') return;
rgb = hex2rgb(hex);
hsv = rgb2hsv(255-rgb.r, 255-rgb.g, 255-rgb.b); // 보색을 구한 뒤
hex = rgb2hex(hsv2rgb(0, 0, hsv.v>50?100:0)); // 보색에 해당하는 흑백으로 결정
input.css('color', hex);
}
function method(func, thisObj) {
return function() { return func.apply(thisObj, arguments) }
}
function color(str) {
var col = $.trim(str);
var regHex1 = /^#[0-9a-f]{6}$/i;
var regHex2 = /^#?([0-9a-f])([0-9a-f])([0-9a-f])$/i; // short hex
if (regHex1.test(col)) return col.toUpperCase();
if (regHex2.test(col)) return col.replace(regHex2, '#$1$1$2$2$3$3').toUpperCase();
try {
col = tmp.appendTo($('<body>')).css('background-color', col).css('background-color');
} catch(e) {
col = '#FFFFFF';
} finally {
tmp.css('background-color','').remove();
}
if (/^rgb\(([0-9, ]+)\)$/i.test(col)) col = rgb2hex(RegExp.$1.split(/,\s*/));
if (!/#[0-9a-f]{6}/i.test(col)) col = '#FFFFFF';
return col;
}
function _rgb(rgb, _g, _b) {
var r, g, b;
if (typeof arguments[2] == "number") {
r = rgb;
g = _g;
b = _b;
} else if (typeof rgb == "object") {
if (rgb.constructor == Array) {
r = rgb[0] || 0; g = rgb[1] || 0; b = rgb[2] || 0;
} else {
r = rgb.r || 0; g = rgb.g || 0; b = rgb.b || 0;
}
}
rgb = [];
rgb.r = rgb[0] = r = parseInt(r, 10);
rgb.g = rgb[1] = g = parseInt(g, 10);
rgb.b = rgb[2] = b = parseInt(b, 10);
return rgb;
}
function _hsv(hsv, _s, _v) {
var h, s, v;
if (typeof arguments[2] == "number") {
h = hsv; s = _s; v = _v;
} else if (typeof hsv == "object") {
if (hsv.constructor == Array) {
h = hsv[0] || 0; s = hsv[1] || 0; v = hsv[2] || 0;
} else {
h = hsv.h || 0; s = hsv.s || 0; v = hsv.v || 0;
}
}
hsv = [];
hsv.h = hsv[0] = h = parseInt(h, 10);
hsv.s = hsv[1] = s = parseInt(s, 10);
hsv.v = hsv[2] = v = parseInt(v, 10);
return hsv;
}
function rgb2hex(rgb, _g, _b) {
var rgb = _rgb(rgb, _g, _b);
for(var i=0; i < rgb.length; i++) {
(rgb[i] = Number(rgb[i]).toString(16)).length<2?rgb[i]='0'+rgb[i]:0;
}
return '#'+rgb.join('').toUpperCase();
}
function hex2rgb(hex) {
var r=0, g=0, b=0;
if (/^#?([0-9a-f]{1,2})([0-9a-f]{1,2})([0-9a-f]{1,2})$/i.test(hex)) {
r = parseInt(RegExp.$1, 16);
g = parseInt(RegExp.$2, 16);
b = parseInt(RegExp.$3, 16);
}
return _rgb(r, g, b);
}
function hsv2rgb(hsv, _s, _v) {
var r=0, g=0, b=0;
var h=0, s=0, v=0;
var i, f, p, q, t;
hsv = _hsv(hsv, _s, _v);
h = (hsv[0] % 360) / 60; s = hsv[1] / 100; v = hsv[2] / 100;
i = Math.floor(h);
f = h-i;
p = v*(1-s);
q = v*(1-s*f);
t = v*(1-s*(1-f));
switch (i) {
case 0: r=v; g=t; b=p; break;
case 1: r=q; g=v; b=p; break;
case 2: r=p; g=v; b=t; break;
case 3: r=p; g=q; b=v; break;
case 4: r=t; g=p; b=v; break;
case 5: r=v; g=p; b=q; break;
case 6: break;
}
return _rgb(Math.floor(r*255), Math.floor(g*255), Math.floor(b*255));
}
function rgb2hsv(rgb, _g, _b) {
var rgb = _rgb(rgb, _g, _b);
var r = rgb[0], g = rgb[1], b = rgb[2];
var h = 0, s = 0, v = Math.max(r,g,b), min = Math.min(r,g,b), delta = v - min;
if (s = v?delta/v:0) {
if (r == v) h = 60 * (g - b) / delta;
else if (g == v) h = 120 + 60 * (b - r) / delta;
else if (b == v) h = 240 + 60 * (r - g) / delta;
if (h < 0) h += 360;
}
return _hsv(Math.floor(h), Math.floor(s*100), Math.floor(v/255*100));
}
function limit(min, val, max){
return Math.min(Math.max(min, val), max);
}
$('input.color-indicator').xe_colorpicker();
});

View file

@ -0,0 +1,119 @@
function doSearchKrZip(obj, column_name) {
var fo_obj = obj;
while(fo_obj) {
if(fo_obj.nodeName == 'FORM') break;
fo_obj = fo_obj.parentNode;
}
if(fo_obj.nodeName != 'FORM') return;
var field_obj = fo_obj['addr_search_'+column_name];
if(!field_obj) return;
var addr = field_obj.value;
if(!addr) return;
var params = new Array();
params['addr'] = addr;
params['column_name'] = column_name;
var response_tags = new Array('error','message','address_list');
exec_xml('krzip', 'getKrzipCodeList', params, completeSearchKrZip, response_tags, params, fo_obj);
}
function completeSearchKrZip(ret_obj, response_tags, callback_args, fo_obj) {
if(!ret_obj['address_list']) {
alert(alert_msg['address']);
return;
}
var address_list = ret_obj['address_list'].split("\n");
var column_name = callback_args['column_name'];
var zone_list_obj = xGetElementById('addr_list_'+column_name);
if(!zone_list_obj) return;
var zone_search_obj = xGetElementById('addr_search_'+column_name);
if(!zone_search_obj) return;
var sel_obj = fo_obj['addr_list_'+column_name];
if(!sel_obj) return;
for(var i=0;i<sel_obj.length;i++) {
sel_obj.remove(0);
}
for(var i=0;i<address_list.length;i++) {
if(!address_list[i]) continue;
var opt = new Option(address_list[i],address_list[i],false,false);
sel_obj.options[sel_obj.options.length] = opt;
}
sel_obj.selectedIndex = 0;
zone_search_obj.style.display = 'none';
zone_list_obj.style.display = 'block';
}
function doHideKrZipList(obj, column_name) {
var fo_obj = obj;
while(fo_obj) {
if(fo_obj.nodeName == 'FORM') break;
fo_obj = fo_obj.parentNode;
}
if(fo_obj.nodeName != 'FORM') return;
var zone_list_obj = xGetElementById('addr_list_'+column_name);
if(!zone_list_obj) return;
var zone_search_obj = xGetElementById('addr_search_'+column_name);
if(!zone_search_obj) return;
zone_list_obj.style.display = 'none';
zone_search_obj.style.display = 'block';
fo_obj['addr_search_'+column_name].focus();
}
function doSelectKrZip(obj, column_name) {
var fo_obj = obj;
while(fo_obj) {
if(fo_obj.nodeName == 'FORM') break;
fo_obj = fo_obj.parentNode;
}
if(fo_obj.nodeName != 'FORM') return;
var zone_list_obj = xGetElementById('addr_list_'+column_name);
if(!zone_list_obj) return;
var zone_search_obj = xGetElementById('addr_search_'+column_name);
if(!zone_search_obj) return;
var zone_searched_obj = xGetElementById('addr_searched_'+column_name);
if(!zone_searched_obj) return;
var sel_obj = fo_obj['addr_list_'+column_name];
if(!sel_obj) return;
var address = sel_obj.options[sel_obj.selectedIndex].value;
fo_obj[column_name][0].value = address;
zone_searched_obj.style.display = 'block';
zone_list_obj.style.display = 'none';
zone_search_obj.style.display = 'none';
fo_obj[column_name][1].focus();
}
function doShowKrZipSearch(obj, column_name) {
var zone_list_obj = xGetElementById('addr_list_'+column_name);
if(!zone_list_obj) return;
var zone_search_obj = xGetElementById('addr_search_'+column_name);
if(!zone_search_obj) return;
var zone_searched_obj = xGetElementById('addr_searched_'+column_name);
if(!zone_searched_obj) return;
zone_searched_obj.style.display = 'none';
zone_list_obj.style.display = 'none';
zone_search_obj.style.display = 'block';
}

View file

@ -0,0 +1 @@
krzip_search.js

View file

@ -26,6 +26,14 @@ function exec_xml(module, act, params, callback_func, response_tags, callback_fu
// 결과 처리 후 callback_func에 넘겨줌
function xml_response_filter(oXml, callback_func, response_tags, callback_func_arg, fo_obj) {
var text = oXml.getResponseText();
if(text && !/^<response>/i.test(text)) {
var waiting_obj = xGetElementById("waitingforserverresponse");
if(waiting_obj) waiting_obj.style.visibility = "hidden";
alert(text);
return null;
}
var xmlDoc = oXml.getResponseXml();
if(!xmlDoc) return null;
@ -64,6 +72,7 @@ function xml_handler() {
this.setPath = xml_handlerSetPath;
this.addParam = xml_handlerAddParam;
this.getResponseXml = xml_handlerGetResponseXML;
this.getResponseText = xml_handlerGetResponseText;
this.toZMsgObject = xml_handlerToZMsgObject;
this.parseXMLDoc = xml_parseXmlDoc;
@ -160,6 +169,13 @@ function xml_handlerGetResponseXML() {
return null;
}
function xml_handlerGetResponseText() {
if(this.objXmlHttp && this.objXmlHttp.readyState == 4 && isDef(this.objXmlHttp.responseText)) {
return this.objXmlHttp.responseText;
}
return null;
}
function xml_parseXmlDoc(dom) {
@ -217,6 +233,17 @@ function xml_handlerToZMsgObject(xmlDoc, tags) {
var parsed_array = this.parseXMLDoc(xmlDoc.getElementsByTagName('response')[0]);
if(typeof(parsed_array)=='undefined') {
var ret = new Array();
ret['error'] = -1;
ret['message'] = "Unexpected error occured.";
try{
if(typeof(xmlDoc.childNodes[0].firstChild.data)!='undefined') ret['message']+="\r\n"+xmlDoc.childNodes[0].firstChild.data;
} catch(e) {
}
return ret;
}
var obj_ret = new Array();
for(var i=0; i<tags.length; i++) {
var key = tags[i];
@ -417,7 +444,7 @@ $.exec_json = function(action,data,func){
}
};
$.fn.exec_html = function(action,data,type){
$.fn.exec_html = function(action,data,type,func,args){
if(typeof(data) == 'undefined') data = {};
if(!$.inArray(type, ['html','append','prepend'])) type = 'html';
@ -437,6 +464,7 @@ $.fn.exec_html = function(action,data,type){
,success : function(html){
$("#waitingforserverresponse").css('visibility','hidden');
self[type](html);
if($.isFunction(func)) func(args);
}
});
}

View file

@ -75,6 +75,7 @@
$lang->secret = 'Secret';
$lang->category = $lang->category_srl = 'Category';
$lang->none_category = 'None category';
$lang->none_image = '이미지 없음';
$lang->document_srl = 'Doc. No.';
$lang->user_id = 'User ID';
$lang->author = 'Developer';
@ -117,6 +118,7 @@
$lang->order_type = 'Sorting Type';
$lang->order_asc = 'ascend';
$lang->order_desc = 'descend';
$lang->file = 'file';
$lang->mid = 'Module Name';
$lang->layout = 'Layout';
@ -256,6 +258,7 @@
$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['radio'] = 'radio button (radio)';
$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)';

View file

@ -74,6 +74,7 @@
$lang->secret = 'Secreto';
$lang->category = $lang->category_srl = 'Categoría';
$lang->none_category = 'Sin categoría';
$lang->none_image = '이미지 없음';
$lang->document_srl = 'Número del documento';
$lang->user_id = 'ID de Usuario';
$lang->author = 'Autor';
@ -116,6 +117,7 @@
$lang->order_type = 'Tipo de Ordenación';
$lang->order_asc = 'ascendente';
$lang->order_desc = 'descendente';
$lang->file = 'file';
$lang->mid = 'ID del Módulo';
$lang->layout = 'Composición';
@ -262,6 +264,7 @@
$lang->column_type_list['textarea'] = 'Texto multi-linea';
$lang->column_type_list['checkbox'] = 'Caja de chequeo (selección múltiple)';
$lang->column_type_list['select'] = 'Selección (selección individual)';
$lang->column_type_list['radio'] = 'radio button (radio)';
//$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)';

View file

@ -75,6 +75,7 @@
$lang->secret = 'Secret';
$lang->category = $lang->category_srl = 'Catégorie';
$lang->none_category = 'None category';
$lang->none_image = '이미지 없음';
$lang->document_srl = 'Numéro de série du Document';
$lang->user_id = 'Compte';
$lang->author = 'Auteur';
@ -117,6 +118,7 @@
$lang->order_type = 'Sorting Type';
$lang->order_asc = 'Ascend';
$lang->order_desc = 'Descendre';
$lang->file = 'file';
$lang->mid = 'Nom';
$lang->layout = 'Mise en Page';
@ -256,6 +258,7 @@
$lang->column_type_list['textarea'] = 'Texte en plusieurs lignes';
$lang->column_type_list['checkbox'] = 'Case à cocher (multichoix)';
$lang->column_type_list['select'] = 'Case d\'option (seul choix)';
$lang->column_type_list['radio'] = 'radio button (radio)';
$lang->column_type_list['kr_zip'] = 'Code postal (coréen)';
$lang->column_type_list['date'] = 'Jour (yyyy/mm/dd)';
//$lang->column_type_list['jp_zip'] = 'code postal (japonais)';

View file

@ -75,6 +75,7 @@
$lang->secret = 'Geheim';
$lang->category = $lang->category_srl = 'Kategorie';
$lang->none_category = '분류없음';
$lang->none_image = '이미지 없음';
$lang->document_srl = 'Doc. No ';
$lang->user_id = 'User-ID';
$lang->author = 'Entwickler';
@ -117,6 +118,7 @@
$lang->order_type = 'Sortieren Typ';
$lang->order_asc = 'Aufstieg';
$lang->order_desc = 'Abstieg';
$lang->file = 'file';
$lang->mid = 'Module Name';
$lang->layout = 'Layout';
@ -256,6 +258,7 @@
$lang->column_type_list['textarea'] = 'Multi-line textarea';
$lang->column_type_list['checkbox'] = 'Checkbox (multiple Auswahl)';
$lang->column_type_list['select'] = 'select box (Einzel-Auswahl) ';
$lang->column_type_list['radio'] = 'radio button (radio)';
$lang->column_type_list['kr_zip'] = 'Postleitzahl (Koreanisch) ';
$lang->column_type_list['date'] = 'Datum (jjjj / mm / dd)';
// $lang->column_type_list [ 'jp_zip'] = 'Postleitzahl (Japanisch)';

View file

@ -69,12 +69,13 @@
$lang->disable = '不可';
// 基本用語
$lang->menu = 'Menu';
$lang->menu = 'メニュー';
$lang->no = '番号';
$lang->notice = 'お知らせ';
$lang->secret = '非公開';
$lang->category = $lang->category_srl = 'カテゴリ';
$lang->none_category = 'カテゴリ無し';
$lang->none_image = 'イメージなし';
$lang->document_srl = '書き込み番号';
$lang->user_id = 'ユーザーID';
$lang->author = '作成者';
@ -117,6 +118,7 @@
$lang->order_type = 'ソート方法';
$lang->order_asc = '昇る';
$lang->order_desc = '降下';
$lang->file = 'ファイル';
$lang->mid = 'モジュール名';
$lang->layout = 'レイアウト';
@ -256,6 +258,7 @@
$lang->column_type_list['textarea'] = 'テキストエリア(textarea)';
$lang->column_type_list['checkbox'] = 'チェックボックス(checkbox)';
$lang->column_type_list['select'] = '選択(select)';
$lang->column_type_list['radio'] = 'radio button (radio)';
$lang->column_type_list['kr_zip'] = '韓国住所(zip)';
$lang->column_type_list['date'] = '日付(年月日)';
//$lang->column_type_list['jp_zip'] = '日本住所(zip)';

View file

@ -42,7 +42,7 @@
$lang->cmd_select = '선택';
$lang->cmd_select_all = '모두선택';
$lang->cmd_unselect_all = '모두해제';
$lang->cmd_reverse_all = "선택반전";
$lang->cmd_reverse_all = '선택반전';
$lang->cmd_close_all = '모두닫기';
$lang->cmd_open_all = '모두열기';
$lang->cmd_reload = '다시읽기';
@ -50,7 +50,7 @@
$lang->cmd_open = '열기';
$lang->cmd_setup = '설정';
$lang->cmd_addition_setup = '추가 설정';
$lang->cmd_option = '옵션';
$lang->cmd_option = '옵션';
$lang->cmd_apply = '적용';
$lang->cmd_open_calendar = '날짜 선택';
$lang->cmd_send = '발송';
@ -58,8 +58,8 @@
$lang->cmd_scrap = '스크랩';
$lang->cmd_preview = '미리 보기';
$lang->cmd_reset = '초기화';
$lang->cmd_remake_cache = "캐시파일 재생성";
$lang->cmd_publish = "발행";
$lang->cmd_remake_cache = '캐시파일 재생성';
$lang->cmd_publish = '발행';
$lang->cmd_layout_setup = '레이아웃 설정';
$lang->cmd_layout_edit = '레이아웃 편집';
$lang->cmd_search_by_ipaddress = 'IP주소로 검색';
@ -75,6 +75,7 @@
$lang->secret = '비밀';
$lang->category = $lang->category_srl = '분류';
$lang->none_category = '분류 없음';
$lang->none_image = '이미지 없음';
$lang->document_srl = '문서번호';
$lang->user_id = '아이디';
$lang->author = '작성자';
@ -95,7 +96,7 @@
$lang->topic = '주제';
$lang->replies = '댓글';
$lang->content = '내용';
$lang->document = '게시물';
$lang->document = '문서';
$lang->comment = '댓글';
$lang->description = '설명';
$lang->trackback = '엮인글';
@ -117,6 +118,7 @@
$lang->order_type = '정렬방법';
$lang->order_asc = '올림차순';
$lang->order_desc = '내림차순';
$lang->file = '파일';
$lang->mid = '모듈이름';
$lang->layout = '레이아웃';
@ -126,8 +128,8 @@
$lang->colorset = '컬러셋';
$lang->extra_vars = '확장변수';
$lang->domain = "도메인";
$lang->url = "URL";
$lang->domain = '도메인';
$lang->url = 'URL';
$lang->document_url = '게시글 주소';
$lang->trackback_url = '엮인글 주소';
$lang->blog_name = '블로그이름';
@ -216,7 +218,7 @@
$lang->msg_not_founded = '대상을 찾을 수 없습니다';
$lang->msg_no_result = '검색 결과가 없습니다';
$lang->msg_not_permitted_act = '요청하신 action을 실행할 수 있는 권한이 없습니다';
$lang->msg_not_permitted_act = '요청하신 기능을 실행할 수 있는 권한이 없습니다';
$lang->msg_module_is_not_exists = '요청하신 모듈을 찾을 수 없습니다';
$lang->msg_module_is_not_standalone = '요청하신 모듈은 독립적으로 동작할 수가 없습니다';
@ -250,12 +252,13 @@
$lang->column_type = '형식';
$lang->column_type_list['text'] = '한줄 입력칸 (text)';
$lang->column_type_list['homepage'] = '홈페이지 형식 (url)';
$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['radio'] = '라디오 버튼 (radio)';
$lang->column_type_list['kr_zip'] = '한국주소 (zip)';
$lang->column_type_list['date'] = '일자 (년월일)';
//$lang->column_type_list['jp_zip'] = '일본주소 (zip)';
@ -278,12 +281,12 @@
그리고 설치 관리자 페이지에서 FTP 정보를 변경하거나 제거할 있습니다.<br />
";
$lang->msg_safe_mode_ftp_needed = "PHP의 safe_mode가 On일 경우 FTP 정보를 꼭 입력해주셔야 XE의 설치 및 사용이 가능합니다";
$lang->msg_ftp_not_connected = "localhost로의 FTP 접속 오류가 발생하였습니다. ftp 포트 번호를 확인해주시거나 ftp 서비스가 가능한지 확인해주세요";
$lang->msg_ftp_invalid_auth_info = "입력하신 FTP 정보로 로그인을 하지 못했습니다. FTP정보를 확인해주세요";
$lang->msg_ftp_mkdir_fail = "FTP를 이용한 디렉토리 생성 명령을 실패하였습니다. FTP 서버의 설정을 확인해주세요";
$lang->msg_ftp_chmod_fail = "FTP를 이용한 디렉토리의 속성 변경을 실패하였습니다. FTP 서버의 설정을 확인해주세요";
$lang->msg_ftp_connect_success = "FTP 접속 및 인증 성공하였습니다";
$lang->msg_safe_mode_ftp_needed = 'PHP의 safe_mode가 On일 경우 FTP 정보를 꼭 입력해주셔야 XE의 설치 및 사용이 가능합니다';
$lang->msg_ftp_not_connected = 'localhost로의 FTP 접속 오류가 발생하였습니다. ftp 포트 번호를 확인해주시거나 ftp 서비스가 가능한지 확인해주세요';
$lang->msg_ftp_invalid_auth_info = '입력하신 FTP 정보로 로그인을 하지 못했습니다. FTP정보를 확인해주세요';
$lang->msg_ftp_mkdir_fail = 'FTP를 이용한 디렉토리 생성 명령을 실패하였습니다. FTP 서버의 설정을 확인해주세요';
$lang->msg_ftp_chmod_fail = 'FTP를 이용한 디렉토리의 속성 변경을 실패하였습니다. FTP 서버의 설정을 확인해주세요';
$lang->msg_ftp_connect_success = 'FTP 접속 및 인증 성공하였습니다';
// xml filter에서 사용되는 javascript용 alert msg
$lang->filter->isnull = '%s의 값을 입력해주세요';

View file

@ -1,8 +1,8 @@
ko,한국어
en,English
zh-CN,简体中文
zh-CN,中文(中国)
jp,日本語
es,Español
ru,Русский
fr,Français
zh-TW,正體中文
zh-TW,中文(臺灣)

View file

@ -256,6 +256,7 @@
$lang->column_type_list['textarea'] = 'многолетних-лайн textarea';
$lang->column_type_list['checkbox'] = 'флажок (несколько отбор)';
$lang->column_type_list['select'] = 'выберите поле (один отбор)';
$lang->column_type_list['radio'] = 'radio button (radio)';
$lang->column_type_list['kr_zip'] = 'почтовый индекс (корейский)';
$lang->column_type_list['date'] = 'Дата (гггг / мм / дд)';
//$lang->column_type_list['jp_zip'] = 'почтовый индекс (японский)';

View file

@ -49,7 +49,7 @@
$lang->cmd_close = '关闭';
$lang->cmd_open = '打开';
$lang->cmd_setup = '设置';
$lang->cmd_addition_setup = '扩展设置';
$lang->cmd_addition_setup = '高级选项';
$lang->cmd_option = '选项';
$lang->cmd_apply = '应用';
$lang->cmd_open_calendar = '选择日期';
@ -58,7 +58,7 @@
$lang->cmd_scrap = '收藏';
$lang->cmd_preview = '预览';
$lang->cmd_reset = '初始化';
$lang->cmd_remake_cache = "重新生成缓冲文件";
$lang->cmd_remake_cache = "更新缓冲";
$lang->cmd_publish = "发表";
$lang->cmd_layout_setup = '布局设置';
$lang->cmd_layout_edit = '编辑布局';
@ -75,6 +75,7 @@
$lang->secret = '密帖';
$lang->category = $lang->category_srl = '分类';
$lang->none_category = '无分类';
$lang->none_image = '无图';
$lang->document_srl = '文章编号';
$lang->user_id = '用户名';
$lang->author = '制作';
@ -117,6 +118,7 @@
$lang->order_type = '排序方式';
$lang->order_asc = '升序';
$lang->order_desc = '倒序';
$lang->file = '文件';
$lang->mid = '模块名称';
$lang->layout = '布局';
@ -124,7 +126,7 @@
$lang->module = '模块';
$lang->skin = '皮肤';
$lang->colorset = '颜色设定';
$lang->extra_vars = '扩展变';
$lang->extra_vars = '扩展变';
$lang->domain = "域名";
$lang->url = "URL";
@ -256,6 +258,7 @@
$lang->column_type_list['textarea'] = '多行文本框 (textarea)';
$lang->column_type_list['checkbox'] = '复选框 (checkbox)';
$lang->column_type_list['select'] = '下拉列表框 (select)';
$lang->column_type_list['radio'] = '单选框 (radio)';
$lang->column_type_list['kr_zip'] = '韩国邮编(zip)';
$lang->column_type_list['date'] = '日期 (年月日)';
//$lang->column_type_list['jp_zip'] = '日本地址 (zip)';

View file

@ -62,19 +62,20 @@
$lang->cmd_publish = "發表";
$lang->cmd_layout_setup = '版面設置';
$lang->cmd_layout_edit = '版面編輯';
$lang->cmd_search_by_ipaddress = '以 IP位址搜尋';
$lang->cmd_add_ip_to_spamfilter = '新增 IP至垃圾過濾器';
$lang->cmd_search_by_ipaddress = '以IP位址搜尋';
$lang->cmd_add_ip_to_spamfilter = '封鎖此IP位址';
$lang->enable = '可用';
$lang->disable = '禁用';
// 基本詞語
$lang->menu = 'Menu';
$lang->menu = '選單';
$lang->no = '編號';
$lang->notice = '公告';
$lang->secret = '秘密';
$lang->category = $lang->category_srl = '分類';
$lang->none_category = '無分類';
$lang->none_image = '無圖片';
$lang->document_srl = '文章編號';
$lang->user_id = '帳號';
$lang->author = '作者';
@ -117,6 +118,7 @@
$lang->order_type = '排列方式';
$lang->order_asc = '升冪';
$lang->order_desc = '降冪';
$lang->file = '檔案';
$lang->mid = '模組名稱';
$lang->layout = '版面';
@ -133,7 +135,7 @@
$lang->blog_name = '部落格名稱';
$lang->excerpt = '轉載自';
$lang->document_count = '文章數';
$lang->document_count = '文章數';
$lang->page_count = '頁數';
$lang->list_count = '列表數';
$lang->search_list_count = '搜尋列表數';
@ -250,12 +252,13 @@
$lang->column_type = '格式';
$lang->column_type_list['text'] = '文字輸入(text)';
$lang->column_type_list['homepage'] = '網址格式 (url)';
$lang->column_type_list['homepage'] = '網址格式';
$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['textarea'] = '文字區域 (textarea)';
$lang->column_type_list['checkbox'] = '核取方塊 (checkbox)';
$lang->column_type_list['select'] = '下拉式選單 (select)';
$lang->column_type_list['radio'] = '選項按紐 (radio)';
$lang->column_type_list['kr_zip'] = '韓國郵編(zip)';
$lang->column_type_list['date'] = '日期 (年月日)';
//$lang->column_type_list['jp_zip'] = '日本郵編 (zip)';
@ -265,33 +268,33 @@
$lang->is_active = '啟動';
$lang->is_required = '必填';
// 關於 FTP
$lang->ftp_form_title = '輸入 FTP資訊';
// 關於FTP
$lang->ftp_form_title = '輸入FTP資訊';
$lang->ftp = 'FTP';
$lang->ftp_port = 'FTP Port';
$lang->cmd_check_ftp_connect = '確認 FTP連線';
$lang->ftp_port = 'FTP埠口';
$lang->cmd_check_ftp_connect = '檢查FTP連線';
$lang->about_ftp_info = "
FTP資訊可應用至以下情形<br/>
1. PHP的安全模式(safe_mode)開啟時,可使程式正常運作。<br/>
1. PHP的安全模式(safe_mode)開啟時,可使程式正常運作。<br/>
2. 可用於自動更新。<br/>
這個 FTP資訊會儲存在檔案 files/config/ftp.config.php裡面。<br/>
安裝程式後,可以在管理頁面中針對 FTP資訊進行修改或刪除。<br />
此FTP資訊會儲存在檔案『files/config/ftp.config.php裡面。<br/>
安裝程式後,可以在管理頁面中針對FTP資訊進行修改或刪除。<br />
";
$lang->msg_safe_mode_ftp_needed = "PHP的安全模式(safe_mode)開啟時,請輸入相關 FTP資訊否則無法正常安裝或使用程式。";
$lang->msg_ftp_not_connected = "本地(localhost)FTP連線錯誤。請確認 FTP Prot或確認是否支援 FTP功能。";
$lang->msg_ftp_invalid_auth_info = "FTP登入失敗。請確認輸入的 FTP資訊。";
$lang->msg_ftp_mkdir_fail = "新增資料夾失敗。請確認 FTP主機設置。";
$lang->msg_ftp_chmod_fail = "修改資料夾權限失敗。請確認 FTP主機設置。";
$lang->msg_ftp_connect_success = "FTP連線成功。";
$lang->msg_safe_mode_ftp_needed = '當PHP的安全模式(safe_mode)開啟時請輸入相關FTP資訊否則無法正常安裝或使用程式。';
$lang->msg_ftp_not_connected = '本地(localhost)FTP連線錯誤。請檢查FTP埠口並確認是否支援FTP功能。';
$lang->msg_ftp_invalid_auth_info = 'FTP登入失敗。請確認輸入的FTP資訊。';
$lang->msg_ftp_mkdir_fail = '新增資料夾失敗。請確認FTP主機設置。';
$lang->msg_ftp_chmod_fail = '修改資料夾權限失敗。請確認FTP主機設置。';
$lang->msg_ftp_connect_success = 'FTP連線成功。';
// 在 xml filter使用的 javascript用 alert msg
// 在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_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_homepage = '%s格式有誤。(例: http://www.zeroboard.com)';
$lang->filter->invalid_korean = '%s只能輸入中文';
$lang->filter->invalid_korean_number = '%s只能輸入中文或數字';
$lang->filter->invalid_alpha = '%s只能輸入英文字母';

View file

@ -1,268 +0,0 @@
<?php
####################
## 연도 범위 설정 ##
// 최대
$max_year = 2900;//년 (우주가 사라지는 날 까지)
// 최소
$min_year = 1900;//년 (0년 부터)
####################
$year = htmlspecialchars($_REQUEST['year']);
$month = htmlspecialchars($_REQUEST['month']);
$method = htmlspecialchars($_REQUEST['method']);
$fo_id = htmlspecialchars($_REQUEST['fo_id']);
$callback_func = htmlspecialchars($_REQUEST['callback_func']);
$day_str = htmlspecialchars($_REQUEST['day_str']); // 날짜 (ex. 20080101)
if($day_str && strlen($day_str)) {
$year = substr($day_str, 0, 4);
$month = substr($day_str, 4, 2);
}
if($year < $min_year || $year > $max_year) $year = date("Y");
if(!(int)$month || $month < 1 || $month > 12) $month = date("n");
switch($method) {
case 'prev_year' :
$year --;
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 ++;
break;
}
// 긴 이름
$monthLongName = array(1 => "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
// 짧은 이름
$monthShortName = array(1 => "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
// 요일 이름
$dayName = array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
/*
* @brief 윤년 검사
*/
function isLeapYear($year) {
if ($year % 4 == 0 && $year % 100 != 0 || $year % 400 == 0) return true;
else return false;
}
/*
* @brief 날짜 계산
*/
function convertDatetoDay($year, $month, $day = 0) {
$numOfLeapYear = 0; // 윤년의 수
// 전년도까지의 윤년의 수를 구한다.
for($i = 0; $i < $year; $i++) {
if(isLeapYear($i)) $numOfLeapYear++;
}
// 전년도까지의 일 수를 구한다.
$toLastYearDaySum = ($year-1) * 365 + $numOfLeapYear;
// 올해의 현재 월까지의 일수 계산
$thisYearDaySum = 0;
// 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
$endOfMonth = array(1 => 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
for($i = 1; $i < $month; $i++) {
$thisYearDaySum += $endOfMonth[$i];
}
// 윤년이고, 2월이 포함되어 있으면 1일을 증가시킨다.
if ($month > 2 && isLeapYear($year)) $thisYearDaySum++;
if(isLeapYear($year)) $endOfMonth[2] = 29;
if($day) {
$thisYearDaySum += $day;
return $toLastYearDaySum + $thisYearDaySum - 1;
} else {
return $endOfMonth[$month];
}
}
/*
* @brief 요일 구하기
*/
function getDayOfWeek($year, $month, $day) {
// 0~6의 값을 반환한다. 결과가 0이면 일요일이다.
return convertDatetoDay($year, $month, $day) % 7;
}
$start_week = getDayOfWeek($year, $month, 1);
$month_day = convertDatetoDay($year, $month);
$before_month_month_day = convertDatetoDay( $month == 1 ? $year - 1 : $year, $month == 1 ? 12 : $month - 1);
?>
<!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_<?php echo $fo_id?>");
var str_obj = opener.xGetElementById("str_<?php echo $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">
<h3>Calendar</h3>
</div>
<form action="./calendar.php" method="get">
<input type="hidden" name="fo_id" value="<?php echo $fo_id?>"/>
<input type="hidden" name="callback_func" value="<?php echo $callback_func?>"/>
<div id="popBody">
<div class="calendar">
<div class="yymm">
<div class="yy">
<a href="./calendar.php?fo_id=<?php echo $fo_id?>&year=<?php echo $year?>&month=<?php echo $month?>&method=prev_year&callback_func=<?php echo $callback_func?>" class="left"><img src="./images/buttonLeft2.gif" alt="<?php echo $year - 1?>" width="11" height="11" /></a><?php echo $year?><a href="./calendar.php?fo_id=<?php echo $fo_id?>&year=<?php echo $year?>&month=<?php echo $month?>&method=next_year&callback_func=<?php echo $callback_func?>" class="right"><img src="./images/buttonRight2.gif" alt="<?php echo $year + 1?>" width="11" height="11" /></a>
</div>
<div class="mm">
<p><?php echo $monthLongName[$month]?></p>
<a href="./calendar.php?fo_id=<?php echo $fo_id?>&year=<?php echo $year?>&month=<?php echo $month?>&method=prev_month&callback_func=<?php echo $callback_func?>" class="left"><img src="./images/buttonLeft2.gif" alt="prev" width="11" height="11" /></a><span><?php echo $month?></span><a href="./calendar.php?fo_id=<?php echo $fo_id?>&year=<?php echo $year?>&month=<?php echo $month?>&method=next_month&callback_func=<?php echo $callback_func?>" class="right"><img src="./images/buttonRight2.gif" alt="next" width="11" height="11" /></a>
</div>
<div class="go">
<select name="year" class="selectTypeY" onchange="submit()">
<?php for($i = $max_year; $i >= $min_year; $i--):?>
<option value="<?php echo $i?>" <?php echo $year == $i? "selected":""?> class="<?php echo $i%10?($i%2?"select_color1":"select_color2"):"select_color10"?>"><?php echo $i?></option>
<?php endfor?>
</select>
<select name="month" class="selectTypeM" onchange="submit()">
<?php for($i = 1; $i <= 12; $i++):?>
<option value="<?php echo $i?>" <?php echo $month == $i? "selected":""?> class="<?php echo $i%2?"select_color1":"select_color2"?>"><?php echo sprintf("%02d",$i)?></option>
<?php endfor?>
</select>
</div>
<br /><br />
<center><a href="./calendar.php?fo_id=<?php echo $fo_id?>&callback_func=<?php echo $callback_func?>" class="button"><span>Go Today</span></a></center>
</div>
<table cellspacing="0" class="dd">
<tr>
<?php for($y = 0; $y < 7; $y++) {?>
<td class="<?php echo $y==0?"sun":($y==6?"sat":"")?>"><?php echo $dayName[$y]?></td>
<?php }?>
</tr>
<?php
//1주~6주
for($i = 0; $i < 6; $i++) {
?>
<tr class="<?php if($i == 0){?>first<?php }elseif($i == 5){?>last<?php }?>">
<?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";
elseif($j == 6) $class_name = "sat";
else $class_name= "";
$date = $y.". ".sprintf("%02d", $m).". ".sprintf("%02d", $day);
$date_str = $y.sprintf("%02d", $m).sprintf("%02d", $day);
?>
<td class="<?php echo $class_name?>" <?php if($day){?> onclick="selectDate('<?php echo $date?>','<?php echo $date_str?>','<?php echo $callback_func?>')"<?php }?>>
<?php if($m == $month){?><?php if(date("Ymd")==$date_str){?><strong><?php }?>
<?php if($day){?><?php echo $day?><?php }else{?>&nbsp;<?php }?>
<?php if(date("Ymd")==$date_str){?></strong><?php }?>
<?php }else{?>
<span class="disable"><?php if($day){?><?php echo $day?><?php }else{?>&nbsp;<?php }?></span>
<?php }?>
</td>
<?php
}
?>
</tr>
<?php
}
?>
</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>

View file

@ -64,8 +64,13 @@
</head>
<body>
{$zbxe_final_content}
{Context::getHtmlFooter()}
<div id="waitingforserverresponse"></div>
{Context::getBodyHeader()}
{$zbxe_final_content}
{Context::getHtmlFooter()}
<div id="waitingforserverresponse"></div>
</body>
</html>

View file

@ -1,38 +0,0 @@
@charset "utf-8";
body { margin:0; padding:0; }
#popup_content { width:500px; overflow:hidden;}
#popHeadder { width:500px; }
#popBody { width:480px; }
#popFooter { width:500px; }
#popBody .calendar { width:480px; 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.5em 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:0px 15px; text-align:center; border-top:1px solid #ffffff; display:inline;}
#popBody .calendar .yymm .go * { vertical-align:middle;}
#popBody .calendar .yymm .go .selectTypeY { width:60px;}
#popBody .calendar .yymm .go .selectTypeM { width:45px;}
#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:337px; background:#ffffff; border-left:10px solid #ffffff;}
#popBody .calendar .dd td { border-bottom:1px solid #ededed; height:40px; text-align:center; color:#636363; font:1em Tahoma; cursor:pointer; width:14%;}
#popBody .calendar .dd td:hover { background:#eeeeee;}
#popBody .calendar .dd td strong { text-decoration:underline;}
#popBody .calendar .dd td.sun { color:#c95b53;}
#popBody .calendar .dd td.sat { color:#5378C9;}
#popBody .calendar .dd .first { height:35px;}
#popBody .calendar .dd .last td { height:35px; border-bottom:none;}
#popBody .calendar .dd td .disable { color:#CCCCCC; }
#popBody .calendar .select_color1 {background:#ffffff;color:#000000;}
#popBody .calendar .select_color2 {background:#eeeeee;color:#000000;}
#popBody .calendar .select_color10 {background:#ffff00;color:#000000;}

BIN
common/tpl/images/buttonSet.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View file

@ -1,8 +1,12 @@
<!--%import("css/popup.css")-->
<!--%import("../../modules/admin/tpl/css/admin.css")-->
<div id="popup_content">{$content}</div>
<!--%import("../../modules/admin/tpl/css/pagination.css")-->
<div id="xeAdmin">
<div id="popup_content">
{$content}
<button class="xButton" type="button" onclick="window.close();return false;"><span>{$lang->cmd_close}</span></button>
</div>
</div>
<script type="text/javascript">
xAddEventListener(window, 'load', setFixedPopupSize);
var _isPoped = true;
</script>
</script>