]*)editor_component=([^\>]*)>(.*?)\<\/div\>!is', array($this,'transEditorComponent'), $content);
+ $content = preg_replace_callback('!]*)editor_component=([^\>]*?)\>!is', array($this,'transEditorComponent'), $content);
// body 내의 를 header로 이동
- $content = preg_replace_callback('!
'.
+ '
'.
+ ''.
+ ''.
+ ''.
+ ''.
+ ''.
+ ''.
+ '
'.
+ '
'.
+ '%s'.
+ '
'.
+ '
'.
+ '
',
+ $css_header,
+ $args->style,
+ $widget_padding_top, $widget_padding_right, $widget_padding_bottom, $widget_padding_left,
+ $widget, implode(' ',$attribute),
+ $inner_style,
+ $html
+ );
}
+ // 위젯 결과물 생성 시간을 debug 정보에 추가
if(__DEBUG__==3) $GLOBALS['__widget_excute_elapsed__'] += getMicroTime() - $start;
- if($args->widget_sequence && $args->widget_cache) {
- $cache_path = './files/cache/widget_cache/';
- $cache_file = sprintf('%s%d.%s.cache', $cache_path, $args->widget_sequence, Context::getLangType());
-
- FileHandler::writeFile($cache_file, $output);
- }
-
+ // 결과 return
return $output;
}
diff --git a/common/css/default.css b/common/css/default.css
index 567e73539..deae4c967 100644
--- a/common/css/default.css
+++ b/common/css/default.css
@@ -53,14 +53,14 @@ form { margin:0; padding:0; }
/* 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; }
+.editor_blue_text { color: #145ff9 !important; text-decoration:underline !important; }
+.editor_blue_text a { color: #145ff9 !important; text-decoration:underline !important; }
+.editor_red_text { color: #f42126 !important; text-decoration:underline !important; }
+.editor_red_text a { color: #f42126 !important; text-decoration:underline !important; }
+.editor_yellow_text { color: #c9bd00 !important; text-decoration:underline !important; }
+.editor_yellow_text a { color: #c9bd00 !important; text-decoration:underline !important; }
+.editor_green_text { color: #08830B !important; text-decoration:underline !important; }
+.editor_green_text a { color: #08830B !important; text-decoration:underline !important; }
.folder_opener { display: block; }
.folder_closer { display: none; }
diff --git a/common/js/common.js b/common/js/common.js
index 38578998d..dcd84a3ca 100644
--- a/common/js/common.js
+++ b/common/js/common.js
@@ -37,6 +37,7 @@ String.prototype.setQuery = function(key, val) {
var q_list = new Array();
for(var i in args) {
+ if( !args.hasOwnProperty(i) ) continue;
var arg = args[i];
if(!arg.toString().trim()) continue;
@@ -49,6 +50,33 @@ String.prototype.setQuery = function(key, val) {
}
}
+/**
+ * @breif replace outerHTML
+ **/
+function replaceOuterHTML(obj, html) {
+ if(obj.outerHTML) {
+ obj.outerHTML = html;
+ } else {
+ var dummy = xCreateElement("div");
+ xInnerHtml(dummy, html);
+ var parent = obj.parentNode;
+ while(dummy.firstChild) {
+ parent.insertBefore(dummy.firstChild, obj);
+ }
+ parent.removeChild(obj);
+ }
+}
+
+/**
+ * @breif get outerHTML
+ **/
+function getOuterHTML(obj) {
+ if(obj.outerHTML) return obj.outerHTML;
+ var dummy = xCreateElement("div");
+ dummy.insertBefore(obj, dummy.lastChild);
+ return xInnerHtml(dummy);
+}
+
/**
* @brief xSleep(micro time)
**/
@@ -106,7 +134,7 @@ function winopen(url, target, attribute) {
**/
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");
+ winopen(url, target, "left=10,top=10,width=10,height=10,scrollbars=no,resizable=yes,toolbars=no");
}
/**
@@ -173,7 +201,6 @@ function displayMultimedia(src, width, height, auto_start) {
} else {
html = "";
}
-
document.writeln(html);
}
@@ -187,6 +214,13 @@ function resizeImageContents() {
var obj = objs[i];
if(!obj.parentNode) 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;
+
// 상위 node의 className이 document_ 또는 comment_ 로 시작하지 않으면 패스
var parent = obj.parentNode;
while(parent) {
@@ -196,13 +230,8 @@ function resizeImageContents() {
if(!parent || !/(document_|comment_)/ig.test(parent.className)) continue;
if(parent.parentNode) xWidth(parent, xWidth(parent.parentNode));
-
- 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;
+ parent.style.width = '100%';
+ parent.style.overflow = 'hidden';
var parent_width = xWidth(parent);
if(parent.parentNode && xWidth(parent.parentNode)= obj_width) continue;
+ if(parent_width<1 || obj_width <1 || parent_width >= orig_img.width) continue;
obj.style.cursor = "pointer";
@@ -282,10 +311,10 @@ function svc_folder_close(id) {
function setFixedPopupSize() {
if(xGetElementById('popBody')) {
- if(xHeight('popBody')>600) {
+ if(xHeight('popBody')>500) {
xGetElementById('popBody').style.overflowY = 'scroll';
xGetElementById('popBody').style.overflowX = 'hidden';
- xHeight('popBody', 600);
+ xHeight('popBody', 500);
}
}
@@ -359,6 +388,7 @@ function showOriginalImage(evt) {
xAddEventListener(orig_image, "dblclick", closeOriginalImage);
xAddEventListener(window, "scroll", closeOriginalImage);
xAddEventListener(window, "resize", closeOriginalImage);
+ xAddEventListener(document, 'keydown',closeOriginalImage);
areabg.style.visibility = 'visible';
}
@@ -378,6 +408,7 @@ function closeOriginalImage(evt) {
xRemoveEventListener(area, "mousedown", closeOriginalImage);
xRemoveEventListener(window, "scroll", closeOriginalImage);
xRemoveEventListener(window, "resize", closeOriginalImage);
+ xRemoveEventListener(document, 'keydown',closeOriginalImage);
}
/**
@@ -467,7 +498,7 @@ function origImageDragMouseMove(evt) {
xAddEventListener(document, 'click', chkPopupMenu);
var loaded_popup_menu_list = new Array();
-// 클릭 이벤트 발생시 이벤트가 일어난 대상을 검사하여 적절한 규칙에 맞으면 처리
+/* 클릭 이벤트 발생시 이벤트가 일어난 대상을 검사하여 적절한 규칙에 맞으면 처리 */
function chkPopupMenu(evt) {
// 이전에 호출되었을지 모르는 팝업메뉴 숨김
var area = xGetElementById("popup_menu_area");
@@ -599,7 +630,7 @@ function completeCallModuleAction(ret_obj, response_tags) {
}
/**
- * @brief 날짜 선택 (달력 열기)
+ * @brief 날짜 선택 (달력 열기)
**/
function open_calendar(fo_id, day_str, callback_func) {
if(typeof(day_str)=="undefined") day_str = "";
@@ -612,7 +643,7 @@ function open_calendar(fo_id, day_str, callback_func) {
popopen(url, 'Calendar');
}
-// 언어코드 (lang_type) 쿠키값 변경
+/* 언어코드 (lang_type) 쿠키값 변경 */
function doChangeLangType(obj) {
if(typeof(obj)=="string") {
setLangType(obj);
@@ -727,7 +758,14 @@ function checkboxSelectAll(form, name, option){
else if(option == true) value = true
else if(option == false) value = false
- //if(fo_obj[i].name == name) fo_obj[i].checked = value;
+ if(fo_obj[i].name == name) fo_obj[i].checked = value;
+ }
+}
+
+/* 체크박스를 실행 */
+function clickCheckBoxAll(form, name) {
+ var fo_obj = xGetElementById(form);
+ for ( var i = 0 ; i < fo_obj.length ; i++ ){
if(fo_obj[i].name == name) fo_obj[i].click();
}
}
@@ -740,3 +778,162 @@ function doAddDocumentCart(obj) {
exec_xml("document","procDocumentAdminAddCart", params, null);
}
+/* ff의 rgb(a,b,c)를 #... 로 변경 */
+function transRGB2Hex(value) {
+ if(!value) return value;
+ if(value.indexOf('#')>-1) return value.replace(/^#/,'');
+
+ if(value.toLowerCase().indexOf('rgb')<0) return value;
+ value = value.replace(/^rgb\(/i,'').replace(/\)$/,'');
+ value_list = value.split(',');
+
+ var hex = '';
+ for(var i=0;i> 2;
+ enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+ enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+ enc4 = chr3 & 63;
+
+ if (isNaN(chr2)) {
+ enc3 = enc4 = 64;
+ } else if (isNaN(chr3)) {
+ enc4 = 64;
+ }
+
+ output = output +
+ this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
+ this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
+
+ }
+
+ return output;
+ },
+
+ // public method for decoding
+ decode : function (input) {
+ var output = "";
+ var chr1, chr2, chr3;
+ var enc1, enc2, enc3, enc4;
+ var i = 0;
+
+ input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
+
+ while (i < input.length) {
+
+ enc1 = this._keyStr.indexOf(input.charAt(i++));
+ enc2 = this._keyStr.indexOf(input.charAt(i++));
+ enc3 = this._keyStr.indexOf(input.charAt(i++));
+ enc4 = this._keyStr.indexOf(input.charAt(i++));
+
+ chr1 = (enc1 << 2) | (enc2 >> 4);
+ chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
+ chr3 = ((enc3 & 3) << 6) | enc4;
+
+ output = output + String.fromCharCode(chr1);
+
+ if (enc3 != 64) {
+ output = output + String.fromCharCode(chr2);
+ }
+ if (enc4 != 64) {
+ output = output + String.fromCharCode(chr3);
+ }
+
+ }
+
+ output = Base64._utf8_decode(output);
+
+ return output;
+
+ },
+
+ // private method for UTF-8 encoding
+ _utf8_encode : function (string) {
+ string = string.replace(/\r\n/g,"\n");
+ var utftext = "";
+
+ for (var n = 0; n < string.length; n++) {
+
+ var c = string.charCodeAt(n);
+
+ if (c < 128) {
+ utftext += String.fromCharCode(c);
+ }
+ else if((c > 127) && (c < 2048)) {
+ utftext += String.fromCharCode((c >> 6) | 192);
+ utftext += String.fromCharCode((c & 63) | 128);
+ }
+ else {
+ utftext += String.fromCharCode((c >> 12) | 224);
+ utftext += String.fromCharCode(((c >> 6) & 63) | 128);
+ utftext += String.fromCharCode((c & 63) | 128);
+ }
+
+ }
+
+ return utftext;
+ },
+
+ // private method for UTF-8 decoding
+ _utf8_decode : function (utftext) {
+ var string = "";
+ var i = 0;
+ var c = c1 = c2 = 0;
+
+ while ( i < utftext.length ) {
+
+ c = utftext.charCodeAt(i);
+
+ if (c < 128) {
+ string += String.fromCharCode(c);
+ i++;
+ }
+ else if((c > 191) && (c < 224)) {
+ c2 = utftext.charCodeAt(i+1);
+ string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
+ i += 2;
+ }
+ else {
+ c2 = utftext.charCodeAt(i+1);
+ c3 = utftext.charCodeAt(i+2);
+ string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
+ i += 3;
+ }
+
+ }
+
+ return string;
+ }
+
+}
diff --git a/common/js/xml_js_filter.js b/common/js/xml_js_filter.js
index bb9c3fcf9..7930525ab 100644
--- a/common/js/xml_js_filter.js
+++ b/common/js/xml_js_filter.js
@@ -183,7 +183,7 @@ function XmlJsFilterExecuteFilter(filter, value) {
return regx.test(value);
break;
case "alpha_number" :
- var regx = /^[a-zA-Z0-9\_]*$/;
+ var regx = /^[a-zA-Z][a-zA-Z0-9\_]*$/;
return regx.test(value);
break;
case "number" :
diff --git a/common/lang/en.lang.php b/common/lang/en.lang.php
index 1450c2b05..8e259530c 100644
--- a/common/lang/en.lang.php
+++ b/common/lang/en.lang.php
@@ -123,15 +123,15 @@
$lang->document_count = 'Total Articles';
$lang->page_count = 'Page Count';
$lang->list_count = 'List Count';
- $lang->readed_count = 'Hits';
+ $lang->readed_count = 'Views';
$lang->voted_count = 'Votes';
$lang->member_count = 'Member Count';
$lang->date = 'Date';
$lang->regdate = 'Registered Date';
- $lang->last_update = 'Late Update';
- $lang->last_post = 'Late Post';
- $lang->signup_date = 'Registered Date';
- $lang->last_login = 'Late Login';
+ $lang->last_update = 'Last Update';
+ $lang->last_post = 'Last Post';
+ $lang->signup_date = 'Join Date';
+ $lang->last_login = 'Last Login';
$lang->first_page = 'First Page';
$lang->last_page = 'Last Page';
$lang->search_target = 'Searching Target';
@@ -157,7 +157,7 @@
$lang->unit_year = 'year';
// Descriptions
- $lang->about_tag = 'You can submit multiple tags by inserting commas(,) between each tag';
+ $lang->about_tag = 'You may submit multiple tags by inserting commas(,) between each tag';
$lang->about_layout = 'Layouts decorate the appearance of your modules. you can configure them from Layout menu on the top';
// Messages
@@ -165,7 +165,7 @@
$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 do not have permission to access';
- $lang->msg_input_password = 'Please enter your password';
+ $lang->msg_input_password = 'Please input the password';
$lang->msg_invalid_document = 'Invalid Article Number';
$lang->msg_invalid_request = 'Invalid Request';
$lang->msg_invalid_password = 'Invalid Password';
diff --git a/common/lang/jp.lang.php b/common/lang/jp.lang.php
index b2fb601b4..c07351db4 100644
--- a/common/lang/jp.lang.php
+++ b/common/lang/jp.lang.php
@@ -21,15 +21,15 @@
$lang->cmd_comment_registration = 'コメント登録';
$lang->cmd_insert = '挿入';
$lang->cmd_save = '保存';
- $lang->cmd_load = '불러오기';
+ $lang->cmd_load = '読み込む';
$lang->cmd_input = '入力';
$lang->cmd_search = '検索';
$lang->cmd_cancel = 'キャンセル';
$lang->cmd_back = '戻る';
$lang->cmd_vote = '推薦';
- $lang->cmd_vote_down = '비추천';
- $lang->cmd_declare = '신고';
- $lang->cmd_declared_list = '신고 목록';
+ $lang->cmd_vote_down = '非推薦';
+ $lang->cmd_declare = '通報';
+ $lang->cmd_declared_list = '通報リスト';
$lang->cmd_copy = 'コピー';
$lang->cmd_move = '移動';
$lang->cmd_move_up = '上へ';
@@ -47,7 +47,7 @@
$lang->cmd_close = '閉じる';
$lang->cmd_open = '開く';
$lang->cmd_setup = '設定';
- $lang->cmd_addition_setup = '추가 설정';
+ $lang->cmd_addition_setup = '追加設定';
$lang->cmd_apply = '適用';
$lang->cmd_option = 'オプション';
$lang->cmd_open_calendar = 'カレンダーを開く';
@@ -57,7 +57,7 @@
$lang->cmd_preview = 'プレビュー';
$lang->cmd_reset = '初期化';
$lang->cmd_remake_cache = "キャッシュファイル再生成";
- $lang->cmd_publish = "발행";
+ $lang->cmd_publish = "発行";
$lang->enable = '可能';
$lang->disable = '不可';
@@ -84,8 +84,8 @@
$lang->browser_title = 'ブラウザタイトル';
$lang->title = 'タイトル';
$lang->title_content = 'タイトル+内容';
- $lang->topic = '주제';
- $lang->replies = '응답';
+ $lang->topic = 'トッピック';
+ $lang->replies = '返事';
$lang->content = '内容';
$lang->document = '書き込み';
$lang->comment = 'コメント';
@@ -128,7 +128,7 @@
$lang->date = '年月日';
$lang->regdate = '登録日';
$lang->last_update = '最近修正日';
- $lang->last_post = '최근 등록';
+ $lang->last_post = '最近登録';
$lang->signup_date = '加入日';
$lang->last_login = '最近ログイン';
$lang->first_page = '最初のページ';
@@ -177,7 +177,7 @@
$lang->msg_module_is_not_standalone = 'このモジュールはスタンドアローンでは作動しません。';
$lang->success_registed = '登録しました。';
- $lang->success_declared = '신고되었습니다';
+ $lang->success_declared = '通報しました。';
$lang->success_updated = '修正しました。';
$lang->success_deleted = '削除しました。';
$lang->success_voted = '推薦しました。';
@@ -185,13 +185,13 @@
$lang->success_sended = '送信しました。';
$lang->success_reset = '初期化しました。';
$lang->success_leaved = '脱会しました。';
- $lang->success_saved = '저장되었습니다';
+ $lang->success_saved = '保存しました。';
$lang->fail_to_delete = '削除に失敗しました。';
$lang->fail_to_move = '移動に失敗しました。';
$lang->failed_voted = '推薦できません。';
- $lang->failed_declared = '신고를 하실 수 없습니다';
+ $lang->failed_declared = '通報できません。';
$lang->fail_to_delete_have_children = '返信の書き込みがあり、削除できません。';
$lang->confirm_submit = '登録しますか?';
diff --git a/common/lang/zh-CN.lang.php b/common/lang/zh-CN.lang.php
index 90c4536f3..d4daff5b5 100644
--- a/common/lang/zh-CN.lang.php
+++ b/common/lang/zh-CN.lang.php
@@ -21,15 +21,15 @@
$lang->cmd_comment_registration = '提交评论';
$lang->cmd_insert = '添加';
$lang->cmd_save = '保存';
- $lang->cmd_load = '载入';
+ $lang->cmd_load = '导入';
$lang->cmd_input = '输入';
$lang->cmd_search = '搜索';
$lang->cmd_cancel = '取消';
$lang->cmd_back = '返回';
$lang->cmd_vote = '推荐';
- $lang->cmd_vote_down = '不推荐';
- $lang->cmd_declare = '申告';
- $lang->cmd_declared_list = '申告目录';
+ $lang->cmd_vote_down = '反对';
+ $lang->cmd_declare = '举报';
+ $lang->cmd_declared_list = '举报目录';
$lang->cmd_copy = '复制';
$lang->cmd_move = '查看';
$lang->cmd_move_up = '向上';
@@ -48,7 +48,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_preview = '预览';
$lang->cmd_reset = '初始化';
$lang->cmd_remake_cache = "重新生成缓冲文件";
- $lang->cmd_publish = "发行";
+ $lang->cmd_publish = "发表";
$lang->enable = '可用';
$lang->disable = '禁用';
@@ -86,7 +86,7 @@
$lang->title = '标题';
$lang->title_content = '标题+内容';
$lang->topic = '主题';
- $lang->replies = '响应';
+ $lang->replies = '回复';
$lang->content = '内容';
$lang->document = '文章';
$lang->comment = '评论';
@@ -129,7 +129,7 @@
$lang->date = '日期';
$lang->regdate = '登录日期';
$lang->last_update = '最后更新';
- $lang->last_post = '最新文章';
+ $lang->last_post = '最后更新';
$lang->signup_date = '注册日期';
$lang->last_login = '最近登录';
$lang->first_page = '第一页';
@@ -178,13 +178,13 @@
$lang->msg_module_is_not_standalone = '您请求的模块不能单独执行';
$lang->success_registed = '提交成功!';
- $lang->success_declared = '申告成功!';
+ $lang->success_declared = '举报成功!';
$lang->success_updated = '修改成功!';
$lang->success_deleted = '删除成功!';
$lang->success_voted = '推荐成功!';
$lang->success_moved = '移动成功!';
$lang->success_sended = '发送成功!';
- $lang->success_reset = '初始化成功';
+ $lang->success_reset = '初始化成功 !';
$lang->success_leaved = '注销成功!';
$lang->success_saved = '保存成功!';
@@ -192,7 +192,7 @@
$lang->fail_to_move = '移动成功!';
$lang->failed_voted = '您不能推荐!';
- $lang->failed_declared = '您不能申告!';
+ $lang->failed_declared = '您不具备举报权限!';
$lang->fail_to_delete_have_children = '不能删除有回复的评论!';
$lang->confirm_submit = '确定要提交吗?';
@@ -211,7 +211,7 @@
$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['kr_zip'] = '韩国邮编(zip)';
$lang->column_type_list['date'] = '日期 (年月日)';
//$lang->column_type_list['jp_zip'] = '日本地址 (zip)';
$lang->column_name = '项目名';
diff --git a/config/config.inc.php b/config/config.inc.php
index 75eb27b76..f2db7ee5a 100644
--- a/config/config.inc.php
+++ b/config/config.inc.php
@@ -14,7 +14,7 @@
* 이 내용은 제로보드XE의 버전을 관리자 페이지에 표시하기 위한 용도이며
* config.inc.php의 수정이 없더라도 공식 릴리즈시에 수정되어 함께 배포되어야 함
**/
- define('__ZBXE_VERSION__', '0.2.5');
+ define('__ZBXE_VERSION__', '0.2.6');
/**
* @brief 디버깅 메세지 출력
diff --git a/config/func.inc.php b/config/func.inc.php
index e7137efa9..7dc13b7ca 100644
--- a/config/func.inc.php
+++ b/config/func.inc.php
@@ -395,4 +395,32 @@
}
+ /**
+ * @brief mysql old_password 의 php 구현 함수
+ * 제로보드4나 기타 mysql4.1 이전의 old_password()함수를 쓴 데이터의 사용을 위해서
+ * mysql의 password.c 소스 참조해서 구현함
+ **/
+ function mysql_pre4_hash_password($password) {
+ $nr = 1345345333;
+ $add = 7;
+ $nr2 = 0x12345671;
+
+ settype($password, "string");
+
+ for ($i=0; $i
diff --git a/layouts/xe_official/conf/info.xml b/layouts/xe_official/conf/info.xml
index 074466a3e..497e8da87 100644
--- a/layouts/xe_official/conf/info.xml
+++ b/layouts/xe_official/conf/info.xml
@@ -36,7 +36,7 @@
Productor del diseño : zero
- ZBXE 官方网站布局。
+ Zeroboard XE官方网站布局。
设计 : So-Ra Lee
HTML/CSS : Chan-Myung Jeong
布局 : zero
@@ -94,7 +94,7 @@
홈 페이지 URLホームページ URL
- 网站 URL
+ 主页地址Homepage URLURL de la página web로고를 클릭시에 이동할 홈 페이지 URL을 입력해 주세요.
diff --git a/layouts/xe_official/css/default.css b/layouts/xe_official/css/default.css
index 3e457a717..ce6ec33ac 100644
--- a/layouts/xe_official/css/default.css
+++ b/layouts/xe_official/css/default.css
@@ -54,10 +54,10 @@ body { background:#FFFFFF url(../images/default/bgBody.gif) repeat-x left top; }
/* Site Layout - Column Left */
#columnLeft { position:relative; width:201px; float:left;}
-#columnLeft .mask { width:201px; height:5px; background:#ffffff; display:block;}
+#columnLeft .mask { width:201px; height:5px; background:#ffffff; display:block; clear:both;}
#lnb { border-top:1px solid #dddddd; padding:4px 5px; width:190px;}
-#lnb li { padding-bottom:4px;}
+#lnb li { padding-bottom:4px; list-style:none; }
#lnb li a { padding:6px 5px 6px 13px; width:170px; display:block; border:1px solid #e8e8e8; background:url(../images/default/bgLnbOff.gif) repeat-x; color:#3e3e3e; position:relative; z-index:99; text-decoration:none;}
#lnb li a:hover,
#lnb li a:focus { color:#ffffff; background:#de4332; border:1px solid #de4332;}
diff --git a/modules/addon/addon.admin.controller.php b/modules/addon/addon.admin.controller.php
index 7f16c131d..e30fc37ca 100644
--- a/modules/addon/addon.admin.controller.php
+++ b/modules/addon/addon.admin.controller.php
@@ -66,7 +66,7 @@
$buff .= sprintf(' if(file_exists("./addons/%s/%s.addon.php")) { unset($addon_info); $addon_info = unserialize(base64_decode("%s")); $addon_path = "./addons/%s/"; @include("./addons/%s/%s.addon.php"); }', $addon, $addon, $extra_vars, $addon, $addon, $addon);
}
- $buff = sprintf('', $buff);
+ $buff = sprintf('', $buff);
FileHandler::writeFile($this->cache_file, $buff);
}
diff --git a/modules/admin/lang/jp.lang.php b/modules/admin/lang/jp.lang.php
index 2aca6812d..ccae24ca0 100644
--- a/modules/admin/lang/jp.lang.php
+++ b/modules/admin/lang/jp.lang.php
@@ -5,26 +5,26 @@
* @brief 日本語言語パッケージ(基本的な内容のみ)
**/
- $lang->admin_info = '관리자 정보';
- $lang->admin_index = '관리자 초기 페이지';
+ $lang->admin_info = '管理者情報';
+ $lang->admin_index = '管理者トップページ';
$lang->module_category_title = array(
- 'service' => '서비스형 모듈',
- 'manager' => '관리형 모듈',
- 'utility' => '기능성 모듈',
- 'accessory' => '부가 모듈',
- 'base' => '기본 모듈',
+ 'service' => 'サービス型モジュール',
+ 'manager' => '管理型モジュール',
+ 'utility' => '機能性モジュール',
+ 'accessory' => '付加モジュール',
+ 'base' => '基本モジュール',
);
$lang->newest_news = "最新ニュース";
$lang->env_setup = "環境設定";
- $lang->env_information = "환경 정보";
- $lang->current_version = "설치된 버전";
- $lang->current_path = "설치된 경로";
- $lang->released_version = "최신 버전";
- $lang->about_download_link = "설치된 버전보다 최신의 버전이 배포되었습니다. download링크를 클릭하시면 다운 받으실 수 있습니다.";
+ $lang->env_information = "環境情報";
+ $lang->current_version = "インストールバージョン";
+ $lang->current_path = "インストールパス";
+ $lang->released_version = "最新バージョン";
+ $lang->about_download_link = "インストールされたバージョンより新しいバージョンが配布されました。ダウンロードリンクをクリックするとダウンロードできます。";
$lang->item_module = "モジュールリスト";
$lang->item_addon = "アドオンリスト";
@@ -46,7 +46,7 @@
$lang->welcome_to_zeroboard_xe = 'ゼロボードXEの管理者ページです。';
$lang->about_admin_page = "管理者ページはまだ未完成です。クローズベタバージョンの期間に、多くの方々からご意見をいただきながら、必ず必要なコンテンツを埋めていきたいと思います。";
- $lang->about_lang_env = "위 설정한 언어셋을 처음 방문하는 사용자들에게 동일하게 적용하기 위해서는 원하는 언어로 변경후 아래 [저장] 버튼을 클릭하시면 됩니다";
+ $lang->about_lang_env = "上で設定された言語を、初めてサイトに訪問したユーザに同じく適用させるためには、希望する言語に変更してから「保存」ボタンをクリックしてください。";
$lang->zeroboard_xe_user_links = 'ユーザのためのリンク';
$lang->zeroboard_xe_developer_links = 'デベロッパーのためのリンク';
diff --git a/modules/admin/lang/zh-CN.lang.php b/modules/admin/lang/zh-CN.lang.php
index 203e7f630..3b1e4d0e6 100644
--- a/modules/admin/lang/zh-CN.lang.php
+++ b/modules/admin/lang/zh-CN.lang.php
@@ -6,11 +6,11 @@
**/
$lang->admin_info = '管理员信息';
- $lang->admin_index = '管理员页面';
+ $lang->admin_index = '管理首页';
$lang->module_category_title = array(
- 'service' => '服务类型',
- 'manager' => '管理类型',
+ 'service' => '服务类模块',
+ 'manager' => '管理类模块',
'utility' => '功能模块',
'accessory' => '附加模块',
'base' => '基本模块',
@@ -40,7 +40,7 @@
$lang->cmd_shortcut_management = "编辑菜单";
- $lang->msg_is_not_administrator = '只有管理员可以查看';
+ $lang->msg_is_not_administrator = '只有管理员才可以查看';
$lang->msg_manage_module_cannot_delete = '模块,插件,布局,控件模块的快捷菜单是不能删除的。';
$lang->msg_default_act_is_null = '没有指定默认管理员的动作,是不能添加到快捷菜单的。';
diff --git a/modules/blog/blog.admin.controller.php b/modules/blog/blog.admin.controller.php
index 5415d48d2..42dfd8e67 100644
--- a/modules/blog/blog.admin.controller.php
+++ b/modules/blog/blog.admin.controller.php
@@ -423,17 +423,17 @@
$target_category = $oDocumentModel->getCategory($target_category_srl);
$source_category = $oDocumentModel->getCategory($source_category_srl);
- // source_category에 target_category_srl의 parent_srl, listorder 값을 입력
+ // source_category에 target_category_srl의 parent_srl, list_order 값을 입력
$source_args->category_srl = $source_category_srl;
$source_args->parent_srl = $target_category->parent_srl;
- $source_args->listorder = $target_category->listorder;
+ $source_args->list_order = $target_category->list_order;
$output = $oDocumentController->updateCategory($source_args);
if(!$output->toBool()) return $output;
- // target_category의 listorder값을 +1해 준다
+ // target_category의 list_order값을 +1해 준다
$target_args->category_srl = $target_category_srl;
- $target_args->parent_srl = $target_category->parent_srl;
- $target_args->listorder = $target_category->listorder -1;
+ $target_args->parent_srl = $source_category->parent_srl;
+ $target_args->list_order = $source_category->list_order;
$output = $oDocumentController->updateCategory($target_args);
if(!$output->toBool()) return $output;
diff --git a/modules/blog/blog.controller.php b/modules/blog/blog.controller.php
index b67fbc6ff..0002ae302 100644
--- a/modules/blog/blog.controller.php
+++ b/modules/blog/blog.controller.php
@@ -187,11 +187,12 @@
**/
function procBlogVerificationPassword() {
// 비밀번호와 문서 번호를 받음
- $password = md5(Context::get('password'));
-
+ $password = Context::get('password');
$document_srl = Context::get('document_srl');
$comment_srl = Context::get('comment_srl');
+ $oMemberModel = &getModel('member');
+
// comment_srl이 있을 경우 댓글이 대상
if($comment_srl) {
// 문서번호에 해당하는 글이 있는지 확인
@@ -200,7 +201,7 @@
if(!$oComment->isExists()) return new Object(-1, 'msg_invalid_request');
// 문서의 비밀번호와 입력한 비밀번호의 비교
- if($oComment->get('password') != $password) return new Object(-1, 'msg_invalid_password');
+ if(!$oMemberModel->isValidPassword($oComment->get('password'),$password)) return new Object(-1, 'msg_invalid_password');
$oComment->setGrant();
} else {
@@ -210,7 +211,7 @@
if(!$oDocument->isExists()) return new Object(-1, 'msg_invalid_request');
// 문서의 비밀번호와 입력한 비밀번호의 비교
- if($oDocument->get('password') != $password) return new Object(-1, 'msg_invalid_password');
+ if(!$oMemberModel->isValidPassword($oDocument->get('password'),$password)) return new Object(-1, 'msg_invalid_password');
$oDocument->setGrant();
}
diff --git a/modules/blog/conf/info.xml b/modules/blog/conf/info.xml
index 2373a072a..bf0196be8 100644
--- a/modules/blog/conf/info.xml
+++ b/modules/blog/conf/info.xml
@@ -17,9 +17,7 @@
레이아웃과 기본 메뉴를 직접 담당
- ブログの機能を担当するモジュール
- 掲示板と似ているが、内容の表示が異なり、ブログに適切なメソッドが追加されている。
- レイアウトと基本メニューを直接担当します。
+ ブログの機能を担当するモジュールです。掲示板と似ているが、内容の表示が異なり、ブログに適切なメソッドが追加されています。 レイアウトと基本メニューを直接担当します。
This module contains the blog functions.
diff --git a/modules/blog/lang/jp.lang.php b/modules/blog/lang/jp.lang.php
index c50c324aa..bb7b7c146 100644
--- a/modules/blog/lang/jp.lang.php
+++ b/modules/blog/lang/jp.lang.php
@@ -29,5 +29,5 @@
$lang->about_category_group_srls = '選択したグループのみ現在のカテゴリが見えるようになります(XMLファイルを直接閲覧すると表示されます)';
$lang->about_layout_setup = 'ブログのレイアウトのコードを直接修正できます。ウィジェットコードを入力、又は管理して下さい';
$lang->about_blog_category = 'ブログのカテゴリが作成できます。 ブログのカテゴリが誤作動する場合キャッシュファイルの再生性を手動で行うと解決される事があります。';
- $lang->about_blog = "ブログを作成し管理できるブログモジュールです。ブログモジュールはブログスキンに含まれているレイアウトを利用するので生成後必ずカテゴリ、又はスキン管理を用いてブログを編集して下さい。ブログ内に他の掲示板を連結したい時はメニュモジュールでメニューを作成した後、スキン管理で連結して下さい。";
+ $lang->about_blog = "ブログを作成し管理できるブログモジュールです。ブログモジュールはブログスキンに含まれているレイアウトを利用するので生成後必ずカテゴリ、又はスキン管理を用いてブログを編集して下さい。ブログ内に他の掲示板を連動させたい時はメニュモジュールでメニューを作成した後、スキン管理で行ってください。";
?>
diff --git a/modules/blog/skins/xe_blog/extra_var_value.html b/modules/blog/skins/xe_blog/extra_var_value.html
index 0d5b21657..bdcd63980 100644
--- a/modules/blog/skins/xe_blog/extra_var_value.html
+++ b/modules/blog/skins/xe_blog/extra_var_value.html
@@ -28,30 +28,36 @@
- {htmlspecialchars($val->value[0])}
+ {(int)htmlspecialchars($val->value[0])}
-
- {htmlspecialchars($val->value[1])}
+ {(int)htmlspecialchars($val->value[1])}
-
- {htmlspecialchars($val->value[2])}
+ {(int)htmlspecialchars($val->value[2])}
+
{nl2br(htmlspecialchars($val->value))}
+
+ {@ $val->value = array($val->value) }
{@ $_tmp_value[] = htmlspecialchars($v)}
{implode(",",$_tmp_value)}
+
{htmlspecialchars($val->value)}
+
{zdate($val->value,"Y-m-d")}
+
diff --git a/modules/blog/skins/xe_blog/filter/insert_comment.xml b/modules/blog/skins/xe_blog/filter/insert_comment.xml
index 1a3245e34..7dd555f50 100644
--- a/modules/blog/skins/xe_blog/filter/insert_comment.xml
+++ b/modules/blog/skins/xe_blog/filter/insert_comment.xml
@@ -17,6 +17,8 @@
+
+
diff --git a/modules/blog/skins/xe_blog/skin.xml b/modules/blog/skins/xe_blog/skin.xml
index c4d96a6f7..cea2939e9 100644
--- a/modules/blog/skins/xe_blog/skin.xml
+++ b/modules/blog/skins/xe_blog/skin.xml
@@ -20,7 +20,7 @@
HTML/CSS:ジョンチャンミョン (http://naradesign.net)
- Zeroboard XE样式皮肤。
+ Zeroboard XE博客默认皮肤。
设计 : Ki-Jeong Seo (http://blog.naver.com/addcozy)
HTML/CSS : Chan-Myung Jeong (http://naradesign.net)
@@ -66,11 +66,11 @@
상단 제목上段タイトル
- 顶部标题
+ 博客标题Top Title레이아웃의 상단에 표시할 제목을 입력하세요.レイアウト上段に表示させるタイトルを入力してください。
- 请输入布局顶部显示的标题。
+ 请输入博客主标题。Please input title which will be displayed on top of layout.
@@ -80,7 +80,7 @@
Subtitle레이아웃의 상단에 큰 제목 아래 부제목을 입력하세요.レイアウトの上段にメインタイトルの下のサブタイトルを入力してください。
- 部分顶部主标题下面显示的副标题。
+ 请输入副标题。Please input subtitle which will be displayed under the top title.
@@ -90,7 +90,7 @@
Logo Image레이아웃의 상단에 표시될 로고이미지를 입력하세요.レイアウトの上段に表示されるロゴイメージを入力してください。
- 布局顶部显示的LOGO图片。
+ 上传博客LOGO图片。Please input logo image which will be displayed on top of layout.
@@ -100,7 +100,7 @@
Profile Image프로필 이미지를 입력해 주세요 (가로 사이즈는 160px이 가장 보기 좋습니다)プロフィールイメージを入力してください(横幅は「160px」が一番適しています)。
- 请输入博客个性图片。 (宽度160px图片为适)
+ 请输入博客个性图片(推荐宽度160px)。Please input profile image (It is recommended to set width as 160px)
@@ -137,10 +137,10 @@
글쓴이 표시投稿者表示显示作者
- Show Writer
+ Display Author다수가 블로그를 함께 운영시에 글쓴이의 이름을 표시할 수 있습니다.多数の人が一緒に運営している場合、投稿者の名前を表示させることができます。
- 多数人一起管理博客时可以显示发表文章的作者。
+ 多人共同管理博客时可以显示日志发布者。It can display authors' name when the blog is being administrated by many administrators.offon
@@ -150,7 +150,7 @@
diff --git a/modules/board/board.controller.php b/modules/board/board.controller.php
index 495887ced..74f51b0f1 100644
--- a/modules/board/board.controller.php
+++ b/modules/board/board.controller.php
@@ -194,11 +194,12 @@
**/
function procBoardVerificationPassword() {
// 비밀번호와 문서 번호를 받음
- $password = md5(Context::get('password'));
-
+ $password = Context::get('password');
$document_srl = Context::get('document_srl');
$comment_srl = Context::get('comment_srl');
+ $oMemberModel = &getModel('member');
+
// comment_srl이 있을 경우 댓글이 대상
if($comment_srl) {
// 문서번호에 해당하는 글이 있는지 확인
@@ -207,7 +208,7 @@
if(!$oComment->isExists()) return new Object(-1, 'msg_invalid_request');
// 문서의 비밀번호와 입력한 비밀번호의 비교
- if($oComment->get('password') != $password) return new Object(-1, 'msg_invalid_password');
+ if(!$oMemberModel->isValidPassword($oComment->get('password'),$password)) return new Object(-1, 'msg_invalid_password');
$oComment->setGrant();
} else {
@@ -217,7 +218,7 @@
if(!$oDocument->isExists()) return new Object(-1, 'msg_invalid_request');
// 문서의 비밀번호와 입력한 비밀번호의 비교
- if($oDocument->get('password') != $password) return new Object(-1, 'msg_invalid_password');
+ if(!$oMemberModel->isValidPassword($oDocument->get('password'),$password)) return new Object(-1, 'msg_invalid_password');
$oDocument->setGrant();
}
diff --git a/modules/board/board.view.php b/modules/board/board.view.php
index a4ea07045..55199c87c 100644
--- a/modules/board/board.view.php
+++ b/modules/board/board.view.php
@@ -128,7 +128,7 @@
if(!$args->order_type) $args->order_type = $this->module_info->order_type?$this->module_info->order_type:'asc';
// 만약 document_srl은 있는데 page가 없다면 글만 호출된 경우 page를 구해서 세팅해주자..
- if($document_srl && ($oDocument->isExists()&&!$oDocument->isNotice()) && !$args->category_srl && !$args->search_keyword && $args->sort_index == 'list_order' && $args->order_type == 'asc') {
+ if($document_srl && ($oDocument->isExists()&&!$oDocument->isNotice()) && !$args->category_srl && !$args->search_keyword && $args->sort_index == 'newest' && $args->order_type == 'asc') {
$page = $oDocumentModel->getDocumentPage($document_srl, $this->module_srl, $this->list_count);
Context::set('page', $page);
$args->page = $page;
diff --git a/modules/board/lang/zh-CN.lang.php b/modules/board/lang/zh-CN.lang.php
index dcb4f61e6..e7df41dc9 100644
--- a/modules/board/lang/zh-CN.lang.php
+++ b/modules/board/lang/zh-CN.lang.php
@@ -7,7 +7,7 @@
$lang->board = "版面";
- // 在按钮使用的语言
+ // 按钮语言
$lang->cmd_board_list = '版面目录';
$lang->cmd_module_config = '版面共同设置';
$lang->cmd_view_info = '版面信息';
diff --git a/modules/board/skins/xe_board/extra_var_value.html b/modules/board/skins/xe_board/extra_var_value.html
index 0d5b21657..bdcd63980 100644
--- a/modules/board/skins/xe_board/extra_var_value.html
+++ b/modules/board/skins/xe_board/extra_var_value.html
@@ -28,30 +28,36 @@
- {htmlspecialchars($val->value[0])}
+ {(int)htmlspecialchars($val->value[0])}
-
- {htmlspecialchars($val->value[1])}
+ {(int)htmlspecialchars($val->value[1])}
-
- {htmlspecialchars($val->value[2])}
+ {(int)htmlspecialchars($val->value[2])}
+
{nl2br(htmlspecialchars($val->value))}
+
+ {@ $val->value = array($val->value) }
{@ $_tmp_value[] = htmlspecialchars($v)}
{implode(",",$_tmp_value)}
+
{htmlspecialchars($val->value)}
+
{zdate($val->value,"Y-m-d")}
+
diff --git a/modules/board/skins/xe_board/skin.xml b/modules/board/skins/xe_board/skin.xml
index 99769f7da..fd7507ecb 100644
--- a/modules/board/skins/xe_board/skin.xml
+++ b/modules/board/skins/xe_board/skin.xml
@@ -2,12 +2,12 @@
제로보드XE 게시판 기본 스킨ゼロボードXE掲示板のデフォルトスキン
- Zeroboard XE Board 基本皮肤
+ Zeroboard XE版面默认皮肤ZeroboardXE Basic Board Skinzerozero
- zero
+ Zerozero
제로보드XE 게시판의 기본 스킨입니다.
@@ -20,7 +20,7 @@
HTML/CSS:ジョンチャンミョン (http://naradesign.net)
- zeroboard XE Board 基本皮肤。
+ Zeroboard XE版面默认皮肤。
设计 : Ki-Jeong Seo (http://blog.naver.com/addcozy)
HTML/CSS : Chan-Myung Jeong (http://naradesign.net)
@@ -65,10 +65,19 @@
기본 형태
+ 默认样式Default Form
목록형, 웹진형, 갤러리형, 포럼형의 기본 스타일을 지정할 수 있습니다.
포럼형 스타일은 정렬대상을 updated로 하셔야 합니다.
+
+
+ リスト型、ウェブジン型、ギャラリー型、フォーラム型の基本スタイルを指定することができます。
+ フォーラム型のスタイルはソート対象を「updated」にしなければなりません。
+
+
+ 可以把版面指定为默认的目录型,网络杂志型,相册型及论坛型。
+ 当使用论坛型的时候请把排列对象设置为updated。
You may select default styles such as list style, webzine style, gallery stylz or forum style.
@@ -94,12 +103,12 @@
정렬 방법排序方式
- ソートタイプ
+ ソート方法Sorting TypeTipo de ordenamiento정렬대상을 내림차순 또는 올림차순으로 정렬할 수 있습니다.对其排序对象可进行升序/降序方式排序。
- ソートタイプを、降順、昇順にソートできます。
+ ソート方法を、降順、昇順にできます。You can sort target articles by asending or desending order.Usted puede ordenar los documentos en orden acendente o en orden descendente.asc
@@ -112,7 +121,7 @@
Title of Board게시판의 제목을 적어주세요.掲示板タイトルを入力してください。
- 请输入版面标题。(留空为不显示)
+ 请输入版面标题(留空为不显示)。Plase input the title of board.
@@ -121,18 +130,18 @@
版面副标题Subtitle of Board게시판 제목 옆에 나타날 부제목을 적어주세요.
- 掲示板タイトルの横表示されるサブタイトルを入力してください。
- 请输入显示在版面标题旁的副标题。(留空为不显示)
+ 掲示板タイトルの横に表示されるサブタイトルを入力してください。
+ 请输入版面副标题(留空为不显示)。Please input the subtitle of board which will be displayed beside of board title.게시판 상세 설명
- 掲示板の説明
+ 掲示板の詳細版面详细说明Description of Board게시판 제목 아래 표시될 설명을 입력하실 수 있습니다.
- 掲示板タイトルの下に表示される説明文入力してください。
- 请输入显示在版面标题下的说明。(留空为不显示)
+ 掲示板タイトルの下に表示される説明文を入力してください。
+ 请输入版面说明(留空为不显示)。You may input description which will be displayed under the board title.
@@ -142,7 +151,7 @@
Length of Subject제목 글자수를 지정할 수 있습니다. (0또는 비워주시면 자르지 않습니다)タイトルの文字数が指定できます(「0」または空欄の場合は、文字数を制限しません)。
- 可以指定标题字数。(0或留空为不限)
+ 可以指定标题字数(0或留空为不限)。You may set length of title. (0 or blank value will not restrict the length)
@@ -175,7 +184,7 @@
조회수 표시照合数表示
- 显示查看数
+ 显示查看Display HitYN
@@ -184,7 +193,7 @@
추천수 표시推薦数表示
- 显示推荐数
+ 显示推荐Display VotesYN
@@ -201,33 +210,41 @@
new표시 시간 (hours)
+ Newの表示時間 (Hours)new图标显示时间(hours)Duration of indication for new item새로 등록된 게시물의 new 표시시간을 정할 수 있습니다.
+ 新しく登録された書き込みに対して「New」の表示時間を設定します。 可以设置最新更新主题的new图标显示时间。You may set the duration of indication for fresh item. 24썸네일 생성 방법
+ サムネール生成方法缩略图生成方式썸네일 생성 방법을 선택할 수 있습니다. (crop : 꽉 채우기, ratio : 비율 맞추기)
- 可以选择缩略图生成方式。 (crop : 裁减, ratio : 比例)
+ サムネールの生成方法を選択します(Crop : 切り取り, Ratio : 比率)。
+ 可以选择缩略图生成方式(crop : 裁减, ratio : 比例)。cropratio썸네일 가로크기
+ サムネールの横幅缩略图宽度썸네일의 가로 크기를 지정할 수 있습니다. (기본 100px)
- 可以指定缩略图宽度。 (默认为 100px)
+ サムネールの横幅を指定します(デフォルト 100px)。
+ 可以指定缩略图宽度(默认为 100px)。100썸네일 세로크기
+ サムネールの縦幅缩略图高度썸네일의 세로 크기를 지정할 수 있습니다. (기본 100px)
- 可以指定缩略图高度。 (默认为 100px)
+ サムネールの縦幅を指定します(デフォルト 100px)。
+ 可以指定缩略图高度(默认为 100px)。100
diff --git a/modules/board/skins/xe_board/style.forum.html b/modules/board/skins/xe_board/style.forum.html
index fc7d67654..1d21b5117 100644
--- a/modules/board/skins/xe_board/style.forum.html
+++ b/modules/board/skins/xe_board/style.forum.html
@@ -13,7 +13,7 @@